function UnregisterExpiredAgent($id = false) { global $DB; $handledMembers = array(); if ($id > 0) { $strAddWhere = 'AND M.ID = ' . intval($id); } else { $strAddWhere = ''; } $strSql = "\n\t\t\tSELECT M.ID\n\t\t\tFROM b_controller_member M\n\t\t\tINNER JOIN b_controller_group G ON M.CONTROLLER_GROUP_ID = G.ID\n\t\t\tWHERE\n\t\t\t\tG.TRIAL_PERIOD > 0\n\t\t\t\tAND TO_DAYS(now()) - TO_DAYS(M.IN_GROUP_FROM) >= G.TRIAL_PERIOD\n\t\t\t\tAND SITE_ACTIVE = 'Y'\n\t\t\t\tAND DISCONNECTED = 'N'\n\t\t\t\t" . $strAddWhere . "\n\t\t"; $dbr = $DB->Query($strSql); while ($ar = $dbr->Fetch()) { if ($id > 0) { CControllerMember::CloseMember($id, true); return true; } elseif (!isset($handledMembers[$ar["ID"]])) { $handledMembers[$ar["ID"]] = $ar["ID"]; CControllerTask::Add(array("TASK_ID" => "CLOSE_MEMBER", "CONTROLLER_MEMBER_ID" => $ar["ID"], "INIT_EXECUTE_PARAMS" => true)); } } $strSql = "\n\t\t\tSELECT M.ID\n\t\t\tFROM b_controller_member M\n\t\t\tWHERE\n\t\t\t\t(DATE_ACTIVE_FROM IS NULL OR DATE_ACTIVE_FROM <= " . $DB->CurrentTimeFunction() . ")\n\t\t\t\tAND (DATE_ACTIVE_TO IS NULL OR DATE_ACTIVE_TO >= " . $DB->CurrentTimeFunction() . ")\n\t\t\t\tAND ACTIVE = 'Y'\n\t\t\t\tAND SITE_ACTIVE <> 'Y'\n\t\t\t\tAND DISCONNECTED = 'N'\n\t\t\t\t" . $strAddWhere . "\n\t\t"; $dbr = $DB->Query($strSql); while ($ar = $dbr->Fetch()) { if ($id > 0) { CControllerMember::CloseMember($id, false); return true; } elseif (!isset($handledMembers[$ar["ID"]])) { $handledMembers[$ar["ID"]] = $ar["ID"]; CControllerTask::Add(array("TASK_ID" => "CLOSE_MEMBER", "CONTROLLER_MEMBER_ID" => $ar["ID"], "INIT_EXECUTE_PARAMS" => false)); } } $strSql = "\n\t\t\tSELECT M.ID\n\t\t\tFROM b_controller_member M\n\t\t\tWHERE\n\t\t\t\t(\n\t\t\t\t\tDATE_ACTIVE_FROM > " . $DB->CurrentTimeFunction() . "\n\t\t\t\t\tOR DATE_ACTIVE_TO < " . $DB->CurrentTimeFunction() . "\n\t\t\t\t\tOR ACTIVE = 'N'\n\t\t\t\t)\n\t\t\t\tAND SITE_ACTIVE = 'Y'\n\t\t\t\tAND DISCONNECTED = 'N'\n\t\t\t\t" . $strAddWhere . "\n\t\t"; $dbr = $DB->Query($strSql); while ($ar = $dbr->Fetch()) { if ($id > 0) { CControllerMember::CloseMember($id, true); return true; } elseif (!isset($handledMembers[$ar["ID"]])) { $handledMembers[$ar["ID"]] = $ar["ID"]; CControllerTask::Add(array("TASK_ID" => "CLOSE_MEMBER", "CONTROLLER_MEMBER_ID" => $ar["ID"], "INIT_EXECUTE_PARAMS" => true)); } } if ($id > 0) { return true; } return "CControllerMember::UnregisterExpiredAgent();"; }
function UnregisterExpiredAgent($id = false) { global $DB; if ($id > 0) { $strAddWhere = ' AND M.ID=' . IntVal($id); } else { $strAddWhere = ''; } $strSql = "SELECT M.ID " . "FROM b_controller_member M " . " INNER JOIN b_controller_group G ON M.CONTROLLER_GROUP_ID=G.ID " . "WHERE G.TRIAL_PERIOD>0 " . "\tAND TO_DAYS(now()) - TO_DAYS(M.IN_GROUP_FROM) >= G.TRIAL_PERIOD " . "\tAND SITE_ACTIVE = 'Y' " . $strAddWhere; $dbr = $DB->Query($strSql); while ($ar = $dbr->Fetch()) { if ($id > 0) { CControllerMember::CloseMember($id, true); return true; } else { CControllerTask::Add(array("TASK_ID" => "CLOSE_MEMBER", "CONTROLLER_MEMBER_ID" => $ar["ID"], "INIT_EXECUTE_PARAMS" => true)); } } $strSql = "SELECT M.ID " . "FROM b_controller_member M " . "WHERE (DATE_ACTIVE_FROM IS NULL OR DATE_ACTIVE_FROM <= " . $DB->CurrentTimeFunction() . ") " . "\tAND (DATE_ACTIVE_TO IS NULL OR DATE_ACTIVE_TO >= " . $DB->CurrentTimeFunction() . ") " . "\tAND ACTIVE = 'Y' " . "\tAND SITE_ACTIVE <> 'Y'" . $strAddWhere; $dbr = $DB->Query($strSql); while ($ar = $dbr->Fetch()) { if ($id > 0) { CControllerMember::CloseMember($id, false); return true; } else { CControllerTask::Add(array("TASK_ID" => "CLOSE_MEMBER", "CONTROLLER_MEMBER_ID" => $ar["ID"], "INIT_EXECUTE_PARAMS" => false)); } } $strSql = "SELECT M.ID " . "FROM b_controller_member M " . "WHERE (DATE_ACTIVE_FROM>" . $DB->CurrentTimeFunction() . " " . "\tOR DATE_ACTIVE_TO<" . $DB->CurrentTimeFunction() . " " . "\tOR ACTIVE = 'N') " . "\tAND SITE_ACTIVE = 'Y'" . $strAddWhere; $dbr = $DB->Query($strSql); while ($ar = $dbr->Fetch()) { if ($id > 0) { CControllerMember::CloseMember($id, true); } else { CControllerTask::Add(array("TASK_ID" => "CLOSE_MEMBER", "CONTROLLER_MEMBER_ID" => $ar["ID"], "INIT_EXECUTE_PARAMS" => true)); } } if ($id > 0) { return true; } return "CControllerMember::UnregisterExpiredAgent();"; }
public function Execute() { global $DB; if (!CModule::IncludeModule("controller")) { return CBPActivityExecutionStatus::Closed; } if (!CModule::IncludeModule("iblock")) { return CBPActivityExecutionStatus::Closed; } $rootActivity = $this->GetRootActivity(); $documentId = $rootActivity->GetDocumentId(); if ($documentId[0] !== 'iblock' || $documentId[1] !== 'CIBlockDocument' || $documentId[2] <= 0) { return CBPActivityExecutionStatus::Closed; } $arFilter = array("=ACTIVE" => "Y", "=DISCONNECTED" => "N"); if ($this->SitesFilterType == "groups") { if (is_array($this->SitesFilterGroups)) { $arFilter["=CONTROLLER_GROUP_ID"] = $this->SitesFilterGroups; } else { return CBPActivityExecutionStatus::Closed; } } elseif ($this->SitesFilterType == "sites") { if (intval($this->SitesFilterSitesGroup) > 0 && is_array($this->SitesFilterSites)) { $arFilter["=CONTROLLER_GROUP_ID"] = $this->SitesFilterSitesGroup; $arFilter["=ID"] = $this->SitesFilterSites; } else { return CBPActivityExecutionStatus::Closed; } } $rootActivity = $this->GetRootActivity(); $documentId = $rootActivity->GetDocumentId(); $export_file = $this->Export($documentId); if (strlen($export_file) <= 0) { return CBPActivityExecutionStatus::Closed; } $documentService = $this->workflow->GetService("DocumentService"); $document = $documentService->GetDocument($documentId); $arIBlock = CIBlock::GetArrayByID($document["IBLOCK_ID"]); $iblock_type = $arIBlock["IBLOCK_TYPE_ID"]; $query = ' if(version_compare(SM_VERSION, "11.0.10") < 0) { echo "Client main module version >= 11.0.10 is required."; return false; } $charset_to = ' . $this->PHP2PHP(LANG_CHARSET) . '; $export_file = CTempFile::GetDirectoryName()."import.tar.gz"; $iblock_type = ' . $this->PHP2PHP($iblock_type) . '; if(!CModule::IncludeModule("iblock")) { echo "Information block module not installed"; return false; } $iblock_id = CIBlockCMLImport::GetIBlockByXML_ID(' . $this->PHP2PHP($arIBlock['XML_ID']) . '); if(!$iblock_id) { $rsType = CIBlockType::GetByID($iblock_type); if(!$rsType->Fetch()) { echo "Information block type not found: $iblock_type"; return false; } } CheckDirPath($export_file); file_put_contents($export_file, base64_decode("' . base64_encode(file_get_contents($export_file)) . '")); if(!file_exists($export_file) || !is_file($export_file)) { echo "Can not create file: ".$export_file; return false; } $USER->Authorize(1); $USER->SetControllerAdmin(true); $res = ImportXMLFile($export_file, $iblock_type, false, "N", "N", true, false, true, true); if($res !== true) { echo $APPLICATION->ConvertCharset($res, LANG_CHARSET, $charset_to); return false; } return true; '; $rsMembers = CControllerMember::GetList(array("ID" => "ASC"), $arFilter); if ($this->SyncTime == "task") { while ($arMember = $rsMembers->Fetch()) { CControllerTask::Add(array("TASK_ID" => "REMOTE_COMMAND", "CONTROLLER_MEMBER_ID" => $arMember["ID"], "INIT_EXECUTE" => $query)); } } else { while ($arMember = $rsMembers->Fetch()) { CControllerMember::RunCommandWithLog($arMember["ID"], $query, array(), false, 'run_immediate'); } } return CBPActivityExecutionStatus::Closed; }
} } $runQueue = array(); $dbr_members = CControllerMember::GetList(array("ID" => "ASC"), $arFilter); while ($ar_member = $dbr_members->Fetch()) { $runQueue[$ar_member["ID"]] = $ar_member["NAME"]; $cnt++; if ($maxSafeCount !== false && $cnt > $maxSafeCount) { $runQueue = array(); break; } } $cnt_ok = 0; foreach ($runQueue as $memberId => $memberName) { if ($add_task == "Y") { if (CControllerTask::Add(array("TASK_ID" => "REMOTE_COMMAND", "CONTROLLER_MEMBER_ID" => $memberId, "INIT_EXECUTE" => $query))) { $cnt_ok++; } } else { echo BeginNote(); echo "<b><u>" . htmlspecialcharsEx($memberName) . ":</u></b><br>"; $result = CControllerMember::RunCommandWithLog($memberId, $query); if ($result === false) { $e = $APPLICATION->GetException(); echo "Error: " . $e->GetString(); } else { echo nl2br($result); } echo EndNote(); } }
function SiteUpdate($member_id) { CControllerTask::Add(array("TASK_ID" => "UPDATE", "CONTROLLER_MEMBER_ID" => $member_id)); }