function PrepareHTML($text, $arBanner) { global $nRandom1, $nRandom2, $nRandom3, $nRandom4, $nRandom5; static $search = array("#RANDOM1#", "#RANDOM2#", "#RANDOM3#", "#RANDOM4#", "#RANDOM5#", "#BANNER_NAME#", "#BANNER_ID#", "#CONTRACT_ID#", "#TYPE_SID#"); if (strlen(trim($text)) > 0) { $text = str_replace($search, array($nRandom1, $nRandom2, $nRandom3, $nRandom4, $nRandom5, $arBanner["NAME"], $arBanner["ID"], $arBanner["CONTRACT_ID"], $arBanner["TYPE_SID"]), $text); if (strpos($text, "#EVENT_GID#") !== false) { if (CModule::IncludeModule("statistic")) { $text = str_replace("#EVENT_GID#", CStatEvent::GetGID(), $text); } } } return $text; }
public static function GetEventParam($site_id=false) { return CStatEvent::GetGID($site_id); }
define("ADMIN_SECTION", false); if (!empty($_REQUEST['site_id']) && preg_match('/^[a-z0-9_]{2}$/i', $_REQUEST['site_id'])) { define('SITE_ID', $_REQUEST['site_id']); } require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; global $APPLICATION; if (CModule::IncludeModule("statistic")) { if (strlen($_REQUEST["site_id"]) <= 0) { $site_id = false; $referer_url = strlen($_SERVER["HTTP_REFERER"]) <= 0 ? $_SESSION["SESS_HTTP_REFERER"] : $_SERVER["HTTP_REFERER"]; if (strlen($referer_url)) { $url = @parse_url($referer_url); if ($url) { $rs = CSite::GetList($v1 = "LENDIR", $v2 = "DESC", array("ACTIVE" => "Y", "DOMAIN" => "%" . $url["host"], "IN_DIR" => $url["path"])); if ($arr = $rs->Fetch()) { $site_id = $arr["ID"]; } } } } else { $site_id = $_REQUEST["site_id"]; } $goto = preg_replace("/#EVENT_GID#/i", urlencode(CStatEvent::GetGID($site_id)), $_REQUEST["goto"]); CStatEvent::AddCurrent($_REQUEST["event1"], $_REQUEST["event2"], $_REQUEST["event3"], $_REQUEST["money"], $_REQUEST["currency"], $goto, $_REQUEST["chargeback"], $site_id); } else { $goto = preg_replace("/#EVENT_GID#/i", "", $_REQUEST["goto"]); } if (intval($id) > 0 && CModule::IncludeModule("advertising")) { CAdvBanner::Click($id); } LocalRedirect($goto);
/** * <p>Добавляет <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event">событие</a> используя текущие параметры <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#guest">посетителя</a>. Если <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event_type">типа события</a> с <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event_type_id">идентификаторами</a> <i>event1</i>, <i>event2</i> не существует, то он будет автоматически создан с указанными идентификаторами.</p> * * * @param string $event1 Идентификатор типа события event1. * * @param string $event2 = "" Идентификатор типа события event2. * * @param string $event3 = "" <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event3">Дополнительный параметр * event3</a> события. * * @param mixed $money = "" Денежная сумма. * * @param string $currency = "" Трехсимвольный идентификатор валюты. Идентификаторы валют * задаются в модуле "Валюты". * * @param string $goto = "" Адрес страницы куда перешел посетитель. Как правило используется * в скриптах вида /bitrix/redirect.php, перенаправляющих посетителей на * другие страницы с одновременной фиксацией события. * * @param string $chargeback = "N" Флаг отрицательной суммы. Используется когда необходимо * зафиксировать событие о возврате денег (chargeback). Возможные * значения: <ul> <li> <b>Y</b> - денежная сумма отрицательная; </li> <li> <b>N</b> - * денежная сумма положительная. </li> </ul> * * @param mixed $site_id = false ID сайта к которому будет привязано будущее событие. * * @return array <p>Метод возвращает массив вида: <br><br></p> <pre class="syntax">Array ( [TYPE_ID] => ID * типа события [EID] => ID добавленного события )</pre> <p></p> * * <h4>Example</h4> * <pre> * <? * // зафиксируем событие типа "Просмотр спец. страницы" (view/special_page) * <b>CStatEvent::AddCurrent</b>("softkey", "out", $GLOBALS["APPLICATION"]->GetCurPage()); * ?> * * <? * // зафиксируем событие типа "Уход на оплату заказа на Софткее" (softkey/out) * // если такого типа не существует, то он будет автоматически создан * // событие будет фиксироваться по параметрам текущего посетителя сайта * * // в данной переменной может быть задана страница на которую осуществляется переход * $goto = "http://www.softkey.ru/catalog/basket.php?prodid=902&quantity=1&referer1=ritlabs_site&referer2=BITRIX_SM.OTk1LjgyLk4wLjI1Lk4ucnU%3D"; * * <b>CStatEvent::AddCurrent</b>("softkey", "out", "", "", "", $goto); * ?> * * <? * // зафиксируем событие типа "Скачивание файла manual.chm" (download/manual) * // если такого типа не существует, то он будет автоматически создан * // событие будет фиксироваться по параметрам текущего посетителя сайта * * // сначала проверим не скачивал ли уже текущий посетитель этот файл * // в течение последнего часа * * // получим ID типа события * $rs = CStatEventType::GetByEvents($event1, $event2); * if ($ar = $rs->Fetch()) * { * // теперь получим все события данного типа для текущего посетителя сайта * // произошедшие за последний час (3600 секунд) * $rs = CStatEvent::GetListByGuest($_SESSION["SESS_GUEST_ID"], $ar["TYPE_ID"], "", 3600); * * // если таких событий не было то * if (!($ar=$rs->Fetch())) * { * // добавляем данное событие * <b>CStatEvent::AddCurrent</b>("download", "manual"); * } * } * ?> * </pre> * * * <h4>See Also</h4> * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/statistic/classes/cstatevent/add.php">CStatEvent::Add</a> </li> <li> * <a href="http://dev.1c-bitrix.ru/api_help/statistic/classes/cstatevent/addbyevents.php">CStatEvent::AddByEvents</a> * </li> <li> <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event">Термин "Событие"</a> </li> * <li> <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event3">Термин "Дополнительный * параметр события (event3)"</a> </li> </ul> <a name="examples"></a> * * * @static * @link http://dev.1c-bitrix.ru/api_help/statistic/classes/cstatevent/addcurrent.php * @author Bitrix */ public static function AddCurrent($event1, $event2 = "", $event3 = "", $money = "", $currency = "", $goto = "", $chargeback = "N", $site_id = false) { $err_mess = "File: " . __FILE__ . "<br>Line: "; global $APPLICATION; $DB = CDatabase::GetModuleConnection('statistic'); $event1 = trim($event1); $event2 = trim($event2); $event3 = trim($event3); if (strlen($event1) <= 0 && strlen($event2) <= 0) { return array("EVENT_ID" => 0, "TYPE_ID" => 0, "EID" => 0); } //Check if register event for searcher if (intval($_SESSION["SESS_SEARCHER_ID"]) > 0 && COption::GetOptionString("statistic", "SEARCHER_EVENTS") != "Y") { return array("EVENT_ID" => 0, "TYPE_ID" => 0, "EID" => 0); } // lookup event type ID $EVENT_ID = CStatEvent::SetEventType($event1, $event2, $arEventType); // return if it's unknown if ($EVENT_ID <= 0) { return array("EVENT_ID" => 0, "TYPE_ID" => 0, "EID" => 0); } if ($site_id === false) { if (defined("ADMIN_SECTION") && ADMIN_SECTION === true) { $sql_site = "null"; $site_id = false; } elseif (defined("SITE_ID")) { $sql_site = "'" . $DB->ForSql(SITE_ID, 2) . "'"; $site_id = SITE_ID; } else { $sql_site = "null"; $site_id = false; } } else { if (strlen(trim($site_id)) > 0) { $sql_site = "'" . $DB->ForSql($site_id, 2) . "'"; } else { $sql_site = "null"; $site_id = false; } } $money = doubleval($money); // convert when currency specified if (strlen(trim($currency)) > 0) { $base_currency = GetStatisticBaseCurrency(); if (strlen($base_currency) > 0) { if ($currency != $base_currency) { if (CModule::IncludeModule("currency")) { $rate = CCurrencyRates::GetConvertFactor($currency, $base_currency); if ($rate > 0 && $rate != 1) { $money = $money * $rate; } } } } } $money = round($money, 2); $chargeback = $chargeback == "Y" ? "Y" : "N"; $goto = preg_replace("/#EVENT_GID#/i", CStatEvent::GetGID($site_id), $goto); $sql_KEEP_DAYS = intval($arEventType["KEEP_DAYS"]) > 0 ? intval($arEventType["KEEP_DAYS"]) : "null"; $arr = false; $referer_url = strlen($_SERVER["HTTP_REFERER"]) <= 0 ? $_SESSION["SESS_HTTP_REFERER"] : $_SERVER["HTTP_REFERER"]; if (strlen($referer_url) > 0) { if ($url = @parse_url($referer_url)) { $rs = CSite::GetList($v1 = "LENDIR", $v2 = "DESC", array("ACTIVE" => "Y", "DOMAIN" => "%" . $url["host"], "IN_DIR" => $url["path"])); $arr = $rs->Fetch(); } } $sql_referer_site_id = is_array($arr) && strlen($arr["ID"]) > 0 ? "'" . $DB->ForSql($arr["ID"], 2) . "'" : "null"; $HIT_ID = CKeepStatistics::GetCuurentHitID(); $arFields = array("EVENT_ID" => "'" . $EVENT_ID . "'", "EVENT3" => "'" . $DB->ForSql($event3, 255) . "'", "MONEY" => $money, "DATE_ENTER" => $DB->GetNowFunction(), "REFERER_URL" => "'" . $DB->ForSql($referer_url, 2000) . "'", "URL" => "'" . $DB->ForSql(__GetFullRequestUri(), 2000) . "'", "REDIRECT_URL" => "'" . $DB->ForSql($goto, 2000) . "'", "SESSION_ID" => intval($_SESSION["SESS_SESSION_ID"]) > 0 ? intval($_SESSION["SESS_SESSION_ID"]) : "null", "GUEST_ID" => intval($_SESSION["SESS_GUEST_ID"]) > 0 ? intval($_SESSION["SESS_GUEST_ID"]) : "null", "ADV_ID" => $_SESSION["SESS_LAST_ADV_ID"] > 0 ? $_SESSION["SESS_LAST_ADV_ID"] : "null", "HIT_ID" => $HIT_ID > 0 ? $HIT_ID : "NULL", "COUNTRY_ID" => "'" . $DB->ForSql($_SESSION["SESS_COUNTRY_ID"], 2) . "'", "KEEP_DAYS" => $sql_KEEP_DAYS, "CHARGEBACK" => "'" . $chargeback . "'", "SITE_ID" => $sql_site, "REFERER_SITE_ID" => $sql_referer_site_id); if (intval($_SESSION["SESS_LAST_ADV_ID"]) > 0 && intval($_SESSION["SESS_ADV_ID"]) <= 0) { $arFields["ADV_BACK"] = "'Y'"; } $eid = $DB->Insert("b_stat_event_list", $arFields, $err_mess . __LINE__); // in case of first occurence if (strlen($arEventType["DATE_ENTER"]) <= 0) { // set date of the first event $arFields = array("DATE_ENTER" => $DB->GetNowFunction()); $DB->Update("b_stat_event", $arFields, "WHERE ID='" . $EVENT_ID . "'", $err_mess . __LINE__); } // day counter update $arFields = array("DATE_LAST" => $DB->GetNowFunction(), "COUNTER" => "COUNTER + 1", "MONEY" => "MONEY + " . $money); $rows = $DB->Update("b_stat_event_day", $arFields, "WHERE EVENT_ID='" . $EVENT_ID . "' and " . CStatistics::DBDateCompare("DATE_STAT"), $err_mess . __LINE__); // there was no records updated if (intval($rows) <= 0) { // so add one $arFields_i = array("DATE_STAT" => $DB->GetNowDate(), "DATE_LAST" => $DB->GetNowFunction(), "EVENT_ID" => $EVENT_ID, "COUNTER" => 1, "MONEY" => $money); $DB->Insert("b_stat_event_day", $arFields_i, $err_mess . __LINE__); } elseif (intval($rows) > 1) { // delete $strSql = "SELECT ID FROM b_stat_event_day WHERE EVENT_ID='" . $EVENT_ID . "' and " . CStatistics::DBDateCompare("DATE_STAT") . " ORDER BY ID"; $i = 0; $rs = $DB->Query($strSql, false, $err_mess . __LINE__); while ($ar = $rs->Fetch()) { $i++; if ($i > 1) { $strSql = "DELETE FROM b_stat_event_day WHERE ID = " . $ar["ID"]; $DB->Query($strSql, false, $err_mess . __LINE__); } } } // guest counter $arFields = array("C_EVENTS" => "C_EVENTS+1"); $DB->Update("b_stat_guest", $arFields, "WHERE ID=" . intval($_SESSION["SESS_GUEST_ID"]), $err_mess . __LINE__, false, false, false); // session counter $arFields = array("C_EVENTS" => "C_EVENTS+1"); $DB->Update("b_stat_session", $arFields, "WHERE ID=" . intval($_SESSION["SESS_SESSION_ID"]), $err_mess . __LINE__, false, false, false); // events counter $arFields = array("C_EVENTS" => "C_EVENTS+1"); $DB->Update("b_stat_day", $arFields, "WHERE " . CStatistics::DBDateCompare("DATE_STAT"), $err_mess . __LINE__, false, false, false); // when site defined if (strlen($site_id) > 0) { // update site $arFields = array("C_EVENTS" => "C_EVENTS+1"); $DB->Update("b_stat_day_site", $arFields, "WHERE SITE_ID='" . $DB->ForSql($site_id, 2) . "' and " . CStatistics::DBDateCompare("DATE_STAT"), $err_mess . __LINE__); } // there is advertising compaign defined if (intval($_SESSION["SESS_ADV_ID"]) > 0 || intval($_SESSION["SESS_LAST_ADV_ID"]) > 0) { // increase revenue if ($money != 0) { $sign = $chargeback == "Y" ? "-" : "+"; $arFields = array("REVENUE" => "REVENUE " . $sign . " " . $money); $DB->Update("b_stat_adv", $arFields, "WHERE ID='" . intval($_SESSION["SESS_LAST_ADV_ID"]) . "'", $err_mess . __LINE__, false, false, false); } if (intval($_SESSION["SESS_ADV_ID"]) > 0) { $arFields = array("COUNTER" => "COUNTER + 1", "MONEY" => "MONEY + " . $money); } else { $arFields = array("COUNTER_BACK" => "COUNTER_BACK + 1", "MONEY_BACK" => "MONEY_BACK + " . $money); } $rows = $DB->Update("b_stat_adv_event", $arFields, "WHERE ADV_ID='" . intval($_SESSION["SESS_LAST_ADV_ID"]) . "' and EVENT_ID='" . $EVENT_ID . "'", $err_mess . __LINE__); if (intval($rows) <= 0) { $arFields = array("ADV_ID" => "'" . $_SESSION["SESS_LAST_ADV_ID"] . "'", "EVENT_ID" => "'" . $EVENT_ID . "'"); if (intval($_SESSION["SESS_ADV_ID"]) > 0) { $arFields["COUNTER"] = "1"; $arFields["MONEY"] = $money; } else { $arFields["COUNTER_BACK"] = "1"; $arFields["MONEY_BACK"] = $money; } $DB->Insert("b_stat_adv_event", $arFields, $err_mess . __LINE__); } if (intval($_SESSION["SESS_ADV_ID"]) > 0) { $arFields = array("COUNTER" => "COUNTER + 1", "MONEY" => "MONEY + " . $money); } else { $arFields = array("COUNTER_BACK" => "COUNTER_BACK + 1", "MONEY_BACK" => "MONEY_BACK + " . $money); } $rows = $DB->Update("b_stat_adv_event_day", $arFields, "WHERE ADV_ID='" . intval($_SESSION["SESS_LAST_ADV_ID"]) . "' and EVENT_ID='" . $EVENT_ID . "' and " . CStatistics::DBDateCompare("DATE_STAT"), $err_mess . __LINE__, false, false, false); if (intval($rows) <= 0) { $arFields = array("ADV_ID" => $_SESSION["SESS_LAST_ADV_ID"] > 0 ? $_SESSION["SESS_LAST_ADV_ID"] : "null", "EVENT_ID" => "'" . $EVENT_ID . "'", "DATE_STAT" => $DB->GetNowDate()); if (intval($_SESSION["SESS_ADV_ID"]) > 0) { $arFields["COUNTER"] = "1"; $arFields["MONEY"] = $money; } else { $arFields["COUNTER_BACK"] = "1"; $arFields["MONEY_BACK"] = $money; } $DB->Insert("b_stat_adv_event_day", $arFields, $err_mess . __LINE__); } elseif (intval($rows) > 1) { $strSql = "SELECT ID FROM b_stat_adv_event_day WHERE ADV_ID='" . intval($_SESSION["SESS_LAST_ADV_ID"]) . "' and EVENT_ID='" . $EVENT_ID . "' and " . CStatistics::DBDateCompare("DATE_STAT") . " ORDER BY ID"; $i = 0; $rs = $DB->Query($strSql, false, $err_mess . __LINE__); while ($ar = $rs->Fetch()) { $i++; if ($i > 1) { $strSql = "DELETE FROM b_stat_adv_event_day WHERE ID = " . $ar["ID"]; $DB->Query($strSql, false, $err_mess . __LINE__); } } } } // todays traffic counters CTraffic::IncParam(array("EVENT" => 1), array("EVENT" => 1)); if (strlen($_SESSION["SESS_COUNTRY_ID"]) > 0) { CStatistics::UpdateCountry($_SESSION["SESS_COUNTRY_ID"], array("C_EVENTS" => 1)); } if ($_SESSION["SESS_CITY_ID"] > 0) { CStatistics::UpdateCity($_SESSION["SESS_CITY_ID"], array("C_EVENTS" => 1)); } return array("EVENT_ID" => intval($EVENT_ID), "TYPE_ID" => intval($EVENT_ID), "EID" => intval($eid)); }
<?php define("ADMIN_SECTION", false); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; global $APPLICATION; if (CModule::IncludeModule("statistic")) { if (strlen($site_id) <= 0) { $referer_url = strlen($_SERVER["HTTP_REFERER"]) <= 0 ? $_SESSION["SESS_HTTP_REFERER"] : $_SERVER["HTTP_REFERER"]; if (strlen($referer_url) > 0) { $url = parse_url($referer_url); $rs = CSite::GetList($v1 = "LENDIR", $v2 = "DESC", array("ACTIVE" => "Y", "DOMAIN" => "%" . $url["host"], "IN_DIR" => $url["path"])); $arr = $rs->Fetch(); $site_id = $arr["ID"]; } } if (strlen($site_id) <= 0) { $site_id = false; } $goto = eregi_replace("#EVENT_GID#", urlencode(CStatEvent::GetGID($site_id)), $goto); CStatEvent::AddCurrent($event1, $event2, $event3, $money, $currency, $goto, $chargeback, $site_id); } else { $goto = eregi_replace("#EVENT_GID#", "", $goto); } LocalRedirect($goto);
<?php define("ADMIN_SECTION", false); require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; if (CModule::IncludeModule("statistic")) { if (strlen($site_id) <= 0) { $referer_url = strlen($_SERVER["HTTP_REFERER"]) <= 0 ? $_SESSION["SESS_LAST_PAGE"] : $_SERVER["HTTP_REFERER"]; $url = parse_url($referer_url); $arr = $APPLICATION->GetSiteByDir($url["path"], $url["host"]); $site_id = $arr["SITE_ID"]; if (strlen($site_id) <= 0) { $site_id = false; } } $goto = eregi_replace("#EVENT_GID#", CStatEvent::GetGID($site_id), $goto); CStatEvent::AddCurrent($event1, $event2, $event3, $money, $currency, $goto, $chargeback, $site_id); } else { $goto = eregi_replace("#EVENT_GID#", "", $goto); } if (intval($id) > 0 && CModule::IncludeModule("advertising")) { CAdvBanner::Click($id); } LocalRedirect($goto);