Your IP : 18.222.161.114


Current Path : /home/bitrix/ext_www/dev.ballu.in.ua/local/modules/rusklimat.exchange/options/
Upload File :
Current File : /home/bitrix/ext_www/dev.ballu.in.ua/local/modules/rusklimat.exchange/options/agents.php

<?
/*
 * 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"
			> секунд &nbsp;&nbsp;&nbsp;
			<?if(!empty($arAgents[$r_e_class_name])){?>
				(Активность: <?=$arAgents[$r_e_class_name]["ACTIVE"]?>, След.запуск: <?=$arAgents[$r_e_class_name]["NEXT_EXEC"]?>)
			<?}?>
		</td>
	</tr>
	<?
}
?>