Exemplo n.º 1
0
 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();";
 }
Exemplo n.º 2
0
 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));
 }