Esempio n. 1
0
 function UsersOnline()
 {
     if (($r = CStatisticWS::CheckAuth()) !== False) {
         return $r;
     }
     $dbresult = CUserOnline::GetList($guest_count, $session_count, array("s_session_time" => "desc"));
     $result = array("GUEST_COUNT" => $guest_count, "SESSIONS" => array());
     $i = 0;
     while ($ar = $dbresult->Fetch()) {
         foreach ($ar as &$v) {
             $v = htmlspecialchars($v);
         }
         $strTmp = "";
         $rsUser = CUser::GetByID($ar["LAST_USER_ID"]);
         if ($ar1 = $rsUser->GetNext()) {
             $strTmp = "[" . $ar1["ID"] . "] " . $ar1["NAME"] . " " . $ar1["LAST_NAME"] . " (" . $ar1["LOGIN"] . ") ";
         } else {
             $strTmp = "[" . $ar["LAST_USER_ID"] . "]";
         }
         $ar["USER_NAME"] = $strTmp;
         $result["SESSIONS"][$i++ . ':SESSION'] = $ar;
     }
     return $result;
 }
Esempio n. 2
0
 /**
  * <p>Возвращает количество <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#hit">хитов</a>, <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#host">хостов</a>, <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#session">сессий</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">событий</a> за весь период ведения статистики, за последние 3 дня, а также за произвольный указанный интервал времени.</p> <p class="note"><b>Примечание</b>: при фильтрации по сайту (<i>filter</i>[<b>SITE_ID</b>]), будут доступны только данные по хитам, хостам, сессиям, событиям. Данные по посетителям будут отсутствовать, т.к. текущая версия модуля предполагает, что посетитель один на весь портал.</p>
  *
  *
  * @param array $arrayfilter = array() Массив для фильтрации результирующего списка. В массиве
  * допустимы следующие ключи: <ul> <li> <b>SITE_ID</b> - ID сайта для которого
  * необходимо получить статистику; </li> <li> <b>DATE1</b> - начальная дата; </li>
  * <li> <b>DATE2</b> - конечная дата. </li> </ul>
  *
  * @return array <p>В случае если не установлена фильтрация по сайту, то структура
  * возвращаемого массива будет следующей:</p> <pre class="syntax">Array ( [TOTAL_HITS]
  * =&gt; суммарное количество хитов за все время ведения статистики
  * [TOTAL_SESSIONS] =&gt; суммарное количество сессий за все время ведения
  * статистики [TOTAL_EVENTS] =&gt; суммарное количество событий за все время
  * ведения статистики [TOTAL_HOSTS] =&gt; суммарное количество хостов за все
  * время ведения статистики [TOTAL_GUESTS] =&gt; суммарное количество
  * посетителей за все время ведения статистики [TOTAL_FAVORITES] =&gt;
  * суммарное количество посетителей, добавивших сайт в "<a
  * href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#favorites">Избранное</a>" за все время
  * ведения статистики [TODAY_HITS] =&gt; количество хитов за сегодня
  * [TODAY_SESSIONS] =&gt; количество сессий за сегодня [TODAY_EVENTS] =&gt; количество
  * событий за сегодня [TODAY_HOSTS] =&gt; количество хостов за сегодня
  * [TODAY_GUESTS] =&gt; суммарное количество посетителей за сегодня
  * [TODAY_NEW_GUESTS] =&gt; количество <a
  * href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#new_guest">новых посетителей</a> за
  * сегодня [TODAY_FAVORITES] =&gt; количество посетителей, добавивших сайт в
  * "Избранное", за сегодня [YESTERDAY_HITS] =&gt; количество хитов за вчера
  * [YESTERDAY_SESSIONS] =&gt; количество сессий за вчера [YESTERDAY_EVENTS] =&gt;
  * количество событий за вчера [YESTERDAY_HOSTS] =&gt; количество хостов за
  * вчера [YESTERDAY_GUESTS] =&gt; суммарное количество посетителей за вчера
  * [YESTERDAY_NEW_GUESTS] =&gt; количество новых посетителей за вчера
  * [YESTERDAY_FAVORITES] =&gt; количество посетителей, добавивших сайт в
  * "Избранное", за вчера [B_YESTERDAY_HITS] =&gt; количество хитов за позавчера
  * [B_YESTERDAY_SESSIONS] =&gt; количество сессий за позавчера [B_YESTERDAY_EVENTS] =&gt;
  * количество событий за позавчера [B_YESTERDAY_HOSTS] =&gt; количество хостов
  * за позавчера [B_YESTERDAY_GUESTS] =&gt; суммарное количество посетителей за
  * позавчера [B_YESTERDAY_NEW_GUESTS] =&gt; количество новых посетителей за
  * позавчера [B_YESTERDAY_FAVORITES] =&gt; количество посетителей, добавивших
  * сайт в "Избранное", за позавчера [PERIOD_HITS] =&gt; количество хитов за
  * установленный период времени (<i>filter</i>[<b>DATE1</b>], <i>filter</i>[<b>DATE2</b>])
  * [PERIOD_SESSIONS] =&gt; количество сессий за установленный период времени
  * [PERIOD_EVENTS] =&gt; количество событий за установленный период времени
  * [PERIOD_NEW_GUESTS] =&gt; количество новых посетителей за установленный
  * период времени [PERIOD_FAVORITES] =&gt; количество посетителей, добавивших
  * сайт в "Избранное", за установленный период времени [ONLINE_GUESTS] =&gt;
  * количество <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#online">посетителей в
  * online</a> )</pre> <p></p>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * // получим данные по посещаемости сайта
  * $arr = <b>CTraffic::GetCommonValues</b>();
  * 
  * echo "Всего хитов: ".$arr["TOTAL_HITS"];
  * echo "Сегодня хитов: ".$arr["TODAY_HITS"];
  * 
  * echo "Всего хостов: ".$arr["TOTAL_HOSTS"];
  * echo "Сегодня хостов: ".$arr["TODAY_HOSTS"];
  * 
  * echo "Всего посетителей: ".$arr["TOTAL_GUESTS"];
  * echo "Сегодня посетителей: ".$arr["TODAY_GUESTS"];
  * echo "Посетителей в онлайн: ".$arr["ONLINE_GUESTS"];
  * ?&gt;
  * </pre>
  *
  *
  * <h4>See Also</h4> 
  * <ul> <li> <a
  * href="http://dev.1c-bitrix.ru/api_help/statistic/classes/cuseronline/getguestcount.php">CUserOnline::GetGuestCount</a>
  * </li> <li> <a href="http://www.1c-bitrix.ru/user_help/statistic/stat_list.php">Отчет "Сводная
  * статистика"</a> </li> </ul> <a name="examples"></a>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/statistic/classes/ctraffic/getcommonvalues.php
  * @author Bitrix
  */
 public static function GetCommonValues($arFilter = array(), $bIgnoreErrors = false)
 {
     $err_mess = "File: " . __FILE__ . "<br>Line: ";
     $DB = CDatabase::GetModuleConnection('statistic');
     $site_id = $arFilter["SITE_ID"];
     if (strlen($site_id) > 0 && $site_id != "NOT_REF") {
         $site_filter = true;
         $strSqlSearch = " and SITE_ID = '" . $DB->ForSql($site_id, 2) . "' ";
     } else {
         $site_filter = false;
         $strSqlSearch = "";
     }
     $date1 = $arFilter["DATE1"];
     $date2 = $arFilter["DATE2"];
     if (strlen($date1) > 0 && CheckDateTime($date1)) {
         $is_filtered = true;
         $date_from = MkDateTime(ConvertDateTime($date1, "D.M.Y"), "d.m.Y");
         if (strlen($date2) > 0 && CheckDateTime($date2)) {
             $date_to = MkDateTime(ConvertDateTime($date2, "D.M.Y") . " 23:59", "d.m.Y H:i");
             $strSqlPeriod = "sum(if(DATE_STAT<FROM_UNIXTIME('{$date_from}'),0, if(DATE_STAT>FROM_UNIXTIME('{$date_to}'),0,";
             $strT = ")))";
         } else {
             $strSqlPeriod = "sum(if(DATE_STAT<FROM_UNIXTIME('{$date_from}'),0,";
             $strT = "))";
         }
     } elseif (strlen($date2) > 0 && CheckDateTime($date2)) {
         $is_filtered = true;
         $date_to = MkDateTime(ConvertDateTime($date2, "D.M.Y") . " 23:59", "d.m.Y H:i");
         $strSqlPeriod = "sum(if(DATE_STAT>FROM_UNIXTIME('{$date_to}'),0,";
         $strT = "))";
     } else {
         $is_filtered = false;
         $strSqlPeriod = "";
         $strT = "";
     }
     $strSql = "\n\t\t\tSELECT\n\t\t\t\tsum(HITS)\t\t\t\t\t\t\tTOTAL_HITS,\n\t\t\t\tsum(if(to_days(curdate())=to_days(DATE_STAT),HITS,0))\t\tTODAY_HITS,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=1,HITS,0))\t\tYESTERDAY_HITS,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=2,HITS,0))\t\tB_YESTERDAY_HITS,\n\n\t\t\t\tsum(SESSIONS)\t\t\t\t\t\t\tTOTAL_SESSIONS,\n\t\t\t\tsum(if(to_days(curdate())=to_days(DATE_STAT),SESSIONS,0))\tTODAY_SESSIONS,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=1,SESSIONS,0))\tYESTERDAY_SESSIONS,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=2,SESSIONS,0))\tB_YESTERDAY_SESSIONS,\n\n\t\t\t\tsum(C_EVENTS)\t\t\t\t\t\t\tTOTAL_EVENTS,\n\t\t\t\tsum(if(to_days(curdate())=to_days(DATE_STAT),C_EVENTS,0))\tTODAY_EVENTS,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=1,C_EVENTS,0))\tYESTERDAY_EVENTS,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=2,C_EVENTS,0))\tB_YESTERDAY_EVENTS,\n\n\t\t\t\tsum(C_HOSTS)\t\t\t\t\t\t\tTOTAL_HOSTS,\n\t\t\t\tsum(if(to_days(curdate())=to_days(DATE_STAT),C_HOSTS,0))\tTODAY_HOSTS,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=1,C_HOSTS,0))\tYESTERDAY_HOSTS,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=2,C_HOSTS,0))\tB_YESTERDAY_HOSTS,\n\n\t\t\t\tsum(NEW_GUESTS)\t\t\t\t\t\t\tTOTAL_GUESTS,\n\t\t\t\tsum(if(to_days(curdate())=to_days(DATE_STAT),GUESTS,0))\t\tTODAY_GUESTS,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=1,GUESTS,0))\tYESTERDAY_GUESTS,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=2,GUESTS,0))\tB_YESTERDAY_GUESTS,\n\n\t\t\t\tsum(if(to_days(curdate())=to_days(DATE_STAT),NEW_GUESTS,0))\tTODAY_NEW_GUESTS,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=1,NEW_GUESTS,0))\tYESTERDAY_NEW_GUESTS,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=2,NEW_GUESTS,0))\tB_YESTERDAY_NEW_GUESTS,\n\n\t\t\t\tsum(FAVORITES)\t\t\t\t\t\t\tTOTAL_FAVORITES,\n\t\t\t\tsum(if(to_days(curdate())=to_days(DATE_STAT),FAVORITES,0))\tTODAY_FAVORITES,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=1,FAVORITES,0))\tYESTERDAY_FAVORITES,\n\t\t\t\tsum(if(to_days(curdate())-to_days(DATE_STAT)=2,FAVORITES,0))\tB_YESTERDAY_FAVORITES\n\t\t\t\t" . ($is_filtered ? ',' . $strSqlPeriod . 'HITS' . $strT . ' PERIOD_HITS, ' . $strSqlPeriod . 'SESSIONS' . $strT . ' PERIOD_SESSIONS, ' . $strSqlPeriod . 'C_EVENTS' . $strT . ' PERIOD_EVENTS, ' . $strSqlPeriod . 'FAVORITES' . $strT . ' PERIOD_FAVORITES, ' . $strSqlPeriod . 'NEW_GUESTS' . $strT . ' PERIOD_NEW_GUESTS ' : '') . "\n\t\t\tFROM\n\t\t\t\t" . ($site_filter ? "b_stat_day_site" : "b_stat_day") . "\n\t\t\tWHERE\n\t\t\t\t1=1\n\t\t\t\t" . $strSqlSearch . "\n\t\t";
     $result = false;
     $rs = $DB->Query($strSql, $bIgnoreErrors, $err_mess . __LINE__);
     if ($rs) {
         if ($result = $rs->Fetch()) {
             foreach ($result as $key => $value) {
                 $result[$key] = intval($value);
             }
             if (!$site_filter) {
                 $result["ONLINE_GUESTS"] = CUserOnline::GetGuestCount();
             }
         }
     }
     return $result;
 }
