• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/task.php
  • Класс: CAllTask
  • Вызов: CAllTask::SetOperations
static function SetOperations($ID, $arr, $bOpNames=false)
{
	global $DB, $CACHE_MANAGER;

	$ID = intval($ID);

	//get old operations
	$aPrevOp = array();
	$res = $DB->Query("
		SELECT O.NAME
		FROM b_operation O
		INNER JOIN b_task_operation T_OP ON O.ID = T_OP.OPERATION_ID
		WHERE T_OP.TASK_ID = ".$ID."
		ORDER BY O.ID
	");
	while(($res_arr = $res->Fetch()))
		$aPrevOp[] = $res_arr["NAME"];

	$sql_str = 'DELETE FROM b_task_operation WHERE TASK_ID='.$ID;
	$DB->Query($sql_str, false, "FILE: ".__FILE__."
LINE: ".__LINE__); if(is_array($arr) && !empty($arr)) { if($bOpNames) { $sID = ""; foreach($arr as $op_id) $sID .= ",'".$DB->ForSQL($op_id)."'"; $sID = LTrim($sID, ","); $DB->Query( "INSERT INTO b_task_operation (TASK_ID, OPERATION_ID) ". "SELECT '".$ID."', O.ID ". "FROM b_operation O, b_task T ". "WHERE O.NAME IN (".$sID.") AND T.MODULE_ID=O.MODULE_ID AND T.ID=".$ID." " , false, "File: ".__FILE__."
Line: ".__LINE__ ); } else { $sID = "0"; foreach($arr as $op_id) $sID .= ",".intval($op_id); $DB->Query( "INSERT INTO b_task_operation (TASK_ID, OPERATION_ID) ". "SELECT '".$ID."', ID ". "FROM b_operation ". "WHERE ID IN (".$sID.") " , false, "File: ".__FILE__."
Line: ".__LINE__ ); } } unset(static::$TASK_OPERATIONS_CACHE[$ID]); if(CACHED_b_task_operation !== false) $CACHE_MANAGER->CleanDir("b_task_operation"); //get new operations $aNewOp = array(); $res = $DB->Query(" SELECT O.NAME FROM b_operation O INNER JOIN b_task_operation T_OP ON O.ID = T_OP.OPERATION_ID WHERE T_OP.TASK_ID = ".$ID." ORDER BY O.ID "); while(($res_arr = $res->Fetch())) $aNewOp[] = $res_arr["NAME"]; //compare with old one $aDiff = array_diff($aNewOp, $aPrevOp); if(empty($aDiff)) $aDiff = array_diff($aPrevOp, $aNewOp); if(!empty($aDiff)) { if(COption::GetOptionString("main", "event_log_task", "N") === "Y") CEventLog::Log("SECURITY", "TASK_CHANGED", "main", $ID, "(".implode(", ", $aPrevOp).") => (".implode(", ", $aNewOp).")"); foreach(GetModuleEvents("main", "OnTaskOperationsChanged", true) as $arEvent) ExecuteModuleEventEx($arEvent, array($ID, $aPrevOp, $aNewOp)); } }