• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/activity/provider/task.php
  • Класс: Bitrix\Crm\Activity\Provider\Task
  • Вызов: Task::tryPostpone
static function tryPostpone($offset, array $fields, array &$updateFields, $checkPermissions = true)
{
	if(!is_numeric($offset))
	{
		$offset = (int)$offset;
	}

	if(!Loader::includeModule('tasks'))
	{
		return false;
	}

	$entityID = isset($fields['ASSOCIATED_ENTITY_ID']) ? (int)$fields['ASSOCIATED_ENTITY_ID'] : 0;
	if($entityID <= 0)
	{
		return false;
	}

	if($checkPermissions && !\Bitrix\Crm\Integration\TaskManager::checkUpdatePermission($entityID))
	{
		return false;
	}

	$entry = new \CTasks();
	$dbResult = $entry->GetByID($entityID, false);
	$fields = $dbResult->Fetch();
	if(!is_array($fields))
	{
		return false;
	}

	$deadline = isset($fields['DEADLINE']) ? $fields['DEADLINE'] : '';
	if($deadline === '')
	{
		return false;
	}

	$now = time() + \CTimeZone::GetOffset();
	$result = $entry->update(
		$entityID,
		array('DEADLINE' => FormatDate('FULL', MakeTimeStamp($deadline) + $offset, $now))
	);

	$updateFields = array();
	return $result;
}