41 lines
1.3 KiB
PHP
41 lines
1.3 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
require_once __DIR__ . '/common.php';
|
|
|
|
api_require_method('GET');
|
|
$staff = api_require_staff();
|
|
$pdo = get_db();
|
|
|
|
// department_id ist NULLable (fuer alle Abteilungen sichtbar) — dept_filter_sql() kann das nicht
|
|
// abbilden (es haengt ein UND an, wir brauchen aber "IS NULL ODER eigene Abteilung"), daher hier
|
|
// manuell gebaut.
|
|
$departmentIds = staff_department_ids($staff);
|
|
$deptFilter = '';
|
|
$deptParams = [];
|
|
if ($departmentIds !== null) {
|
|
if (count($departmentIds) === 0) {
|
|
$deptFilter = ' AND cr.department_id IS NULL';
|
|
} else {
|
|
$placeholders = implode(',', array_fill(0, count($departmentIds), '?'));
|
|
$deptFilter = " AND (cr.department_id IS NULL OR cr.department_id IN ({$placeholders}))";
|
|
$deptParams = $departmentIds;
|
|
}
|
|
}
|
|
|
|
$stmt = $pdo->prepare(
|
|
"SELECT cr.id, cr.title, cr.body, cr.department_id
|
|
FROM canned_responses cr
|
|
WHERE 1=1{$deptFilter}
|
|
ORDER BY cr.title"
|
|
);
|
|
$stmt->execute($deptParams);
|
|
|
|
$responses = array_map(fn(array $row) => [
|
|
'id' => (int) $row['id'],
|
|
'title' => $row['title'],
|
|
'body' => api_plain_text($row['body']),
|
|
'departmentId' => $row['department_id'] !== null ? (int) $row['department_id'] : null,
|
|
], $stmt->fetchAll());
|
|
|
|
api_json(['items' => $responses]);
|