Example #1
0
 public static function AgentRun($profileID, $in_agent = "N")
 {
     global $DB;
     $agent_ID = 0;
     $pr = CProfileAdmin::GetByID($profileID)->Fetch();
     $datacheck = date("d.m.Y H:i:s", $pr["DATA_START"]);
     $agent_period = intval($pr["PERIOD"]);
     if ($agent_period <= 0) {
         $agent_period = 86400;
     }
     if ($profileID > 0) {
         if ($in_agent == "Y") {
             CAgent::RemoveAgent("CGM::ReturnXMLData(" . $profileID . ");", "acrit.googlemerchant");
         } else {
             $arAgent = CAgent::GetList(array(), array("NAME" => "CGM::ReturnXMLData(" . $profileID . ");"))->Fetch();
             if (!$arAgent) {
                 $agent_ID = CAgent::AddAgent("CGM::ReturnXMLData(" . $profileID . ");", "acrit.googlemerchant", "N", $agent_period, $datacheck, "Y", $datacheck, 100);
             } elseif ($arAgent) {
                 if ($arAgent['NEXT_EXEC'] > $datacheck) {
                     $datacheck = $arAgent['NEXT_EXEC'];
                 }
                 CAgent::Update($arAgent['ID'], array("AGENT_INTERVAL" => $agent_period, "ACTIVE" => "Y", "NEXT_EXEC" => $datacheck));
             }
         }
     }
     return $agent_ID;
 }
 public static function AddAgent($profileID, $setup)
 {
     COption::SetOptionString("main", "agents_use_crontab", "Y");
     $agent_ID = 0;
     $agent_period = intval($setup["PERIOD"]) * 60;
     if ($agent_period <= 0) {
         $agent_period = 86400;
     }
     $setupDateStamp = MakeTimeStamp($setup["DAT_START"]);
     $currentDateStamp = time() + 120;
     $runTime = date("d.m.Y H:i", $setupDateStamp < $currentDateStamp ? $currentDateStamp : $setupDateStamp);
     if ($profileID > 0) {
         $arAgent = CAgent::GetList(array(), array("NAME" => "CExportproAgent::StartExport(" . $profileID . ");"))->Fetch();
         if (!$arAgent) {
             $agent_ID = CAgent::AddAgent("CExportproAgent::StartExport(" . $profileID . ");", "acrit.exportpro", "N", $agent_period, "", "Y", $runTime);
         } elseif ($arAgent) {
             $agent_ID = $arAgent["ID"];
             $agentNextStart = MakeTimeStamp($arAgent["NEXT_EXEC"]);
             if ($agentNextStart == $setupDateStamp && $agentNextStart > $currentDateStamp) {
                 $runTime = date("d.m.Y H:i", $agentNextStart);
             }
             CAgent::Update($arAgent["ID"], array("AGENT_INTERVAL" => $agent_period != $arAgent["AGENT_INTERVAL"] ? $agent_period : $arAgent["AGENT_INTERVAL"], "NEXT_EXEC" => $runTime));
         }
     }
     if (file_exists($_SERVER["DOCUMENT_ROOT"] . "/bitrix/crontab/crontab.cfg")) {
         $cfgFileSize = filesize($_SERVER["DOCUMENT_ROOT"] . "/bitrix/crontab/crontab.cfg");
         $fp = fopen($_SERVER["DOCUMENT_ROOT"] . "/bitrix/crontab/crontab.cfg", "rb");
         $cfgData = fread($fp, $cfgFileSize);
         fclose($fp);
         $cfgData = preg_replace("#.*bitrix\\/modules\\/main\\/tools\\/cron_events.php(\r)*\n#i", "", $cfgData);
         $cfgData = preg_replace("#.*bitrix\\/modules\\/main\\/tools\\/cron_events.php#i", "", $cfgData);
         $cronTask = "* * * * * php -f {$_SERVER["DOCUMENT_ROOT"]}/bitrix/modules/main/tools/cron_events.php";
         $cfgData .= PHP_EOL . $cronTask . PHP_EOL;
         file_put_contents($_SERVER["DOCUMENT_ROOT"] . "/bitrix/crontab/crontab.cfg", $cfgData);
         @exec("crontab " . $_SERVER["DOCUMENT_ROOT"] . "/bitrix/crontab/crontab.cfg");
     }
     return $agent_ID;
 }
