[ Index ]

PHP Cross Reference of Textpattern 4.0.8

title

Body

[close]

/textpattern/include/ -> txp_log.php (source)

   1  <?php
   2  
   3  /*
   4      This is Textpattern
   5  
   6      Copyright 2005 by Dean Allen
   7      www.textpattern.com
   8      All rights reserved
   9  
  10      Use of this software indicates acceptance of
  11      the Textpattern license agreement
  12  
  13  $HeadURL: https://textpattern.googlecode.com/svn/releases/4.0.8/source/textpattern/include/txp_log.php $
  14  $LastChangedRevision: 3003 $
  15  
  16  */
  17      if (!defined('txpinterface'))
  18      {
  19          die('txpinterface is undefined.');
  20      }
  21  
  22      if ($event == 'log')
  23      {
  24          require_privs('log');
  25  
  26          $available_steps = array(
  27              'log_change_pageby',
  28              'log_multi_edit'
  29          );
  30  
  31          if (!$step or !in_array($step, $available_steps))
  32          {
  33              log_list();
  34          }
  35  
  36          else
  37          {
  38              $step();
  39          }
  40      }
  41  
  42  
  43  //-------------------------------------------------------------
  44  
  45  	function log_list($message = '')
  46      {
  47          global $log_list_pageby, $expire_logs_after;
  48  
  49          pagetop(gTxt('visitor_logs'), $message);
  50  
  51          extract(gpsa(array('page', 'sort', 'dir', 'crit', 'search_method')));
  52  
  53          $expire_logs_after = assert_int($expire_logs_after);
  54  
  55          safe_delete('txp_log', "time < date_sub(now(), interval $expire_logs_after day)");
  56  
  57          $dir = ($dir == 'asc') ? 'asc' : 'desc';
  58  
  59          switch ($sort)
  60          {
  61              case 'ip':
  62                  $sort_sql = 'ip '.$dir;
  63              break;
  64  
  65              case 'host':
  66                  $sort_sql = 'host '.$dir;
  67              break;
  68  
  69              case 'page':
  70                  $sort_sql = 'page '.$dir;
  71              break;
  72  
  73              case 'refer':
  74                  $sort_sql = 'refer '.$dir;
  75              break;
  76  
  77              case 'method':
  78                  $sort_sql = 'method '.$dir;
  79              break;
  80  
  81              case 'status':
  82                  $sort_sql = 'status '.$dir;
  83              break;
  84  
  85              default:
  86                  $sort = 'time';
  87                  $sort_sql = 'time '.$dir;
  88              break;
  89          }
  90  
  91          $switch_dir = ($dir == 'desc') ? 'asc' : 'desc';
  92  
  93          $criteria = 1;
  94  
  95          if ($search_method and $crit)
  96          {
  97              $crit_escaped = doSlash($crit);
  98  
  99              $critsql = array(
 100                  'ip'     => "ip like '%$crit_escaped%'",
 101                  'host'   => "host like '%$crit_escaped%'",
 102                  'page'   => "page like '%$crit_escaped%'",
 103                  'refer'  => "refer like '%$crit_escaped%'",
 104                  'method' => "method like '%$crit_escaped%'",
 105                  'status' => "status like '%$crit_escaped%'"
 106              );
 107  
 108              if (array_key_exists($search_method, $critsql))
 109              {
 110                  $criteria = $critsql[$search_method];
 111                  $limit = 500;
 112              }
 113  
 114              else
 115              {
 116                  $search_method = '';
 117                  $crit = '';
 118              }
 119          }
 120  
 121          else
 122          {
 123              $search_method = '';
 124              $crit = '';
 125          }
 126  
 127          $total = safe_count('txp_log', "$criteria");
 128  
 129          if ($total < 1)
 130          {
 131              if ($criteria != 1)
 132              {
 133                  echo n.log_search_form($crit, $search_method).
 134                      n.graf(gTxt('no_results_found'), ' class="indicator"');
 135              }
 136  
 137              else
 138              {
 139                  echo graf(gTxt('no_refers_recorded'), ' class="indicator"');
 140              }
 141  
 142              return;
 143          }
 144  
 145          $limit = max($log_list_pageby, 15);
 146  
 147          list($page, $offset, $numPages) = pager($total, $limit, $page);
 148  
 149          echo n.log_search_form($crit, $search_method);
 150  
 151          $rs = safe_rows_start('*, unix_timestamp(time) as uTime', 'txp_log',
 152              "$criteria order by $sort_sql limit $offset, $limit");
 153  
 154          if ($rs)
 155          {
 156              echo n.n.'<form action="index.php" method="post" name="longform" onsubmit="return verify(\''.gTxt('are_you_sure').'\')">'.
 157  
 158                  startTable('list','','','','90%').
 159  
 160                  n.tr(
 161                      n.column_head('time', 'time', 'log', true, $switch_dir, $crit, $search_method, ('time' == $sort) ? $dir : '').
 162                      column_head('IP', 'ip', 'log', true, $switch_dir, $crit, $search_method, (('ip' == $sort) ? "$dir " : '').'log_detail').
 163                      column_head('host', 'host', 'log', true, $switch_dir, $crit, $search_method, ('host' == $sort) ? $dir : '').
 164                      column_head('page', 'page', 'log', true, $switch_dir, $crit, $search_method, ('page' == $sort) ? $dir : '').
 165                      column_head('referrer', 'refer', 'log', true, $switch_dir, $crit, $search_method, ('refer' == $sort) ? $dir : '').
 166                      column_head('method', 'method', 'log', true, $switch_dir, $crit, $search_method, (('method' == $sort) ? "$dir " : '').'log_detail').
 167                      column_head('status', 'status', 'log', true, $switch_dir, $crit, $search_method, (('status' == $sort) ? "$dir " : '').'log_detail').
 168                      hCell()
 169                  );
 170  
 171              while ($a = nextRow($rs))
 172              {
 173                  extract($a, EXTR_PREFIX_ALL, 'log');
 174  
 175                  if ($log_refer)
 176                  {
 177                      $log_refer = 'http://'.$log_refer;
 178  
 179                      $log_refer = '<a href="'.htmlspecialchars($log_refer).'" target="_blank">'.htmlspecialchars(soft_wrap($log_refer, 30)).'</a>';
 180                  }
 181  
 182                  if ($log_page)
 183                  {
 184                      $log_anchor = preg_replace('/\/$/','',$log_page);
 185                      $log_anchor = soft_wrap(substr($log_anchor,1), 30);
 186  
 187                      $log_page = '<a href="'.htmlspecialchars($log_page).'" target="_blank">'.htmlspecialchars($log_anchor).'</a>';
 188  
 189                      if ($log_method == 'POST')
 190                      {
 191                          $log_page = '<strong>'.$log_page.'</strong>';
 192                      }
 193                  }
 194  
 195                  echo tr(
 196  
 197                      n.td(
 198                          gTime($log_uTime)
 199                      , 85).
 200  
 201                      td($log_ip, 20, 'log_detail').
 202  
 203                      td(soft_wrap($log_host, 30)).
 204  
 205                      td($log_page).
 206                      td($log_refer).
 207                      td(htmlspecialchars($log_method), 60, 'log_detail').
 208                      td($log_status, 60, 'log_detail').
 209  
 210                      td(
 211                          fInput('checkbox', 'selected[]', $log_id)
 212                      )
 213  
 214                  );
 215              }
 216  
 217              echo n.n.tr(
 218                  tda(
 219                      toggle_box('log_detail'),
 220                      ' colspan="2" style="text-align: left; border: none;"'
 221                  ).
 222                  tda(
 223                      select_buttons().
 224                      log_multiedit_form($page, $sort, $dir, $crit, $search_method)
 225                  , ' colspan="6" style="text-align: right; border: none;"')
 226              ).
 227  
 228              n.endTable().
 229              '</form>'.
 230  
 231              n.nav_form('log', $page, $numPages, $sort, $dir, $crit, $search_method).
 232  
 233              n.pageby_form('log', $log_list_pageby);
 234          }
 235      }
 236  
 237  //-------------------------------------------------------------
 238  
 239  	function log_search_form($crit, $method)
 240      {
 241          $methods =    array(
 242              'ip'     => gTxt('IP'),
 243              'host'     => gTxt('host'),
 244              'page'   => gTxt('page'),
 245              'refer'     => gTxt('referrer'),
 246              'method' => gTxt('method'),
 247              'status' => gTxt('status')
 248          );
 249  
 250          return search_form('log', 'log_list', $crit, $methods, $method, 'page');
 251      }
 252  
 253  //-------------------------------------------------------------
 254  
 255  	function log_change_pageby()
 256      {
 257          event_change_pageby('log');
 258          log_list();
 259      }
 260  
 261  // -------------------------------------------------------------
 262  
 263  	function log_multiedit_form($page, $sort, $dir, $crit, $search_method)
 264      {
 265          $methods = array(
 266              'delete' => gTxt('delete')
 267          );
 268  
 269          return event_multiedit_form('log', $methods, $page, $sort, $dir, $crit, $search_method);
 270      }
 271  
 272  // -------------------------------------------------------------
 273  
 274  	function log_multi_edit()
 275      {
 276          $deleted = event_multi_edit('txp_log', 'id');
 277  
 278          if ($deleted)
 279          {
 280              $message = gTxt('logs_deleted', array('{list}' => $deleted));
 281  
 282              return log_list($message);
 283          }
 284  
 285          return log_list();
 286      }
 287  
 288  ?>


Generated: Thu May 21 23:03:01 2009 Cross-referenced by PHPXref 0.7