CStatistics::BlockVisitorActivity: метод Битрикс



IsAdmin ())
return false ;
if( defined ( "STATISTIC_SKIP_ACTIVITY_CHECK" ))
return false ;
if( COption :: GetOptionString ( "statistic" , "DEFENCE_ON" )== "Y" )
<
$_SESSION [ "SESS_SEARCHER_CHECK_ACTIVITY" ] = ( $_SESSION [ "SESS_SEARCHER_CHECK_ACTIVITY" ]== "N" ) ? "N" : "Y" ;
// если это не поисковик или поисковик, но с установленным флагом "проверять лимит активности"
if (
intval ( $_SESSION [ "SESS_SEARCHER_ID" ]) 0 )
<
// если лимит активности уже превышался то
if ( strlen ( $_SESSION [ "SESS_GRABBER_STOP_TIME" ])> 0 )
<
// если время задержки еще не истекло то
if (( time ()- $_SESSION [ "SESS_GRABBER_STOP_TIME" ]) $STACK_TIME && count ( $_SESSION [ "SESS_GRABBER_DEFENCE_STACK" ])> 0 )
<
$first_element = array_shift ( $_SESSION [ "SESS_GRABBER_DEFENCE_STACK" ]);
$current_stack_length = $stmp - $first_element ;
>
$STACK_HITS = count ( $_SESSION [ "SESS_GRABBER_DEFENCE_STACK" ]);
// проверим стэк на превышение максимального кол-ва хитов
if ( intval ( $STACK_HITS )> $MAX_STACK_HITS )
<
// инициализируем превышение активности
$stmp = time ();
$_SESSION [ "SESS_GRABBER_STOP_TIME" ] = $stmp ;

if( COption :: GetOptionString ( "statistic" , "DEFENCE_LOG" ) === "Y" )
CEventLog :: Log ( "WARNING" , "STAT_ACTIVITY_LIMIT" , "statistic" , "" , GetMessage ( "STAT_DEFENCE_LOG_MESSAGE" , array(
"#ACTIVITY_TIME_LIMIT#" => intval ( $STACK_TIME ),
"#ACTIVITY_HITS#" => intval ( $STACK_HITS ),
"#ACTIVITY_EXCEEDING#" => ( intval ( $STACK_HITS ) - intval ( $MAX_STACK_HITS )),
)));

// если в этой сессии письмо еще не отсылали то
if ( $_SESSION [ "ACTIVITY_EXCEEDING_NOTIFIED" ]!= "Y" )
<
if ( defined ( "SITE_ID" ) && strlen ( SITE_ID )> 0 )
<
$rsSite = CSite :: GetByID ( SITE_ID );
$arSite = $rsSite -> Fetch ();
$site_id = SITE_ID ;
>
else
<
$rsSite = CSite :: GetDefList ();
$arSite = $rsSite -> Fetch ();
$site_id = $arSite [ "ID" ];
>

$SESSION_LINK = intval ( $_SESSION [ "SESS_SESSION_ID" ])> 0 ? "/bitrix/admin/session_list.php?lang=" . $arSite [ "LANGUAGE_ID" ]. "&find_id=" . $_SESSION [ "SESS_SESSION_ID" ]. "&find_id_exact_match=Y&set_filter=Y" : "" ;
$VISITOR_LINK = intval ( $_SESSION [ "SESS_GUEST_ID" ])> 0 ? "/bitrix/admin/guest_list.php?lang=" . $arSite [ "LANGUAGE_ID" ]. "&find_id=" . $_SESSION [ "SESS_GUEST_ID" ]. "&find_id_exact_match=Y&set_filter=Y" : "" ;

$SEARCHER_LINK = intval ( $_SESSION [ "SESS_SEARCHER_ID" ])> 0 ? "/bitrix/admin/hit_searcher_list.php?lang=" . $arSite [ "LANGUAGE_ID" ]. "&find_searcher_id=" . $_SESSION [ "SESS_SEARCHER_ID" ]. "&set_filter=Y" : "" ;

$arEventFields = array(
"ACTIVITY_TIME_LIMIT" => intval ( $STACK_TIME ),
"ACTIVITY_HITS" => intval ( $STACK_HITS ),
"ACTIVITY_HITS_LIMIT" => intval ( $MAX_STACK_HITS ),
"ACTIVITY_EXCEEDING" => ( intval ( $STACK_HITS ) - intval ( $MAX_STACK_HITS )),
"CURRENT_TIME" => GetTime ( $stmp , "FULL" , $arSite [ "ID" ]),
"DELAY_TIME" => $DEFENCE_DELAY ,
"USER_AGENT" => $_SERVER [ "HTTP_USER_AGENT" ],
"SESSION_ID" => $_SESSION [ "SESS_SESSION_ID" ],
"SESSION_LINK" => $SESSION_LINK ,
"SERACHER_ID" => $_SESSION [ "SESS_SEARCHER_ID" ],
"SEARCHER_NAME" => $_SESSION [ "SESS_SEARCHER_NAME" ],
"SEARCHER_LINK" => $SEARCHER_LINK ,
"VISITOR_ID" => $_SESSION [ "SESS_GUEST_ID" ],
"VISITOR_LINK" => $VISITOR_LINK ,
"STOPLIST_LINK" => $STOPLIST_LINK ,
"EMAIL_TO" => COption :: GetOptionString ( "main" , "email_from" , "" ),
);

CEvent :: Send ( "STATISTIC_ACTIVITY_EXCEEDING" , $site_id , $arEventFields );

$_SESSION [ "ACTIVITY_EXCEEDING_NOTIFIED" ] = "Y" ;
>
>
>
>
>
return false ;
>