uawdijnntqw1x1x1
IP : 216.73.216.163
Hostname : yjpwxulqtt
Kernel : Linux yjpwxulqtt 5.15.0-126-generic #136-Ubuntu SMP Wed Nov 6 10:38:22 UTC 2024 x86_64
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,exec,system,passthru,shell_exec,proc_open,popen
OS : Linux
PATH:
/
home
/
user
/
web
/
pansionat-v-yaroslavle.ru
/
public_html
/
bitrix
/
modules
/
.
/
seo
/
lib
/
adv
/
auto.php
/
/
<?php namespace Bitrix\Seo\Adv; use Bitrix\Catalog\ProductTable; use Bitrix\Seo\Engine\YandexDirect; use Bitrix\Seo\Engine\YandexDirectException; class Auto { public static function checkQuantity($ID, $productFields) { $checkNeed = ( isset($productFields['QUANTITY']) || isset($productFields['QUANTITY_TRACE']) || isset($productFields['CAN_BUY_ZERO']) ); if (!$checkNeed) { return; } $productIterator = ProductTable::getList(array( 'filter' => array('=ID' => $ID), 'select' => array('QUANTITY', 'QUANTITY_TRACE', 'CAN_BUY_ZERO'), )); $product = $productIterator->fetch(); if($product) { if($product["QUANTITY_TRACE"] == "Y" && $product['CAN_BUY_ZERO'] == 'N') { $linkIterator = LinkTable::getList(array( "filter" => array( "=LINK_TYPE" => LinkTable::TYPE_IBLOCK_ELEMENT, "=LINK_ID" => $ID, array( array( "=BANNER.AUTO_QUANTITY_OFF" => YandexBannerTable::ACTIVE, ), array( "=BANNER.AUTO_QUANTITY_ON" => YandexBannerTable::ACTIVE, ), 'LOGIC' => "OR", ), ), "select" => array( "BANNER_ID", "AUTO_QUANTITY_ON" => "BANNER.AUTO_QUANTITY_ON", "AUTO_QUANTITY_OFF" => "BANNER.AUTO_QUANTITY_OFF", ), )); $zeroQuantity = $product['QUANTITY'] <= 0; $linkIdMark = array(); $linkIdUnMark = array(); while($link = $linkIterator->fetch()) { $linkIdMark[] = $link["BANNER_ID"]; if( $zeroQuantity && $link["AUTO_QUANTITY_ON"] == YandexBannerTable::MARKED || !$zeroQuantity && $link["AUTO_QUANTITY_OFF"] == YandexBannerTable::MARKED ) { $linkIdUnMark[] = $link["BANNER_ID"]; } } if(count($linkIdMark) > 0) { if($zeroQuantity) { YandexBannerTable::markStopped($linkIdMark); } else { YandexBannerTable::markResumed($linkIdMark); } if(count($linkIdUnMark) > 0) { if($zeroQuantity) { YandexBannerTable::unMarkResumed($linkIdUnMark); } else { YandexBannerTable::unMarkStopped($linkIdUnMark); } } } } } } public static function checkQuantityAgent() { if(!IsModuleInstalled("catalog")) { return __CLASS__."::checkQuantityAgent();"; } $dbRes = YandexBannerTable::getList(array( 'filter' => array( array( '=AUTO_QUANTITY_ON' => YandexBannerTable::MARKED, ), array( '=AUTO_QUANTITY_OFF' => YandexBannerTable::MARKED, ), 'LOGIC' => "OR" ), 'select' => array( 'ID', 'XML_ID', 'CAMPAIGN_ID', 'CAMPAIGN_XML_ID' => 'CAMPAIGN.XML_ID', 'AUTO_QUANTITY_ON', 'AUTO_QUANTITY_OFF', ), )); $engine = new YandexDirect(); $bannersListToStop = array(); $bannersListToResume = array(); $bannersListToUnMarkStopped = array(); $bannersListToUnMarkResumed = array(); $bannersLogData = array(); while($banner = $dbRes->fetch()) { if($banner["AUTO_QUANTITY_ON"] == YandexBannerTable::MARKED) { if(!isset($bannersListToResume[$banner["CAMPAIGN_XML_ID"]])) { $bannersListToResume[$banner["CAMPAIGN_XML_ID"]] = array(); } $bannersListToResume[$banner["CAMPAIGN_XML_ID"]][$banner["ID"]] = $banner["XML_ID"]; $causeCode = AutologTable::CODE_QUANTITY_ON; if($banner["AUTO_QUANTITY_OFF"] == YandexBannerTable::MARKED) { $bannersListToUnMarkStopped[] = $banner["ID"]; } } else { if(!isset($bannersListToResume[$banner["CAMPAIGN_XML_ID"]])) { $bannersListToStop[$banner["CAMPAIGN_XML_ID"]] = array(); } $bannersListToStop[$banner["CAMPAIGN_XML_ID"]][$banner["ID"]] = $banner["XML_ID"]; $causeCode = AutologTable::CODE_QUANTITY_OFF; if($banner["AUTO_QUANTITY_ON"] == YandexBannerTable::MARKED) { $bannersListToUnMarkResumed[] = $banner["ID"]; } } $bannersLogData[$banner["ID"]] = array( 'CAMPAIGN_ID' => $banner['CAMPAIGN_ID'], 'CAMPAIGN_XML_ID' => $banner['CAMPAIGN_XML_ID'], 'BANNER_ID' => $banner['ID'], 'BANNER_XML_ID' => $banner['XML_ID'], 'CAUSE_CODE' => $causeCode, ); } if(count($bannersLogData) > 0) { foreach($bannersListToResume as $campaignId => $bannersList) { if(count($bannersList) > 0) { $success = true; try { $engine->resumeBanners($campaignId, array_values($bannersList)); } catch(YandexDirectException $e) { $success = false; } foreach($bannersList as $bannerId => $bannerXmlId) { $logEntry = $bannersLogData[$bannerId]; $logEntry['ENGINE_ID'] = $engine->getId(); $logEntry['SUCCESS'] = $success ? AutologTable::SUCCESS : AutologTable::FAILURE; AutologTable::add($logEntry); } $bannersListToUnMarkResumed = array_merge( $bannersListToUnMarkResumed, array_keys($bannersList) ); } } foreach($bannersListToStop as $campaignId => $bannersList) { if(count($bannersList) > 0) { $success = true; try { $engine->stopBanners($campaignId, array_values($bannersList)); } catch(YandexDirectException $e) { $success = false; } foreach($bannersList as $bannerId => $bannerXmlId) { $logEntry = $bannersLogData[$bannerId]; $logEntry['ENGINE_ID'] = $engine->getId(); $logEntry['SUCCESS'] = $success ? AutologTable::SUCCESS : AutologTable::FAILURE; AutologTable::add($logEntry); } $bannersListToUnMarkStopped = array_merge( $bannersListToUnMarkStopped, array_keys($bannersList) ); } } if(count($bannersListToUnMarkStopped) > 0) { YandexBannerTable::unMarkStopped($bannersListToUnMarkStopped); } if(count($bannersListToUnMarkResumed) > 0) { YandexBannerTable::unMarkResumed($bannersListToUnMarkResumed); } } return __CLASS__."::checkQuantityAgent();"; } }
/home/user/web/pansionat-v-yaroslavle.ru/public_html/bitrix/modules/./seo/lib/adv/auto.php