public static function getMissedPeriods(array $stats, $dateStart, $dateFinish) { $missedPeriods = array(); $datePrevoius = false; $checkDate = new Date($dateStart); $dateCurrent = new Date($dateStart); $dateFinish = new Date($dateFinish); while ($dateCurrent->getTimestamp() <= $dateFinish->getTimestamp()) { if (!array_key_exists($dateCurrent->toString(), $stats)) { if (!$datePrevoius || $dateCurrent->getTimestamp() >= $checkDate->getTimestamp()) { $missedPeriods[] = array($dateCurrent->toString(), $dateCurrent->toString()); $checkDate = new Date($dateCurrent->toString()); $checkDate->add("+" . YandexDirectLive::MAX_STAT_DAYS_DELTA . " days"); $datePrevoius = true; } else { $missedPeriods[count($missedPeriods) - 1][1] = $dateCurrent->toString(); } } else { $datePrevoius = false; } $dateCurrent->add("+1 days"); } return $missedPeriods; }
BX(prefix+'_'+i+'_1_'+r).style.display = 'none'; } } } </script> <? if($bShowStats) { $tabControl->BeginNextTab(); CJSCore::Init(array('amcharts_serial')); $dateStart = new Main\Type\Date(); $dateStart->add("-".Engine\YandexDirectLive::MAX_STAT_DAYS_DELTA." days"); $dateFinish = new Main\Type\Date(); $statsData = Adv\YandexStatTable::getBannerStat( $banner['ID'], $dateStart, $dateFinish ); $gaps = Adv\YandexStatTable::getMissedPeriods($statsData, $dateStart, $dateFinish); $graphData = array(); $currency = Loc::getMessage('SEO_YANDEX_STATS_GRAPH_AXIS_CURRENCY'); foreach($statsData as $date => $dayData)
$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")));