public static function getList($userId, array $parameters) { $data = array(); $can = array(); $aux = array('GROUP_IDS' => array(), 'USER_IDS' => array()); $errors = static::ensureHaveErrorCollection($parameters); $navParams = static::prepareNav(isset($parameters['LIST_PARAMETERS']['limit']) ? $parameters['LIST_PARAMETERS']['limit'] : false, isset($parameters['LIST_PARAMETERS']['offset']) ? $parameters['LIST_PARAMETERS']['offset'] : false, $parameters['PUBLIC_MODE']); $params = false; if (!empty($navParams)) { $params = array('NAV_PARAMS' => $navParams); } // an exception about sql error may fall here // dont use CTaskItem::fetchList() here, its slower than the following list($items, $res) = \CTaskItem::fetchListArray($userId, $parameters['LIST_PARAMETERS']['order'], $parameters['LIST_PARAMETERS']['legacyFilter'], $params, $parameters['LIST_PARAMETERS']['select']); if (is_array($items)) { foreach ($items as $taskData) { if ((int) $taskData['GROUP_ID']) { $aux['GROUP_IDS'][(int) $taskData['GROUP_ID']] = true; } $data[$taskData['ID']] = $taskData; $can[$taskData['ID']]['ACTION'] = static::translateAllowedActionNames(\CTaskItem::getAllowedActionsArray($userId, $taskData, true)); } } $aux['GROUP_IDS'] = array_keys($aux['GROUP_IDS']); $aux['OBJ_RES'] = $res; static::injectTimemanFields($userId, $parameters, $data, $can); return array('DATA' => $data, 'CAN' => $can, 'ERRORS' => $errors, 'AUX' => $aux); }