Seditio Source
Root |
./othercms/b2evolution_7.2.3/inc/sessions/views/_stats_topips.view.php
<?php
/**
 * This file implements the UI view for the top IPs.
 *
 * This file is part of the evoCore framework - {@link http://evocore.net/}
 * See also {@link https://github.com/b2evolution/b2evolution}.
 *
 * @license GNU GPL v2 - {@link http://b2evolution.net/about/gnu-gpl-license}
 *
 * @copyright (c)2003-2020 by Francois Planque - {@link http://fplanque.com/}
 *
 * @package admin
 */
if( !defined('EVO_MAIN_INIT') ) die( 'Please, do not access this page directly.' );


/**
 * View funcs
 */
require_once dirname(__FILE__).'/_stats_view.funcs.php';

global
$UserSettings, $Plugins, $blog, $sec_ID;

$SQL = new SQL();
$SQL->SELECT( 'SQL_NO_CACHE hit_remote_addr, COUNT( hit_ID ) AS hit_count_by_IP' );
$SQL->FROM( 'T_hitlog' );
$SQL->GROUP_BY( 'hit_remote_addr' );
$SQL->ORDER_BY( 'hit_count_by_IP DESC' );

$count_SQL = new SQL();
$count_SQL->SELECT( 'SQL_NO_CACHE hit_ID' );
$count_SQL->FROM( 'T_hitlog' );
$count_SQL->GROUP_BY( 'hit_remote_addr' );

if( ! empty(
$sec_ID ) )
{    
// Filter by section:
   
$SQL->FROM_add( 'LEFT JOIN T_blogs ON hit_coll_ID = blog_ID' );
   
$SQL->WHERE_and( 'blog_sec_ID = '.$sec_ID );
   
$count_SQL->FROM_add( 'LEFT JOIN T_blogs ON hit_coll_ID = blog_ID' );
   
$count_SQL->WHERE_and( 'blog_sec_ID = '.$sec_ID );
}
if(
$blog > 0 )
{    
// Filter by collection:
   
$SQL->WHERE_and( 'hit_coll_ID = '.$blog );
   
$count_SQL->WHERE_and( 'hit_coll_ID = '.$blog );
}

$count_top_IPs = count( $DB->get_col( $count_SQL->get() ) );

$Results = new Results( $SQL->get(), 'topips_', ''/*an order is static in SQL query*/, $UserSettings->get( 'results_per_page' ), $count_top_IPs );

$Results->title = T_('Top IPs').get_manual_link( 'top-ips' );

// IP address
$Results->cols[] = array(
       
'th' => T_('IP'),
       
'td' => '%hit_ip_address_lookup( #hit_remote_addr# )%',
       
'th_class' => 'shrinkwrap',
       
'td_class' => 'nowrap'
   
);

// A count of the hits
$Results->cols[] = array(
       
'th' => T_('Hits'),
       
'td' => '$hit_count_by_IP$',
       
'td_class' => 'shrinkwrap'
   
);

// Reverse DNS
$Results->cols[] = array(
       
'th' => T_('Reverse DNS'),
       
'td_class' => 'nowrap',
       
'td' => '%gethostbyaddr( #hit_remote_addr# )%%evo_flush()%'
   
);

if( (
$Plugin = & $Plugins->get_by_code( 'evo_GeoIP' ) ) !== false )
{
// Country by GeoIP plugin
   
$Plugins->trigger_event( 'GetAdditionalColumnsTable', array(
           
'table'   => 'top_ips',
           
'column'  => 'hit_remote_addr',
           
'Results' => $Results,
           
'order'   => false
       
) );
}
else
{
// No country, Display help icon
   
$Results->cols[] = array(
           
'th' => T_('Country'),
           
'td' => '%get_manual_link( "geoip-plugin" )%',
           
'td_class' => 'shrinkwrap',
        );
}

// Status
$Results->cols[] = array(
       
'th' => T_('Status'),
       
'td' => '%hit_iprange_status_title( #hit_remote_addr# )%',
       
'th_class' => 'shrinkwrap',
       
'extra' => array ( 'style' => 'background-color: %hit_iprange_status_color( "#hit_remote_addr#" )%;', 'format_to_output' => false )
    );

// Display results:
$Results->display();
?>