Example #3
0
        $ID = IntVal($ID);
        if ($ID <= 0) {
            continue;
        }
        switch ($_REQUEST['action']) {
            case "delete":
                @set_time_limit(0);
                if (!CAgent::Delete($ID)) {
                    $lAdmin->AddGroupError(GetMessage("DELETE_ERROR"), $ID);
                }
                break;
            case "activate":
                CAgent::Update($ID, array("ACTIVE" => "Y"));
                break;
            case "deactivate":
                CAgent::Update($ID, array("ACTIVE" => "N"));
                break;
        }
    }
}
$agentList = CAgent::GetList(array($by => $order), $arFilter);
$rsData = new CAdminResult($agentList, $sTableID);
$rsData->NavStart(20);
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("MAIN_AGENT_LIST_PAGE")));
$lAdmin->AddHeaders(array(array("id" => "ID", "content" => GetMessage("MAIN_AGENT_ID"), "sort" => "ID", "default" => true), array("id" => "MODULE_ID", "content" => GetMessage("MAIN_AGENT_MODULE_ID"), "sort" => "MODULE_ID", "default" => true), array("id" => "USER_ID", "content" => GetMessage("MAIN_AGENT_USER_ID"), "sort" => "USER_ID", "default" => true), array("id" => "SORT", "content" => GetMessage("MAIN_AGENT_SORT"), "sort" => "SORT"), array("id" => "NAME", "content" => GetMessage("MAIN_AGENT_NAME"), "sort" => "NAME", "default" => true), array("id" => "ACTIVE", "content" => GetMessage("MAIN_AGENT_ACTIVE"), "sort" => "ACTIVE", "default" => true), array("id" => "LAST_EXEC", "content" => GetMessage("MAIN_AGENT_LAST_EXEC"), "sort" => "LAST_EXEC", "default" => true), array("id" => "NEXT_EXEC", "content" => GetMessage("MAIN_AGENT_NEXT_EXEC"), "sort" => "NEXT_EXEC", "default" => true), array("id" => "AGENT_INTERVAL", "content" => GetMessage("MAIN_AGENT_INTERVAL"), "sort" => "AGENT_INTERVAL", "default" => true), array("id" => "IS_PERIOD", "content" => GetMessage("MAIN_AGENT_PERIOD"), "sort" => "IS_PERIOD")));
while ($db_res = $rsData->NavNext(true, "a_")) {
    $row =& $lAdmin->AddRow($a_ID, $db_res);
    $row->AddField("ID", $a_ID);
    $row->AddField("MODULE_ID", $a_MODULE_ID);
    $row->AddField("USER_ID", $a_USER_ID > 0 ? "<a href=\"/freetrix/admin/user_edit.php?ID=" . $a_USER_ID . "&lang=" . LANG . "\">[" . $a_USER_ID . "] " . $a_USER_NAME . " " . $a_LAST_NAME . " (" . $a_LOGIN . ")</a>" : GetMessage("MAIN_AGENT_SYSTEM_USER"));
    $row->AddInputField("SORT");
Example #4
0
 /**
  * Ping from the agent to inform that it still works correctly. Use this method if your agent
  * works more 10 minutes, otherwise Bitrix will be consider your agent as non-working.
  *
  * Usage:
  * ```php
  * public function executeAgent($param1, $param2)
  * {
  *      // start a heavy (big) cycle
  *
  *          $this->pingAgent(20, ['executeAgent => [$param1, $param2]]);
  *
  *      // end of cycle
  * }
  * ```
  *
  * @param int $interval The time in minutes after which the agent will be considered non-working.
  * @param array $callChain Array with the call any methods from Agent class.
  */
 protected function pingAgent($interval, array $callChain)
 {
     if (!$this->isAgentMode()) {
         return;
     }
     $name = $this->getAgentName($callChain);
     $model = new \CAgent();
     $rsAgent = $model->GetList([], ['NAME' => $name]);
     if ($agent = $rsAgent->Fetch()) {
         $dateCheck = DateTime::createFromTimestamp(time() + $interval * 60);
         $pingResult = $model->Update($agent['ID'], ['DATE_CHECK' => $dateCheck->toString()]);
         if (!$pingResult) {
             // @todo warning
         }
     } else {
         // @todo warning
     }
 }
Example #5
0
            ob_end_clean();
            LocalRedirect($APPLICATION->GetCurPage() . '?lang=' . LANGUAGE_ID . '&mid=' . $module_id . '&' . $tabControl->ActiveTabParam());
        }
        if (isset($_POST['procedures']) && $_POST['procedures'] === 'Y' && isset($_POST['action']) && $_POST['action'] == 'recalc') {
            CCurrency::updateAllCurrencyBaseRate();
            LocalRedirect($APPLICATION->GetCurPage() . '?lang=' . LANGUAGE_ID . '&mid=' . $module_id . '&' . $systemTabControl->ActiveTabParam());
        }
        if (isset($_POST['agents']) && $_POST['agents'] == 'Y' && isset($_POST['action']) && !empty($_POST['action'])) {
            $action = (string) $_POST['action'];
            switch ($action) {
                case 'activate':
                case 'deactivate':
                    $agentIterator = CAgent::GetList(array(), array('MODULE_ID' => 'currency', '=NAME' => '\\Bitrix\\Currency\\CurrencyTable::currencyBaseRateAgent();'));
                    if ($currencyAgent = $agentIterator->Fetch()) {
                        $active = $action == 'activate' ? 'Y' : 'N';
                        CAgent::Update($currencyAgent['ID'], array('ACTIVE' => $active));
                    }
                    break;
                case 'create':
                    $checkDate = DateTime::createFromTimestamp(strtotime('tomorrow 00:01:00'));
                    CAgent::AddAgent('\\Bitrix\\Currency\\CurrencyTable::currencyBaseRateAgent();', 'currency', 'Y', 86400, '', 'Y', $checkDate->toString(), 100, false, true);
                    break;
            }
            LocalRedirect($APPLICATION->GetCurPage() . '?lang=' . LANGUAGE_ID . '&mid=' . $module_id . '&' . $systemTabControl->ActiveTabParam());
        }
    }
    $baseCurrency = Currency\CurrencyManager::getBaseCurrency();
    $tabControl->Begin();
    ?>
	<form method="POST" action="<?php 
    echo $APPLICATION->GetCurPage();