Esempio n. 3
0
} else {
    if ($e = $APPLICATION->GetException()) {
        $GLOBALS["lAdmin"]->AddFilterError(GetMessage("STAT_FILTER_ERROR") . ": " . $e->GetString());
    }
}
$arDelay = array(20, 30, 60, 120, 300);
if ($delay > 0) {
    $_SESSION["SESS_DELAY"] = $delay;
}
if (intval($_SESSION["SESS_DELAY"]) > 0) {
    $delay = intval($_SESSION["SESS_DELAY"]);
}
if (!in_array($delay, $arDelay)) {
    $delay = 30;
}
$rsData = CUserOnline::GetList($guest_count, $session_count, array($by => $order), $arFilter);
$s = str_replace("#SESSIONS#", $session_count, GetMessage("STAT_TITLE"));
$s = str_replace("#GUESTS#", $guest_count, $s);
$lAdmin->onLoadScript = "BX.adminPanel.setTitle('" . addslashes($s) . "');";
$APPLICATION->SetTitle($s);
$rsData = new CAdminResult($rsData, $sTableID);
$rsData->NavStart();
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("STAT_USERS_PAGES")));
$arHeaders = array();
$arHeaders[] = array("id" => "ID", "content" => GetMessage("STAT_VIEW_SESSION"), "default" => false, "sort" => "s_id");
$arHeaders[] = array("id" => "ADV_ID", "content" => GetMessage("STAT_VIEW_ADV"), "default" => true, "sort" => "s_adv_id");
$arHeaders[] = array("id" => "HITS", "content" => GetMessage("STAT_HITS"), "default" => true, "sort" => "s_hits");
$arHeaders[] = array("id" => "SESSION_TIME", "content" => GetMessage("STAT_SESSION_TIME"), "default" => true, "sort" => "s_session_time");
$arHeaders[] = array("id" => "LAST_USER_ID", "content" => GetMessage("STAT_USER"), "default" => true, "sort" => "s_guest_id");
$arHeaders[] = array("id" => "IP_LAST", "content" => GetMessage("STAT_IP"), "default" => true, "sort" => "s_ip");
$arHeaders[] = array("id" => "COUNTRY_ID", "content" => GetMessage("STAT_COUNTRY"), "default" => true, "sort" => "s_country_id");