- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/kanban/stages.php
- Класс: BitrixTasksKanbanStagesTable
- Вызов: StagesTable::pinInTheStage
static function pinInTheStage($taskId, $stageId)
{
if (($stage = StagesTable::getById($stageId)->fetch()))
{
$order = 'desc';
// get order
if ($stage['ENTITY_TYPE'] == self::WORK_MODE_GROUP)
{
if (($project = ProjectsTable::getById($stage['ENTITY_ID'])->fetch()))
{
$order = $project['ORDER_NEW_TASK'] ? $project['ORDER_NEW_TASK'] : 'desc';
}
}
else
{
$order = CUserOptions::getOption(
'tasks',
'order_new_task',
'desc',
$stage['ENTITY_ID']
);
}
// set order
if ($order == 'desc')
{
$sort = array(
'SORTING' => 'ASC',
'STATUS_COMPLETE' => 'ASC',
'DEADLINE' => 'ASC,NULLS',
'ID' => 'ASC'
);
}
else
{
$sort = array(
'SORTING' => 'DESC',
'STATUS_COMPLETE' => 'DESC',
'DEADLINE' => 'DESC',
'ID' => 'DESC'
);
}
// set filter
$filter = array(
'CHECK_PERMISSIONS' => 'N',
'ONLY_ROOT_TASKS' => 'N',
'!ID' => $taskId
);
if ($stage['ENTITY_TYPE'] == self::WORK_MODE_GROUP)
{
$filter['GROUP_ID'] = $stage['ENTITY_ID'];
}
else
{
$filter['MEMBER'] = $stage['ENTITY_ID'];
}
// set params
$params = array(
'NAV_PARAMS' => array(
'nTopCount' => 1
)
);
if ($stage['ENTITY_TYPE'] == self::WORK_MODE_GROUP)
{
$params['SORTING_GROUP_ID'] = $stage['ENTITY_ID'];
}
else
{
$params['USER_ID'] = $stage['ENTITY_ID'];
}
// set sorting
$res = CTasks::getList(
$sort,
$filter,
array('ID'),
$params
);
if ($row = $res->fetch())
{
if ($stage['ENTITY_TYPE'] == self::WORK_MODE_GROUP)
{
$userId = BitrixTasksUtilUser::getId();
$groupId = $stage['ENTITY_ID'];
}
else
{
$userId = $stage['ENTITY_ID'];
$groupId = 0;
}
SortingTable::setSorting(
$userId,
$groupId,
$taskId,
$row['ID'],
$order == 'asc' ? false : true
);
}
}
}