Example #6
0
         $res = CCrmExternalSale::Add($arFields);
     }
     if (!$res) {
         if ($ex = $GLOBALS["APPLICATION"]->GetException()) {
             $errorMessage .= $ex->GetString() . ".<br>";
         } else {
             $errorMessage .= "Unknown error." . "<br>";
         }
     }
 }
 if (strlen($errorMessage) <= 0) {
     $dbAgents = CAgent::GetList(array(), array("NAME" => "CCrmExternalSaleImport::DataSync(" . intval($res) . ");", "MODULE_ID" => "crm"));
     if ($arAgent = $dbAgents->Fetch()) {
         if ($arResult["BP"]["DATA_SYNC_PERIOD"] > 0) {
             if ($arAgent["ACTIVE"] != "Y" || intval($arAgent["AGENT_INTERVAL"] / 60) != $arResult["BP"]["DATA_SYNC_PERIOD"]) {
                 CAgent::Update($arAgent["ID"], array("ACTIVE" => "Y", "AGENT_INTERVAL" => 60 * $arResult["BP"]["DATA_SYNC_PERIOD"]));
             }
         } else {
             CAgent::RemoveAgent("CCrmExternalSaleImport::DataSync(" . intval($res) . ");", "crm");
         }
     } else {
         if ($arResult["BP"]["DATA_SYNC_PERIOD"] > 0) {
             CAgent::AddAgent("CCrmExternalSaleImport::DataSync(" . intval($res) . ");", "crm", "N", 60 * $arResult["BP"]["DATA_SYNC_PERIOD"]);
         }
     }
     if (isset($_POST['apply'])) {
         LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_EDIT"], array("id" => intval($res))));
     }
     LocalRedirect(CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_SYNC"], array("id" => intval($res))));
     //LocalRedirect($arResult["PATH_TO_INDEX"]);
 } else {
Example #7
0
         }
         $tSwitch = 'N';
         if (isset($_POST['tracking_check_switch']) && $_POST['tracking_check_switch'] == 'Y') {
             $tSwitch = 'Y';
         }
         Option::set('sale', 'tracking_check_switch', $tSwitch);
         $tPeriod = 0;
         if (isset($_POST['tracking_check_period']) && intval($_POST['tracking_check_period']) > 0) {
             $tPeriod = intval($_POST['tracking_check_period']);
         }
         Option::set('sale', 'tracking_check_period', $tPeriod);
         $agentName = '\\Bitrix\\Sale\\Delivery\\Tracking\\Manager::startRefreshingStatuses();';
         if ($tSwitch == 'Y' && $tPeriod > 0) {
             $res = \CAgent::GetList(array(), array('NAME' => $agentName));
             if ($agent = $res->Fetch()) {
                 \CAgent::Update($agent['ID'], array('AGENT_INTERVAL' => $tPeriod * 60 * 60));
             } else {
                 \CAgent::AddAgent($agentName, 'sale', "Y", $tPeriod * 60 * 60, "", "Y");
             }
         } else {
             \CAgent::RemoveAgent($agentName, 'sale');
         }
     }
 }
 $arStatuses = array("" => GetMessage("SMO_STATUS"));
 $dbStatus = CSaleStatus::GetList(array("SORT" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array("ID", "NAME", "SORT"));
 while ($arStatus = $dbStatus->GetNext()) {
     $arStatuses[$arStatus["ID"]] = "[" . $arStatus["ID"] . "] " . $arStatus["NAME"];
 }
 if ($strWarning != '') {
     CAdminMessage::ShowMessage($strWarning);
Example #8
0
 /**
  * Update agent's params.
  * @param string $siteId Site id.
  * @param array $feedSettings Feed settings.
  * @return array Feed settings with renew agents ids.
  */
 public static function update($siteId, array $feedSettings)
 {
     foreach ($feedSettings as $feedType => $feedParams) {
         $interval = intval($feedParams["INTERVAL"]);
         $dbRes = \CAgent::GetList(array(), array('NAME' => self::createAgentNameForAdd($feedType, $siteId)));
         if ($agent = $dbRes->Fetch()) {
             if ($interval <= 0) {
                 \CAgent::Delete($agent["ID"]);
                 $feedSettings[$feedType]["AGENT_ID"] = 0;
                 continue;
             }
             \CAgent::Update($agent["ID"], array('AGENT_INTERVAL' => $interval * 60));
             $feedSettings[$feedType]["AGENT_ID"] = $agent["ID"];
         } else {
             $feedSettings[$feedType]["AGENT_ID"] = self::add($feedType, $siteId, $feedParams["INTERVAL"]);
         }
     }
     return $feedSettings;
 }
Example #9
0
if ($ID > 0) {
    $res = CAgent::GetById($ID);
    $arr = $res->ExtractFields("a_");
}
$APPLICATION->SetTitle($ID <= 0 ? GetMessage("MAIN_AGENT_NEW_PAGE_TITLE") : str_replace("#ID#", " {$ID}", GetMessage("MAIN_AGENT_EDIT_PAGE_TITLE")));
$sTableID = "tbl_agent_edit";
$aTabs = array(array("DIV" => "tab1", "TAB" => GetMessage("MAIN_AGENT_TAB"), "ICON" => "main_user_edit", "TITLE" => GetMessage("MAIN_AGENT_TAB_TITLE")));
$editTab = new CAdminTabControl("editTab", $aTabs);
$APPLICATION->ResetException();
if ($REQUEST_METHOD == "POST" && (strlen($save) > 0 || strlen($apply) > 0) && $isAdmin && check_bitrix_sessid()) {
    $arFields = array("NAME" => $NAME, "MODULE_ID" => $MODULE_ID, "ACTIVE" => $ACTIVE, "SORT" => $SORT, "IS_PERIOD" => $IS_PERIOD, "AGENT_INTERVAL" => $AGENT_INTERVAL, "NEXT_EXEC" => $NEXT_EXEC, "USER_ID" => false);
    if (intval($USER_ID) > 0) {
        $arFields["USER_ID"] = $USER_ID;
    }
    if ($ID > 0) {
        $res = CAgent::Update($ID, $arFields);
    } else {
        $ID = CAgent::Add($arFields);
        $res = $ID > 0;
    }
    if ($res) {
        if (strlen($save) > 0) {
            LocalRedirect("/bitrix/admin/agent_list.php");
        } elseif (strlen($apply) > 0) {
            LocalRedirect("/bitrix/admin/agent_edit.php?&ID=" . $ID . "&" . $editTab->ActiveTabParam());
        }
    }
}
require $_SERVER["DOCUMENT_ROOT"] . BX_ROOT . "/modules/main/include/prolog_admin_after.php";
$aMenu = array(array("TEXT" => GetMessage("MAIN_AGENT_RECORD_LIST"), "LINK" => "/bitrix/admin/agent_list.php?lang=" . LANG, "ICON" => "btn_list", "TITLE" => GetMessage("MAIN_AGENT_RECORD_LIST_TITLE")));
if ($ID > 0) {
Example #10
0
        $res = CCrmExternalSale::Update($id, $arFields);
        if (!$res) {
            if ($ex = $GLOBALS["APPLICATION"]->GetException()) {
                $errorMessage .= $ex->GetString() . ".<br>";
            } else {
                $errorMessage .= "Unknown error." . "<br>";
            }
        }
    }
    if (empty($errorMessage)) {
        $dataSyncPeriod = intval($_REQUEST["DATA_SYNC_PERIOD"]);
        $dbAgents = CAgent::GetList(array(), array("NAME" => "CCrmExternalSaleImport::DataSync(" . $id . ");", "MODULE_ID" => "crm"));
        if ($arAgent = $dbAgents->Fetch()) {
            if ($dataSyncPeriod > 0) {
                if ($arAgent["ACTIVE"] != "Y" || intval($arAgent["AGENT_INTERVAL"] / 60) != $dataSyncPeriod) {
                    CAgent::Update($arAgent["ID"], array("ACTIVE" => "Y", "AGENT_INTERVAL" => 60 * $dataSyncPeriod));
                }
            } else {
                CAgent::RemoveAgent("CCrmExternalSaleImport::DataSync(" . $id . ");", "crm");
            }
        } else {
            if ($dataSyncPeriod > 0) {
                CAgent::AddAgent("CCrmExternalSaleImport::DataSync(" . $id . ");", "crm", "N", 60 * $dataSyncPeriod);
            }
        }
    }
}
if ($processActions && !empty($errorMessage)) {
    $currentStep--;
}
?>