Your IP : 3.147.70.101
<?php
require_once($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/main/include/prolog_admin_before.php");
/**
* Bitrix vars
* @global CUser $USER
* @global CMain $APPLICATION
* @global CDatabase $DB
* @global CUserTypeManager $USER_FIELD_MANAGER
* @global CCacheManager $CACHE_MANAGER
*/
define('ADMIN_MODULE_NAME', 'seo');
use Bitrix\Main;
use Bitrix\Main\Text\Converter;
use Bitrix\Main\Localization\Loc;
use Bitrix\Seo\Engine;
use Bitrix\Seo\Adv;
use Bitrix\Seo\Service;
Loc::loadMessages(dirname(__FILE__).'/../../main/tools.php');
Loc::loadMessages(dirname(__FILE__).'/seo_search.php');
Loc::loadMessages(dirname(__FILE__).'/seo_adv.php');
if (!$USER->CanDoOperation('seo_tools'))
{
$APPLICATION->AuthForm(Loc::getMessage("ACCESS_DENIED"));
}
if(!Main\Loader::includeModule('seo'))
{
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
ShowError(Loc::getMessage("SEO_ERROR_NO_MODULE"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
}
if(!Main\Loader::includeModule('socialservices'))
{
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
ShowError(Loc::getMessage("SEO_ERROR_NO_MODULE_SOCSERV"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
}
$engine = new Engine\YandexDirect();
$currentUser = $engine->getCurrentUser();
$bNeedAuth = !is_array($currentUser);
//get string of campaign CURRENCY name
try
{
$clientsSettings = $engine->getClientsSettings();
$clientCurrency = current($clientsSettings);
$clientCurrency = Loc::getMessage('SEO_YANDEX_CURRENCY__'.$clientCurrency['Currency']);
}
catch(Engine\YandexDirectException $e)
{
$seoproxyAuthError = new CAdminMessage(array(
"TYPE" => "ERROR",
"MESSAGE" => Loc::getMessage('SEO_YANDEX_SEOPROXY_AUTH_ERROR'),
"DETAILS" => $e->getMessage(),
));
}
$bReadOnly = $bNeedAuth;
$bAllowUpdate = !$bNeedAuth;
$message = null;
$request = Main\Context::getCurrent()->getRequest();
$back_url = isset($request["back_url"]) ? $request["back_url"] : '';
$ID = intval($request["ID"]);
$bShowStats = $ID > 0 && $bAllowUpdate;
$bShowOrderStats = $bShowStats
&& Main\ModuleManager::isModuleInstalled('sale')
&& Main\Loader::includeModule('currency');
if($ID > 0)
{
$dbRes = Adv\YandexCampaignTable::getByPrimary($ID);
$campaign = $dbRes->fetch();
if($campaign)
{
$campaign['SETTINGS']['StartDate'] = ConvertTimeStamp(MakeTimeStamp($campaign['SETTINGS']['StartDate'], "YYYY-MM-DD"));
$campaign['SETTINGS']['EmailNotification']['SendWarn'] = $campaign['SETTINGS']['EmailNotification']['SendWarn'] != Engine\YandexDirect::BOOL_NO;
if($campaign['OWNER_ID'] != $currentUser['id'])
{
$bReadOnly = true;
$bAllowUpdate = false;
$message = new CAdminMessage(array(
"TYPE" => "ERROR",
"MESSAGE" => Loc::getMessage('SEO_CAMPAIGN_WRONG_OWNER', array("#USERINFO#" => "(".$campaign["OWNER_ID"].") ".$campaign["OWNER_NAME"]))
));
}
}
else
{
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
$message = new CAdminMessage(array(
"TYPE" => "ERROR",
"DETAILS" => Loc::getMessage("SEO_ERROR_NO_CAMPAIGN"),
"HTML" => true
));
echo $message->Show();
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
}
}
if($bShowStats)
{
if(
isset($_REQUEST['date_from']) && isset($_REQUEST['date_to'])
&& Main\Type\Date::isCorrect($_REQUEST['date_from'])
&& Main\Type\Date::isCorrect($_REQUEST['date_to'])
)
{
$statsDateStart = new Main\Type\Date($_REQUEST['date_from']);
$statsDateFinish = new Main\Type\Date($_REQUEST['date_to']);
}
else
{
$statsDateStart = new Main\Type\Date();
$statsDateStart->add("-".Engine\YandexDirect::MAX_STAT_DAYS_DELTA." days");
$statsDateFinish = new Main\Type\Date();
}
}
if($bShowStats)
{
$tableID = "tbl_yandex_campaign_banner_stats";
//hack to prevent browser history insertion
if (isset($_REQUEST["mode"])&&($_REQUEST["mode"]=='list' || $_REQUEST["mode"]=='frame'))
{
$_REQUEST['admin_history'] = 'Y';
}
$oSort = new \CAdminSorting($tableID, "BANNER_CTR", "desc");
$statsAdminList = new \CAdminList($tableID, $oSort);
$campaignStats = Adv\YandexStatTable::getList(array(
'order' => array($by => $order),
'group' => array("BANNER_ID", "CURRENCY"),
'filter' => array(
"=CAMPAIGN_ID" => $campaign['ID'],
">=DATE_DAY" => $statsDateStart,
"<DATE_DAY" => $statsDateFinish,
),
'select' => array(
"BANNER_ID", "CURRENCY",
"BANNER_NAME" => "BANNER.NAME", "BANNER_XML_ID" => "BANNER.XML_ID",
"BANNER_SUM", "BANNER_SHOWS", "BANNER_CLICKS", "BANNER_CTR",
),
"runtime" => array(
new Main\Entity\ExpressionField('BANNER_SUM', 'SUM(SUM)'),
new Main\Entity\ExpressionField('BANNER_SHOWS', 'SUM(SHOWS)'),
new Main\Entity\ExpressionField('BANNER_CLICKS', 'SUM(CLICKS)'),
new Main\Entity\ExpressionField('BANNER_CTR', '100*SUM(CLICKS)/SUM(SHOWS)'),
),
));
$data = new \CAdminResult($campaignStats, $tableID);
$data->NavStart();
$statsAdminList->NavText($data->GetNavPrint(Loc::getMessage("PAGES")));
$first = true;
$statsBanners = array();
$currency = $clientCurrency;
while($banner = $data->NavNext())
{
$statsBanners[$banner['BANNER_ID']] = $banner;
if($banner['CURRENCY'])
{
$currency = $banner['CURRENCY'];
}
}
$arHeaders = array(
array("id"=>"ID", "content"=>Loc::getMessage("SEO_BANNER_ID"), "sort"=>"BANNER_ID", "default"=>true),
array("id"=>"NAME", "content"=>Loc::getMessage('SEO_BANNER_NAME'), "sort"=>"BANNER_NAME", "default"=>true),
array("id"=>"XML_ID", "content"=>Loc::getMessage('SEO_BANNER_XML_ID'), "sort"=>"BANNER_XML_ID", "default"=>true),
array("id"=>"BANNER_SUM", "content"=>Loc::getMessage('SEO_YANDEX_STATS_GRAPH_AXIS_SUM').', '.$currency, "sort" => "BANNER_SUM", "default"=>true, "align" => "right"),
array("id"=>"BANNER_SHOWS", "content"=>Loc::getMessage('SEO_YANDEX_STATS_GRAPH_AXIS_SHOWS'), "sort" => "BANNER_SHOWS", "default"=>true, "align" => "right"),
array("id"=>"BANNER_CLICKS", "content"=>Loc::getMessage('SEO_YANDEX_STATS_GRAPH_AXIS_CLICKS'), "sort" => "BANNER_CLICKS", "default"=>true, "align" => "right"),
array("id"=>"BANNER_CTR", "content"=>Loc::getMessage('SEO_FORECAST_CTR'), "sort" => "BANNER_CTR", "default"=>true, "align" => "right"),
);
if($bShowOrderStats)
{
$arHeaders = array_merge(
array_slice($arHeaders, 0, 3),
array(
array("id"=>"BANNER_SUM_ORDER", "content"=>Loc::getMessage('SEO_YANDEX_STATS_SUM_ORDER'), /*"sort" => "BANNER_SUM", */"default"=>true, "align" => "right"),
),
array_slice($arHeaders, 3)
);
}
$statsAdminList->AddHeaders($arHeaders);
if(count($statsBanners) > 0)
{
$dbRes = Adv\OrderTable::getList(array(
'filter' => array(
'@BANNER_ID' => array_keys($statsBanners),
'=CAMPAIGN_ID' => $campaign['ID'],
'=PROCESSED' => Adv\OrderTable::PROCESSED,
">=TIMESTAMP_X" => $statsDateStart,
"<TIMESTAMP_X" => $statsDateFinish,
),
'group' => array(
'BANNER_ID'
),
'select' => array('BANNER_ID', 'BANNER_SUM'),
'runtime' => array(
new Main\Entity\ExpressionField('BANNER_SUM', 'SUM(SUM)'),
),
));
while($realSale = $dbRes->fetch())
{
$statsBanners[$realSale['BANNER_ID']]['BANNER_SUM_ORDER'] = $realSale['BANNER_SUM'];
}
foreach($statsBanners as $banner)
{
$editUrl = "seo_search_yandex_direct_banner_edit.php?lang=".LANGUAGE_ID."&campaign=".$campaign['ID']."&ID=".$banner["BANNER_ID"];
$row = &$statsAdminList->AddRow($banner["BANNER_ID"], $banner, $editUrl, Loc::getMessage("SEO_BANNER_EDIT_TITLE", array(
"#ID#" => $banner["BANNER_ID"],
"#XML_ID#" => $banner["BANNER_XML_ID"],
)));
$row->AddViewField("ID", $banner['BANNER_ID']);
$row->AddField("NAME", '<a href="'.Converter::getHtmlConverter()->encode($editUrl).'" title="'.Loc::getMessage("SEO_BANNER_EDIT_TITLE", array(
"#ID#" => $banner["BANNER_ID"],
"#XML_ID#" => $banner["BANNER_XML_ID"],
)).'">'.Converter::getHtmlConverter()->encode($banner['BANNER_NAME']).'</a>');
$row->AddViewField('XML_ID', '<a href="https://direct.yandex.ru/registered/main.pl?cmd=showCampMultiEdit&bids='.$banner['BANNER_XML_ID'].'&cid='.$campaign['XML_ID'].'" target="_blank" title="'.Converter::getHtmlConverter()->encode(Loc::getMessage('SEO_CAMPAIGN_EDIT_EXTERNAL')).'">'.Loc::getMessage('SEO_YANDEX_DIRECT_LINK_TPL', array('#XML_ID#' => $banner['BANNER_XML_ID'])).'</a>');
$row->AddViewField("BANNER_SUM", number_format($banner['BANNER_SUM'], 2, '.', ' '));
$row->AddViewField("BANNER_SHOWS", $banner['BANNER_SHOWS']);
$row->AddViewField("BANNER_CLICKS", $banner['BANNER_CLICKS']);
$row->AddViewField("BANNER_CTR", number_format($banner['BANNER_CTR'], 2, '.', ' '));
if($bShowOrderStats)
{
$row->AddViewField("BANNER_SUM_ORDER", \CCurrencyLang::CurrencyFormat(doubleval($banner['BANNER_SUM_ORDER']), \Bitrix\Currency\CurrencyManager::getBaseCurrency(), true));
}
}
}
$statsAdminList->checkListMode();
}
if($ID <= 0)
{
$campaign = array(
"SETTINGS" => array(
"Name" => Loc::getMessage("SEO_CAMPAIGN_NAME_DEFAULT", array("#DATE#" => ConvertTimeStamp())),
"FIO" => $currentUser['real_name'],
"StartDate" => ConvertTimeStamp(),
"EmailNotification" => array(
"Email" => $USER->GetEmail()
? $USER->GetEmail()
: Main\Config\Option::get('main', 'email_from', ''),
"SendWarn" => false,
"MoneyWarningValue" => Adv\YandexCampaignTable::MONEY_WARNING_VALUE_DEFAULT,
"WarnPlaceInterval" => Adv\YandexCampaignTable::MONEY_WARN_PLACE_INTERVAL_DEFAULT,
),
"Strategy" => array(
"StrategyName" => Adv\YandexCampaignTable::STRATEGY_WEEKLY_BUDGET,
),
"MinusKeywords" => array(),
),
);
}
$strategyTitle = Loc::getMessage('SEO_CAMPAIGN_STRATEGY_'.$campaign["SETTINGS"]['Strategy']['StrategyName']);
if(!$strategyTitle)
{
$strategyTitle = $campaign["SETTINGS"]['Strategy']['StrategyName'];
}
if(!$bReadOnly)
{
if(!in_array($campaign["SETTINGS"]['Strategy']['StrategyName'], Adv\YandexCampaignTable::$supportedStrategy))
{
$bReadOnly = true;
$message = new CAdminMessage(array(
"TYPE" => "ERROR",
"MESSAGE" => Loc::getMessage("SEO_CAMPAIGN_STRATEGY_NOT_SUPPORTED", array(
"#STRATEGY#" => $strategyTitle,
))
));
}
}
$aTabs = array(
array(
"DIV" => "edit_main",
"TAB" => Loc::getMessage("SEO_CAMPAIGN_TAB_MAIN"),
"TITLE" => Loc::getMessage("SEO_CAMPAIGN_TAB_MAIN_TITLE"),
),
array(
"DIV" => "edit_strategy",
"TAB" => Loc::getMessage("SEO_CAMPAIGN_TAB_STRATEGY"),
"TITLE" => Loc::getMessage("SEO_CAMPAIGN_TAB_STRATEGY_TITLE"),
),
);
if($ID > 0)
{
$aTabs[] = array(
"DIV" => "edit_stats",
"TAB" => Loc::getMessage("SEO_CAMPAIGN_TAB_STATS"),
"TITLE" => Loc::getMessage("SEO_CAMPAIGN_TAB_STATS_TITLE"),
"ONSELECT" => "showStats()",
);
}
$tabControl = new CAdminTabControl("tabControl", $aTabs);
if($request->isPost() && ($request["save"]<>'' || $request["apply"]<>'') && check_bitrix_sessid() && !$bReadOnly)
{
$campaignSettings = $request["SETTINGS"];
if(
is_array($campaignSettings['Strategy'])
&& is_array($request["STRATEGY_SETTINGS"][$campaignSettings['Strategy']['StrategyName']])
)
{
$campaignSettings['Strategy'] = array_merge(
$campaignSettings['Strategy'],
$request["STRATEGY_SETTINGS"][$campaignSettings['Strategy']['StrategyName']]
);
}
$campaignSettings['EmailNotification']['SendWarn'] = $campaignSettings['EmailNotification']['SendWarn'] == 'Y';
$campaignSettings['MinusKeywords'] = preg_split("/[\\n,;]+\\s*/", $campaignSettings['MinusKeywords']);
$campaignSettings['MinusKeywords'] = array_map('trim', $campaignSettings['MinusKeywords']);
$campaignFields = array(
"SETTINGS" => $campaignSettings
);
if($ID > 0)
{
$result = Adv\YandexCampaignTable::update($ID, $campaignFields);
}
else
{
$result = Adv\YandexCampaignTable::add($campaignFields);
}
if($result->isSuccess())
{
$ID = $result->getId();
if($request["apply"]<>'')
{
LocalRedirect('/bitrix/admin/seo_search_yandex_direct_edit.php?lang='.LANGUAGE_ID.'&ID='.$ID.'&'.$tabControl->ActiveTabParam());
}
else
{
if($back_url == '')
{
LocalRedirect("/bitrix/admin/seo_search_yandex_direct.php?lang=".LANGUAGE_ID);
}
else
{
LocalRedirect($back_url);
}
}
}
else
{
$campaignFields["ID"] = $ID;
$campaignFields["XML_ID"] = $campaign["XML_ID"];
$campaign = $campaignFields;
$message = new CAdminMessage(array(
"TYPE" => "ERROR",
"MESSAGE" => Loc::getMessage('SEO_CAMPAIGN_ERROR'),
"DETAILS" => implode('<br>', $result->getErrorMessages()),
));
}
}
$campaign['SETTINGS']['MinusKeywords'] = $campaign['SETTINGS']['MinusKeywords'] ?
implode(', ', $campaign['SETTINGS']['MinusKeywords']) :
'';
$APPLICATION->SetTitle(
$ID > 0
? Loc::getMessage("SEO_CAMPAIGN_EDIT_TITLE", array(
"#ID#" => $ID,
"#XML_ID#" => $campaign["XML_ID"],
))
: Loc::getMessage("SEO_CAMPAIGN_NEW_TITLE")
);
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_admin_after.php");
$aMenu = array(
array(
"ICON" => "btn_list",
"TEXT" => Loc::getMessage("SEO_CAMPAIGN_LIST"),
"LINK" => "seo_search_yandex_direct.php?lang=".LANGUAGE_ID
)
);
if($ID > 0)
{
$aMenu[] = array(
"ICON" => "btn_new",
"TEXT" => Loc::getMessage("SEO_CAMPAIGN_ADD"),
"LINK" => "seo_search_yandex_direct_edit.php?lang=".LANGUAGE_ID
);
if(!$bReadOnly)
{
$aMenu[] = array(
"ICON" => "btn_new",
"TEXT" => Loc::getMessage("SEO_CAMPAIGN_BANNER_ADD_TITLE"),
"LINK" => "seo_search_yandex_direct_banner_edit.php?lang=".LANGUAGE_ID.'&campaign='.$ID,
);
}
$aMenu[] = array(
"ICON" => "",
"TEXT" => Loc::getMessage("SEO_BANNER_LIST"),
"LINK" => "seo_search_yandex_direct_banner.php?lang=".LANGUAGE_ID.'&campaign='.$ID
);
if(!$bReadOnly)
{
$aMenu[] = array(
"TEXT" => Loc::getMessage("MAIN_DELETE"),
"ICON" => "btn_delete",
"LINK" => "seo_search_yandex_direct.php?lang=".LANGUAGE_ID."&ID=".$ID."&action=delete&".bitrix_sessid_get()
);
}
}
if(!defined('BX_PUBLIC_MODE') || !BX_PUBLIC_MODE)
{
require_once("tab/seo_search_yandex_direct_auth.php");
}
if(isset($seoproxyAuthError))
echo $seoproxyAuthError->Show();
$context = new CAdminContextMenu($aMenu);
$context->Show();
if ($message)
echo $message->Show();
?>
<form method="POST" action="<?echo $APPLICATION->GetCurPage()?>?lang=<?=LANGUAGE_ID?>&ID=<?=$ID?>" name="form1" id="form1">
<?
$tabControl->Begin();
// main settings tab
$tabControl->BeginNextTab();
?>
<?
if($ID > 0):
$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';
}
else
{
$active = 'yellow';
}
}
?>
<tr>
<td><?=Loc::getMessage("SEO_CAMPAIGN_STATUS")?>:</td>
<td>
<div class="lamp-<?=$active?>" style="display:inline-block;"></div> <?=$active_title?>
<?
if($bAllowUpdate)
{
?>
<a href="javascript:void(0)" onclick="updateCampaign(this, '<?=$ID?>')"><?=Loc::getMessage("SEO_CAMPAIGN_LIST_UPDATE");?></a>
<?
}
?>
</td>
</tr>
<?
endif;
?>
<tr class="adm-detail-required-field">
<td width="40%"><?=Loc::getMessage("SEO_CAMPAIGN_NAME")?>:</td>
<td width="60%"><?if(!$bReadOnly):?><input type="text" name="SETTINGS[Name]" value="<?=Converter::getHtmlConverter()->encode($campaign['SETTINGS']['Name']);?>" size="53" maxlength="255"><?else:?><?=Converter::getHtmlConverter()->encode($campaign['SETTINGS']['Name']);?><?endif;?></td>
</tr>
<tr class="adm-detail-required-field">
<td><?=Loc::getMessage("SEO_CAMPAIGN_FIO")?>:</td>
<td><?if(!$bReadOnly):?><input type="text" name="SETTINGS[FIO]" value="<?=Converter::getHtmlConverter()->encode($campaign['SETTINGS']['FIO']);?>" size="53" maxlength="255"><?else:?><?=Converter::getHtmlConverter()->encode($campaign['SETTINGS']['FIO']);?><?endif;?></td>
</tr>
<tr class="adm-detail-required-field">
<td><?=Loc::getMessage("SEO_CAMPAIGN_START_DATE")?>:</td>
<td><?if(!$bReadOnly):?><?=CalendarDate("SETTINGS[StartDate]", $campaign['SETTINGS']['StartDate'])?><?else:?><?=Converter::getHtmlConverter()->encode($campaign['SETTINGS']['StartDate']);?><?endif;?></td>
</tr>
<tr class="adm-detail-required-field">
<td>
<?=Loc::getMessage("SEO_CAMPAIGN_EMAIL")?>:
<div style="font-weight: normal; font-size: 11px; margin-top: 5px; color: gray;"><?=Loc::getMessage('SEO_CAMPAIGN_EMAIL_HINT')?></div>
</td>
<td valign="top"><?if(!$bReadOnly):?><input type="text" name="SETTINGS[EmailNotification][Email]" value="<?=Converter::getHtmlConverter()->encode($campaign['SETTINGS']['EmailNotification']['Email']);?>" size="42" maxlength="255"><?else:?><?=Converter::getHtmlConverter()->encode($campaign['SETTINGS']['EmailNotification']['Email']);?><?endif;?> <a href="javascript:void(0)" onclick="BX.toggle(BX('seo_email_details'));"><?=Loc::getMessage('SEO_CAMPAIGN_EMAIL_SETTINGS')?></a></td>
</tr>
<?
// email settings subtable
?>
<tr>
<td colspan="2" align="center"><div id="seo_email_details" <?=empty($message)?' style="display: none;"' : ''?>><table class="internal" cellspacing="0" cellpadding="0" border="0" style="width:80%;">
<tr class="heading">
<td colspan="2"><b><?=Loc::getMessage('SEO_CAMPAIGN_EMAIL_SETTINGS_TITLE')?></b></td>
</tr>
<tr>
<td width="50%" align="right"><?=Loc::getMessage("SEO_CAMPAIGN_EMAIL_MONEY_WARNING_VALUE")?></td>
<td width="50%"><?if(!$bReadOnly):?><input type="text" name="SETTINGS[EmailNotification][MoneyWarningValue]" value="<?=intval($campaign["SETTINGS"]["EmailNotification"]["MoneyWarningValue"])?>" size="3" maxlength="2"> <?else:?><b><?=intval($campaign["SETTINGS"]["EmailNotification"]["MoneyWarningValue"])?></b><?endif;?><?=Loc::getMessage('SEO_CAMPAIGN_EMAIL_MONEY_WARNING_VALUE_HINT')?></td>
</tr>
<?
if(!$bReadOnly):
?>
<tr>
<td align="right"><?=Loc::getMessage("SEO_CAMPAIGN_EMAIL_SENDWARN")?></td>
<td><input type="hidden" name="SETTINGS[EmailNotification][SendWarn]" value="N"><input type="checkbox" name="SETTINGS[EmailNotification][SendWarn]" value="Y" id="seo_sendwarn" <?=$campaign["SETTINGS"]["EmailNotification"]["SendWarn"]?' checked="checked"':''?> onclick="BX('seo_warn_interval').disabled=!this.checked;"> <label for="seo_sendwarn"><?=Loc::getMessage("SEO_CAMPAIGN_EMAIL_MONEY_WARN_PLACE_INTERVAL")?></label> <select name="SETTINGS[EmailNotification][WarnPlaceInterval]" id="seo_warn_interval"<?=$campaign["SETTINGS"]["EmailNotification"]["SendWarn"]?'':' disabled="disabled"'?>>
<?
$v = intval($campaign["SETTINGS"]["EmailNotification"]["WarnPlaceInterval"]);
foreach(Adv\YandexCampaignTable::$allowedWarnPlaceIntervalValues as $value):
?>
<option value="<?=$value?>"<?=$v===$value?' selected="selected"':''?>><?=$value?></option>
<?
endforeach;
?>
</select> <?=Loc::getMessage('SEO_CAMPAIGN_EMAIL_MONEY_WARN_PLACE_INTERVAL_HINT')?></td>
</tr>
<?
elseif($campaign["SETTINGS"]["EmailNotification"]["SendWarn"]):
?>
<tr>
<td align="right"><?=Loc::getMessage("SEO_CAMPAIGN_EMAIL_SENDWARN")?></td>
<td><?=Loc::getMessage("SEO_CAMPAIGN_EMAIL_MONEY_WARN_PLACE_INTERVAL")?> <b><?=intval($campaign["SETTINGS"]["EmailNotification"]["WarnPlaceInterval"])?></b> <?=Loc::getMessage('SEO_CAMPAIGN_EMAIL_MONEY_WARN_PLACE_INTERVAL_HINT')?></td>
</tr>
<?
endif;
?>
</table></div></td>
</tr>
<tr class="heading">
<td colspan="2"><?=Loc::getMessage('SEO_CAMPAIGN_MINUS_KEYWORDS')?></td>
</tr>
<tr>
<td colspan="2">
<?
if($bReadOnly):
echo Converter::getHtmlConverter()->encode($campaign["SETTINGS"]["MinusKeywords"]);
else:
?>
<textarea id="minus_text" style="width: 99%;" rows="3" name="SETTINGS[MinusKeywords]"><?=Converter::getHtmlConverter()->encode($campaign["SETTINGS"]["MinusKeywords"])?></textarea>
<?
endif;
?>
</td>
</tr>
<?
// strategy settings tab
$tabControl->BeginNextTab();
?>
<tr class="adm-detail-required-field">
<td width="40%" valign="top"><?=Loc::getMessage("SEO_CAMPAIGN_STRATEGY")?>: </td>
<td width="60%">
<?
$strategyKey = array_search($campaign["SETTINGS"]["Strategy"]["StrategyName"], Adv\YandexCampaignTable::$supportedStrategy);
if(!$bReadOnly):
foreach(Adv\YandexCampaignTable::$supportedStrategy as $key => $strategy):
?>
<input type="radio" name="SETTINGS[Strategy][StrategyName]" value="<?=$strategy?>" id="seo_str<?=$key?>" <?=$campaign["SETTINGS"]["Strategy"]["StrategyName"] == $strategy ? ' checked="checked"' : ''?> onclick="showStrategyParams('<?=$key?>')"><label for="seo_str<?=$key?>"><?=GetMessage('SEO_CAMPAIGN_STRATEGY_'.$strategy)?></label><br />
<?
endforeach;
else:
echo $strategyTitle;
endif;
?>
</td>
</tr>
<tr id="tr_SEO_CAMPAIGN_STRATEGY_PARAMS" class="heading"><td colspan="2"><?=Loc::getMessage('SEO_CAMPAIGN_STRATEGY_PARAMS')?></td></tr>
<?
if(!$bReadOnly)
{
foreach(Adv\YandexCampaignTable::$supportedStrategy as $key => $strategy)
{
?>
<tbody id="strategy_params_<?=$key?>" style="<?=$key == $strategyKey ? 'display:table-row-group' : 'display:none'?>;">
<?
foreach(Adv\YandexCampaignTable::$strategyConfig[$strategy] as $param => $config)
{
$v = $campaign['SETTINGS']['Strategy'][$param];
$v = $config['type'] == 'float' ? doubleval($v) : intval($v);
?>
<tr<?=$config['mandatory'] ? ' class="adm-detail-required-field"' : ''?>>
<td><?=Loc::getMessage('SEO_CAMPAIGN_STRATEGY_PARAM_'.ToUpper($param))?></td>
<td><input type="text" name="STRATEGY_SETTINGS[<?=$strategy?>][<?=$param?>]"
value="<?=$v === 0 ? '' : $v?>" size="5" id="param_<?=$key?>_<?=$param?>"> <?=($config['type'] === 'float')?$clientCurrency:'';?></td>
</tr>
<?
}
?>
</tbody>
<?
}
}
elseif($strategyKey)
{
$strategy = $campaign['SETTINGS']['Strategy']['StrategyName'];
foreach(Adv\YandexCampaignTable::$strategyConfig[$strategy] as $param => $config)
{
$v = $campaign['SETTINGS']['Strategy'][$param];
$v = $config['type'] == 'float' ? doubleval($v) : intval($v);
?>
<tr<?=$config['mandatory'] ? ' class="adm-detail-required-field"' : ''?>>
<td><?=Loc::getMessage('SEO_CAMPAIGN_STRATEGY_PARAM_'.ToUpper($param))?></td>
<td><b><?=$v === 0 ? '' : $v?></b></td>
</tr>
<?
}
}
else
{
foreach($campaign['SETTINGS']['Strategy'] as $param => $value)
{
if($param != 'StrategyName')
{
?>
<tr>
<td><?=Converter::getHtmlConverter()->encode($param);?></td>
<td><b><?=Converter::getHtmlConverter()->encode($campaign['SETTINGS']['Strategy'][$param])?></b></td>
</tr>
<?
}
}
}
?>
<?
if($ID > 0)
{
// stats tab
$tabControl->BeginNextTab();
?>
<tr class="heading">
<td colspan="3"><?=Loc::getMessage('SEO_YANDEX_STATS_GENERAL');?></td>
</tr>
<tr>
<td width="50%" colspan="2"><?ShowJSHint(Loc::getMessage('SEO_CAMPAIGN_SUM_HINT'))?> <?=Loc::getMessage('SEO_CAMPAIGN_SUM')?>, <?=$clientCurrency?>:</td>
<td width="50%"><?=doubleval($campaign['SETTINGS']['Sum']);?></td>
</tr>
<tr>
<td colspan="2"><?ShowJSHint(Loc::getMessage('SEO_CAMPAIGN_REST_HINT'))?> <?=Loc::getMessage('SEO_CAMPAIGN_REST')?>, <?=$clientCurrency?>:</td>
<td><?=doubleval($campaign['SETTINGS']['Rest']);?></td>
</tr>
<tr>
<td colspan="2"><?ShowJSHint(Loc::getMessage('SEO_CAMPAIGN_SHOWS_HINT'))?> <?=Loc::getMessage('SEO_CAMPAIGN_SHOWS')?>:</td>
<td><?=doubleval($campaign['SETTINGS']['Shows']);?></td>
</tr>
<tr>
<td colspan="2"><?ShowJSHint(Loc::getMessage('SEO_CAMPAIGN_CLICKS_HINT'))?> <?=Loc::getMessage('SEO_CAMPAIGN_CLICKS')?>:</td>
<td><?=doubleval($campaign['SETTINGS']['Clicks']);?></td>
</tr>
<?
if($bShowStats)
{
CJSCore::Init(array('amcharts_serial'));
$statsData = Adv\YandexStatTable::getCampaignStat(
$campaign['ID'],
$statsDateStart,
$statsDateFinish
);
$gaps = Adv\YandexStatTable::getMissedPeriods($statsData, $statsDateStart, $statsDateFinish);
$graphData = array();
$currency = $clientCurrency;
foreach($statsData as $date => $dayData)
{
if($dayData['CURRENCY'] != '')
{
$currency = $dayData['CURRENCY'];
}
$graphData[] = array(
'date' => $date,
'CURRENCY' => $dayData['CURRENCY'],
'SUM' => round($dayData['CAMPAIGN_SUM'], 2),
'SUM_SEARCH' => round($dayData['CAMPAIGN_SUM_SEARCH'], 2),
'SUM_CONTEXT' => round($dayData['CAMPAIGN_SUM_CONTEXT'], 2),
'SHOWS' => $dayData['CAMPAIGN_SHOWS'],
'SHOWS_SEARCH' => $dayData['CAMPAIGN_SHOWS_SEARCH'],
'SHOWS_CONTEXT' => $dayData['CAMPAIGN_SHOWS_CONTEXT'],
'CLICKS' => $dayData['CAMPAIGN_CLICKS'],
'CLICKS_SEARCH' => $dayData['CAMPAIGN_CLICKS_SEARCH'],
'CLICKS_CONTEXT' => $dayData['CAMPAIGN_CLICKS_CONTEXT'],
);
}
$bLoadStats = count($gaps) > 0;
$bShowStats = count($graphData) > 0 || $bLoadStats;
?>
<style>
span.loading-message-text
{
background: url('/bitrix/panel/main/images/waiter-small-white.gif') no-repeat left center;
padding-left: 20px;
margin: 0 0 0 15px;
line-height: 15px;
font-size: 11px;
display: inline-block;
}
</style>
<tr class="heading">
<td colspan="3"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH');?></td>
</tr>
<tr>
<td width="30%" class="adm-detail-required-field"><?=Loc::getMessage('SEO_YANDEX_STATS_PERIOD')?>:</td>
<td width="70%" colspan="2">
<span style="white-space: nowrap; display:inline-block;"><select name="period_sel" onchange="setGraphInterval(this.value)">
<option value="interval"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_INTERVAL')?></option>
<option value="week_ago"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_WEEK')?></option>
<option value="month_ago"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_MONTH')?></option>
</select> <span id="seo_graph_interval"><?=CalendarDate("date_from", $statsDateStart->toString(), 'form1', "4")?> …<?=CalendarDate("date_to", $statsDateFinish->toString(), 'form1', "4")?></span></span> <input type="button" value="<?=Loc::getMessage('SEO_YANDEX_STATS_PERIOD_APPLY')?>" onclick="loadGraphData()" id="stats_loading_button" name="template_preview"><span id="stats_wait" class="loading-message-text" style="display: none; margin-top: 5px;"><?=Loc::getMessage('SEO_YANDEX_STATS_WAIT')?></span>
</td>
</tr>
<tr>
<td><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TYPE')?>:</td>
<td colspan="2"><select onchange="setGraph(this.value)">
<option value="sum"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TYPE_SUM')?></option>
<option value="shows"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TYPE_SHOWS')?></option>
<option value="clicks"><?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TYPE_CLICKS')?></option>
</select></td>
</tr>
<tr>
<td colspan="3">
<div style="padding: 0 50px; text-align: center;">
<div id="statschart" style="width: 100%; height: 600px;"></div>
</div>
<script>
var currentGraph = 'sum';
function setGraphInterval(val)
{
BX('seo_graph_interval').style.display = val == 'interval' ? 'inline' : 'none';
}
function getGraph(id, valueField, title)
{
return {
"bullet": "square",
"bulletBorderAlpha": 1,
"bulletBorderThickness": 1,
"bulletSize": 10,
"id": id,
"lineThickness": 3,
"title": title,
"valueField": valueField
}
}
function setGraph(graph)
{
currentGraph = graph;
window.yandexChart.graphs = yandexGraphs[currentGraph];
window.yandexChart.valueAxes = [yandexAxis[currentGraph]];
window.yandexChart.validateData();
}
function setData(data)
{
window.yandexChart.dataProvider = data;
window.yandexChart.validateData();
if(data.length > 0)
{
yandexAxis['sum'].title = "<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_AXIS_SUM')?>, " + (data[0].CURRENCY || '<?=$clientCurrency?>');
if (currentGraph == 'sum')
{
BX.defer(setGraph)(currentGraph);
}
}
}
function loadGraphData(session)
{
var queryData;
if (!!session)
{
queryData = {
action: 'campaign_stats',
campaign: '<?=$campaign['ID']?>',
loading_session: session,
sessid: BX.bitrix_sessid()
};
}
else
{
BX('stats_loading_button').disabled = true;
BX('stats_wait').style.display = 'inline-block';
BX('stats_wait').innerHTML = '<?=Loc::getMessage('SEO_YANDEX_STATS_WAIT')?>';
queryData = {
action: 'campaign_stats',
campaign: '<?=$campaign['ID']?>',
type: document.forms.form1.period_sel.value,
date_from: document.forms.form1.date_from.value,
date_to: document.forms.form1.date_to.value,
sessid: BX.bitrix_sessid()
};
}
BX.ajax.loadJSON(
'/bitrix/tools/seo_yandex_direct.php',
queryData,
function (res)
{
if (!!res.session)
{
BX.defer(loadGraphData)(res.session);
BX('stats_wait').innerHTML = '<?=Loc::getMessage('SEO_YANDEX_STATS_WAIT')?>: ' + Math.floor(100 - (res.left / res.amount) * 100) + '%';
}
else if (!!res.data)
{
setData(res.data);
if (res.date_from && res.date_to)
{
BX.showWait(BX('yandex_sublist_layout'));
window['tbl_yandex_campaign_banner_stats'].GetAdminList(
BX.util.add_url_param(location.href.replace(/#.*/, ''), {
date_from: res.date_from,
date_to: res.date_to
}),
function ()
{
BX.closeWait(BX('yandex_sublist_layout'));
BX('stats_loading_button').disabled = false;
BX('stats_wait').style.display = 'none';
}
);
}
else
{
BX('stats_loading_button').disabled = false;
BX('stats_wait').style.display = 'none';
}
if(!!res.error && res.error.code == '<?=Engine\YandexDirect::ERROR_NO_STATS?>')
{
res.error = null;
}
}
if (!!res.error && (!!res.error.message || !!res.error.code))
{
BX('stats_loading_button').disabled = false;
BX('stats_wait').style.display = 'none';
alert(res.error.message || res.error.code);
}
}
);
}
var yandexGraphs = {
sum: [
getGraph('yandex_sum', 'SUM', '<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TITLE_SUM')?>'),
getGraph('yandex_sum_search', 'SUM_SEARCH', '<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TITLE_SUM_SEARCH')?>'),
getGraph('yandex_sum_context', 'SUM_CONTEXT', '<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TITLE_SUM_CONTEXT')?>'),
],
shows: [
getGraph('yandex_show', 'SHOWS', '<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TITLE_SHOWS')?>'),
getGraph('yandex_shows_search', 'SHOWS_SEARCH', '<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TITLE_SHOWS_SEARCH')?>'),
getGraph('yandex_show_context', 'SHOWS_CONTEXT', '<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TITLE_SHOWS_CONTEXT')?>'),
],
clicks: [
getGraph('yandex_clicks', 'CLICKS', '<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TITLE_CLICKS')?>'),
getGraph('yandex_clicks_search', 'CLICKS_SEARCH', '<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TITLE_CLICKS_SEARCH')?>'),
getGraph('yandex_clicks_context', 'CLICKS_CONTEXT', '<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_TITLE_CLICKS_CONTEXT')?>'),
]
};
var yandexAxis = {
sum: {
id: "Sum",
title: "<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_AXIS_SUM')?>, <?=$currency?>"
},
shows: {
id: "Shows",
title: "<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_AXIS_SHOWS')?>"
},
clicks: {
id: "Clicks",
title: "<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_AXIS_CLICKS')?>"
}
};
window.yandexChart = null;
window.showStats = function(){
window.yandexChart = AmCharts.makeChart("statschart", {
"type": "serial",
"theme": "light",
"pathToImages": "http://cdn.amcharts.com/lib/3/images/",
"zoomOutText": "<?=Loc::getMessage('SEO_YANDEX_STATS_GRAPH_SHOW_ALL')?>",
"categoryField": "date",
"dataDateFormat": "<?=FORMAT_DATE?>",
"autoMarginOffset": 40,
"marginRight": 60,
"marginTop": 60,
"fontSize": 13,
"numberFormatter": {
"decimalSeparator": ".",
"thousandsSeparator": " ",
"precision": 2
},
"categoryAxis": {
"parseDates": true,
"labelFunction": function(val, date)
{
return BX.date.format(
BX.date.convertBitrixFormat('<?=FORMAT_DATE?>'), date
);
}
},
"chartCursor": {
categoryBalloonFunction: function(date)
{
return BX.date.format(
BX.date.convertBitrixFormat('<?=FORMAT_DATE?>'), date
);
}
},
"trendLines": [],
"legend": {
//"switchable": false
},
"graphs": yandexGraphs[currentGraph],
"guides": [],
"valueAxes": [
yandexAxis[currentGraph]
],
"allLabels": [],
"balloon": {},
"titles": [],
dataProvider: <?=Main\Web\Json::encode($graphData)?>
});
<?
if($bLoadStats):
?>
loadGraphData();
<?
endif;
?>
window.showStats = BX.DoNothing;
};
<?
if($tabControl->selectedTab == "edit_stats"):
?>
showStats();
<?
endif;
?>
</script>
</td>
</tr>
<tr>
<td colspan="3" style="padding: 0 100px 20px; text-align: center;">
<div id="yandex_sublist_layout">
<?
$statsAdminList->DisplayList();
?>
</div>
</td>
</tr>
<?
}
}
$tabControl->EndTab();
if(!$bReadOnly)
{
$tabControl->Buttons(array(
"back_url" => $back_url ? $back_url : "seo_search_yandex_direct.php?lang=".LANGUAGE_ID,
));
}
$tabControl->End();
if(!$bReadOnly):
?>
<?=bitrix_sessid_post();?>
<?
if($back_url!=''):
?>
<input type="hidden" name="back_url" value="<?echo Converter::getHtmlConverter()->encode($back_url)?>">
<?
endif;
?>
<input type="hidden" name="ID" value="<?=$ID?>">
<script type="text/javascript">
<?
if($bAllowUpdate):
?>
function updateCampaign(btn, campaignId)
{
if(!!btn._innerHTML)
{
return;
}
//BX.addClass(btn, 'adm-btn-active');
btn._innerHTML = btn.innerHTML;
btn.innerHTML = '<?=Loc::getMessage('SEO_YANDEX_DIRECT_LOADING')?>';
var url = '/bitrix/tools/seo_yandex_direct.php?action=campaign_update&campaign=' + BX.util.urlencode(campaignId);
BX.ajax.loadJSON(url + '&sessid=' + BX.bitrix_sessid(), function(res){
if(BX.hasClass(btn, 'adm-btn-active'))
{
//BX.removeClass(btn, 'adm-btn-active');
btn.innerHTML = btn._innerHTML;
delete btn._innerHTML;
}
if(!!res.error && (!!res.error.message || !!res.error.code))
{
alert(res.error.message||res.error.code);
}
else
{
BX.reload();
}
});
}
<?
endif;
?>
function showStrategyParams(key)
{
<?
foreach (Adv\YandexCampaignTable::$supportedStrategy as $key => $strategy):
?>
BX('strategy_params_<?=$key?>').style.display = key =='<?=$key?>' ? 'table-row-group' : 'none';
<?
endforeach;
?>
}
BX.ready(function(){
var i1 = BX('param_WEEKLY_PACKET_OF_CLICKS_MaxPrice'),
i2 = BX('param_WEEKLY_PACKET_OF_CLICKS_AveragePrice');
var f = function(){
i2.disabled = i1.value > 0;
if(!i2.disabled)
{
i1.disabled = i2.value > 0;
}
};
BX.bind(i1, 'change', f);
BX.bind(i2, 'change', f);
f();
})
</script>
<?
endif;
?>
</form>
<?
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/epilog_admin.php");