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; }
/** * <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] * => суммарное количество хитов за все время ведения статистики * [TOTAL_SESSIONS] => суммарное количество сессий за все время ведения * статистики [TOTAL_EVENTS] => суммарное количество событий за все время * ведения статистики [TOTAL_HOSTS] => суммарное количество хостов за все * время ведения статистики [TOTAL_GUESTS] => суммарное количество * посетителей за все время ведения статистики [TOTAL_FAVORITES] => * суммарное количество посетителей, добавивших сайт в "<a * href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#favorites">Избранное</a>" за все время * ведения статистики [TODAY_HITS] => количество хитов за сегодня * [TODAY_SESSIONS] => количество сессий за сегодня [TODAY_EVENTS] => количество * событий за сегодня [TODAY_HOSTS] => количество хостов за сегодня * [TODAY_GUESTS] => суммарное количество посетителей за сегодня * [TODAY_NEW_GUESTS] => количество <a * href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#new_guest">новых посетителей</a> за * сегодня [TODAY_FAVORITES] => количество посетителей, добавивших сайт в * "Избранное", за сегодня [YESTERDAY_HITS] => количество хитов за вчера * [YESTERDAY_SESSIONS] => количество сессий за вчера [YESTERDAY_EVENTS] => * количество событий за вчера [YESTERDAY_HOSTS] => количество хостов за * вчера [YESTERDAY_GUESTS] => суммарное количество посетителей за вчера * [YESTERDAY_NEW_GUESTS] => количество новых посетителей за вчера * [YESTERDAY_FAVORITES] => количество посетителей, добавивших сайт в * "Избранное", за вчера [B_YESTERDAY_HITS] => количество хитов за позавчера * [B_YESTERDAY_SESSIONS] => количество сессий за позавчера [B_YESTERDAY_EVENTS] => * количество событий за позавчера [B_YESTERDAY_HOSTS] => количество хостов * за позавчера [B_YESTERDAY_GUESTS] => суммарное количество посетителей за * позавчера [B_YESTERDAY_NEW_GUESTS] => количество новых посетителей за * позавчера [B_YESTERDAY_FAVORITES] => количество посетителей, добавивших * сайт в "Избранное", за позавчера [PERIOD_HITS] => количество хитов за * установленный период времени (<i>filter</i>[<b>DATE1</b>], <i>filter</i>[<b>DATE2</b>]) * [PERIOD_SESSIONS] => количество сессий за установленный период времени * [PERIOD_EVENTS] => количество событий за установленный период времени * [PERIOD_NEW_GUESTS] => количество новых посетителей за установленный * период времени [PERIOD_FAVORITES] => количество посетителей, добавивших * сайт в "Избранное", за установленный период времени [ONLINE_GUESTS] => * количество <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#online">посетителей в * online</a> )</pre> <p></p> * * <h4>Example</h4> * <pre> * <? * // получим данные по посещаемости сайта * $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"]; * ?> * </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; }
} 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");