This problem is really tricky, because
Project::getChanges() only checks for visible items but the visibility of tasks is also affected by assignments. So even if the client could see "assigned tasks" the query in Project::getChanges ignores it:
from db/class_project.inc.php
$s_query=
"SELECT i.* from
{$prefix}item i,
{$prefix}projectperson upp
WHERE
upp.person = {$auth->cur_user->id}
AND upp.project = i.project
$str_state
$str_show_issues
$str_project
$str_project2
$str_modified_by
$str_not_modified_by
$str_date_min
$str_date_max
AND ( i.pub_level >= upp.level_view
OR
i.created_by = {$auth->cur_user->id}
)
" . getOrderByString($order_by);
Maybe we could add some fragment of Task::getAll() to this...
from db/class_task.inc.php
AND i.id = tp.task
AND tp.person = $assigned_to_person
AND itp.id = tp.id
AND itp.state = 1
AND (itp.pub_level >= upp.level_view
OR
itp.created_by = {$auth->cur_user->id}
)
... but that would cause other problems, because it ignores all other item-types. Another method might be to query all assigned task that are not catched in the first query and and them. But this exceeds my mySQL-knowledge.