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;
 }
Example #2
0
 /**
  * @param null $mailingId
  * @param null $mailingChainId
  * @throws \Bitrix\Main\ArgumentException
  */
 public static function actualizeAgent($mailingId = null, $mailingChainId = null)
 {
     $agent = new \CAgent();
     $isSendByTimeMethodCron = \COption::GetOptionInt("sender", "auto_method") === 'cron';
     $arFilter = array();
     if ($mailingId) {
         $arFilter['=MAILING_ID'] = $mailingId;
     }
     if ($mailingChainId) {
         $arFilter['=ID'] = $mailingChainId;
     }
     $mailingChainDb = MailingChainTable::getList(array('select' => array('ID', 'STATUS', 'AUTO_SEND_TIME', 'MAILING_ACTIVE' => 'MAILING.ACTIVE'), 'filter' => $arFilter));
     while ($mailingChain = $mailingChainDb->fetch()) {
         $agentName = static::getAgentName($mailingChain['ID']);
         $rsAgents = $agent->GetList(array("ID" => "DESC"), array("MODULE_ID" => "sender", "NAME" => $agentName));
         while ($arAgent = $rsAgents->Fetch()) {
             $agent->Delete($arAgent["ID"]);
         }
         if ($isSendByTimeMethodCron || $mailingChain['REITERATE'] != 'Y' && empty($mailingChain['AUTO_SEND_TIME'])) {
             continue;
         }
         if ($mailingChain['MAILING_ACTIVE'] == 'Y' && $mailingChain['STATUS'] == MailingChainTable::STATUS_SEND) {
             if (!empty($mailingChain['AUTO_SEND_TIME'])) {
                 $dateExecute = $mailingChain['AUTO_SEND_TIME'];
             } else {
                 $dateExecute = "";
             }
             $agent->AddAgent($agentName, "sender", "N", 0, null, "Y", $dateExecute);
         }
     }
 }
Example #3
0
 public static function checkAgentIsAlive($name, $interval)
 {
     $name = '\\' . __CLASS__ . '::' . $name . ';';
     $agent = \CAgent::GetList(array(), array('MODULE_ID' => 'tasks', 'NAME' => $name))->fetch();
     if (!$agent['ID']) {
         \CAgent::AddAgent($name, 'tasks', 'N', $interval);
     }
 }
 public static function ensureAgentExists()
 {
     if (CTaskCountersProcessorInstaller::checkProcessIsNotActive()) {
         $agent = CAgent::GetList(array(), array('MODULE_ID' => 'tasks', 'NAME' => 'CTaskCountersProcessor::agent();'))->fetch();
         if (!is_array($agent) || !isset($agent['ID'])) {
             CAgent::AddAgent('CTaskCountersProcessor::agent();', 'tasks', 'N', 900);
             // every 15 minutes
         }
     }
 }
 public function deleteAgentIfExists($moduleName, $name)
 {
     /** @noinspection PhpDynamicAsStaticMethodCallInspection */
     $aAgent = \CAgent::GetList(array("ID" => "DESC"), array('MODULE_ID' => $moduleName, 'NAME' => $name))->Fetch();
     if (!$aAgent) {
         return false;
     }
     /** @noinspection PhpDynamicAsStaticMethodCallInspection */
     \CAgent::RemoveAgent($name, $moduleName);
     return true;
 }
Example #6
0
 private static function _addAgent()
 {
     global $APPLICATION;
     static $bAgentAdded = false;
     if (!$bAgentAdded) {
         $bAgentAdded = true;
         $rsAgents = CAgent::GetList(array("ID" => "DESC"), array("NAME" => "CPHPCacheFiles::DelayedDelete(%"));
         if (!$rsAgents->Fetch()) {
             $res = CAgent::AddAgent("CPHPCacheFiles::DelayedDelete();", "main", "Y", 1);
             if (!$res) {
                 $APPLICATION->ResetException();
             }
         }
     }
 }
Example #7
0
 private static function _addAgent()
 {
     global $APPLICATION;
     static $bAgentAdded = false;
     if (!$bAgentAdded) {
         $bAgentAdded = true;
         $rsAgents = CAgent::GetList(array("ID" => "DESC"), array("NAME" => "CSearchStemTable::DelayedStemIndex(%"));
         if (!$rsAgents->Fetch()) {
             $res = CAgent::AddAgent("CSearchStemTable::DelayedStemIndex();", "search", "N", 1);
             if (!$res) {
                 $APPLICATION->ResetException();
             }
         }
     }
 }
Example #8
0
 /**
  * Adds delayed delete worker agent.
  *
  * @return void
  */
 private static function addAgent()
 {
     global $APPLICATION;
     static $agentAdded = false;
     if (!$agentAdded) {
         $agentAdded = true;
         $agents = \CAgent::GetList(array("ID" => "DESC"), array("NAME" => "\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete(%"));
         if (!$agents->Fetch()) {
             $res = \CAgent::AddAgent("\\Bitrix\\Main\\Data\\CacheEngineFiles::delayedDelete();", "main", "Y", 1);
             if (!$res) {
                 $APPLICATION->ResetException();
             }
         }
     }
 }
Example #9
0
 public function replaceAgent($moduleName, $name, $interval, $nextExec)
 {
     /* @global $APPLICATION \CMain */
     global $APPLICATION;
     /** @noinspection PhpDynamicAsStaticMethodCallInspection */
     $aAgent = \CAgent::GetList(array("ID" => "DESC"), array('MODULE_ID' => $moduleName, 'NAME' => $name))->Fetch();
     if ($aAgent) {
         /** @noinspection PhpDynamicAsStaticMethodCallInspection */
         \CAgent::RemoveAgent($name, $moduleName);
     }
     /** @noinspection PhpDynamicAsStaticMethodCallInspection */
     $agentId = \CAgent::AddAgent($name, $moduleName, 'N', $interval, '', 'Y', $nextExec);
     if ($agentId) {
         return $agentId;
     }
     if ($APPLICATION->GetException()) {
         $this->throwException(__METHOD__, $APPLICATION->GetException()->GetString());
     } else {
         $this->throwException(__METHOD__, 'Agent %s not added', $name);
     }
 }
 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 #11
0
 function GetById($ID)
 {
     return CAgent::GetList(array(), array("ID" => IntVal($ID)));
 }
