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