/**
* @param Kimai_Database_Mysql $database
* @param array $kgaUser
* @param bool $viewOtherGroupsAllowed
* @return array
* @throws Zend_View_Exception
*/
function getActivitiesData(Kimai_Database_Mysql $database, $kgaUser, $viewOtherGroupsAllowed)
{
$groups = null;
if (!$database->global_role_allows($kgaUser['globalRoleID'], 'core-activity-otherGroup-view')) {
$groups = $kgaUser['groups'];
}
$activity_filter = isset($_REQUEST['activity_filter']) ? intval($_REQUEST['activity_filter']) : -2;
switch ($activity_filter) {
case -2:
// -2 is not a valid project id this will give us all unassigned activities.
$activities = $database->get_activities_by_project(-2, $groups);
break;
case -1:
$activities = $database->get_activities($groups);
break;
default:
$activities = $database->get_activities_by_project($activity_filter, $groups);
}
foreach ($activities as $row => $activity) {
$groupNames = array();
foreach ($database->activity_get_groups($activity['activityID']) as $groupID) {
if (!$viewOtherGroupsAllowed && array_search($groupID, $kgaUser['groups']) === false) {
continue;
}
$data = $database->group_get_data($groupID);
$groupNames[] = $data['name'];
}
$activities[$row]['groups'] = implode(", ", $groupNames);
$activities[$row]['projects'] = $database->activity_get_projects($activity['activityID']) ?: array();
}
$result = array();
if (count($activities) > 0) {
$result['activities'] = $activities;
} else {
$result['activities'] = array();
}
$result['projects'] = $database->get_projects($groups);
$result['selected_activity_filter'] = $activity_filter;
return $result;
}