Example #12
0
        }
        $ID = IntVal($ID);
        switch ($_REQUEST['action']) {
            case "delete":
                @set_time_limit(0);
                $DB->StartTransaction();
                if (!CPosting::Delete($ID)) {
                    $DB->Rollback();
                    $lAdmin->AddGroupError(GetMessage("post_del_err"), $ID);
                }
                $DB->Commit();
                break;
            case "stop":
                $cPosting = new CPosting();
                $cPosting->ChangeStatus($ID, "W");
                $rsAgents = CAgent::GetList(array("ID" => "DESC"), array("MODULE_ID" => "subscribe", "NAME" => "CPosting::AutoSend(" . $ID . ",%"));
                while ($arAgent = $rsAgents->Fetch()) {
                    CAgent::Delete($arAgent["ID"]);
                }
                break;
        }
    }
}
$lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "id", "align" => "right", "default" => true), array("id" => "TIMESTAMP_X", "content" => GetMessage("post_updated"), "sort" => "timestamp", "default" => true), array("id" => "SUBJECT", "content" => GetMessage("post_subj"), "sort" => "subject", "default" => true), array("id" => "BODY_TYPE", "content" => GetMessage("post_body_type"), "sort" => "body_type", "default" => true), array("id" => "STATUS", "content" => GetMessage("post_stat"), "sort" => "status", "default" => true), array("id" => "DATE_SENT", "content" => GetMessage("post_sent"), "sort" => "date_sent", "default" => true), array("id" => "SENT_TO", "content" => GetMessage("post_report"), "sort" => false, "default" => false), array("id" => "FROM_FIELD", "content" => GetMessage("post_from"), "sort" => "from_field", "default" => false), array("id" => "TO_FIELD", "content" => GetMessage("post_to"), "sort" => "to_field", "default" => false)));
$cData = new CPosting();
$rsData = $cData->GetList(array($by => $order), $arFilter);
$rsData = new CAdminResult($rsData, $sTableID);
$rsData->NavStart();
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("post_nav")));
while ($arRes = $rsData->NavNext(true, "f_")) {
    $row =& $lAdmin->AddRow($f_ID, $arRes);
Example #13
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 #14
0
    ?>
?lang=<?php 
    echo LANGUAGE_ID;
    ?>
&mid=<?php 
    echo $module_id;
    ?>
" name="currency_agents"><?php 
    echo bitrix_sessid_post();
    ?>
<h4><?php 
    echo Loc::getMessage('CURRENCY_BASE_RATE_AGENT');
    ?>
</h4><?php 
    $currencyAgent = false;
    $agentIterator = CAgent::GetList(array(), array('MODULE_ID' => 'currency', '=NAME' => '\\Bitrix\\Currency\\CurrencyTable::currencyBaseRateAgent();'));
    if ($agentIterator) {
        $currencyAgent = $agentIterator->Fetch();
    }
    if (!empty($currencyAgent)) {
        $currencyAgent['LAST_EXEC'] = (string) $currencyAgent['LAST_EXEC'];
        $currencyAgent['NEXT_EXEC'] = (string) $currencyAgent['NEXT_EXEC'];
        ?>
<b><?php 
        echo Loc::getMessage('CURRENCY_BASE_RATE_AGENT_ACTIVE');
        ?>
:</b>&nbsp;<?php 
        echo $currencyAgent['ACTIVE'] == 'Y' ? Loc::getMessage('CURRENCY_AGENTS_ACTIVE_YES') : Loc::getMessage('CURRENCY_AGENTS_ACTIVE_NO');
        ?>
<br><?php 
        if ($currencyAgent['LAST_EXEC']) {
Example #15
0
 public static function TrySendEmail($ID, &$arFields, &$arErrors)
 {
     global $APPLICATION;
     if (!CModule::IncludeModule('subscribe')) {
         $arErrors[] = array('CODE' => self::ERR_CANT_LOAD_SUBSCRIBE);
         return false;
     }
     $ID = intval($ID);
     if ($ID <= 0 && isset($arFields['ID'])) {
         $ID = intval($arFields['ID']);
     }
     if ($ID <= 0 || !is_array($arFields)) {
         $arErrors[] = array('CODE' => self::ERR_INVALID_DATA);
         return false;
     }
     $typeID = isset($arFields['TYPE_ID']) ? intval($arFields['TYPE_ID']) : CCrmActivityType::Undefined;
     if ($typeID !== CCrmActivityType::Email) {
         $arErrors[] = array('CODE' => self::ERR_INVALID_DATA);
         return false;
     }
     $urn = CCrmActivity::PrepareUrn($arFields);
     if (!($urn !== '' && CCrmActivity::Update($ID, array('URN' => $urn), false, false))) {
         $arErrors[] = array('CODE' => self::ERR_CANT_UPDATE_ACTIVITY);
         return false;
     }
     $settings = isset($arFields['SETTINGS']) && is_array($arFields['SETTINGS']) ? $arFields['SETTINGS'] : array();
     // Creating Email -->
     $crmEmail = CCrmMailHelper::ExtractEmail(COption::GetOptionString('crm', 'mail', ''));
     $from = isset($settings['MESSAGE_FROM']) ? trim(strval($settings['MESSAGE_FROM'])) : '';
     if ($from === '') {
         if ($crmEmail !== '') {
             $from = $crmEmail;
         } else {
             $arErrors[] = array('CODE' => self::ERR_CANT_FIND_EMAIL_FROM);
         }
     } elseif (!check_email($from)) {
         $arErrors[] = array('CODE' => self::ERR_INVALID_EMAIL, 'DATA' => array('EMAIL' => $from));
     }
     //Save user email in settings -->
     if ($from !== CUserOptions::GetOption('crm', 'activity_email_addresser', '')) {
         CUserOptions::SetOption('crm', 'activity_email_addresser', $from);
     }
     //<-- Save user email in settings
     $to = array();
     $commData = isset($arFields['COMMUNICATIONS']) ? $arFields['COMMUNICATIONS'] : array();
     foreach ($commData as &$commDatum) {
         $commType = isset($commDatum['TYPE']) ? strtoupper(strval($commDatum['TYPE'])) : '';
         $commValue = isset($commDatum['VALUE']) ? strval($commDatum['VALUE']) : '';
         if ($commType !== 'EMAIL' || $commValue === '') {
             continue;
         }
         if (!check_email($commValue)) {
             $arErrors[] = array('CODE' => self::ERR_INVALID_EMAIL, 'DATA' => array('EMAIL' => $commValue));
             continue;
         }
         $to[] = strtolower(trim($commValue));
     }
     unset($commDatum);
     if (count($to) == 0) {
         $arErrors[] = array('CODE' => self::ERR_CANT_FIND_EMAIL_TO);
     }
     if (!empty($arErrors)) {
         return false;
     }
     // Try to resolve posting charset -->
     $postingCharset = '';
     $siteCharset = defined('LANG_CHARSET') ? LANG_CHARSET : (defined('SITE_CHARSET') ? SITE_CHARSET : 'windows-1251');
     $arSupportedCharset = explode(',', COption::GetOptionString('subscribe', 'posting_charset'));
     if (count($arSupportedCharset) === 0) {
         $postingCharset = $siteCharset;
     } else {
         foreach ($arSupportedCharset as $curCharset) {
             if (strcasecmp($curCharset, $siteCharset) === 0) {
                 $postingCharset = $curCharset;
                 break;
             }
         }
         if ($postingCharset === '') {
             $postingCharset = $arSupportedCharset[0];
         }
     }
     //<-- Try to resolve posting charset
     $subject = isset($arFields['SUBJECT']) ? $arFields['SUBJECT'] : '';
     $description = isset($arFields['DESCRIPTION']) ? $arFields['DESCRIPTION'] : '';
     $descriptionType = isset($arFields['DESCRIPTION_TYPE']) ? intval($arFields['DESCRIPTION_TYPE']) : CCrmContentType::PlainText;
     $descriptionHtml = '';
     if ($descriptionType === CCrmContentType::Html) {
         $descriptionHtml = $description;
     } elseif ($descriptionType === CCrmContentType::BBCode) {
         $parser = new CTextParser();
         $descriptionHtml = $parser->convertText($description);
     } elseif ($descriptionType === CCrmContentType::PlainText) {
         $descriptionHtml = htmlspecialcharsbx($description);
     }
     $postingData = array('STATUS' => 'D', 'FROM_FIELD' => $from, 'TO_FIELD' => $from, 'BCC_FIELD' => implode(',', $to), 'SUBJECT' => $subject, 'BODY_TYPE' => 'html', 'BODY' => $descriptionHtml, 'DIRECT_SEND' => 'Y', 'SUBSCR_FORMAT' => 'html', 'CHARSET' => $postingCharset);
     CCrmActivity::InjectUrnInMessage($postingData, $urn, CCrmEMailCodeAllocation::GetCurrent());
     $posting = new CPosting();
     $postingID = $posting->Add($postingData);
     if ($postingID === false) {
         $arErrors[] = array('CODE' => self::ERR_CANT_ADD_POSTING, 'MESSAGE' => $posting->LAST_ERROR);
         return false;
     }
     $arUpdateFields = array('COMPLETED' => 'Y', 'ASSOCIATED_ENTITY_ID' => $postingID, 'SETTINGS' => $settings);
     $fromEmail = strtolower(trim(CCrmMailHelper::ExtractEmail($from)));
     if ($crmEmail !== '' && $fromEmail !== $crmEmail) {
         $arUpdateFields['SETTINGS']['MESSAGE_HEADERS'] = array('Reply-To' => "<{$fromEmail}>, <{$crmEmail}>");
     }
     $arUpdateFields['SETTINGS']['IS_MESSAGE_SENT'] = true;
     if (!CCrmActivity::Update($ID, $arUpdateFields, false, false)) {
         $arErrors[] = array('CODE' => self::ERR_CANT_UPDATE_ACTIVITY);
         return false;
     }
     // <-- Creating Email
     // Attaching files -->
     $storageTypeID = isset($arFields['STORAGE_TYPE_ID']) ? intval($arFields['STORAGE_TYPE_ID']) : StorageType::Undefined;
     $storageElementsID = isset($arFields['STORAGE_ELEMENT_IDS']) && is_array($arFields['STORAGE_ELEMENT_IDS']) ? $arFields['STORAGE_ELEMENT_IDS'] : array();
     $arRawFiles = StorageManager::makeFileArray($storageElementsID, $storageTypeID);
     foreach ($arRawFiles as &$arRawFile) {
         if (!$posting->SaveFile($postingID, $arRawFile)) {
             $arErrors[] = array('CODE' => self::ERR_CANT_SAVE_POSTING_FILE, 'MESSAGE' => $posting->LAST_ERROR);
             return false;
         }
     }
     unset($arRawFile);
     // <-- Attaching files
     // Sending Email -->
     if ($posting->ChangeStatus($postingID, 'P')) {
         $rsAgents = CAgent::GetList(array('ID' => 'DESC'), array('MODULE_ID' => 'subscribe', 'NAME' => 'CPosting::AutoSend(' . $postingID . ',%'));
         if (!$rsAgents->Fetch()) {
             CAgent::AddAgent('CPosting::AutoSend(' . $postingID . ',true);', 'subscribe', 'N', 0);
         }
     }
     // Try add event to entity
     $CCrmEvent = new CCrmEvent();
     $ownerID = isset($arFields['OWNER_ID']) ? intval($arFields['OWNER_ID']) : 0;
     $ownerTypeID = isset($arFields['OWNER_TYPE_ID']) ? intval($arFields['OWNER_TYPE_ID']) : 0;
     if ($ownerID > 0 && $ownerTypeID > 0) {
         $eventText = '';
         $eventText .= GetMessage('CRM_ACTIVITY_EMAIL_SUBJECT') . ': ' . $subject . "\n\r";
         $eventText .= GetMessage('CRM_ACTIVITY_EMAIL_FROM') . ': ' . $from . "\n\r";
         $eventText .= GetMessage('CRM_ACTIVITY_EMAIL_TO') . ': ' . implode(',', $to) . "\n\r\n\r";
         $eventText .= $description;
         // Register event only for owner
         $CCrmEvent->Add(array('ENTITY' => array($ownerID => array('ENTITY_TYPE' => CCrmOwnerType::ResolveName($ownerTypeID), 'ENTITY_ID' => $ownerID)), 'EVENT_ID' => 'MESSAGE', 'EVENT_TEXT_1' => $eventText, 'FILES' => $arRawFiles));
     }
     // <-- Sending Email
     return true;
 }
Example #16
0
 foreach ($amount_val as $key => $val) {
     if (DoubleVal($val) > 0) {
         $arAmountSer[$key] = array("AMOUNT" => DoubleVal($val), "CURRENCY" => $amount_currency[$key]);
     }
 }
 if (!empty($arAmountSer)) {
     COption::SetOptionString("sale", "pay_amount", serialize($arAmountSer));
 }
 CAgent::RemoveAgent("CSaleOrder::RemindPayment();", "sale");
 COption::RemoveOption("sale", "pay_reminder");
 if (isset($_POST["reminder"]) && is_array($_POST["reminder"]) && !empty($_POST["reminder"])) {
     COption::SetOptionString("sale", "pay_reminder", serialize($_POST["reminder"]));
     CAgent::AddAgent("CSaleOrder::RemindPayment();", "sale", "N", 86400, "", "Y");
 }
 //subscribe product
 $rsAgents = CAgent::GetList(array("ID" => "DESC"), array("MODULE_ID" => "sale", "NAME" => "CSaleBasket::ClearProductSubscribe(%"));
 while ($arAgent = $rsAgents->Fetch()) {
     CAgent::Delete($arAgent["ID"]);
 }
 if (!empty($subscribProd)) {
     foreach ($siteList as $vv) {
         $lid = $vv["ID"];
         $val = $subscribProd[$lid];
         if ($val["use"] == "Y") {
             if (IntVal($val["del_after"]) <= 0) {
                 $subscribProd[$lid]["del_after"] = 30;
             }
             CAgent::AddAgent("CSaleBasket::ClearProductSubscribe('" . EscapePHPString($lid) . "');", "sale", "N", IntVal($subscribProd[$lid]["del_after"]) * 24 * 60 * 60, "", "Y");
         }
     }
     COption::SetOptionString("sale", "subscribe_prod", serialize($subscribProd));
Example #17
0
 public static function actualizeHandlers($chainId, array $fieldsNew = null, array $fieldsOld = null)
 {
     $settingsNew = null;
     $settingsOld = null;
     if ($fieldsNew) {
         $settingsNew = new TriggerSettings($fieldsNew);
     }
     if ($fieldsOld) {
         $settingsOld = new TriggerSettings($fieldsOld);
     }
     // if old item was closed trigger
     if ($settingsOld && $settingsOld->isClosedTrigger()) {
         // delete agent
         $agentName = TriggerManager::getClosedEventAgentName($settingsOld->getEventModuleId(), $settingsOld->getEventType(), $chainId);
         $agent = new \CAgent();
         $agentListDb = $agent->GetList(array(), array('MODULE_ID' => 'sender', 'NAME' => $agentName));
         while ($agentItem = $agentListDb->Fetch()) {
             $agent->Delete($agentItem['ID']);
         }
     }
     // if new item is closed trigger
     if ($settingsNew && $settingsNew->isClosedTrigger()) {
         // check active state of mailing
         $chainDb = MailingChainTable::getList(array('select' => array('ID'), 'filter' => array('=ID' => $chainId, '=MAILING.ACTIVE' => 'Y')));
         if (!$chainDb->fetch()) {
             return;
         }
         // add new agent
         $agentName = TriggerManager::getClosedEventAgentName($settingsNew->getEventModuleId(), $settingsNew->getEventType(), $chainId);
         // set date of next exec
         $agentTime = $settingsNew->getClosedTriggerTime();
         $agentInterval = $settingsNew->getClosedTriggerInterval();
         if ($agentInterval <= 0) {
             $agentInterval = 1440;
         }
         $agentTimeArray = explode(":", $agentTime);
         $agentDate = new \Bitrix\Main\Type\DateTime();
         $agentDate->setTime((int) $agentTimeArray[0], (int) $agentTimeArray[1]);
         // set next exec on next day if exec was today
         if ($agentDate->getTimestamp() < time()) {
             $agentDate->add("1 days");
         }
         // add agent
         $agent = new \CAgent();
         $agent->AddAgent($agentName, 'sender', 'N', $agentInterval * 60, '', 'Y', $agentDate->toString());
         return;
     }
     // actualize deleted/changed event
     if ($settingsOld && !$settingsOld->isClosedTrigger() && $settingsOld->getFullEventType()) {
         // if delete operation(no the NEW)
         // or change operation(the NEW is not equal to the OLD)
         if (!$settingsNew || $settingsOld->getFullEventType() != $settingsNew->getFullEventType()) {
             TriggerManager::actualizeHandler(array('MODULE_ID' => $settingsOld->getEventModuleId(), 'EVENT_TYPE' => $settingsOld->getEventType(), 'CALLED_BEFORE_CHANGE' => true));
         }
     }
     // actualize new event
     if ($settingsNew && $settingsNew->getFullEventType()) {
         $calledBeforeChange = $fieldsOld ? false : true;
         TriggerManager::actualizeHandler(array('MODULE_ID' => $settingsNew->getEventModuleId(), 'EVENT_TYPE' => $settingsNew->getEventType(), 'CALLED_BEFORE_CHANGE' => $calledBeforeChange));
     }
 }
Example #18
0
             Option::set('sale', 'tracking_map_statuses', serialize($mapStatuses));
             unset($mapStatuses);
         }
         $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"];
 }
Example #19
0
				el.bxwaiter = null;
			}
			el.disabled = false;
		}
	}
