예제 #1
0
        }
    }
}
$arHeaders = array(array("id" => "ID", "content" => Loc::getMessage("SEO_CAMPAIGN_ID"), "sort" => "ID", "default" => true), array("id" => "STATUS", "content" => Loc::getMessage('SEO_CAMPAIGN_STATUS'), "default" => true), array("id" => "NAME", "content" => Loc::getMessage('SEO_CAMPAIGN_NAME'), "sort" => "NAME", "default" => true), array("id" => "XML_ID", "content" => Loc::getMessage('SEO_CAMPAIGN_XML_ID'), "sort" => "XML_ID", "default" => true), array("id" => "STRATEGY", "content" => Loc::getMessage('SEO_CAMPAIGN_STRATEGY'), "default" => true), array("id" => "LAST_UPDATE", "content" => Loc::getMessage('SEO_CAMPAIGN_LAST_UPDATE'), "sort" => "LAST_UPDATE", "default" => true), array("id" => "BANNER_CNT", "content" => Loc::getMessage('SEO_CAMPAIGN_BANNER_CNT'), "default" => true), array("id" => "SHOW", "content" => Loc::getMessage('SEO_STATUS_SHOW'), "default" => true), array("id" => "SHOW", "content" => Loc::getMessage('SEO_STATUS_SHOW'), "default" => true), array("id" => "SUM", "content" => Loc::getMessage('SEO_CAMPAIGN_SUM'), "default" => true), array("id" => "REST", "content" => Loc::getMessage('SEO_CAMPAIGN_REST'), "default" => true), array("id" => "SHOWS", "content" => Loc::getMessage('SEO_CAMPAIGN_SHOWS'), "default" => true), array("id" => "CLICKS", "content" => Loc::getMessage('SEO_CAMPAIGN_CLICKS'), "default" => true));
if ($request["mode"] != 'excel') {
    $arHeaders[] = array("id" => "UPDATE", "content" => "", "default" => true);
}
$adminList->AddHeaders($arHeaders);
$campaignList = Adv\YandexCampaignTable::getList(array('order' => array($by => $order), 'filter' => array("=ENGINE_ID" => $engine->getId(), '=ACTIVE' => $archive ? Adv\YandexCampaignTable::INACTIVE : Adv\YandexCampaignTable::ACTIVE), "select" => array("ID", "BANNER_CNT"), 'runtime' => array(new Entity\ExpressionField('BANNER_CNT', 'COUNT(%s)', "\\Bitrix\\Seo\\Adv\\YandexBannerTable:CAMPAIGN.ID"))));
$data = new \CAdminResult($campaignList, $tableID);
$data->NavStart();
$adminList->NavText($data->GetNavPrint(Loc::getMessage("PAGES")));
$campaignAdminList = array();
while ($campaign = $data->NavNext()) {
    $bannerCnt = $campaign["BANNER_CNT"];
    $campaignDetail = Adv\YandexCampaignTable::getList(array('filter' => array("=ID" => $campaign["ID"])));
    $campaign = $campaignDetail->fetch();
    $editUrl = "seo_search_yandex_direct_edit.php?lang=" . LANGUAGE_ID . "&ID=" . $campaign["ID"];
    $row =& $adminList->AddRow($campaign["ID"], $campaign, $editUrl, Loc::getMessage("SEO_CAMPAIGN_EDIT_TITLE", array("#ID#" => $campaign["ID"], "#XML_ID#" => $campaign["XML_ID"])));
    $bOwner = $campaign['OWNER_ID'] == $currentUser['id'];
    $row->AddViewField("ID", $campaign['ID']);
    $row->AddField("NAME", '<a href="' . Converter::getHtmlConverter()->encode($editUrl) . '" title="' . Loc::getMessage("SEO_CAMPAIGN_EDIT_TITLE", array("#ID#" => $campaign["ID"], "#XML_ID#" => $campaign["XML_ID"])) . '">' . Converter::getHtmlConverter()->encode($campaign['NAME']) . '</a>');
    $row->AddViewField('LAST_UPDATE', $campaign['LAST_UPDATE'] ? $campaign['LAST_UPDATE'] : Loc::getMessage('SEO_UPDATE_NEVER'));
    $row->AddViewField('SHOW', Loc::getMessage('SEO_YANDEX_STATUS_' . $campaign['SETTINGS']['StatusShow']));
    $active = 'grey';
    $active_title = $campaign['SETTINGS']['Status'];
    if ($campaign['SETTINGS']['IsActive'] == Engine\YandexDirect::BOOL_YES) {
        $active = 'green';
    } elseif ($campaign['SETTINGS']['StatusModerate'] == Engine\YandexDirect::BOOL_YES && $campaign['SETTINGS']['StatusShow'] == Engine\YandexDirect::BOOL_YES) {
        if ($campaign['SETTINGS']['StatusActivating'] == Engine\YandexDirect::BOOL_YES) {
            $active = 'red';
예제 #2
0
파일: menu.php 프로젝트: nycmic/bittest
				|| (
					defined('BX_ADMIN_SEO_ADV_MENU_OPEN')
					&& BX_ADMIN_SEO_ADV_MENU_OPEN == 1
				)
			)
			{
				if(\Bitrix\Main\Loader::includeModule('seo'))
				{
					$yandexAdvCampaigns = array();

					$engine = new Engine\YandexDirect();

					$dbRes = Adv\YandexCampaignTable::getList(array(
						'order' => array('NAME' => 'ASC'),
						'filter' => array(
							'=ENGINE_ID' => $engine->getId(),
							'=ACTIVE' => Adv\YandexCampaignTable::ACTIVE
						),
						'select' => array('ID', 'NAME'),
					));

					while($campaign = $dbRes->fetch())
					{
						if(
						(
							method_exists($this, "IsSectionActive")
							&& $this->IsSectionActive("seo_search_adv_items/".$campaign['ID'])
						)
						|| (
							$GLOBALS["APPLICATION"]->GetCurPage() == '/bitrix/admin/seo_search_yandex_direct_banner_edit.php'
							&& $_REQUEST['campaign'] == $campaign['ID']
						))
예제 #3
0
use Bitrix\Seo\Adv;
Loc::loadMessages(dirname(__FILE__) . '/../seo_adv.php');
$engine = new Engine\YandexDirect();
$currentUser = $engine->getCurrentUser();
$bNeedAuth = !is_array($currentUser);
if ($bNeedAuth) {
    if (!defined('BX_PUBLIC_MODE') || !BX_PUBLIC_MODE) {
        $message = new CAdminMessage(array("TYPE" => "OK", "DETAILS" => Loc::getMessage("SEO_ERROR_NO_YANDEX_AUTH", array("#LANGUAGE_ID#" => LANGUAGE_ID)), "HTML" => true));
        echo $message->Show();
    } else {
        echo BeginNote() . Loc::getMessage("SEO_ERROR_NO_YANDEX_AUTH", array("#LANGUAGE_ID#" => LANGUAGE_ID)) . EndNote();
    }
    return;
}
$request = Main\Context::getCurrent()->getRequest();
$dbRes = Adv\YandexCampaignTable::getList(array("order" => array("NAME" => "asc"), "filter" => array('=ACTIVE' => Adv\YandexCampaignTable::ACTIVE, '=ENGINE_ID' => $engine->getId()), 'select' => array("ID", "NAME", "XML_ID", "OWNER_ID", "SETTINGS")));
$campaignList = array();
while ($campaign = $dbRes->fetch()) {
    if ($campaign['OWNER_ID'] == $currentUser['id']) {
        $campaignList[$campaign['ID']] = $campaign;
    }
}
if (count($campaignList) <= 0) {
    if (!defined('BX_PUBLIC_MODE') || !BX_PUBLIC_MODE) {
        $message = new CAdminMessage(array("TYPE" => "OK", "DETAILS" => Loc::getMessage("SEO_ERROR_NO_CAMPAIGNS", array("#LANGUAGE_ID#" => LANGUAGE_ID)), "HTML" => true));
        echo $message->Show();
    } else {
        echo BeginNote() . Loc::getMessage("SEO_ERROR_NO_CAMPAIGNS", array("#LANGUAGE_ID#" => LANGUAGE_ID)) . EndNote();
    }
    ?>
<a href="/bitrix/admin/seo_search_yandex_direct_edit.php?lang=<?php 
예제 #4
0
 public static function loadCampaignStat($campaignId, $dateStart, $dateFinish)
 {
     $liveEngine = new YandexDirectLive();
     $dbRes = YandexCampaignTable::getList(array('filter' => array('=ID' => $campaignId, '=ENGINE_ID' => $liveEngine->getId()), 'select' => array('ID', 'XML_ID')));
     $campaign = $dbRes->fetch();
     if ($campaign) {
         $result = static::loadStat($liveEngine, $campaign['XML_ID'], $dateStart, $dateFinish);
         if ($result['Stat']) {
             static::processStatsResult($campaignId, $result, $liveEngine);
             return true;
         }
     }
     return false;
 }
예제 #5
0
 public static function updateAgent()
 {
     $engine = new self();
     if ($engine->getAuthSettings()) {
         try {
             $dbRes = YandexCampaignTable::getList(array('filter' => array('<LAST_UPDATE' => DateTime::createFromTimestamp(time() - YandexCampaignTable::CACHE_LIFETIME), '=ENGINE_ID' => $engine->getId()), 'select' => array('CNT'), 'runtime' => array(new ExpressionField('CNT', 'COUNT(*)'))));
             $res = $dbRes->fetch();
             if ($res['CNT'] > 0) {
                 $engine->updateCampaignManual();
             }
             $availableCampaigns = array();
             $campaignList = $engine->getCampaignList();
             foreach ($campaignList as $campaignInfo) {
                 $availableCampaigns[] = $campaignInfo['CampaignID'];
             }
             if (count($availableCampaigns) > 0) {
                 $dbRes = YandexBannerTable::getList(array('group' => array('CAMPAIGN_ID'), 'filter' => array('<LAST_UPDATE' => DateTime::createFromTimestamp(time() - YandexBannerTable::CACHE_LIFETIME), '=ENGINE_ID' => $engine->getId(), '=CAMPAIGN.XML_ID' => $availableCampaigns), 'select' => array('CAMPAIGN_ID')));
                 $campaignId = array();
                 while ($res = $dbRes->fetch()) {
                     $campaignId[] = $res['CAMPAIGN_ID'];
                 }
                 if (count($campaignId) > 0) {
                     $engine->updateBannersManual($campaignId);
                 }
             }
         } catch (YandexDirectException $e) {
         }
     }
     return __CLASS__ . "::updateAgent();";
 }
예제 #6
0
 $bSingle = !is_array($bannerId);
 if ($bSingle) {
     $bannerId = array($bannerId);
 }
 array_map('intval', $bannerId);
 if (count($bannerId) > 0) {
     $dbBanners = Adv\YandexBannerTable::getList(array('filter' => array('@ID' => $bannerId, '=ENGINE_ID' => $engine->getId(), '=ACTIVE' => Adv\YandexBannerTable::ACTIVE), 'select' => array('ID', 'CAMPAIGN_ID', 'SETTINGS')));
     $bannerList = array();
     $campaignList = array();
     while ($banner = $dbBanners->fetch()) {
         $campaignList[] = $banner['CAMPAIGN_ID'];
         $bannerList[$banner['ID']] = $banner;
     }
     $campaignList = array_unique($campaignList);
     if (count($campaignList) > 0) {
         $dbCampaigns = Adv\YandexCampaignTable::getList(array('filter' => array('@ID' => $campaignList, '=ENGINE_ID' => $engine->getId(), '=ACTIVE' => Adv\YandexCampaignTable::ACTIVE), 'select' => array('ID', 'SETTINGS')));
         $campaignList = array();
         while ($campaign = $dbCampaigns->fetch()) {
             $campaignList[$campaign['ID']] = $campaign;
         }
         $dateFinish = new Date();
         $bannerListToCheck = array();
         foreach ($bannerList as $key => $banner) {
             $banner['DATE_START'] = $campaignList[$banner['CAMPAIGN_ID']]['SETTINGS']['StartDate'];
             if ($bSale) {
                 $banner['PROFIT'] = 0;
             }
             if ($banner['DATE_START']) {
                 $banner['DATE_START'] = new Date($banner['DATE_START'], 'Y-m-d');
                 $banner['STATS_DATA'] = Adv\YandexStatTable::getBannerStat($banner['ID'], $banner['DATE_START'], $dateFinish);
                 $gaps = Adv\YandexStatTable::getMissedPeriods($banner['STATS_DATA'], $banner['DATE_START'], $dateFinish);
						{
							if(!isset($arBanners[$banner['BANNER_CAMPAIGN_ID']]))
							{
								$arBanners[$banner['BANNER_CAMPAIGN_ID']] = array();
							}

							$arBanners[$banner['BANNER_CAMPAIGN_ID']][] = $banner;
							$iblockElementInfo['IBLOCK']['ID'] = $banner['LINK_IBLOCK_ID'];
						}

						$dbRes = Adv\YandexCampaignTable::getList(array(
							"order" => array("NAME" => "asc"),
							"filter" => array(
								"=ID" > array_keys($arBanners),
								'=ACTIVE' => Adv\YandexCampaignTable::ACTIVE,
								'=ENGINE_ID' => $engine->getId(),
							),
							'select' => array(
								"ID", "NAME", "XML_ID"
							)
						));
						$campaignList = array();

						while($campaign = $dbRes->fetch())
						{
							$campaignList[$campaign['ID']] = $campaign;
						}

						require(dirname(__FILE__)."/../admin/tab/seo_search_yandex_direct_list_link.php");
					}
					elseif($_REQUEST['get_list_html'] == '2')
예제 #8
0
$campaignAdminList = array();
while($campaign = $data->NavNext())
{
	$campaignAdminList[$campaign['ID']] = $campaign;
}

if(count($campaignAdminList) > 0)
{
	$campaignList = Adv\YandexCampaignTable::getList(array(
		'filter' => array(
			"=ID" => array_keys($campaignAdminList),
		),
		"select" => array('ID', 'BANNER_CNT'),
		'runtime' => array(
			new Entity\ExpressionField(
				'BANNER_CNT',
				'COUNT(%s)',
				"\\Bitrix\\Seo\\Adv\\YandexBannerTable:CAMPAIGN.ID"
			),
		)
	));
	while($campaignCounter = $campaignList->fetch())
	{
		$campaignAdminList[$campaignCounter["ID"]]["BANNER_CNT"] = $campaignCounter["BANNER_CNT"];
	}
}

foreach($campaignAdminList as $campaign)
{
	$editUrl = "seo_search_yandex_direct_edit.php?lang=".LANGUAGE_ID."&ID=".$campaign["ID"];