예제 #1
0
 static function GetUsersPropertiesArray($arUserIDs = array(), $arGuestIDs = array())
 {
     $arGuestUserIDs = array();
     $arResUsers = array();
     $arResGuests = array();
     $siteNameFormat = CSite::GetNameFormat();
     $isActive = CModule::IncludeModule("statistic");
     $arUserIDs = array_map(intval, $arUserIDs);
     if (count($arGuestIDs) > 0) {
         $arGuestIDsU = array_unique($arGuestIDs);
         $arGuestIDsU = array_map(intval, $arGuestIDsU);
         $arGuestIDs = array();
         if ($isActive) {
             $strGuests = implode("|", $arGuestIDsU);
             $f = "ID";
             $o = "asc";
             $isf = null;
             $rs = CGuest::GetList($f, $o, array("ID" => $strGuests), $isf);
             while ($ar = $rs->Fetch()) {
                 $arGuestUserIDs[] = intval($ar["LAST_USER_ID"]);
                 $arGuestIDs[intval($ar["ID"])] = intval($ar["LAST_USER_ID"]);
             }
         } else {
             foreach ($arGuestIDs as $k => $v) {
                 $arGuestIDs[$v] = 0;
             }
         }
     }
     if (count($arUserIDs) > 0) {
         $arRespUserIDs = array_unique(array_merge($arUserIDs, $arGuestUserIDs));
         $strUsers = implode("|", $arRespUserIDs);
         $f = "ID";
         $o = "asc";
         $rs = CUser::GetList($f, $o, array("ID" => $strUsers), array("FIELDS" => array("NAME", "SECOND_NAME", "LAST_NAME", "LOGIN", "ID", "EMAIL")));
         while ($ar = $rs->Fetch()) {
             $arResUsers[intval($ar["ID"])] = $ar;
         }
     }
     foreach ($arUserIDs as $k => $v) {
         if (!isset($arResUsers[$v])) {
             $arResUsers[$v] = array("NAME" => GetMessage("SUP_UNKNOWN_USER"), "SECOND_NAME" => "", "LAST_NAME" => "", "LOGIN" => GetMessage("SUP_UNKNOWN_USER"), "ID" => $v, "EMAIL" => "");
         }
         $name = CUser::FormatName($siteNameFormat, $arResUsers[$v], true, true);
         $arResUsers[$v]["HTML_NAME"] = "[<a title=\"" . GetMessage("SUP_USER_PROFILE") . "\" href=\"/bitrix/admin/user_edit.php?lang=" . LANGUAGE_ID . "&ID=" . $v . "\">" . $v . "</a>] (" . htmlspecialcharsbx($arResUsers[$v]['LOGIN']) . ") " . $name;
         //" (".$str_OWNER_LOGIN.") ".$str_OWNER_NAME;
         $arResUsers[$v]["HTML_NAME_S"] = "[" . $v . "] " . $name;
     }
     foreach ($arGuestIDs as $k => $v) {
         if (isset($arResUsers[$v])) {
             $arResGuests[$k] = $arResUsers[$v];
             $arResGuests[$k]["UNKNOWN"] = false;
         } else {
             $arResGuests[$k] = array("NAME" => GetMessage("SUP_UNKNOWN_GUEST"), "SECOND_NAME" => "", "LAST_NAME" => "", "LOGIN" => GetMessage("SUP_UNKNOWN_GUEST"), "ID" => $v, "UNKNOWN" => true, "EMAIL" => "");
         }
         $name = CUser::FormatName($siteNameFormat, $arResGuests[$k], true, true);
         $arResGuests[$k]["HTML_NAME"] = "[<a title=\"" . GetMessage("SUP_USER_PROFILE") . "\" href=\"/bitrix/admin/user_edit.php?lang=" . LANGUAGE_ID . "&ID=" . $v . "\">" . $v . "</a>] " . $name . " [<a title='" . GetMessage("SUP_GUEST_ID") . "'  href='/bitrix/admin/guest_list.php?lang=" . LANG . "&find_id=" . $k . "&find_id_exact_match=Y&set_filter=Y'>" . $k . "</a>]";
         $arResUsers[$v]["HTML_NAME_S"] = "[" . $v . "] " . $name . " [" . $k . "]";
     }
     return array("arUsers" => $arResUsers, "arGuests" => $arResGuests);
 }