</script>
<?
	}

	$systemTabControl = new CAdminTabControl("tabControl2", $aTabs, true, true);

	$systemTabControl->Begin();
	$systemTabControl->BeginNextTab();
?><tr><td align="left"><?
	$arAgentInfo = false;
	$rsAgents = CAgent::GetList(array(),array('MODULE_ID' => 'catalog','NAME' => 'CCatalog::PreGenerateXML("yandex");'));
	if ($arAgent = $rsAgents->Fetch())
	{
		$arAgentInfo = $arAgent;
	}
	if (!is_array($arAgentInfo) || empty($arAgentInfo))
	{
		?><form name="agent_form" method="POST" action="<?echo $APPLICATION->GetCurPage()?>?mid=<?php 
echo htmlspecialcharsbx($mid);
?>
&lang=<?php 
echo LANGUAGE_ID;
?>
">
		<?echo bitrix_sessid_post()?>
		<input type="submit" class="adm-btn-save" name="agent_start" value="<? echo Loc::getMessage('CAT_AGENT_START') ?>" <?if ($bReadOnly) echo "disabled" ?>>
Example #20
0
         }
         CCrmActivity::Update($ID, $arUpdateFields, false, false);
     }
 }
 // <-- Creating Email
 if (!empty($arErrors)) {
     if ($isNew) {
         $arErrors[] = GetMessage('CRM_ACTIVITY_EMAIL_CREATION_CANCELED');
         CCrmActivity::Delete($ID);
     }
     echo CUtil::PhpToJSObject(array('ERROR' => $arErrors));
     die;
 }
 // Sending Email -->
 if ($posting->ChangeStatus($postingID, 'P')) {
     $rsAgents = CAgent::GetList(array('ID' => 'DESC'), array('MODULE_ID' => 'subscribe', 'NAME' => 'CPosting::AutoSend(' . $postingID . ',%'));
     if (!$rsAgents->Fetch()) {
         CAgent::AddAgent('CPosting::AutoSend(' . $postingID . ',true);', 'subscribe', 'N', 0);
     }
 }
 // Try add event to entity
 $CCrmEvent = new CCrmEvent();
 $eventText = '';
 $eventText .= GetMessage('CRM_TITLE_EMAIL_SUBJECT') . ': ' . $subject . "\n\r";
 $eventText .= GetMessage('CRM_TITLE_EMAIL_FROM') . ': ' . $from . "\n\r";
 $eventText .= GetMessage('CRM_TITLE_EMAIL_TO') . ': ' . implode(',', $to) . "\n\r\n\r";
 $eventText .= $message;
 // Register event only for owner
 $CCrmEvent->Add(array('ENTITY' => array($ownerID => array('ENTITY_TYPE' => $ownerTypeName, 'ENTITY_ID' => $ownerID)), 'EVENT_ID' => 'MESSAGE', 'EVENT_TEXT_1' => $eventText, 'FILES' => $arRawFiles));
 // <-- Sending Email
 $commData = array();
