0byt3m1n1
Path:
/
data
/
applications
/
aps
/
b2evolution
/
4.1.5b-1
/
standard
/
htdocs
/
inc
/
sessions
/
model
/
[
Home
]
File: _hitlog.funcs.php
<?php /** * This file implements functions for logging of hits and extracting stats. * * NOTE: the refererList() and stats_* functions are not fully functional ATM. I'll transform them into the Hitlog object during the next days. blueyed. * * This file is part of the evoCore framework - {@link http://evocore.net/} * See also {@link http://sourceforge.net/projects/evocms/}. * * @copyright (c)2003-2011 by Francois Planque - {@link http://fplanque.com/} * Parts of this file are copyright (c)2004-2006 by Daniel HAHLER - {@link http://thequod.de/contact}. * * {@internal License choice * - If you have received this file as part of a package, please find the license.txt file in * the same folder or the closest folder above for complete license terms. * - If you have received this file individually (e-g: from http://evocms.cvs.sourceforge.net/) * then you must choose one of the following licenses before using the file: * - GNU General Public License 2 (GPL) - http://www.opensource.org/licenses/gpl-license.php * - Mozilla Public License 1.1 (MPL) - http://www.opensource.org/licenses/mozilla1.1.php * }} * * {@internal Open Source relicensing agreement: * Daniel HAHLER grants Francois PLANQUE the right to license * Daniel HAHLER's contributions to this file and the b2evolution project * under any OSI approved OSS license (http://www.opensource.org/licenses/). * }} * * {@internal Origin: * This file was inspired by N C Young's Referer Script released in * the public domain on 07/19/2002. {@link http://ncyoung.com/entry/57}. * See also {@link http://ncyoung.com/demo/referer/}. * }} * * @package evocore * * {@internal Below is a list of authors who have contributed to design/coding of this file: }} * @author N C Young (nathan@ncyoung.com). * @author blueyed: Daniel HAHLER. * @author fplanque: Francois PLANQUE. * @author vegarg: Vegar BERG GULDAL. * * @version $Id: _hitlog.funcs.php 9 2011-10-24 22:32:00Z fplanque $ */ if( !defined('EVO_MAIN_INIT') ) die( 'Please, do not access this page directly.' ); /** * @todo Transform to make this a stub for {@link $Hitlist} * * Extract stats */ function refererList( $howMany = 5, $visitURL = '', $disp_blog = 0, $disp_uri = 0, $type = "'referer'", // was: 'referer' normal refer, 'invalid', 'badchar', 'blacklist', 'rss', 'robot', 'search' // new: 'search', 'blacklist', 'referer', 'direct', ('spam' but spam is not logged) $groupby = '', // dom_name $blog_ID = '', $get_total_hits = false, // Get total number of hits (needed for percentages) $get_user_agent = false ) // Get the user agent { global $DB, $res_stats, $stats_total_hits, $ReqURI; if( strpos( $type, "'" ) !== 0 ) { // no quote at position 0 $type = "'".$type."'"; } //if no visitURL, will show links to current page. //if url given, will show links to that page. //if url="global" will show links to all pages if (!$visitURL) { $visitURL = $ReqURI; } if( $groupby == '' ) { // No grouping: $sql = 'SELECT hit_ID, UNIX_TIMESTAMP(hit_datetime) AS hit_datetime, hit_referer, dom_name'; } else { // group by if( $groupby == 'baseDomain' ) { // compatibility HACK! $groupby = 'dom_name'; } $sql = 'SELECT COUNT(*) AS totalHits, hit_referer, dom_name'; } if( $disp_blog ) { $sql .= ', hit_blog_ID'; } if( $disp_uri ) { $sql .= ', hit_uri'; } if( $get_user_agent ) { $sql .= ', agnt_signature'; } $sql_from_where = " FROM T_hitlog LEFT JOIN T_basedomains ON dom_ID = hit_referer_dom_ID WHERE hit_referer_type IN (".$type.") AND hit_agent_type = 'browser'"; if( !empty($blog_ID) ) { $sql_from_where .= " AND hit_blog_ID = '".$blog_ID."'"; } if ( $visitURL != 'global' ) { $sql_from_where .= " AND hit_uri = '".$DB->escape($visitURL, 0, 250)."'"; } $sql .= $sql_from_where; if( $groupby == '' ) { // No grouping: $sql .= ' ORDER BY hit_ID DESC'; } else { // group by $sql .= " GROUP BY ".$groupby." ORDER BY totalHits DESC"; } $sql .= ' LIMIT '.$howMany; $res_stats = $DB->get_results( $sql, ARRAY_A ); if( $get_total_hits ) { // we need to get total hits $sql = 'SELECT COUNT(*) '.$sql_from_where; $stats_total_hits = $DB->get_var( $sql ); } else { // we're not getting total hits $stats_total_hits = 1; // just in case some tries a percentage anyway (avoid div by 0) } } /* * stats_hit_ID(-) */ function stats_hit_ID() { global $row_stats; echo $row_stats['visitID']; } /* * stats_hit_remote_addr(-) */ function stats_hit_remote_addr() { global $row_stats; echo $row_stats['hit_remote_addr']; } /* * stats_time(-) */ function stats_time( $format = '' ) { global $row_stats; if( $format == '' ) $format = locale_datefmt().' '.locale_timefmt(); echo date_i18n( $format, $row_stats['hit_datetime'] ); } /* * stats_total_hit_count(-) */ function stats_total_hit_count() { global $stats_total_hits; echo $stats_total_hits; } /* * stats_hit_count(-) */ function stats_hit_count( $disp = true ) { global $row_stats; if( $disp ) echo $row_stats['totalHits']; else return $row_stats['totalHits']; } /* * stats_hit_percent(-) */ function stats_hit_percent( $decimals = 1, $dec_point = '.' ) { global $row_stats, $stats_total_hits; $percent = $row_stats['totalHits'] * 100 / $stats_total_hits; echo number_format( $percent, $decimals, $dec_point, '' ).' %'; } /* * stats_blog_ID(-) */ function stats_blog_ID() { global $row_stats; echo $row_stats['hit_blog_ID']; } /* * stats_blog_name(-) */ function stats_blog_name() { global $row_stats; $BlogCache = & get_BlogCache(); $Blog = & $BlogCache->get_by_ID($row_stats['hit_blog_ID']); $Blog->disp('name'); } /* * stats_referer(-) */ function stats_referer( $before='', $after='', $disp_ref = true ) { global $row_stats; $ref = trim($row_stats['hit_referer']); if( strlen($ref) > 0 ) { echo $before; if( $disp_ref ) echo htmlentities( $ref ); echo $after; } } /* * stats_basedomain(-) */ function stats_basedomain( $disp = true ) { global $row_stats; if( $disp ) echo htmlentities( $row_stats['dom_name'] ); else return $row_stats['dom_name']; } /** * Displays keywords used for search leading to this page */ function stats_search_keywords( $keyphrase, $length = 45 ) { global $evo_charset; if( empty( $keyphrase ) ) { return '<span class="note">['.T_('n.a.').']</span>'; } // Save original string $keyphrase_orig = $keyphrase; $keyphrase = strmaxlen($keyphrase, $length, '...', 'raw'); // Convert keyword encoding, some charsets are supported only in PHP 4.3.2 and later. // This fixes encoding problem for Cyrillic keywords // See http://forums.b2evolution.net/viewtopic.php?t=17431 $keyphrase = htmlentities( $keyphrase, ENT_COMPAT, $evo_charset ); return '<span title="'.format_to_output( $keyphrase_orig, 'htmlattr' ).'">'.$keyphrase.'</span>'; } /* * $Log: _hitlog.funcs.php,v $ */ ?>