Your IP : 18.191.103.151
<?
/*
* RusKlimat MainModule
* AGENTS
*
* @author Alex
* @date 09/06/2018
*/
// Џодключаем классы длЯ работы с higloadblockами
use Bitrix\Highloadblock;
use Bitrix\Main\Entity;
CModule::IncludeModule("highloadblock");
IncludeModuleLangFile(__FILE__);
// получим все работающие агенты модуля
$arAgents = array();
$resAgents = CAgent::GetList(Array("ID" => "DESC"), array("MODULE_ID" => "rusklimat.exchange"));
while($obAgents = $resAgents->Fetch()){
preg_match('/\(new\s(.*)\)->(.*)/', $obAgents["NAME"], $found);
if(!empty($found[1]))
{
$agentClassName = $found[1];
$arAgents[$agentClassName] = $obAgents;
}
}
if($_POST["Update"]=="Y")
{
$check_agents = COption::GetOptionString("main", "check_agents", "Y");
$agents_use_crontab = COption::GetOptionString("main", "agents_use_crontab", "Y");
if($check_agents == "Y" || $agents_use_crontab == "Y")
{
echo '<p>Для установки работы модуля через агенты необходимо поставить выполнение агентов на крон!</p>';
echo '<p><a href="https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=2943&LESSON_PATH=3913.4776.4620.4978.2943">как это сделать?</a></p>';
}
else
{
echo '<div class="attation">';
// получим все агенты нашего модуля
if(!empty($_POST["RK_EXCHANGE_AGENTS_CLASS"]))
{
foreach($_POST["RK_EXCHANGE_AGENTS_CLASS"] as $update_class_name => $valY)
{
// периодичность
$update_class_time = $_POST["RK_EXCHANGE_AGENTS_TIME"][$update_class_name];
if(empty($update_class_time))
$update_class_time = 86400; // раз в день
// если такой агент уже есть
if(!empty($arAgents[$update_class_name]))
{
// смотрим совпадает ли периодичность
if($update_class_time != $arAgents[$update_class_name]["AGENT_INTERVAL"])
{
CAgent::Update($arAgents[$update_class_name]["ID"], array("AGENT_INTERVAL" => $update_class_time));
}
}
else
{
$test = new $update_class_name;
if(!$test->hasError())
{
$plus_five_min = mktime(date("H"), date("i")+5, date("s"), date("m"), date("d"), date("Y"));
$date_agent = FormatDate("d.m.Y H:i:s", $plus_five_min);
// добавим агент модуля
CAgent::AddAgent(
"(new ".$update_class_name.")->runExchange();", // имя функции
"rusklimat.exchange", // идентификатор модуля
"Y", //
$update_class_time, // интервал запуска
$date_agent, // дата первой проверки на запуск
"Y", // агент активен
$date_agent // дата первого запуска
);
}
}
unset($arAgents[$update_class_name]);
}
// теперь удаляем лишние
foreach($arAgents as $agentDelete)
{
CAgent::Delete($agentDelete["ID"]);
}
// и еще раз получим всю инфу по нашим агентам для вывода
$arAgents = array();
$resAgents = CAgent::GetList(Array("ID" => "DESC"), array("MODULE_ID" => "rusklimat.exchange"));
while($obAgents = $resAgents->Fetch()){
preg_match('/\(new\s(.*)\)->(.*)/', $obAgents["NAME"], $found);
if(!empty($found[1]))
{
$agentClassName = $found[1];
$arAgents[$agentClassName] = $obAgents;
}
}
}
echo '</div>';
}
}
global $r_e_classes;
?>
<tr>
<td colspan="2">
<?= BeginNote();?>
<?=GetMessage('RK_EXCHANGE_AGENTS_NOTE')?>
<?= EndNote(); ?>
</td>
</tr>
<tr class="heading"><td colspan="2"><?=GetMessage("RK_EXCHANGE_AGENTS_ENTITY");?></td></tr>
<?foreach($r_e_classes as $r_e_class_name => $r_e_class_link)
{
$selected = "";
if(strpos($r_e_class_name, "Exchange") === false)
continue;
$clear_name = str_replace("RusklimatExchange", "", $r_e_class_name);
$upper_name = strtoupper($r_e_class_name);
if(!empty($arAgents[$r_e_class_name]))
$selected = "Y";
?>
<tr class="rk-option" class="rk_exchange_agent">
<td width="50%" valign="top"><label for="RK_EXCHANGE_AGENTS_CLASS[<?=$r_e_class_name?>]"><? echo $clear_name;?>:</td>
<td valign="top" >
<input
type="checkbox"
name="RK_EXCHANGE_AGENTS_CLASS[<?=$r_e_class_name?>]"
value="Y"
class="rk_exchange_agent_class"
attr-class="<?=$r_e_class_name?>"
<?=($selected == "Y") ? ('checked="checked"') : ('') ?>
>
<input
type="text"
name="RK_EXCHANGE_AGENTS_TIME[<?=$r_e_class_name?>]"
value="<?=(!empty($arAgents[$r_e_class_name]["AGENT_INTERVAL"]))?$arAgents[$r_e_class_name]["AGENT_INTERVAL"]:"";?>"
class="rk_exchange_agent_time"
> секунд
<?if(!empty($arAgents[$r_e_class_name])){?>
(Активность: <?=$arAgents[$r_e_class_name]["ACTIVE"]?>, След.запуск: <?=$arAgents[$r_e_class_name]["NEXT_EXEC"]?>)
<?}?>
</td>
</tr>
<?
}
?>