Example #21
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 #22
0
            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");
    $row->AddInputField("NAME");
    $row->AddCheckField("ACTIVE");
    $row->AddField("LAST_EXEC", $a_LAST_EXEC);
    $row->AddField("NEXT_EXEC", $a_NEXT_EXEC);
    $row->AddInputField("AGENT_INTERVAL");
Example #23
0
         }
         $res = CCrmExternalSale::Update($arParams["ID"], $arFields);
     } else {
         $arFields["PASSWORD"] = $_POST["PASSWORD"];
         $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))));
Example #24
0
 public static function initCurrencyBaseRateAgent()
 {
     if (!ModuleManager::isModuleInstalled('bitrix24')) {
         $agentIterator = CAgent::GetList(array(), array('MODULE_ID' => 'currency', '=NAME' => '\\Bitrix\\Currency\\CurrencyManager::currencyBaseRateAgent();'));
         if ($agentIterator) {
             if (!($currencyAgent = $agentIterator->Fetch())) {
                 Currency\CurrencyManager::updateBaseRates();
                 $checkDate = Main\Type\DateTime::createFromTimestamp(strtotime('tomorrow 00:01:00'));
                 CAgent::AddAgent('\\Bitrix\\Currency\\CurrencyManager::currencyBaseRateAgent();', 'currency', 'Y', 86400, '', 'Y', $checkDate->toString(), 100, false, true);
             }
         }
     }
     return '';
 }
 public function Delete($ID)
 {
     global $DB;
     CModule::IncludeModule("main");
     $ID = intval($ID);
     // ”дал¤ем агент
     $arAgent = CAgent::GetList(array(), array("NAME" => "CAcritExport::StartAgent(" . $ID . ");"))->Fetch();
     CAgent::Delete($arAgent["ID"]);
     $DB->StartTransaction();
     $res = $DB->Query("DELETE FROM " . $this->tableName . " WHERE ID='" . $ID . "'", false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     if ($res) {
         $DB->Commit();
     } else {
         $DB->Rollback();
     }
     return $res;
 }
Example #26
0
	public static function SendEvent($ID, $mailTemplate = "SONET_NEW_EVENT", $tmp_id = false, $bAgent = false, $bTransport = false)
	{
		$ID = IntVal($ID);
		if ($ID <= 0)
			return false;

		if (intval($tmp_id) > 0)
			$arFilter = array("ID" => $tmp_id);
		else
			$arFilter = array("ID" => $ID);

		$dbLog = CSocNetLog::GetList(
			array(),
			$arFilter,
			false,
			false,
			array("ID", "ENTITY_TYPE", "ENTITY_ID", "USER_ID", "USER_NAME", "USER_LAST_NAME", "USER_SECOND_NAME", "USER_LOGIN", "EVENT_ID", "LOG_DATE", "TITLE_TEMPLATE", "TITLE", "MESSAGE", "TEXT_MESSAGE", "URL", "MODULE_ID", "CALLBACK_FUNC", "SITE_ID", "PARAMS", "SOURCE_ID", "GROUP_NAME", "CREATED_BY_NAME", "CREATED_BY_SECOND_NAME", "CREATED_BY_LAST_NAME", "CREATED_BY_LOGIN", "LOG_SOURCE_ID"),
			array("MIN_ID_JOIN" => true)
		);
		$arLog = $dbLog->Fetch();
		if (!$arLog)
			return $bAgent;

		if (MakeTimeStamp($arLog["LOG_DATE"]) > (time() + CTimeZone::GetOffset()))
		{
			$agent = "CSocNetLog::SendEventAgent(".$ID.", '".$mailTemplate."', ".($tmp_id ? $tmp_id : 'false').");";
			$rsAgents = CAgent::GetList(array("ID"=>"DESC"), array("NAME" => $agent));
			if(!$rsAgents->Fetch())
			{
				$res = CAgent::AddAgent($agent, "socialnetwork", "N", 0, $arLog["LOG_DATE"], "Y", $arLog["LOG_DATE"]);
				if(!$res)
					$GLOBALS["APPLICATION"]->ResetException();
			}
			elseif ($bAgent)
			{
				CAgent::RemoveAgent($agent, "socialnetwork");
				CAgent::AddAgent($agent, "socialnetwork", "N", 0, $arLog["LOG_DATE"], "Y", $arLog["LOG_DATE"]);
				return true;
			}
			return false;
		}

		$arEvent = CSocNetLogTools::FindLogEventByID($arLog["EVENT_ID"], $arLog["ENTITY_TYPE"]);
		if (
			$arEvent
			&& array_key_exists("CLASS_FORMAT", $arEvent)
			&& array_key_exists("METHOD_FORMAT", $arEvent)
		)
		{
			$dbSiteCurrent = CSite::GetByID(SITE_ID);
			if ($arSiteCurrent = $dbSiteCurrent->Fetch())
				if ($arSiteCurrent["LANGUAGE_ID"] != LANGUAGE_ID)
					$arLog["MAIL_LANGUAGE_ID"] = $arSiteCurrent["LANGUAGE_ID"];

			$arLog["FIELDS_FORMATTED"] = call_user_func(array($arEvent["CLASS_FORMAT"], $arEvent["METHOD_FORMAT"]), $arLog, array(), true);
		}

		if (
			array_key_exists($arLog["ENTITY_TYPE"], $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"])
			&& array_key_exists("HAS_MY", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]])
			&& $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["HAS_MY"] == "Y"
			&& array_key_exists("CLASS_OF", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]])
			&& array_key_exists("METHOD_OF", $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]])
			&& strlen($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["CLASS_OF"]) > 0
			&& strlen($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["METHOD_OF"]) > 0
			&& method_exists($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["CLASS_OF"], $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["METHOD_OF"])
		)
			$arOfEntities = call_user_func(array($GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["CLASS_OF"], $GLOBALS["arSocNetAllowedSubscribeEntityTypesDesc"][$arLog["ENTITY_TYPE"]]["METHOD_OF"]), $arLog["ENTITY_ID"]);

		if ($bTransport)
		{
			$arListParams = array(
				"USE_SUBSCRIBE" => "Y",
				"ENTITY_TYPE" => $arLog["ENTITY_TYPE"],
				"ENTITY_ID" => $arLog["ENTITY_ID"],
				"EVENT_ID" => $arLog["EVENT_ID"],
				"USER_ID" => $arLog["USER_ID"],
				"OF_ENTITIES" => $arOfEntities,
				"TRANSPORT" => array("M", "X")
			);

			$arLogSites = array();
			$rsLogSite = CSocNetLog::GetSite($ID);

			while($arLogSite = $rsLogSite->Fetch())
				$arLogSites[] = $arLogSite["LID"];

			if (CModule::IncludeModule("extranet"))
			{
				$arSites = array();
				$dbSite = CSite::GetList($by="sort", $order="desc", array("ACTIVE" => "Y"));
				while($arSite = $dbSite->Fetch())
					$arSites[$arSite["ID"]] = array(
						"DIR" => (strlen(trim($arSite["DIR"])) > 0 ? $arSite["DIR"] : "/"),
						"SERVER_NAME" => (strlen(trim($arSite["SERVER_NAME"])) > 0 ? $arSite["SERVER_NAME"] : COption::GetOptionString("main", "server_name", $_SERVER["HTTP_HOST"]))
					);

				$extranet_site_id = CExtranet::GetExtranetSiteID();
				$intranet_site_id = CSite::GetDefSite();

				$arIntranetUsers = CExtranet::GetIntranetUsers();
			}

			$dbSubscribers = CSocNetLogEvents::GetList(
				array("TRANSPORT" => "DESC"),
				array(
					"USER_ACTIVE" => "Y",
					"SITE_ID" => array_merge($arLogSites, array(false))
				),
				false,
				false,
				array("USER_ID", "SITE_ID", "ENTITY_TYPE", "ENTITY_ID", "ENTITY_CB", "ENTITY_MY", "USER_NAME", "USER_LAST_NAME", "USER_LOGIN", "USER_LID", "USER_EMAIL", "TRANSPORT"),
				$arListParams
			);

			$arListParams = array(
				"USE_SUBSCRIBE" => "Y",
				"ENTITY_TYPE" => $arLog["ENTITY_TYPE"],
				"ENTITY_ID" => $arLog["ENTITY_ID"],
				"EVENT_ID" => $arLog["EVENT_ID"],
				"USER_ID" => $arLog["USER_ID"],
				"OF_ENTITIES" => $arOfEntities,
				"TRANSPORT" => "N"
			);

			$dbUnSubscribers = CSocNetLogEvents::GetList(
				array("TRANSPORT" => "DESC"),
				array(
					"USER_ACTIVE" => "Y",
					"SITE_ID" => array_merge($arLogSites, array(false))
				),
				false,
				false,
				array("USER_ID", "SITE_ID", "ENTITY_TYPE", "ENTITY_ID", "ENTITY_CB", "ENTITY_MY", "TRANSPORT", "EVENT_ID"),
				$arListParams
			);

			$arUnSubscribers = array();
			while ($arUnSubscriber = $dbUnSubscribers->Fetch())
				$arUnSubscribers[] = $arUnSubscriber["USER_ID"]."_".$arUnSubscriber["ENTITY_TYPE"]."_".$arUnSubscriber["ENTITY_ID"]."_".$arUnSubscriber["ENTITY_MY"]."_".$arUnSubscriber["ENTITY_CB"]."_".$arUnSubscriber["EVENT_ID"];

			$bHasAccessAll = CSocNetLogRights::CheckForUserAll($arLog["ID"]);

			$arSentUserID = array("M" => array(), "X" => array());
			while ($arSubscriber = $dbSubscribers->Fetch())
			{
				if (
					is_array($arIntranetUsers)
					&& !in_array($arSubscriber["USER_ID"], $arIntranetUsers)
					&& !in_array($extranet_site_id, $arLogSites)
				)
					continue;

				if (
					array_key_exists($arSubscriber["TRANSPORT"], $arSentUserID)
					&& in_array($arSubscriber["USER_ID"], $arSentUserID[$arSubscriber["TRANSPORT"]])
				)
					continue;

				if (
					intval($arSubscriber["ENTITY_ID"]) != 0
					&& $arSubscriber["EVENT_ID"] == "all"
					&&
					(
						in_array($arSubscriber["USER_ID"]."_".$arSubscriber["ENTITY_TYPE"]."_".$arSubscriber["ENTITY_ID"]."_N_".$arSubscriber["ENTITY_CB"]."_".$arLog["EVENT_ID"], $arUnSubscribers)
						|| in_array($arSubscriber["USER_ID"]."_".$arSubscriber["ENTITY_TYPE"]."_".$arSubscriber["ENTITY_ID"]."_Y_".$arSubscriber["ENTITY_CB"]."_".$arLog["EVENT_ID"], $arUnSubscribers)
					)
				)
					continue;
				elseif (
					intval($arSubscriber["ENTITY_ID"]) == 0
					&& $arSubscriber["ENTITY_CB"] == "N"
					&& $arSubscriber["EVENT_ID"] != "all"
					&&
					(
						in_array($arSubscriber["USER_ID"]."_".$arSubscriber["ENTITY_TYPE"]."_".$arLog["ENTITY_ID"]."_Y_N_all", $arUnSubscribers)
						|| in_array($arSubscriber["USER_ID"]."_".$arSubscriber["ENTITY_TYPE"]."_".$arLog["ENTITY_ID"]."_N_N_all", $arUnSubscribers)
						|| in_array($arSubscriber["USER_ID"]."_".$arSubscriber["ENTITY_TYPE"]."_".$arLog["ENTITY_ID"]."_Y_N_".$arLog["EVENT_ID"], $arUnSubscribers)
						|| in_array($arSubscriber["USER_ID"]."_".$arSubscriber["ENTITY_TYPE"]."_".$arLog["ENTITY_ID"]."_N_N_".$arLog["EVENT_ID"], $arUnSubscribers)
					)
				)
					continue;

				$arSentUserID[$arSubscriber["TRANSPORT"]][] = $arSubscriber["USER_ID"];

				if (!$bHasAccessAll)
				{
					$bHasAccess = CSocNetLogRights::CheckForUserOnly($arLog["ID"], $arSubscriber["USER_ID"]);
					if (!$bHasAccess)
						continue;
				}

				if (CModule::IncludeModule("extranet"))
				{
					$server_name = $arSites[((!in_array($arSubscriber["USER_ID"], $arIntranetUsers) && $extranet_site_id) ? $extranet_site_id : $intranet_site_id)]["SERVER_NAME"];
					$arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"] = str_replace(
						array("#SERVER_NAME#", "#GROUPS_PATH#"),
						array(
							$server_name,
							COption::GetOptionString("socialnetwork", "workgroups_page", false, ((!in_array($arSubscriber["USER_ID"], $arIntranetUsers) && $extranet_site_id) ? $extranet_site_id : $intranet_site_id))
						),
						$arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL"]
					);
					$arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE_TO_SEND"] = str_replace(
						array("#SERVER_NAME#", "#GROUPS_PATH#"),
						array(
							$server_name,
							COption::GetOptionString("socialnetwork", "workgroups_page", false, ((!in_array($arSubscriber["USER_ID"], $arIntranetUsers) && $extranet_site_id) ? $extranet_site_id : $intranet_site_id))
						),
						$arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"]
					);
				}
				else
					$arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE_TO_SEND"] = $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE"];

				switch ($arSubscriber["TRANSPORT"])
				{
					case "X":

						if (
							array_key_exists("URL_TO_SEND", $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
							&& strlen($arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"]) > 0
						)
							$link = GetMessage("SONET_GL_SEND_EVENT_LINK").$arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"];
						elseif (
							array_key_exists("URL", $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
							&& strlen($arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL"]) > 0
						)
							$link = GetMessage("SONET_GL_SEND_EVENT_LINK").$arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL"];
						else
							$link = "";

						$arMessageFields = array(
							"FROM_USER_ID" => (intval($arLog["USER_ID"]) > 0 ? $arLog["USER_ID"] : 1),
							"TO_USER_ID" => $arSubscriber["USER_ID"],
							"MESSAGE" => $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["TITLE"]." #BR#".$arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE_TO_SEND"].(strlen($link) > 0 ? "#BR# ".$link : ""),
							"=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
							"MESSAGE_TYPE" => SONET_MESSAGE_SYSTEM,
							"IS_LOG" => "Y"
						);
						CSocNetMessages::Add($arMessageFields);
						break;
					case "M":
						$arFields["SUBSCRIBER_ID"] = $arSubscriber["USER_ID"];
						$arFields["SUBSCRIBER_NAME"] = $arSubscriber["USER_NAME"];
						$arFields["SUBSCRIBER_LAST_NAME"] = $arSubscriber["USER_LAST_NAME"];
						$arFields["SUBSCRIBER_LOGIN"] = $arSubscriber["USER_LOGIN"];
						$arFields["SUBSCRIBER_EMAIL"] = $arSubscriber["USER_EMAIL"];
						$arFields["EMAIL_TO"] = $arSubscriber["USER_EMAIL"];
						$arFields["TITLE"] = str_replace("#BR#", "\n", $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["TITLE"]);
						$arFields["MESSAGE"] = str_replace("#BR#", "\n", $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["MESSAGE_TO_SEND"]);
						$arFields["ENTITY"] = $arLog["FIELDS_FORMATTED"]["ENTITY"]["FORMATTED"];
						$arFields["ENTITY_TYPE"] = $arLog["FIELDS_FORMATTED"]["ENTITY"]["TYPE_MAIL"];

						if (
							array_key_exists("URL_TO_SEND", $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
							&& strlen($arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"]) > 0
						)
							$arFields["URL"] = $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL_TO_SEND"];
						elseif (
							array_key_exists("URL", $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"])
							&& strlen($arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL"]) > 0
						)
							$arFields["URL"] = $arLog["FIELDS_FORMATTED"]["EVENT_FORMATTED"]["URL"];
						else
							$arFields["URL"] = $arLog["URL"];

						if (CModule::IncludeModule("extranet"))
							$arUserGroup = CUser::GetUserGroup($arSubscriber["USER_ID"]);

						foreach ($arLogSites as $site_id_tmp)
						{
							if (IsModuleInstalled("extranet"))
							{
								if (
									(
										CExtranet::IsExtranetSite($site_id_tmp)
										&& in_array(CExtranet::GetExtranetUserGroupID(), $arUserGroup)
									)
									||
									(
										!CExtranet::IsExtranetSite($site_id_tmp)
										&& !in_array(CExtranet::GetExtranetUserGroupID(), $arUserGroup)
									)
								)
								{
									$siteID = $site_id_tmp;
									break;
								}
								else
									continue;
							}
							else
							{
								$siteID = $site_id_tmp;
								break;
							}
						}

						if (!$siteID)
							$siteID = (defined("SITE_ID") ? SITE_ID : $arSubscriber["SITE_ID"]);

						if (StrLen($siteID) <= 0)
							$siteID = $arSubscriber["USER_LID"];
						if (StrLen($siteID) <= 0)
							continue;

						$event = new CEvent;
						$event->Send($mailTemplate, $siteID, $arFields, "N");
						break;
					default:
				}
			}
		}

		CSocNetLog::CounterIncrement($arLog["ID"], $arLog["EVENT_ID"], $arOfEntities);

		return true;
	}
Example #27
0
    }
}
if (strlen($arResult["FatalErrorMessage"]) <= 0) {
    $arResult["GRID_ID"] = "crm_config_external_sale";
    $gridOptions = new CGridOptions($arResult["GRID_ID"]);
    $gridColumns = $gridOptions->GetVisibleColumns();
    $gridSort = $gridOptions->GetSorting(array("sort" => array("DATE_UPDATE" => "desc")));
    $arResult["HEADERS"] = array(array("id" => "NAME", "name" => GetMessage("BPWC_WLC_NAME"), "default" => true, "sort" => "NAME"), array("id" => "ACTIVE", "name" => GetMessage("BPWC_WLC_ACTIVE"), "default" => true, "sort" => "ACTIVE"), array("id" => "IMPORT_AGENT", "name" => GetMessage("BPWC_WLC_IMPORT_AGENT"), "default" => true, "sort" => ""), array("id" => "MESSAGE", "name" => GetMessage("BPWC_WLC_MESSAGE"), "default" => true, "sort" => ""), array("id" => "URL", "name" => GetMessage("BPWC_WLC_URL"), "default" => true, "sort" => ""), array("id" => "LAST_STATUS_DATE", "name" => GetMessage("BPWC_WLC_LAST_STATUS_DATE"), "default" => true, "sort" => "LAST_STATUS_DATE"), array("id" => "LAST_STATUS", "name" => GetMessage("BPWC_WLC_STATUS"), "default" => false, "sort" => "LAST_STATUS"), array("id" => "DATE_UPDATE", "name" => GetMessage("BPWC_WLC_DATE_UPDATE"), "default" => false, "sort" => "DATE_UPDATE"), array("id" => "IMPORT_PREFIX", "name" => GetMessage("BPWC_WLC_IMPORT_PREFIX"), "default" => false, "sort" => "IMPORT_PREFIX"), array("id" => "ID", "name" => "ID", "default" => false, "sort" => "ID"), array("id" => "DATE_CREATE", "name" => GetMessage("BPWC_WLC_DATE_CREATE"), "default" => false, "sort" => "DATE_CREATE"), array("id" => "IMPORT_SIZE", "name" => GetMessage("BPWC_WLC_SIZE"), "default" => false, "sort" => "IMPORT_SIZE"), array("id" => "IMPORT_PERIOD", "name" => GetMessage("BPWC_WLC_IMPORT_PERIOD"), "default" => false, "sort" => "IMPORT_PERIOD"), array("id" => "IMPORT_PROBABILITY", "name" => GetMessage("BPWC_WLC_IMPORT_PROBABILITY"), "default" => false, "sort" => "IMPORT_PROBABILITY"), array("id" => "IMPORT_PUBLIC", "name" => GetMessage("BPWC_WLC_IMPORT_PUBLIC"), "default" => false, "sort" => "IMPORT_PUBLIC"));
    $arResult["SORT"] = $gridSort["sort"];
    $arResult["RECORDS"] = array();
    $dbRecordsList = CCrmExternalSale::GetList($gridSort["sort"], array());
    while ($arRecord = $dbRecordsList->GetNext()) {
        $path2Edit = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_EDIT"], array("id" => $arRecord["ID"]));
        $path2Sync = CComponentEngine::MakePathFromTemplate($arParams["PATH_TO_SYNC"], array("id" => $arRecord["ID"]));
        $agentInterval = 0;
        $dbAgents = CAgent::GetList(array(), array("NAME" => "CCrmExternalSaleImport::DataSync(" . $arRecord["ID"] . ");", "MODULE_ID" => "crm", "ACTIVE" => "Y"));
        if ($arAgent = $dbAgents->Fetch()) {
            $agentInterval = intval($arAgent["AGENT_INTERVAL"] / 60);
        }
        $v = htmlspecialcharsbx($arRecord["SCHEME"] . "://" . $arRecord["SERVER"] . (intval($arRecord["PORT"]) > 0 ? ":" . $arRecord["PORT"] : ""));
        $aCols = array("URL" => "<a href=\"" . $v . "\" target=\"_blank\">" . $v . "</a>", "ACTIVE" => $arRecord["ACTIVE"] == "Y" ? GetMessage("BPWC_WLC_YES") : GetMessage("BPWC_WLC_NO"), "IMPORT_PUBLIC" => $arRecord["IMPORT_PUBLIC"] == "Y" ? GetMessage("BPWC_WLC_YES") : GetMessage("BPWC_WLC_NO"), "IMPORT_AGENT" => $agentInterval > 0 ? $agentInterval : GetMessage("BPWC_WLC_MANUAL"), "MESSAGE" => "");
        if (intval($arRecord["MODIFICATION_LABEL"]) == 0) {
            $aCols["MESSAGE"] .= "<font class='errortext'>" . GetMessage("BPWC_WLC_NEED_FIRST_SYNC1") . "</font><br /><a href='" . $path2Sync . "'>" . GetMessage("BPWC_WLC_NEED_FIRST_SYNC1_DO") . "</a><br />";
        }
        if ($arRecord["LAST_STATUS"] != "" && strtolower(substr($arRecord["LAST_STATUS"], 0, strlen("success"))) != "success") {
            $aCols["MESSAGE"] .= GetMessage("BPWC_WLC_NEED_FIRST_SYNC3") . $arRecord["LAST_STATUS"];
        }
        if ($aCols["MESSAGE"] == "") {
            $aCols["MESSAGE"] .= GetMessage("BPWC_WLC_NEED_FIRST_SYNC2");
        }
        $aActions = array(array("ICONCLASS" => "", "DEFAULT" => false, "TEXT" => GetMessage("BPWC_WLC_SYNC"), "ONCLICK" => "window.location='" . $path2Sync . "';"), array("SEPARATOR" => true), array("ICONCLASS" => "", "DEFAULT" => false, "TEXT" => GetMessage("BPWC_WLC_CHECK"), "ONCLICK" => "window.location='" . $APPLICATION->GetCurPageParam("check_id=" . $arRecord["ID"], array("sessid", "check_id", "delete_id", "sync_id")) . "';"), array("SEPARATOR" => true), array("ICONCLASS" => "edit", "DEFAULT" => true, "TEXT" => GetMessage("BPWC_WLC_NOT_DETAIL"), "ONCLICK" => "window.location='" . $path2Edit . "';"), array("ICONCLASS" => "delete", "TEXT" => GetMessage("JHGFDC_STOP"), "ONCLICK" => "if(confirm('" . GetMessage("JHGFDC_STOP_ALT") . "')) window.location='" . $APPLICATION->GetCurPageParam("delete_id=" . $arRecord["ID"] . "&" . bitrix_sessid_get(), array("sessid", "delete_id", "check_id", "sync_id")) . "';"));