Your IP : 18.190.160.135


Current Path : /home/bitrix/ext_www/crm.klimatlend.ua/bitrix/components/bitrix/webservice.statistic/
Upload File :
Current File : /home/bitrix/ext_www/crm.klimatlend.ua/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();
?>