예제 #2
0
<?php

require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php";
require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/statistic/prolog.php";
$STAT_RIGHT = $APPLICATION->GetGroupRight("statistic");
if ($STAT_RIGHT == "D") {
    $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
}
IncludeModuleLangFile(__FILE__);
$ID = intval($ID);
$guest = CGuest::GetByID($ID);
ClearVars("f_");
$APPLICATION->SetTitle(GetMessage("STAT_TITLE"));
require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_popup_admin.php";
?>
<table class="edit-table" cellspacing="0" cellpadding="0" border="0"><tr><td>
<table cellspacing="0" cellpadding="0" border="0" class="internal">
	<?php 
if ($arGuest = $guest->ExtractFields("f_")) {
    ?>
	<tr>
		<td valign="top" nowrap>ID:</td>
		<td valign="top" width="100%">&nbsp;<span title="<?php 
    echo $f_ID == $_SESSION["SESS_GUEST_ID"] ? GetMessage("STAT_CURRENT_GUEST") : "";
    ?>
"><span class="<?php 
    echo $f_ID == $_SESSION["SESS_GUEST_ID"] ? "stat_attention" : "";
    ?>
"><?php 
    echo $f_ID;
    ?>
예제 #3
0
	public static function Set_Guest()
	{
		$err_mess = "File: ".__FILE__."<br>Line: ";
		stat_session_register("SESS_GUEST_ID");			// ID гостя
		stat_session_register("SESS_GUEST_NEW");		// флаг "новый гость"
		stat_session_register("SESS_LAST_USER_ID");		// под кем гость был авторизован в последний раз
		stat_session_register("SESS_LAST_ADV_ID");		// по какой рекламной кампании был в последний раз
		stat_session_register("SESS_GUEST_FAVORITES");	// флаг добавлял ли гость сайт в фавориты
		stat_session_register("SESS_LAST");				// Y - гость сегодня уже заходил; N - еще не заходил

		global $USER, $APPLICATION;
		$DB = CDatabase::GetModuleConnection('statistic');
		$last_referer1 = "";
		$last_referer2 = "";

		if (defined("ADMIN_SECTION") && ADMIN_SECTION===true) $sql_site = "null";
		elseif (defined("SITE_ID")) $sql_site = "'".$DB->ForSql(SITE_ID,2)."'";
		else $sql_site = "null";

		$ERROR_404 = (defined("ERROR_404") && ERROR_404=="Y") ? "Y" : "N";
		$REPAIR_COOKIE_GUEST = "N";
		if (!isset($_SESSION["SESS_GUEST_NEW"])) $_SESSION["SESS_GUEST_NEW"] = "N";
		$_SESSION["SESS_GUEST_ID"] = intval($_SESSION["SESS_GUEST_ID"]);

		$COOKIE_GUEST_ID = intval($APPLICATION->get_cookie("GUEST_ID"));
		if($COOKIE_GUEST_ID==0) $COOKIE_GUEST_ID = intval($_SESSION["SESS_GUEST_ID"]);

		// если сессия только открылась
		if (intval($_SESSION["SESS_SESSION_ID"])<=0)
		{
			// выбираем из базы параметры гостя
			$q = CGuest::GetLastByID($COOKIE_GUEST_ID);
			// если ничего не выбрали то
			if (!($qr=$q->Fetch()))
			{
				// считаем гостя новым
				$_SESSION["SESS_GUEST_ID"] = 0;
				$_SESSION["SESS_GUEST_NEW"] = "Y";
				$_SESSION["SESS_GUEST_FAVORITES"] = "N";
				// если у него в cookie хранится GUEST_ID то
				if ($COOKIE_GUEST_ID>0)
				{
					$_SESSION["SESS_GUEST_NEW"] = "N";
					// получаем дату последнего посещения сайта данным гостем
					// если формат корректный то
					if ($LAST_VISIT = MkDateTime($GLOBALS["APPLICATION"]->get_cookie("LAST_VISIT"),"d.m.Y H:i:s"))
					{
						// получаем дату последней инсталляции таблиц модуля
						$DATE_INSTALL = COption::GetOptionString("main", "INSTALL_STATISTIC_TABLES", "NOT_FOUND");
						if ($DATE_INSTALL=="NOT_FOUND")
						{
							$DATE_INSTALL = date("d.m.Y H:i:s",time());
							COption::SetOptionString("main", "INSTALL_STATISTIC_TABLES", $DATE_INSTALL, "Installation date of Statistics module tables");
						}
						if ($DATE_INSTALL = MkDateTime($DATE_INSTALL,"d.m.Y H:i:s"))
						{
							// если таблицы были инсталлированы после последнего посещения сайта то
							if ($DATE_INSTALL>$LAST_VISIT)
							{
								// посетитель считается новым т.к. он нигде не был учтен
								$_SESSION["SESS_GUEST_NEW"] = "Y";
							}
						}
					}
					// устанавливаем флаг того что мы восстанавливаем гостя
					$REPAIR_COOKIE_GUEST = "Y";
					// получаем идентификатор его последней рекламной кампании
					$COOKIE_ADV = $GLOBALS["APPLICATION"]->get_cookie("LAST_ADV");
				}
			}
			else // иначе если выбрали параметры гостя то
			{
				// то запоминаем их в сессии
				$_SESSION["SESS_GUEST_FAVORITES"] = $qr["FAVORITES"];
				$_SESSION["SESS_GUEST_FAVORITES"] = ($_SESSION["SESS_GUEST_FAVORITES"]=="Y") ? "Y" : "N";
				if (!isset($_SESSION["SESS_GUEST_NEW"])) $_SESSION["SESS_GUEST_NEW"] = "N";
				$_SESSION["SESS_GUEST_ID"] = intval($qr["ID"]);
				$_SESSION["SESS_LAST_ADV_ID"]=intval($qr["LAST_ADV_ID"]);
				$_SESSION["SESS_LAST_USER_ID"] = intval($qr["LAST_USER_ID"]);
				$_SESSION["SESS_LAST"] = $qr["LAST"];
				if ($_SESSION["SESS_LAST_ADV_ID"]>0)
				{
					$strSql = "SELECT REFERER1, REFERER2 FROM b_stat_adv WHERE ID=".$_SESSION["SESS_LAST_ADV_ID"];
					$w = $DB->Query($strSql, false, $err_mess.__LINE__);
					if ($wr = $w->Fetch())
					{
						$last_referer1 = $wr["REFERER1"];
						$last_referer2 = $wr["REFERER2"];
					}
				}
			}

		}
		// если есть необходимость то
		if ($_SESSION["SESS_GUEST_ID"]<=0)
		{
			// вставляем гостя в базу
			$arFields = Array(
				"FIRST_DATE"		=> $DB->GetNowFunction(),
				"FIRST_URL_FROM"	=> "'".$DB->ForSql($_SERVER["HTTP_REFERER"],2000)."'",
				"FIRST_URL_TO"		=> "'".$DB->ForSql(__GetFullRequestUri(),2000)."'",
				"FIRST_URL_TO_404"	=> "'".$DB->ForSql($ERROR_404)."'",
				"FIRST_SITE_ID"		=> $sql_site,
				"FIRST_ADV_ID"		=> intval($_SESSION["SESS_ADV_ID"])	,
				"FIRST_REFERER1"	=> "'".$DB->ForSql($_SESSION["referer1"],255)."'",
				"FIRST_REFERER2"	=> "'".$DB->ForSql($_SESSION["referer2"],255)."'",
				"FIRST_REFERER3"	=> "'".$DB->ForSql($_SESSION["referer3"],255)."'"
				);
			// если мы восстанавливаем гостя по данным записаным в его cookie то
			if ($REPAIR_COOKIE_GUEST=="Y")
			{
				// если гость не считается новым то добавим ему одну сессию
				if ($_SESSION["SESS_GUEST_NEW"]=="N") $arFields["SESSIONS"] = 1;
				// если у него в cookie была рекламная кампания то
				$COOKIE_ADV = intval($COOKIE_ADV);
				if ($COOKIE_ADV>0)
				{
					// проверяем есть ли такая кампания в базе
					$strSql = "SELECT REFERER1, REFERER2 FROM b_stat_adv WHERE ID='".$COOKIE_ADV."'";
					$w = $DB->Query($strSql, false, $err_mess.__LINE__);
					// если в базе есть такая рекламная кампания то
					if ($wr = $w->Fetch())
					{
						// считаем что гость вернулся по данной рекламной кампании
						$_SESSION["SESS_LAST_ADV_ID"] = $COOKIE_ADV;
						// если последний вход записанный в cookie
						// не был прямым входом по рекламной кампании то
						$arFields["FIRST_ADV_ID"] = $COOKIE_ADV;
						$arFields["FIRST_REFERER1"]	= "'".$DB->ForSql($wr["REFERER1"],255)."'";
						$arFields["FIRST_REFERER2"]	= "'".$DB->ForSql($wr["REFERER2"],255)."'";
						$arFields["LAST_ADV_ID"] = $COOKIE_ADV;
						$arFields["LAST_ADV_BACK"] = "'Y'";
						$arFields["LAST_REFERER1"] = "'".$DB->ForSql($wr["REFERER1"],255)."'";
						$arFields["LAST_REFERER2"] = "'".$DB->ForSql($wr["REFERER2"],255)."'";
						$last_referer1 = $wr["REFERER1"];
						$last_referer2 = $wr["REFERER2"];
					}
				}
			}
			$_SESSION["SESS_GUEST_ID"] = $DB->Insert("b_stat_guest",$arFields, $err_mess.__LINE__);
			if ($ERROR_404=="N")
			{
				CStatistics::Set404("b_stat_guest", "ID = ".intval($_SESSION["SESS_GUEST_ID"]), array("FIRST_URL_TO_404" => "Y"));
			}
		}

		// если гость авторизовался то
		if (is_object($USER) && intval($USER->GetID())>0)
		{
			// запоминаем кто он
			$_SESSION["SESS_LAST_USER_ID"] = intval($USER->GetID());
		}
		if (intval($_SESSION["SESS_LAST_USER_ID"])<=0) $_SESSION["SESS_LAST_USER_ID"] = "";


		if ($_SESSION["SESS_GUEST_ID"]>0)
		{
			// сохраним ID посетителя в куках
			$GLOBALS["APPLICATION"]->set_cookie("GUEST_ID", $_SESSION["SESS_GUEST_ID"]);
		}
		// сохраним в cookie дату последнего посещения данным гостем сайта
		$GLOBALS["APPLICATION"]->set_cookie("LAST_VISIT", date("d.m.Y H:i:s",time()));

		return array(
			"last_referer1" => $last_referer1,
			"last_referer2" => $last_referer2,
		);
	}
예제 #4
0
InitBVar($find_referer12_exact_match);
InitBVar($find_referer3_exact_match);
InitBVar($find_ip_exact_match);
InitBVar($find_lang_exact_match);
InitBVar($find_country_exact_match);
InitBVar($find_region_exact_match);
InitBVar($find_city_exact_match);
InitBVar($find_user_exact_match);
if (CheckFilter()) {
    $arFilter = array("ID" => $find_id, "REGISTERED" => $find_registered, "USER" => $find_user, "FIRST_DATE1" => $find_first_date1, "FIRST_DATE2" => $find_first_date2, "LAST_DATE1" => $find_last_date1, "LAST_DATE2" => $find_last_date2, "PERIOD_DATE1" => $find_period_date1, "PERIOD_DATE2" => $find_period_date2, "SITE_ID" => $find_site_id, "URL" => $find_url, "URL_404" => $find_url_404, "USER_AGENT" => $find_user_agent, "ADV" => $find_adv, "ADV_ID" => $find_adv_id, "REFERER1" => $find_referer1, "REFERER2" => $find_referer2, "REFERER3" => $find_referer3, "EVENTS1" => $find_events1, "EVENTS2" => $find_events2, "SESS1" => $find_sess1, "SESS2" => $find_sess2, "HITS1" => $find_hits1, "HITS2" => $find_hits2, "IP" => $find_ip, "COUNTRY" => $find_country, "COUNTRY_ID" => $find_country_id, "REGION" => $find_region, "CITY" => $find_city, "CITY_ID" => $find_city_id, "LANG" => $find_lang, "ID_EXACT_MATCH" => $find_id_exact_match, "URL_EXACT_MATCH" => $find_url_exact_match, "USER_AGENT_EXACT_MATCH" => $find_user_agent_exact_match, "ADV_ID_EXACT_MATCH" => $find_adv_id_exact_match, "REFERER1_EXACT_MATCH" => $find_referer12_exact_match, "REFERER2_EXACT_MATCH" => $find_referer12_exact_match, "REFERER3_EXACT_MATCH" => $find_referer3_exact_match, "IP_EXACT_MATCH" => $find_ip_exact_match, "LANG_EXACT_MATCH" => $find_lang_exact_match, "COUNTRY_EXACT_MATCH" => $find_country_exact_match, "COUNTRY_ID_EXACT_MATCH" => $find_country_exact_match, "REGION_EXACT_MATCH" => $find_region_exact_match, "CITY_EXACT_MATCH" => $find_city_exact_match, "CITY_ID_EXACT_MATCH" => $find_city_exact_match, "USER_EXACT_MATCH" => $find_user_exact_match);
} else {
    if ($e = $APPLICATION->GetException()) {
        $GLOBALS["lAdmin"]->AddFilterError(GetMessage("STAT_FILTER_ERROR") . ": " . $e->GetString());
    }
}
$rsData = CGuest::GetList($by, $order, $arFilter, $is_filtered);
$rsData = new CAdminResult($rsData, $sTableID);
$rsData->NavStart();
$lAdmin->NavText($rsData->GetNavPrint(GetMessage("STAT_GUEST_PAGES")));
$arHeaders = array();
$arHeaders[] = array("id" => "ID", "content" => "ID", "sort" => "s_id", "default" => true);
$arHeaders[] = array("id" => "LAST_USER_ID", "content" => GetMessage("STAT_USER_S"), "sort" => "s_last_user_id", "default" => true);
$arHeaders[] = array("id" => "SESSIONS", "content" => GetMessage("STAT_SESSIONS_S"), "sort" => "s_sessions", "default" => true, "align" => "right");
$arHeaders[] = array("id" => "C_EVENTS", "content" => GetMessage("STAT_EVENTS_S"), "sort" => "s_events", "default" => true, "align" => "right");
$arHeaders[] = array("id" => "HITS", "content" => GetMessage("STAT_HITS_S"), "sort" => "s_hits", "default" => true, "align" => "right");
$arHeaders[] = array("id" => "FIRST_DATE", "content" => GetMessage("STAT_FIRST_ENTER"), "sort" => "s_first_date", "default" => true);
$arHeaders[] = array("id" => "LAST_DATE", "content" => GetMessage("STAT_LAST_ENTER"), "sort" => "s_last_date", "default" => true);
$arHeaders[] = array("id" => "FIRST_URL_FROM", "content" => GetMessage("STAT_URL_FROM"), "sort" => "s_first_url_from", "default" => false);
$arHeaders[] = array("id" => "FIRST_URL_TO", "content" => GetMessage("STAT_URL_TO"), "sort" => "", "default" => false);
$arHeaders[] = array("id" => "LAST_URL_LAST", "content" => GetMessage("STAT_LASTPAGE_XLS"), "sort" => "s_last_url_last", "default" => false);
$arHeaders[] = array("id" => "FIRST_ADV_ID", "content" => GetMessage("STAT_FIRST_ADV"), "sort" => "s_first_adv_id", "default" => false);