feat: implement task API for status retrieval and expand task assignment logic to support custom assignee names
This commit is contained in:
@@ -176,7 +176,17 @@ $all_g = query("SELECT id, name FROM groups")->fetchAll();
|
||||
|
||||
$group_in = implode(',', array_fill(0, count($my_group_ids), '?')) ?: '0';
|
||||
|
||||
$params = array_merge([$user_id], $my_group_ids, $my_group_ids, [$user_id]);
|
||||
$custom_tokens = [];
|
||||
if(!empty($current_user['username'])) $custom_tokens[] = (string)$current_user['username'];
|
||||
foreach($user_groups as $g) {
|
||||
if(!empty($g['name'])) $custom_tokens[] = (string)$g['name'];
|
||||
}
|
||||
$custom_tokens = array_values(array_unique(array_filter(array_map('trim', $custom_tokens), fn($v) => $v !== '')));
|
||||
|
||||
$custom_in = implode(',', array_fill(0, count($custom_tokens), '?')) ?: '0';
|
||||
$custom_like = $custom_tokens ? implode(' OR ', array_fill(0, count($custom_tokens), "(','||lower(replace(t.custom_assignee_name,' ',''))||',') LIKE ('%,'||lower(replace(?,' ',''))||',%')")) : '0';
|
||||
|
||||
$params = array_merge([$user_id], $my_group_ids, $my_group_ids, [$user_id], $custom_tokens, $custom_tokens);
|
||||
|
||||
$sql = "SELECT t.*, u.username as assignor_user_name, g.name as assignor_group_name, au.username as assignee_user_name, ag.name as assignee_group_name
|
||||
FROM tasks t
|
||||
@@ -188,6 +198,14 @@ $sql = "SELECT t.*, u.username as assignor_user_name, g.name as assignor_group_n
|
||||
OR (t.assignee_type='group' AND t.assignee_id IN ($group_in))
|
||||
OR (t.assignor_type='group' AND t.assignor_group_id IN ($group_in))
|
||||
OR (t.assignor_type='user' AND t.assignor_id = ?)
|
||||
OR (
|
||||
COALESCE(t.assignee_type,'custom')='custom'
|
||||
AND t.custom_assignee_name IS NOT NULL
|
||||
AND (
|
||||
t.custom_assignee_name IN ($custom_in)
|
||||
OR ($custom_like)
|
||||
)
|
||||
)
|
||||
ORDER BY t.created_at DESC";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute($params);
|
||||
|
||||
Reference in New Issue
Block a user