- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/provider/taskquerybuilder.php
- Класс: BitrixTasksProviderTaskQueryBuilder
- Вызов: TaskQueryBuilder::addOrder
private function addOrder(string $column, string $order): void
{
$column = strtoupper($column);
switch ($column)
{
case 'ID':
$this->query->addOrder('ID', $order);
break;
case 'TITLE':
$this->query->addOrder('TITLE', $order);
$this->taskQuery->addSelect('TITLE');
break;
case 'DATE_START':
$this->query->addOrder('DATE_START', $order);
$this->taskQuery->addSelect('DATE_START');
break;
case 'CREATED_DATE':
$this->query->addOrder('CREATED_DATE', $order);
$this->taskQuery->addSelect('CREATED_DATE');
break;
case 'CHANGED_DATE':
$this->query->addOrder('CHANGED_DATE', $order);
$this->taskQuery->addSelect('CHANGED_DATE');
break;
case 'CLOSED_DATE':
$this->query->addOrder('CLOSED_DATE', $order);
$this->taskQuery->addSelect('CLOSED_DATE');
break;
case 'ACTIVITY_DATE':
$this->query->addOrder('ACTIVITY_DATE', $order);
$this->taskQuery->addSelect('ACTIVITY_DATE');
break;
case 'START_DATE_PLAN':
$this->query->addOrder('START_DATE_PLAN', $order);
$this->taskQuery->addSelect('START_DATE_PLAN');
break;
case 'END_DATE_PLAN':
$this->query->addOrder('END_DATE_PLAN', $order);
$this->taskQuery->addSelect('END_DATE_PLAN');
break;
case 'DEADLINE':
if ($order === TaskQuery::SORT_ASC)
{
$this->query->addOrder('LENGTH_DEADLINE', TaskQuery::SORT_DESC);
$this->query->addOrder('DEADLINE', TaskQuery::SORT_ASC);
$this->taskQuery->addSelect('LENGTH_DEADLINE');
}
else
{
$this->query->addOrder('DEADLINE', TaskQuery::SORT_DESC);
}
$this->taskQuery->addSelect('DEADLINE');
break;
case 'STATUS':
break;
case 'REAL_STATUS':
$this->query->addOrder('STATUS', $order);
$this->taskQuery->addSelect('STATUS');
break;
case 'STATUS_COMPLETE':
$this->query->addOrder('STATUS_COMPLETE', $order);
$this->taskQuery->addSelect('STATUS_COMPLETE');
break;
case 'PRIORITY':
$this->query->addOrder('PRIORITY', $order);
$this->taskQuery->addSelect('PRIORITY');
break;
case 'MARK':
$this->query->addOrder('MARK', $order);
$this->taskQuery->addSelect('MARK');
break;
case 'ORIGINATOR_NAME':
case 'CREATED_BY':
case 'CREATED_BY_LAST_NAME':
$this->query->addOrder(self::ALIAS_USER_CREATE.'.LAST_NAME', $order);
$this->taskQuery->addSelect('CREATED_BY_LAST_NAME');
break;
case 'RESPONSIBLE_NAME':
case 'RESPONSIBLE_ID':
case 'RESPONSIBLE_LAST_NAME':
$this->query->addOrder(self::ALIAS_USER_RESPONSIBLE.'.LAST_NAME', $order);
$this->taskQuery->addSelect('RESPONSIBLE_LAST_NAME');
break;
case 'GROUP_ID':
case 'COMPUTE_GROUP_ID':
$this->query->addOrder('COMPUTE_GROUP_ID', $order);
$this->taskQuery->addSelect('COMPUTE_GROUP_ID');
break;
case 'TIME_ESTIMATE':
$this->query->addOrder('TIME_ESTIMATE', $order);
$this->taskQuery->addSelect('TIME_ESTIMATE');
break;
case 'ALLOW_CHANGE_DEADLINE':
$this->query->addOrder('ALLOW_CHANGE_DEADLINE', $order);
$this->taskQuery->addSelect('ALLOW_CHANGE_DEADLINE');
break;
case 'ALLOW_TIME_TRACKING':
$this->query->addOrder('ALLOW_TIME_TRACKING', $order);
$this->taskQuery->addSelect('ALLOW_TIME_TRACKING');
break;
case 'MATCH_WORK_TIME':
$this->query->addOrder('MATCH_WORK_TIME', $order);
$this->taskQuery->addSelect('MATCH_WORK_TIME');
break;
case 'SORTING':
$this->query->addOrder('NULL_SORTING', $order);
$this->query->addOrder('SORTING', $order);
$this->taskQuery->addSelect('SORTING');
$this->taskQuery->addSelect('NULL_SORTING');
break;
case 'SORTING_ORDER':
$this->query->addOrder('NULL_SORTING', $order);
$this->query->addOrder(self::ALIAS_TASK_SORT . '.SORT', $order);
$this->taskQuery->addSelect('NULL_SORTING');
$this->registerRuntimeField(self::ALIAS_TASK_SORT);
break;
case 'MESSAGE_ID':
$this->query->addOrder('MESSAGE_ID', $order);
$this->taskQuery->addSelect('MESSAGE_ID');
break;
case 'FAVORITE':
case 'COMPUTE_FAVORITE':
$this->taskQuery->addSelect('COMPUTE_FAVORITE');
$this->query->addOrder('COMPUTE_FAVORITE', $order);
break;
case 'TIME_SPENT_IN_LOGS':
$this->taskQuery->addSelect('TIME_SPENT_IN_LOGS');
$this->query->addOrder('TIME_SPENT_IN_LOGS', $order);
break;
case 'IS_PINNED':
$this->taskQuery->addSelect('IS_PINNED');
$this->query->addOrder('IS_PINNED', $order);
break;
case 'IS_PINNED_IN_GROUP':
$this->taskQuery->addSelect('IS_PINNED_IN_GROUP');
$this->query->addOrder('IS_PINNED_IN_GROUP', $order);
break;
case 'SCRUM_ITEMS_SORT':
$this->query->addOrder(self::ALIAS_SCRUM_ITEM_B.".SORT", $order);
$this->registerRuntimeField(self::ALIAS_SCRUM_ITEM_B);
break;
case 'IM_CHAT_ID':
if (!Loader::includeModule('im'))
{
break;
}
$this->query->addOrder(self::ALIAS_CHAT_TASK.".ID", $order);
$this->registerRuntimeField(self::ALIAS_CHAT_TASK);
break;
default:
if (preg_match('/^UF_/', $column))
{
$this->query->addOrder($column, $order);
break;
}
}
}