%PDF- %PDF-
Direktori : /home/bitrix/www/bitrix/components/bitrix/webservice.statistic/ |
Current File : //home/bitrix/www/bitrix/components/bitrix/webservice.statistic/component.php |
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die(); if(!CModule::IncludeModule("webservice")) return; if(!CModule::IncludeModule("statistic")) return; class CStatisticWS extends IWebService { function CheckAuth() { $statRight = $GLOBALS["APPLICATION"]->GetGroupRight("statistic"); if ($statRight == "D") { $GLOBALS["USER"]->RequiredHTTPAuthBasic(); return new CSOAPFault('Server Error', 'Unable to authorize user.'); } return False; } 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; } function GetCommonValues() { if (($r = CStatisticWS::CheckAuth()) !== False) return $r; $result = CTraffic::GetCommonValues(array(),true); $result["ONLINE_LIST"] = CStatisticWS::UsersOnline(); return $result; } function GetAdv() { if (($r = CStatisticWS::CheckAuth()) !== False) return $r; $arResult = array(); $dbAdv = CAdv::GetList($a_by, $a_order, array("DATE1_PERIOD" => "", "DATE2_PERIOD" => ""), $is_filtered, "", $arrGROUP_DAYS, $v); $i = 0; while ($arAdv = $dbAdv->Fetch()) { $i++; $arResult[$i.':top'] = array( "id" => $arAdv["ID"], "name" => $arAdv["REFERER1"]."/".$arAdv["REFERER2"], "today" => $arAdv["SESSIONS_TODAY"], "yesterday" => $arAdv["SESSIONS_YESTERDAY"], "bef_yesterday" => $arAdv["SESSIONS_BEF_YESTERDAY"], "all" => $arAdv["SESSIONS"] ); if ($i >= COption::GetOptionInt("statistic", "STAT_LIST_TOP_SIZE", 10)) break; } return $arResult; } function GetEvents() { if (($r = CStatisticWS::CheckAuth()) !== False) return $r; $arResult = array(); $e_by = "s_stat"; $e_order = "desc"; $dbAdv = CStatEventType::GetList($e_by, $e_order, array("DATE1_PERIOD" => "", "DATE2_PERIOD" => ""), $is_filtered); $i = 0; while ($arAdv = $dbAdv->Fetch()) { $i++; $arResult[$i.':top'] = array( "id" => $arAdv["ID"], "name" => $arAdv["EVENT"], "today" => $arAdv["TODAY_COUNTER"], "yesterday" => $arAdv["YESTERDAY_COUNTER"], "bef_yesterday" => $arAdv["B_YESTERDAY_COUNTER"], "all" => $arAdv["TOTAL_COUNTER"] ); if ($i >= COption::GetOptionInt("statistic", "STAT_LIST_TOP_SIZE", 10)) break; } return $arResult; } function GetPhrases() { if (($r = CStatisticWS::CheckAuth()) !== False) return $r; $arResult = array(); $dbAdv = CTraffic::GetPhraseList($s_by, $s_order, array(), $is_filtered, false); $i = 0; while ($arAdv = $dbAdv->Fetch()) { $i++; $arResult[$i.':top'] = array( "id" => "0", "name" => TruncateText($arAdv["PHRASE"], 50), "today" => $arAdv["TODAY_PHRASES"], "yesterday" => $arAdv["YESTERDAY_PHRASES"], "bef_yesterday" => $arAdv["B_YESTERDAY_PHRASES"], "all" => $arAdv["TOTAL_PHRASES"] ); if ($i >= COption::GetOptionInt("statistic", "STAT_LIST_TOP_SIZE", 10)) break; } return $arResult; } function GetRefSites() { if (($r = CStatisticWS::CheckAuth()) !== False) return $r; $arResult = array(); $dbAdv = CTraffic::GetRefererList($by, $order, array(), $is_filtered, false); $i = 0; while ($arAdv = $dbAdv->Fetch()) { $i++; $arResult[$i.':top'] = array( "id" => "0", "name" => $arAdv["SITE_NAME"], "today" => $arAdv["TODAY_REFERERS"], "yesterday" => $arAdv["YESTERDAY_REFERERS"], "bef_yesterday" => $arAdv["B_YESTERDAY_REFERERS"], "all" => $arAdv["TOTAL_REFERERS"] ); if ($i >= COption::GetOptionInt("statistic", "STAT_LIST_TOP_SIZE", 10)) break; } return $arResult; } function GetSearchers() { if (($r = CStatisticWS::CheckAuth()) !== False) return $r; $arResult = array(); $f_by = "s_stat"; $f_order = "desc"; $dbAdv = CSearcher::GetList($f_by, $f_order, array("DATE1_PERIOD" => "", "DATE2_PERIOD" => ""), $is_filtered); $i = 0; while ($arAdv = $dbAdv->Fetch()) { $i++; $arResult[$i.':top'] = array( "id" => $arAdv["ID"], "name" => $arAdv["NAME"], "today" => $arAdv["TODAY_HITS"], "yesterday" => $arAdv["YESTERDAY_HITS"], "bef_yesterday" => $arAdv["B_YESTERDAY_HITS"], "all" => $arAdv["TOTAL_HITS"] ); if ($i >= COption::GetOptionInt("statistic", "STAT_LIST_TOP_SIZE", 10)) break; } return $arResult; } function GetLiveFeedData($site_id = "", $lang = "en") { global $MESS; if (($r = CStatisticWS::CheckAuth()) !== False) return $r; CComponentUtil::__IncludeLang("/bitrix/components/bitrix/webservice.statistic/", "/component_1.php", $lang); $arFilter = array(); $server_name = COption::GetOptionString("main", "server_name", $GLOBALS["SERVER_NAME"]); $protocol = (CMain::IsHTTPS() ? "https" : "http"); if (strlen($site_id) > 0) { $rsSites = CSite::GetByID($arFields["SITE_ID"]); if ($arSite = $rsSites->Fetch()) { $arFilter = array("SITE_ID" => $site_id); if (strlen($arSite["SERVER_NAME"]) > 0) $server_name = $arSite["SERVER_NAME"]; } } $traffic = CTraffic::GetCommonValues($arFilter, true); $strStat = '<table border="0">'. '<tr>'. '<td> </td>'. '<td><b>'.GetMessage("BX_WS_STAT_LF_TODAY").'</b></td>'. '<td><b>'.GetMessage("BX_WS_STAT_LF_YESTERDAY").'</b></td>'. '<td><b>'.GetMessage("BX_WS_STAT_LF_B_YESTERDAY").'</b></td>'. '<td><b>'.GetMessage("BX_WS_STAT_LF_TOTAL").'</b></td>'. '</tr>'. '<tr>'. '<td><b>'.GetMessage("BX_WS_STAT_LF_HITS").'</b></td>'. '<td align="center">'.$traffic["TODAY_HITS"].'</td>'. '<td align="center">'.$traffic["YESTERDAY_HITS"].'</td>'. '<td align="center">'.$traffic["B_YESTERDAY_HITS"].'</td>'. '<td align="center">'.$traffic["TOTAL_HITS"].'</td>'. '</tr>'. '<tr>'. '<td><b>'.GetMessage("BX_WS_STAT_LF_SESSIONS").'</b></td>'. '<td align="center">'.$traffic["TODAY_SESSIONS"].'</td>'. '<td align="center">'.$traffic["YESTERDAY_SESSIONS"].'</td>'. '<td align="center">'.$traffic["B_YESTERDAY_SESSIONS"].'</td>'. '<td align="center">'.$traffic["TOTAL_SESSIONS"].'</td>'. '</tr>'. '<tr>'. '<td><b>'.GetMessage("BX_WS_STAT_LF_HOSTS").'</b></td>'. '<td align="center">'.$traffic["TODAY_HOSTS"].'</td>'. '<td align="center">'.$traffic["YESTERDAY_HOSTS"].'</td>'. '<td align="center">'.$traffic["B_YESTERDAY_HOSTS"].'</td>'. '<td align="center">'.$traffic["TOTAL_HOSTS"].'</td>'. '</tr>'. '<tr>'. '<td><b>'.GetMessage("BX_WS_STAT_LF_EVENTS").'</b></td>'. '<td align="center">'.$traffic["TODAY_EVENTS"].'</td>'. '<td align="center">'.$traffic["YESTERDAY_EVENTS"].'</td>'. '<td align="center">'.$traffic["B_YESTERDAY_EVENTS"].'</td>'. '<td align="center">'.$traffic["TOTAL_EVENTS"].'</td>'. '</tr>'. (!array_key_exists("SITE_ID", $arFilter) ? '<tr>'. '<td><b>'.GetMessage("BX_WS_STAT_LF_GUESTS").'</b></td>'. '<td align="center">'.$traffic["TODAY_GUESTS"].'</td>'. '<td align="center">'.$traffic["YESTERDAY_GUESTS"].'</td>'. '<td align="center">'.$traffic["B_YESTERDAY_GUESTS"].'</td>'. '<td align="center">'.$traffic["TOTAL_GUESTS"].'</td>'. '</tr>'. '<tr>'. '<td><b>'.GetMessage("BX_WS_STAT_LF_NEW_GUESTS").'</b></td>'. '<td align="center">'.$traffic["TODAY_NEW_GUESTS"].'</td>'. '<td align="center">'.$traffic["YESTERDAY_NEW_GUESTS"].'</td>'. '<td align="center">'.$traffic["B_YESTERDAY_NEW_GUESTS"].'</td>'. '<td align="center"> </td>'. '</tr>' : '' ). '</table>'; $strStatText = GetMessage("BX_WS_STAT_LF_HITS").'#BR#'. GetMessage("BX_WS_STAT_LF_TODAY").': '.$traffic["TODAY_HITS"].'#BR#'. GetMessage("BX_WS_STAT_LF_YESTERDAY").': '.$traffic["YESTERDAY_HITS"].'#BR#'. GetMessage("BX_WS_STAT_LF_B_YESTERDAY").': '.$traffic["B_YESTERDAY_HITS"].'#BR#'. GetMessage("BX_WS_STAT_LF_TOTAL").': '.$traffic["TOTAL_HITS"].'#BR#'. '#BR#'.GetMessage("BX_WS_STAT_LF_SESSIONS").'#BR#'. GetMessage("BX_WS_STAT_LF_TODAY").': '.$traffic["TODAY_SESSIONS"].'#BR#'. GetMessage("BX_WS_STAT_LF_YESTERDAY").': '.$traffic["YESTERDAY_SESSIONS"].'#BR#'. GetMessage("BX_WS_STAT_LF_B_YESTERDAY").': '.$traffic["B_YESTERDAY_SESSIONS"].'#BR#'. GetMessage("BX_WS_STAT_LF_TOTAL").': '.$traffic["TOTAL_SESSIONS"].'#BR#'. '#BR#'.GetMessage("BX_WS_STAT_LF_HOSTS").'#BR#'. GetMessage("BX_WS_STAT_LF_TODAY").': '.$traffic["TODAY_HOSTS"].'#BR#'. GetMessage("BX_WS_STAT_LF_YESTERDAY").': '.$traffic["YESTERDAY_HOSTS"].'#BR#'. GetMessage("BX_WS_STAT_LF_B_YESTERDAY").': '.$traffic["B_YESTERDAY_HOSTS"].'#BR#'. GetMessage("BX_WS_STAT_LF_TOTAL").': '.$traffic["TOTAL_HOSTS"].'#BR#'. '#BR#'.GetMessage("BX_WS_STAT_LF_EVENTS").'#BR#'. GetMessage("BX_WS_STAT_LF_TODAY").': '.$traffic["TODAY_EVENTS"].'#BR#'. GetMessage("BX_WS_STAT_LF_YESTERDAY").': '.$traffic["YESTERDAY_EVENTS"].'#BR#'. GetMessage("BX_WS_STAT_LF_B_YESTERDAY").': '.$traffic["B_YESTERDAY_EVENTS"].'#BR#'. GetMessage("BX_WS_STAT_LF_TOTAL").': '.$traffic["TOTAL_EVENTS"].'#BR#'. (!array_key_exists("SITE_ID", $arFilter) ? '#BR#'.GetMessage("BX_WS_STAT_LF_GUESTS").'#BR#'. GetMessage("BX_WS_STAT_LF_TODAY").': '.$traffic["TODAY_GUESTS"].'#BR#'. GetMessage("BX_WS_STAT_LF_YESTERDAY").': '.$traffic["YESTERDAY_GUESTS"].'#BR#'. GetMessage("BX_WS_STAT_LF_B_YESTERDAY").': '.$traffic["B_YESTERDAY_GUESTS"].'#BR#'. GetMessage("BX_WS_STAT_LF_TOTAL").': '.$traffic["TOTAL_GUESTS"].'#BR#'. '#BR#'.GetMessage("BX_WS_STAT_LF_NEW_GUESTS").'#BR#'. GetMessage("BX_WS_STAT_LF_TODAY").': '.$traffic["TODAY_NEW_GUESTS"].'#BR#'. GetMessage("BX_WS_STAT_LF_YESTERDAY").': '.$traffic["YESTERDAY_NEW_GUESTS"].'#BR#'. GetMessage("BX_WS_STAT_LF_B_YESTERDAY").': '.$traffic["B_YESTERDAY_NEW_GUESTS"].'#BR#' : '' ); $arResult = array( "TITLE" => htmlspecialchars(GetMessage("BX_WS_STAT_LF_TITLE")), "MESSAGE" => htmlspecialchars($strStat), "TEXT_MESSAGE" => htmlspecialchars($strStatText), "URL" => htmlspecialchars($protocol."://".$server_name."/bitrix/admin/stat_list.php?lang=".$lang) ); return $arResult; } function GetWebServiceDesc() { $wsdesc = new CWebServiceDesc(); $wsdesc->wsname = "bitrix.webservice.statistic"; $wsdesc->wsclassname = "CStatisticWS"; $wsdesc->wsdlauto = true; $wsdesc->wsendpoint = CWebService::GetDefaultEndpoint(); $wsdesc->wstargetns = CWebService::GetDefaultTargetNS(); $wsdesc->classTypes = array(); $wsdesc->structTypes["Session"] = array( "ID" => array("varType" => "integer"), "ADV_ID" => array("varType" => "integer"), "REFERER1" => array("varType" => "string"), "REFERER2" => array("varType" => "string"), "REFERER3" => array("varType" => "string"), "ADV_BACK" => array("varType" => "string"), "LAST_SITE_ID" => array("varType" => "string"), "URL_LAST" => array("varType" => "string"), "URL_LAST_404" => array("varType" => "string"), "IP_LAST" => array("varType" => "string"), "HITS" => array("varType" => "integer"), "USER_AUTH" => array("varType" => "string"), "STOP_LIST_ID" => array("varType" => "integer"), "GUEST_ID" => array("varType" => "integer"), "FAVORITES" => array("varType" => "string"), "LAST_USER_ID" => array("varType" => "string"), "SESSION_TIME" => array("varType" => "string"), "DATE_LAST" => array("varType" => "string"), "NEW_GUEST" => array("varType" => "string"), "FIRST_URL_FROM" => array("varType" => "string"), "FIRST_SITE_ID" => array("varType" => "string"), "URL_FROM" => array("varType" => "string"), "COUNTRY_ID" => array("varType" => "string"), "COUNTRY_NAME" => array("varType" => "string"), ); $wsdesc->structTypes["Top"] = array( "id" => array("varType" => "int"), "name" => array("varType" => "string"), "today" => array("varType" => "integer"), "yesterday" => array("varType" => "integer"), "bef_yesterday" => array("varType" => "integer"), "all" => array("varType" => "integer"), ); $wsdesc->structTypes["UsersOnlineList"] = Array( "GUEST_COUNT" => array("varType" => "integer"), "SESSION_COUNT" => array("varType" => "integer"), "SESSIONS" => array("varType" => "ArrayOfSession", "arrType"=>"Session") ); $wsdesc->structTypes["CommonValues"] = array( "TOTAL_HITS" => array("varType" => "integer"), "TODAY_HITS" => array("varType" => "integer"), "YESTERDAY_HITS" => array("varType" => "integer"), "B_YESTERDAY_HITS" => array("varType" => "integer"), "TOTAL_SESSIONS" => array("varType" => "integer"), "TODAY_SESSIONS" => array("varType" => "integer"), "YESTERDAY_SESSIONS" => array("varType" => "integer"), "B_YESTERDAY_SESSIONS" => array("varType" => "integer"), "TOTAL_EVENTS" => array("varType" => "integer"), "TODAY_EVENTS" => array("varType" => "integer"), "YESTERDAY_EVENTS" => array("varType" => "integer"), "B_YESTERDAY_EVENTS" => array("varType" => "integer"), "TOTAL_HOSTS" => array("varType" => "integer"), "TODAY_HOSTS" => array("varType" => "integer"), "YESTERDAY_HOSTS" => array("varType" => "integer"), "B_YESTERDAY_HOSTS" => array("varType" => "integer"), "TOTAL_GUESTS" => array("varType" => "integer"), "TODAY_GUESTS" => array("varType" => "integer"), "YESTERDAY_GUESTS" => array("varType" => "integer"), "B_YESTERDAY_GUESTS" => array("varType" => "integer"), "TODAY_NEW_GUESTS" => array("varType" => "integer"), "YESTERDAY_NEW_GUESTS" => array("varType" => "integer"), "B_YESTERDAY_NEW_GUESTS" => array("varType" => "integer"), "TOTAL_FAVORITES" => array("varType" => "integer"), "TODAY_FAVORITES" => array("varType" => "integer"), "YESTERDAY_FAVORITES" => array("varType" => "integer"), "B_YESTERDAY_FAVORITES" => array("varType" => "integer"), "ONLINE_GUESTS" => array("varType" => "integer"), "ONLINE_LIST" => array("varType" => "UsersOnlineList"), ); $wsdesc->structTypes["LiveFeedData"] = Array( "TITLE" => array("varType" => "string"), "MESSAGE" => array("varType" => "string"), "TEXT_MESSAGE" => array("varType" => "string"), "URL" => array("varType" => "string") ); $wsdesc->classes = array( "CStatisticWS" => array( "UsersOnline" => array( "type" => "public", "name" => "UsersOnline", "input" => array(), "output" => array( "user" => array("varType" => "UsersOnlineList") ), ), "GetCommonValues" => array( "type" => "public", "name" => "GetCommonValues", "input" => array(), "output" => array( "user" => array("varType" => "CommonValues") ), ), "GetAdv" => array( "type" => "public", "name" => "GetAdv", "input" => array(), "output" => array( "adv" => array("varType" => "ArrayOfTop", "arrType"=>"Top") ), ), "GetEvents" => array( "type" => "public", "name" => "GetEvents", "input" => array(), "output" => array( "adv" => array("varType" => "ArrayOfTop", "arrType"=>"Top") ), ), "GetPhrases" => array( "type" => "public", "name" => "GetPhrases", "input" => array(), "output" => array( "adv" => array("varType" => "ArrayOfTop", "arrType"=>"Top") ), ), "GetRefSites" => array( "type" => "public", "name" => "GetRefSites", "input" => array(), "output" => array( "adv" => array("varType" => "ArrayOfTop", "arrType"=>"Top") ), ), "GetSearchers" => array( "type" => "public", "name" => "GetSearchers", "input" => array(), "output" => array( "adv" => array("varType" => "ArrayOfTop", "arrType"=>"Top") ), ), "GetLiveFeedData" => array( "type" => "public", "name" => "GetLiveFeedData", "input" => array( "site_id" => array("varType" => "string", "strict" => "no"), "lang" => array("varType" => "string", "strict" => "no") ), "output" => array( "livefeeddata" => array("varType" => "LiveFeedData") ) ) ) ); return $wsdesc; } } $arParams["WEBSERVICE_NAME"] = "bitrix.webservice.statistic"; $arParams["WEBSERVICE_CLASS"] = "CStatisticWS"; $arParams["WEBSERVICE_MODULE"] = ""; $APPLICATION->IncludeComponent( "bitrix:webservice.server", "", $arParams ); die(); ?>