Kimai_Database_Mysql::get_activities PHP Method

get_activities() public method

This is either a list of all or a list of all for the given groups.
public get_activities ( array $groups = null ) : array | boolean
$groups array
return array | boolean
    public function get_activities(array $groups = null)
    {
        $p = $this->kga['server_prefix'];
        if (empty($groups)) {
            $query = "SELECT activityID, name, visible\n              FROM {$p}activities\n              WHERE trash=0\n              ORDER BY visible DESC, name;";
        } else {
            $query = "SELECT DISTINCT activityID, name, visible\n              FROM {$p}activities\n              JOIN {$p}groups_activities AS g_a USING(activityID)\n              WHERE g_a.groupID IN (" . implode($groups, ',') . ")\n                AND trash=0\n              ORDER BY visible DESC, name;";
        }
        $result = $this->conn->Query($query);
        if ($result == false) {
            $this->logLastError('get_activities');
            return false;
        }
        $arr = array();
        $i = 0;
        if ($this->conn->RowCount()) {
            $this->conn->MoveFirst();
            while (!$this->conn->EndOfSeek()) {
                $row = $this->conn->Row();
                $arr[$i]['activityID'] = $row->activityID;
                $arr[$i]['name'] = $row->name;
                $arr[$i]['visible'] = $row->visible;
                $i++;
            }
            return $arr;
        }
        return array();
    }

Usage Example

Beispiel #1
0
/**
 * @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;
}
Kimai_Database_Mysql