[ Index ] |
PHP Cross Reference of Textpattern 4.0.8 |
[Summary view] [Print] [Text view]
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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu May 21 23:03:01 2009 | Cross-referenced by PHPXref 0.7 |