• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/tasksync.php
  • Класс: CTaskSync
  • Вызов: CTaskSync::SyncTaskItems
static function SyncTaskItems($type, $userId, $arUserTaskItems)
{
	global $DB;

	$arTasksReturn = array();
	$arDelete = array();
	$strSql = "SELECT ID 
		FROM b_tasks 
		WHERE 
			EXCHANGE_ID IS NOT NULL 
			AND RESPONSIBLE_ID = ".intval($userId);
	$rsIDs = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); while ($arID = $rsIDs->Fetch()) $arDelete[] = (int) $arID["ID"]; foreach ($arUserTaskItems as $taskItem) { $strSql = "SELECT ID, EXCHANGE_MODIFIED FROM b_tasks WHERE EXCHANGE_ID = '" . $DB->ForSql($taskItem["XML_ID"]) . "' AND RESPONSIBLE_ID = ".intval($userId); $rsTask = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); if ($task = $rsTask->Fetch()) { $key = array_search($task["ID"], $arDelete); if ($key !== false) { unset($arDelete[$key]); } if ($task["EXCHANGE_MODIFIED"] != $taskItem["MODIFICATION_LABEL"]) { $arTasksReturn[] = array( "XML_ID" => $taskItem["XML_ID"], "ID" => $task["ID"] ); $arDoNotDelete[] = $task["ID"]; } } else { $arTasksReturn[] = array( "XML_ID" => $taskItem["XML_ID"], "ID" => 0 ); } } if (sizeof($arDelete)) { // Remove only tasks with RESPONSIBLE_ID = $userId $strSql = "SELECT ID FROM b_tasks WHERE ID IN (" . implode(",", $arDelete).") AND RESPONSIBLE_ID = " . (int) $userId; $rc = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); while ($arItem = $rc->Fetch()) CTasks::Delete($arItem['ID'], array('skipExchangeSync' => true)); } return $arTasksReturn; }