• Модуль: 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
			);
		}
	}
}