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