/** * @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; }