- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/tasksync.php
- Класс: CTaskSync
- Вызов: CTaskSync::SyncModifyTaskItem
static function SyncModifyTaskItem($arModifyEventArray)
{
global $DB;
$ID = (int)$arModifyEventArray["ID"];
// sanitize description here
$Sanitizer = new CBXSanitizer();
$Sanitizer->SetLevel(CBXSanitizer::SECURE_LEVEL_LOW);
$Sanitizer->ApplyHtmlSpecChars(false);
$Sanitizer->DeleteSanitizedTags(true);
$arModifyEventArray['BODY'] = trim($Sanitizer->SanitizeHtml($arModifyEventArray['BODY']));
$arFields = array(
"RESPONSIBLE_ID" => $arModifyEventArray["USER_ID"],
"SITE_ID" => SITE_ID,
"EXCHANGE_ID" => $arModifyEventArray["XML_ID"],
"EXCHANGE_MODIFIED" => $arModifyEventArray["MODIFICATION_LABEL"],
"TITLE" => $arModifyEventArray["SUBJECT"],
"DESCRIPTION" => $arModifyEventArray["BODY"],
"DESCRIPTION_IN_BBCODE" => 'N',
"CREATED_DATE" => $arModifyEventArray["DATE_CREATE"],
"PRIORITY" => self::$PriorityMapping[mb_strtolower($arModifyEventArray["IMPORTANCE"])],
"DURATION_FACT" => isset($arModifyEventArray["ACTUAL_WORK"]) ? ceil($arModifyEventArray["ACTUAL_WORK"] / 60) : 0,
"START_DATE_PLAN" => $arModifyEventArray["START_DATE"] ?? null,
"DEADLINE" => $arModifyEventArray["DUE_DATE"] ?? null,
"STATUS" => self::$StatusMapping[mb_strtolower($arModifyEventArray["STATUS"])],
"DURATION_PLAN" => isset($arModifyEventArray["TOTAL_WORK"]) ? ceil($arModifyEventArray["TOTAL_WORK"] / 60) : 0,
"DURATION_TYPE" => "hours"
);
$arExtraFields = [];
if (
isset($arModifyEventArray['ExtendedProperty'])
&& is_array($arModifyEventArray['ExtendedProperty'])
)
{
foreach($arModifyEventArray['ExtendedProperty'] as $arExtendedProperty)
{
$arExtraFields[$arExtendedProperty['Name']] = $arExtendedProperty['Value'];
}
}
if ($ID === 0)
{
$arFields["STATUS_CHANGED_BY"] = $arFields["CHANGED_BY"] = $arFields["CREATED_BY"] = $arFields["RESPONSIBLE_ID"];
$arFields["STATUS_CHANGED_DATE"] = $arFields["CHANGED_DATE"] = $arFields["CREATED_DATE"];
$ID = $DB->Add("b_tasks", $arFields, Array("DESCRIPTION"), "tasks");
if ($ID)
{
$arFields["ID"] = $ID;
CTaskNotifications::SendAddMessage($arFields);
$arLogFields = array(
"TASK_ID" => $ID,
"USER_ID" => $arFields["CREATED_BY"],
"CREATED_DATE" => $arFields["CREATED_DATE"],
"FIELD" => "NEW"
);
$log = new CTaskLog();
$log->Add($arLogFields);
}
}
else
{
$strUpdate = $DB->PrepareUpdate("b_tasks", $arFields, "tasks");
$strSql = "UPDATE b_tasks SET ".$strUpdate." WHERE ID=".$ID;
$arBinds = array('DESCRIPTION' => $arFields['DESCRIPTION']);
$result = $DB->QueryBind($strSql, $arBinds, false, "File: ".__FILE__."
Line: ".__LINE__);
if ($result)
{
$rsTask = CTasks::GetByID($ID, false);
if ($arTask = $rsTask->Fetch())
{
$arFields["CHANGED_BY"] = $arFields["RESPONSIBLE_ID"];
$arFields["CHANGED_DATE"] = BitrixTasksUI::formatDateTime(BitrixTasksUtilUser::getTime());
CTaskNotifications::SendUpdateMessage($arFields, $arTask);
$arChanges = CTaskLog::GetChanges($arTask, $arFields);
foreach ($arChanges as $key => $value)
{
$arLogFields = array(
"TASK_ID" => $ID,
"USER_ID" => $arFields["CHANGED_BY"],
"CREATED_DATE" => $arFields["CHANGED_DATE"],
"FIELD" => $key,
"FROM_VALUE" => $value["FROM_VALUE"],
"TO_VALUE" => $value["TO_VALUE"],
);
$log = new CTaskLog();
$log->Add($arLogFields);
}
}
}
}
}