1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457
|
<?php
/**
* This displays the stats.
*
* b2evolution - {@link http://b2evolution.net/}
* Released under GNU GPL License - {@link http://b2evolution.net/about/license.html}
* @copyright (c)2003-2005 by Francois PLANQUE - {@link http://fplanque.net/}
*
* @package admin
*/
/**
* Includes:
*/
require_once( dirname(__FILE__).'/_header.php' );
$admin_tab = 'stats';
$admin_pagetitle = T_('View Stats for Blog:');
param( 'action', 'string' );
param( 'show', 'string', 'referers' );
require(dirname(__FILE__) . '/_menutop.php');
?>
<a href="b2stats.php?show=<?php echo $show ?>&blog=0" class="<?php echo ( 0 == $blog ) ? 'CurrentBlog' : 'OtherBlog' ?>"><?php echo T_('None') ?></a>
<?php
for( $curr_blog_ID=blog_list_start('stub');
$curr_blog_ID!=false;
$curr_blog_ID=blog_list_next('stub') )
{
?>
<a href="b2stats.php?show=<?php echo $show ?>&blog=<?php echo $curr_blog_ID ?>" class="<?php echo ( $curr_blog_ID == $blog ) ? 'CurrentBlog' : 'OtherBlog' ?>"><?php blog_list_iteminfo('shortname') ?></a>
<?php
}
require( dirname(__FILE__) . '/_menutop_end.php' );
// Check permission:
$current_User->check_perm( 'stats', 'view', true );
switch( $action )
{
case 'changetype':
// Change the type of a hit:
// Check permission:
$current_User->check_perm( 'stats', 'edit', true );
param( 'hit_ID', 'integer', true ); // Required!
param( 'hit_type', 'string', true ); // Required!
?>
<div class="panelinfo">
<p><?php printf( T_('Changing hit #%d type to: %s'), $hit_ID, $hit_type) ?></p>
<?php
hit_change_type( $hit_ID, $hit_type );
?>
</div>
<?php
break;
case 'delete':
// DELETE A HIT:
// Check permission:
$current_User->check_perm( 'stats', 'edit', true );
param( 'hit_ID', 'integer', true ); // Required!
?>
<div class="panelinfo">
<p><?php printf( T_('Deleting hit #%d...'), $hit_ID )?></p>
<?php
hit_delete( $hit_ID );
?>
</div>
<?php
break;
case 'prune':
// PRUNE hits for a certain date
// Check permission:
$current_User->check_perm( 'stats', 'edit', true );
param( 'date', 'integer', true ); // Required!
?>
<div class="panelinfo">
<p><?php printf( T_('Pruning hits for %s...'), date( locale_datefmt(), $date) ) ?></p>
<?php
hit_prune( $date );
?>
</div>
<?php
break;
}
?>
<ul class="hack">
<li><!-- Yes, this empty UL is needed! It's a DOUBLE hack for correct CSS display --></li>
</ul>
<div class="pt">
<div class="panelblocktabs">
<ul class="tabs">
<?php
if( $show == 'summary' )
echo '<li class="current">';
else
echo '<li>';
echo '<a href="b2stats.php?show=summary&blog=', $blog, '">', T_('Summary'), '</a></li>';
if( $show == 'referers' )
echo '<li class="current">';
else
echo '<li>';
echo '<a href="b2stats.php?show=referers&blog=', $blog, '">', T_('Referers'), '</a></li>';
if( $show == 'refsearches' )
echo '<li class="current">';
else
echo '<li>';
echo '<a href="b2stats.php?show=refsearches&blog=', $blog, '">', T_('Refering Searches'), '</a></li>';
if( $show == 'syndication' )
echo '<li class="current">';
else
echo '<li>';
echo '<a href="b2stats.php?show=syndication&blog=', $blog, '">', T_('Syndication'), '</a></li>';
if( $show == 'useragents' )
echo '<li class="current">';
else
echo '<li>';
echo '<a href="b2stats.php?show=useragents&blog=', $blog, '">', T_('User Agents'), '</a></li>';
if( $show == 'other' )
echo '<li class="current">';
else
echo '<li>';
echo '<a href="b2stats.php?show=other&blog=', $blog, '">', T_('Direct Accesses'), '</a></li>';
?>
</ul>
</div>
</div>
<div class="tabbedpanelblock">
<?php
switch( $show )
{
case 'summary':
?>
<h2><?php echo T_('Summary') ?>:</h2>
<?php
$sql = "SELECT COUNT(*)AS hits, hit_ignore, YEAR(visitTime) AS year, MONTH(visitTime) AS month,
DAYOFMONTH(visitTime) AS day
FROM $tablehitlog ";
if( $blog > 0 )
{
$sql .= " WHERE hit_blog_ID = $blog ";
}
$sql .= 'GROUP BY YEAR(visitTime), MONTH(visitTime), DAYOFMONTH(visitTime), hit_ignore
ORDER BY YEAR(visitTime) DESC, MONTH(visitTime) DESC, DAYOFMONTH(visitTime) DESC';
$res_hits = $DB->get_results( $sql, ARRAY_A );
$hits = array();
$hits['no'] = 0;
$hits['invalid'] = 0;
// $hits['badchar'] = 0; // Not used any longer
// $hits['blacklist'] = 0; // Not used any longer
$hits['rss'] = 0;
$hits['robot'] = 0;
$hits['search'] = 0;
$last_date = 0;
if( count($res_hits) )
{ ?>
<table class="grouped" cellspacing="0">
<tr>
<th class="firstcol"><?php echo T_('Date') ?></th>
<th><?php echo T_('Referers') // 'no' ?></th>
<th><?php echo T_('Refering Searches') ?></th>
<th><?php echo T_('Indexing Robots') ?></th>
<th><?php echo T_('Syndication') ?></th>
<th><?php echo T_('Direct Accesses') ?></th>
<th><?php echo T_('Total') ?></th>
</tr>
<?php
$count = 0;
foreach( $res_hits as $row_stats )
{
$this_date = mktime( 0, 0, 0, $row_stats['month'], $row_stats['day'], $row_stats['year'] );
if( $last_date == 0 ) $last_date = $this_date; // that'll be the first one
if( $last_date != $this_date )
{ // We just hit a new day, let's display the previous one:
?>
<tr <?php if( $count%2 == 1 ) echo 'class="odd"'; ?>>
<td class="firstcol"><?php if( $current_User->check_perm( 'spamblacklist', 'edit' ) )
{ ?>
<a href="b2stats.php?action=prune&date=<?php echo $last_date ?>&show=summary&blog=<?php echo $blog ?>" title="<?php echo T_('Prune this date!') ?>"><img src="img/xross.gif" width="13" height="13" class="middle" alt="<?php echo /* TRANS: Abbrev. for Prune (stats) */ T_('Prune') ?>" title="<?php echo T_('Prune hits for this date!') ?>" /></a>
<?php
}
echo date( locale_datefmt(), $last_date ) ?>
</td>
<td class="right"><?php echo $hits['no'] ?></td>
<td class="right"><?php echo $hits['search'] ?></td>
<td class="right"><?php echo $hits['robot'] ?></td>
<td class="right"><?php echo $hits['rss'] ?></td>
<td class="right"><?php echo $hits['invalid'] ?></td>
<td class="right"><?php echo array_sum($hits) ?></td>
</tr>
<?php
$hits['no'] = 0;
$hits['invalid'] = 0;
$hits['rss'] = 0;
$hits['robot'] = 0;
$hits['search'] = 0;
$last_date = $this_date; // that'll be the next one
$count ++;
}
$hits[$row_stats['hit_ignore']] = $row_stats['hits'];
}
if( $last_date != 0 )
{ // We had a day pending:
?>
<tr <?php if( $count%2 == 1 ) echo 'class="odd"'; ?>>
<td class="firstcol"><?php if( $current_User->check_perm( 'stats', 'edit' ) )
{ ?>
<a href="b2stats.php?action=prune&date=<?php echo $this_date ?>&show=summary&blog=<?php echo $blog ?>" title="<?php echo T_('Prune hits for this date!') ?>"><img src="img/xross.gif" width="13" height="13" class="middle" alt="<?php echo /* TRANS: Abbrev. for Prune (stats) */ T_('Prune') ?>" title="<?php echo T_('Prune hits for this date!') ?>" /></a>
<?php
}
echo date( locale_datefmt(), $this_date ) ?>
</td>
<td class="right"><?php echo $hits['no'] ?></td>
<td class="right"><?php echo $hits['search'] ?></td>
<td class="right"><?php echo $hits['robot'] ?></td>
<td class="right"><?php echo $hits['rss'] ?></td>
<td class="right"><?php echo $hits['invalid'] ?></td>
<td class="right"><?php echo array_sum($hits) ?></td>
</tr>
<?php } ?>
</table>
<?php
}
break;
case 'referers':
?>
<h2><?php echo T_('Last referers') ?>:</h2>
<p><?php echo T_('These are hits from external web pages refering to this blog') ?>.</p>
<?php refererList(40,'global',1,1,'no','',$blog);
if( count( $res_stats ) )
{ ?>
<table class="grouped" cellspacing="0">
<?php
$count = 0;
foreach( $res_stats as $row_stats ) { ?>
<tr <?php if( $count%2 == 1 ) echo 'class="odd"'; ?>>
<td class="firstcol"><?php stats_time() ?></td>
<td>
<?php if( $current_User->check_perm( 'stats', 'edit' ) )
{ ?>
<a href="b2stats.php?action=delete&hit_ID=<?php stats_hit_ID() ?>&show=referers&blog=<?php echo $blog ?>" title="<?php echo T_('Delete this hit!') ?>"><img src="img/xross.gif" width="13" height="13" class="middle" alt="<?php echo /* TRANS: Abbrev. for Delete (stats) */ T_('Del') ?>" title="<?php echo T_('Delete this hit!') ?>" /></a>
<a href="b2stats.php?action=changetype&hit_type=search&hit_ID=<?php stats_hit_ID() ?>&show=referers&blog=<?php echo $blog ?>" title="<?php echo T_('Log as a search instead') ?>"><img src="img/magnifier.png" width="14" height="13" class="middle" alt="<?php echo /* TRANS: Abbrev. for "move to searches" (stats) */ T_('->S') ?>" title="<?php echo T_('Log as a search instead') ?>" /></a>
<?php } ?>
<a href="<?php stats_referer() ?>"><?php stats_basedomain() ?></a>
</td>
<?php if( $current_User->check_perm( 'spamblacklist', 'edit' ) )
{ ?>
<td><a href="b2antispam.php?action=ban&keyword=<?php echo urlencode( stats_basedomain(false) ) ?>" title="<?php echo T_('Ban this domain!') ?>"><img src="img/noicon.gif" class="middle" alt="<?php echo /* TRANS: Abbrev. */ T_('Ban') ?>" title="<?php echo T_('Ban this domain!') ?>" /></a></td>
<?php } ?>
<td><?php stats_blog_name() ?></td>
<td><a href="<?php stats_req_URI() ?>"><?php stats_req_URI() ?></a></td>
</tr>
<?php
$count++;
} // End stat loop ?>
</table>
<?php } ?>
<h3><?php echo T_('Top referers') ?>:</h3>
<?php refererList(30,'global',0,0,"'no'",'baseDomain',$blog,true);
if( count( $res_stats ) )
{ ?>
<table class="grouped" cellspacing="0">
<?php
$count = 0;
foreach( $res_stats as $row_stats ) { ?>
<tr <?php if( $count%2 == 1 ) echo 'class="odd"'; ?>>
<td class="firstcol"><a href="<?php stats_referer() ?>"><?php stats_basedomain() ?></a></td>
<?php if( $current_User->check_perm( 'spamblacklist', 'edit' ) )
{ ?>
<td><a href="b2antispam.php?action=ban&keyword=<?php echo urlencode( stats_basedomain(false) ) ?>" title="<?php echo T_('Ban this domain!') ?>"><img src="img/noicon.gif" class="middle" alt="<?php echo /* TRANS: Abbrev. */ T_('Ban') ?>" title="<?php echo T_('Ban this domain!') ?>" /></a></td>
<?php } ?>
<td class="right"><?php stats_hit_count() ?></td>
<td class="right"><?php stats_hit_percent() ?></td>
</tr>
<?php
$count++;
} // End stat loop ?>
</table>
<?php } ?>
<p><?php echo T_('Total referers') ?>: <?php stats_total_hit_count() ?></p>
<?php
break;
case 'refsearches':
?>
<h2><?php echo T_('Last refering searches') ?>:</h2>
<p><?php echo T_('These are hits from people who came to this blog system through a search engine. (Search engines must be listed in /conf/_stats.php)') ?></p>
<?php refererList(20,'global',1,1,"'search'",'',$blog);
if( count( $res_stats ) )
{ ?>
<table class="grouped" cellspacing="0">
<?php
$count = 0;
foreach( $res_stats as $row_stats ) { ?>
<tr <?php if( $count%2 == 1 ) echo 'class="odd"'; ?>>
<td class="firstcol"><?php stats_time() ?></td>
<td>
<?php if( $current_User->check_perm( 'stats', 'edit' ) )
{ ?>
<a href="b2stats.php?action=delete&hit_ID=<?php stats_hit_ID() ?>&show=refsearches&blog=<?php echo $blog ?>" title="<?php echo T_('Delete this hit!') ?>"><img src="img/xross.gif" width="13" height="13" class="middle" alt="<?php echo /* TRANS: Abbrev. for Delete (stats) */ T_('Del') ?>" /></a>
<?php
}
stats_basedomain() ?></td>
<td><a href="<?php stats_referer() ?>"><?php stats_search_keywords() ?></a></td>
<td><?php stats_blog_name() ?></td>
<td><a href="<?php stats_req_URI() ?>"><?php stats_req_URI() ?></a></td>
</tr>
<?php
$count++;
} // End stat loop ?>
</table>
<?php } ?>
<h3><?php echo T_('Top refering search engines') ?>:</h3>
<?php refererList(20,'global',0,0,"'search'",'baseDomain',$blog,true);
if( count( $res_stats ) )
{ ?>
<table class="grouped" cellspacing="0">
<?php
$count = 0;
foreach( $res_stats as $row_stats ) { ?>
<tr <?php if( $count%2 == 1 ) echo 'class="odd"'; ?>>
<td class="firstcol"><a href="<?php stats_referer() ?>"><?php stats_basedomain() ?></a></td>
<td class="right"><?php stats_hit_count() ?></td>
<td class="right"><?php stats_hit_percent() ?></td>
</tr>
<?php
$count++;
} // End stat loop ?>
</table>
<?php } ?>
<h3><?php echo T_('Top Indexing Robots') ?>:</h3>
<p><?php echo T_('These are hits from automated robots like search engines\' indexing robots. (Robots must be listed in /conf/_stats.php)') ?></p>
<?php refererList(20,'global',0,0,"'robot'",'hit_user_agent',$blog,true,true);
if( count( $res_stats ) )
{ ?>
<table class="grouped" cellspacing="0">
<?php
$count = 0;
foreach( $res_stats as $row_stats ) { ?>
<tr>
<td class="firstcol"><?php stats_referer('<a href="', '">') ?><?php stats_user_agent( true ) ?><?php stats_referer('', '</a>', false) ?></td>
<td class="right"><?php stats_hit_count() ?></td>
<td class="right"><?php stats_hit_percent() ?></td>
</tr>
<?php
$count++;
} // End stat loop ?>
</table>
<?php
}
break;
case 'syndication':
?>
<h2><?php echo T_('Top Aggregators') ?>:</h2>
<p><?php echo T_('These are hits from RSS news aggregators. (Aggregators must be listed in /conf/_stats.php)') ?></p>
<?php refererList(40, 'global', 0, 0, "'rss'", 'hit_user_agent', $blog, true, true);
if( count( $res_stats ) )
{ ?>
<table class="grouped" cellspacing="0">
<?php
$count = 0;
foreach( $res_stats as $row_stats ) { ?>
<tr <?php if( $count%2 == 1 ) echo 'class="odd"'; ?>>
<td class="firstcol"><?php stats_user_agent( true ) ?></td>
<td class="right"><?php stats_hit_count() ?></td>
<td class="right"><?php stats_hit_percent() ?></td>
</tr>
<?php
$count++;
} // End stat loop ?>
</table>
<?php } ?>
<p><?php echo T_('Total RSS hits') ?>: <?php stats_total_hit_count() ?></p>
<?php
break;
case 'other':
?>
<h2><?php echo T_('Last direct accesses') ?>:</h2>
<p><?php echo T_('These are hits from people who came to this blog system by direct access (either by typing the URL directly, or using a bookmark. Invalid (too short) referers are also listed here.)') ?></p>
<?php refererList(10,'global',1,1,"'invalid'",'',$blog);
if( count( $res_stats ) )
{ ?>
<table class="grouped" cellspacing="0">
<?php
$count = 0;
foreach( $res_stats as $row_stats ) { ?>
<tr <?php if( $count%2 == 1 ) echo 'class="odd"'; ?>>
<td class="firstcol"><?php stats_time() ?></td>
<?php if( $current_User->check_perm( 'stats', 'edit' ) )
{ ?>
<td>
<a href="b2stats.php?action=delete&hit_ID=<?php stats_hit_ID() ?>&show=other&blog=<?php echo $blog ?>" title="<?php echo T_('Delete this hit!') ?>"><img src="img/xross.gif" width="13" height="13" class="middle" alt="<?php echo /* TRANS: Abbrev. for Delete (stats) */ T_('Del') ?>" /></a>
</td>
<?php } ?>
<td><?php stats_blog_name() ?></td>
<td><a href="<?php stats_req_URI() ?>"><?php stats_req_URI() ?></a></td>
</tr>
<?php
$count++;
} // End stat loop ?>
</table>
<?php
}
break;
case 'useragents':
?>
<h2><?php echo T_('Top User Agents') ?>:</h2>
<?php refererList(50,'global',0,0,"'no','invalid','badchar','blacklist','search'",'hit_user_agent',$blog,true,true);
if( count( $res_stats ) )
{ ?>
<table class="grouped" cellspacing="0">
<?php
$count = 0;
foreach( $res_stats as $row_stats ) { ?>
<tr <?php if( $count%2 == 1 ) echo 'class="odd"'; ?>>
<td class="firstcol"><?php stats_user_agent( false ) ?></td>
<td class="right"><?php stats_hit_count() ?></td>
<td class="right"><?php stats_hit_percent() ?></td>
</tr>
<?php
$count++;
} // End stat loop ?>
</table>
<?php
}
break;
}
?>
</div>
<?php
require( dirname(__FILE__).'/_footer.php' );
?>
|