Your IP : 172.28.240.42


Current Path : /var/www/html/clients/wodo.e-nk.ru/bitrix/components/bitrix/webservice.statistic/
Upload File :
Current File : /var/www/html/clients/wodo.e-nk.ru/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())
		{
			$strTmp = "";
			$rsUser = CUser::GetByID($ar["LAST_USER_ID"]);
			if ($ar1 = $rsUser->Fetch())
				$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 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["Tops"] = Array(
			"TOP_LIST" => array("varType" => "ArrayOfTop", "arrType"=>"Top")
			);

		$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" => "Tops")
					),
				),
				"GetEvents" => array(
					"type"		=> "public",
					"name"		=> "GetEvents",
					"input"		=> array(),
					"output"	=> array(
						"adv" => array("varType" => "Tops")
					),
				),
				"GetPhrases" => array(
					"type"		=> "public",
					"name"		=> "GetPhrases",
					"input"		=> array(),
					"output"	=> array(
						"adv" => array("varType" => "Tops")
					),
				),
				"GetRefSites" => array(
					"type"		=> "public",
					"name"		=> "GetRefSites",
					"input"		=> array(),
					"output"	=> array(
						"adv" => array("varType" => "Tops")
					),
				),
				"GetSearchers" => array(
					"type"		=> "public",
					"name"		=> "GetSearchers",
					"input"		=> array(),
					"output"	=> array(
						"adv" => array("varType" => "Tops")
					),
				),
			),
		);
		return $wsdesc;
	}
}

$arParams["WEBSERVICE_NAME"] = "bitrix.webservice.statistic";
$arParams["WEBSERVICE_CLASS"] = "CStatisticWS";
$arParams["WEBSERVICE_MODULE"] = "";

$APPLICATION->IncludeComponent(
	"bitrix:webservice.server",
	"",
	$arParams
);

die();
?>