- Модуль: controller
- Путь к файлу: ~/bitrix/modules/controller/classes/general/controllergroup.php
- Класс: CControllerGroup
- Вызов: CControllerGroup::RunCommand
static function RunCommand($group_id, $php_script, $arParameters = Array())
{
global $DB;
$group_id = intval($group_id);
if ($php_script == 'COUNTERS_UPDATE' || $php_script == 'SET_SETTINGS' || $php_script == 'UPDATE')
{
$task_id = $php_script;
$php_script = "";
}
else
{
$task_id = 'REMOTE_COMMAND';
}
$arUpdateFields = array(
"~DATE_CREATE" => $DB->CurrentTimeFunction(),
"INIT_EXECUTE" => ($php_script <> ''? $php_script : false),
"INIT_EXECUTE_PARAMS" => (count($arParameters)? serialize($arParameters): false),
);
$arUpdateBinds = array();
$strUpdate = "
UPDATE b_controller_task
SET ".$DB->PrepareUpdateBind("b_controller_task", $arUpdateFields, "", false, $arUpdateBinds)."
WHERE
CONTROLLER_MEMBER_ID = #'MID'#
AND TASK_ID = '$task_id'
AND DATE_EXECUTE IS NULL
";
$arInsertFields = array(
"~DATE_CREATE" => $DB->CurrentTimeFunction(),
"TASK_ID" => $task_id,
"INIT_EXECUTE" => ($php_script <> ''? $php_script : false),
"INIT_EXECUTE_PARAMS" => (count($arParameters)? serialize($arParameters): false),
"DATE_EXECUTE" => false,
);
$strSql = "SELECT M.ID FROM b_controller_member M WHERE M.CONTROLLER_GROUP_ID=".$group_id." AND M.ACTIVE = 'Y'";
$rsMembers = $DB->Query($strSql);
while ($arMember = $rsMembers->Fetch())
{
$arBinds = array();
foreach ($arUpdateBinds as $field_id)
$arBinds[$field_id] = $arUpdateFields[$field_id];
$rsUpdate = $DB->QueryBind(str_replace("#'MID'#", $arMember["ID"], $strUpdate), $arBinds);
if ($rsUpdate->AffectedRowsCount() <= 0)
{
$arInsertFields["CONTROLLER_MEMBER_ID"] = $arMember["ID"];
$DB->Add("b_controller_task", $arInsertFields, array("INIT_EXECUTE", "INIT_EXECUTE_PARAMS"));
}
}
}