analytic-snippet bugfix
[opensuse:news_o_o.git] / wp-content / plugins / wp-statpress / statpress.php
1 <?php
2 /*
3 Plugin Name: StatPress
4 Plugin URI: http://forum.irisco.it/forum.php?id=1
5 Description: Real time stats for your blog
6 Version: 1.3.2
7 Author: Daniele Lippi
8 Author URI: http://www.irisco.it
9 */
10
11 $_STATPRESS['version']='1.x';
12 $_STATPRESS['feedtype']='';
13
14 if ($_GET['statpress_action'] == 'exportnow') {
15         iriStatPressExportNow();
16 }
17
18 include ABSPATH.'wp-content/plugins/'.dirname(plugin_basename(__FILE__)).'/includes/charts.php';
19
20 function iri_add_pages() {
21         # Crea/aggiorna tabella se non esiste
22         global $wpdb;
23         $table_name = $wpdb->prefix . "statpress";
24         if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
25                 iri_StatPress_CreateTable();
26         }
27         # add submenu
28         $mincap=get_option('statpress_mincap');
29         if($mincap == '') {
30                 $mincap="level_8";
31         }
32 // ORIG   add_submenu_page('index.php', 'StatPress', 'StatPress', 8, 'statpress', 'iriStatPress');
33
34     add_menu_page('StatPress', 'StatPress', $mincap, __FILE__, 'iriStatPress');
35     add_submenu_page(__FILE__, __('Overview','statpress'), __('Overview','statpress'), $mincap, __FILE__, 'iriStatPress');
36     add_submenu_page(__FILE__, __('Details','statpress'), __('Details','statpress'), $mincap, __FILE__ . '&statpress_action=details', 'iriStatPress');
37     add_submenu_page(__FILE__, __('Spy','statpress'), __('Spy','statpress'), $mincap, __FILE__ . '&statpress_action=spy', 'iriStatPress');
38     add_submenu_page(__FILE__, __('Search','statpress'), __('Search','statpress'), $mincap, __FILE__ . '&statpress_action=search', 'iriStatPress');
39     add_submenu_page(__FILE__, __('Export','statpress'), __('Export','statpress'), $mincap, __FILE__ . '&statpress_action=export', 'iriStatPress');
40     add_submenu_page(__FILE__, __('Options','statpress'), __('Options','statpress'), $mincap, __FILE__ . '&statpress_action=options', 'iriStatPress');
41     add_submenu_page(__FILE__, __('StatPressUpdate','statpress'), __('StatPressUpdate','statpress'), $mincap, __FILE__ . '&statpress_action=up', 'iriStatPress');
42 //    add_submenu_page(__FILE__, __('Support','statpress'), __('Support','statpress'), $mincap, 'http://www.irisco.it/forums/forum.php?id=1');
43     add_submenu_page(__FILE__, __('Donate','statpress'), __('Donate','statpress'), $mincap, 'https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=daniele%2elippi%40gmail%2ecom&item_name=wp%2dstatpress&no_shipping=0&no_note=1&tax=0&currency_code=EUR&lc=IT&bn=PP%2dDonationsBF&charset=UTF%2d8');
44
45 }
46
47
48 function iriStatPress() {
49 ?>
50 <?php
51         if ($_GET['statpress_action'] == 'export') {
52                 iriStatPressExport();
53         } elseif ($_GET['statpress_action'] == 'up') {
54                 iriStatPressUpdate();
55         } elseif ($_GET['statpress_action'] == 'spy') {
56                 iriStatPressSpy();
57         } elseif ($_GET['statpress_action'] == 'search') {
58                 iriStatPressSearch();
59         } elseif ($_GET['statpress_action'] == 'details') {
60                 iriStatPressDetails();
61         } elseif ($_GET['statpress_action'] == 'options') {
62                 iriStatPressOptions();
63         } elseif(1) {
64                 iriStatPressMain();
65         }
66 }
67
68 function iriStatPressOptions() {
69         if($_POST['saveit'] == 'yes') {
70                 update_option('statpress_collectloggeduser', $_POST['statpress_collectloggeduser']);
71                 update_option('statpress_autodelete', $_POST['statpress_autodelete']);
72                 update_option('statpress_daysinoverviewgraph', $_POST['statpress_daysinoverviewgraph']);
73                 update_option('statpress_mincap', $_POST['statpress_mincap']);
74                 update_option('statpress_donotcollectspider', $_POST['statpress_donotcollectspider']);
75                 update_option('statpress_cryptip', $_POST['statpress_cryptip']);
76                 
77                 # update database too
78                 iri_StatPress_CreateTable();
79                 print "<br /><div class='updated'><p>".__('Saved','statpress')."!</p></div>";
80         } else {
81 ?>
82         <div class='wrap'><h2><?php _e('Options','statpress'); ?></h2>
83         <form method=post><table width=100%>
84 <?php
85         print "<tr><td><input type=checkbox name='statpress_collectloggeduser' value='checked' ".get_option('statpress_collectloggeduser')."> ".__('Collect data about logged users, too.','statpress')."</td></tr>";
86         print "<tr><td><input type=checkbox name='statpress_donotcollectspider' value='checked' ".get_option('statpress_donotcollectspider')."> ".__('Do not collect spiders visits','statpress')."</td></tr>";
87         print "<tr><td><input type=checkbox name='statpress_cryptip' value='checked' ".get_option('statpress_cryptip')."> ".__('Crypt IP addresses','statpress')."</td></tr>";
88
89 ?>
90         <tr><td><?php _e('Automatically delete visits older than','statpress'); ?>
91         <select name="statpress_autodelete">
92         <option value="" <?php if(get_option('statpress_autodelete') =='' ) print "selected"; ?>><?php _e('Never delete!','statpress'); ?></option>
93         <option value="1 month" <?php if(get_option('statpress_autodelete') == "1 month") print "selected"; ?>>1 <?php _e('month','statpress'); ?></option>
94         <option value="3 months" <?php if(get_option('statpress_autodelete') == "3 months") print "selected"; ?>>3 <?php _e('months','statpress'); ?></option>
95         <option value="6 months" <?php if(get_option('statpress_autodelete') == "6 months") print "selected"; ?>>6 <?php _e('months','statpress'); ?></option>
96         <option value="1 year" <?php if(get_option('statpress_autodelete') == "1 year") print "selected"; ?>>1 <?php _e('year','statpress'); ?></option>
97         </select></td></tr>
98
99         <tr><td><?php  _e('Days in Overview graph','statpress'); ?>
100         <select name="statpress_daysinoverviewgraph">
101         <option value="7" <?php if(get_option('statpress_daysinoverviewgraph') == 7) print "selected"; ?>>7</option>
102         <option value="10" <?php if(get_option('statpress_daysinoverviewgraph') == 10) print "selected"; ?>>10</option>
103         <option value="20" <?php if(get_option('statpress_daysinoverviewgraph') == 20) print "selected"; ?>>20</option>
104         <option value="30" <?php if(get_option('statpress_daysinoverviewgraph') == 30) print "selected"; ?>>30</option>
105         <option value="50" <?php if(get_option('statpress_daysinoverviewgraph') == 50) print "selected"; ?>>50</option>
106         </select></td></tr>
107
108         <tr><td><?php _e('Minimum capability to view stats','statpress'); ?>
109         <select name="statpress_mincap">
110 <?php iri_dropdown_caps(get_option('statpress_mincap')); ?>
111         </select> 
112         <a href="http://codex.wordpress.org/Roles_and_Capabilities" target="_blank"><?php _e("more info",'statpress'); ?></a>
113         </td></tr>
114         
115         <tr><td><br><input type=submit value="<?php _e('Save options','statpress'); ?>"></td></tr>
116         </tr>
117         </table>
118         <input type=hidden name=saveit value=yes>
119         <input type=hidden name=page value=statpress><input type=hidden name=statpress_action value=options>
120         </form>
121         </div>
122 <?php
123
124         } # chiude saveit
125 }
126
127
128 function iri_dropdown_caps( $default = false ) {
129         global $wp_roles;
130         $role = get_role('administrator');
131         foreach($role->capabilities as $cap => $grant) {
132                 print "<option ";
133                 if($default == $cap) { print "selected "; }
134                 print ">$cap</option>";
135         }
136 }
137
138
139 function iriStatPressExport() {
140 ?>
141         <div class='wrap'><h2><?php _e('Export stats to text file','statpress'); ?> (csv)</h2>
142         <form method=get><table>
143         <tr><td><?php _e('From','statpress'); ?></td><td><input type=text name=from> (YYYYMMDD)</td></tr>
144         <tr><td><?php _e('To','statpress'); ?></td><td><input type=text name=to> (YYYYMMDD)</td></tr>
145         <tr><td><?php _e('Fields delimiter','statpress'); ?></td><td><select name=del><option>,</option><option>;</option><option>|</option></select></tr>
146         <tr><td></td><td><input type=submit value=<?php _e('Export','statpress'); ?>></td></tr>
147         <input type=hidden name=page value=statpress><input type=hidden name=statpress_action value=exportnow>
148         </table></form>
149         </div>
150 <?php
151 }
152
153
154 function iriStatPressExportNow() {
155         global $wpdb;
156         $table_name = $wpdb->prefix . "statpress";
157         $filename=get_bloginfo('title' )."-statpress_".$_GET['from']."-".$_GET['to'].".csv";
158         header('Content-Description: File Transfer');
159         header("Content-Disposition: attachment; filename=$filename");
160         header('Content-Type: text/plain charset=' . get_option('blog_charset'), true);
161     $qry = $wpdb->get_results("SELECT * FROM $table_name WHERE date>='".(date("Ymd",strtotime(substr($_GET['from'],0,8))))."' AND date<='".(date("Ymd",strtotime(substr($_GET['to'],0,8))))."';");
162         $del=substr($_GET['del'],0,1);
163         print "date".$del."time".$del."ip".$del."urlrequested".$del."agent".$del."referrer".$del."search".$del."nation".$del."os".$del."browser".$del."searchengine".$del."spider".$del."feed\n";
164         foreach ($qry as $rk) {
165                 print '"'.$rk->date.'"'.$del.'"'.$rk->time.'"'.$del.'"'.$rk->ip.'"'.$del.'"'.$rk->urlrequested.'"'.$del.'"'.$rk->agent.'"'.$del.'"'.$rk->referrer.'"'.$del.'"'.$rk->search.'"'.$del.'"'.$rk->nation.'"'.$del.'"'.$rk->os.'"'.$del.'"'.$rk->browser.'"'.$del.'"'.$rk->searchengine.'"'.$del.'"'.$rk->spider.'"'.$del.'"'.$rk->feed.'"'."\n";
166
167         }
168         die();
169 }
170
171 function iriStatPressMain() {
172         global $wpdb;
173         $table_name = $wpdb->prefix . "statpress";
174         
175         # Tabella OVERVIEW
176         $unique_color="#114477";
177         $web_color="#3377B6";
178         $rss_color="#f38f36";
179         $spider_color="#83b4d8";
180     $lastmonth = iri_StatPress_lastmonth();
181     $thismonth = gmdate('Ym', current_time('timestamp'));
182     $yesterday = gmdate('Ymd', current_time('timestamp')-86400);
183     $today = gmdate('Ymd', current_time('timestamp'));
184     $tlm[0]=substr($lastmonth,0,4); $tlm[1]=substr($lastmonth,4,2);
185
186         print "<div class='wrap'><h2>". __('Overview','statpress'). "</h2>";
187         print "<table class='widefat'><thead><tr>
188         <th scope='col'></th>
189         <th scope='col'>". __('Total','statpress'). "</th>
190         <th scope='col'>". __('Last month','statpress'). "<br /><font size=1>" . gmdate('M, Y',gmmktime(0,0,0,$tlm[1],1,$tlm[0])) ."</font></th>
191         <th scope='col'>". __('This month','statpress'). "<br /><font size=1>" . gmdate('M, Y', current_time('timestamp')) ."</font></th>
192         <th scope='col'>Target ". __('This month','statpress'). "<br /><font size=1>" . gmdate('M, Y', current_time('timestamp')) ."</font></th>
193         <th scope='col'>". __('Yesterday','statpress'). "<br /><font size=1>" . gmdate('d M, Y', current_time('timestamp')-86400) ."</font></th>
194         <th scope='col'>". __('Today','statpress'). "<br /><font size=1>" . gmdate('d M, Y', current_time('timestamp')) ."</font></th>
195         </tr></thead>
196         <tbody id='the-list'>";
197
198         ################################################################################################
199         # VISITORS ROW
200         print "<tr><td><div style='background:$unique_color;width:10px;height:10px;float:left;margin-top:4px;margin-right:5px;'></div>". __('Visitors','statpress'). "</td>";
201
202         #TOTAL
203         $qry_total = $wpdb->get_row("
204                 SELECT count(DISTINCT ip) AS visitors
205                 FROM $table_name
206                 WHERE feed=''
207                 AND spider=''
208         ");
209         print "<td>" . $qry_total->visitors . "</td>\n";
210
211         #LAST MONTH
212         $qry_lmonth = $wpdb->get_row("
213                 SELECT count(DISTINCT ip) AS visitors
214                 FROM $table_name
215                 WHERE feed=''
216                 AND spider=''
217                 AND date LIKE '" . $lastmonth . "%'
218         ");
219         print "<td>" . $qry_lmonth->visitors . "</td>\n";
220
221         #THIS MONTH
222         $qry_tmonth = $wpdb->get_row("
223                 SELECT count(DISTINCT ip) AS visitors
224                 FROM $table_name
225                 WHERE feed=''
226                 AND spider=''
227                 AND date LIKE '" . $thismonth . "%'
228         ");
229         if($qry_lmonth->visitors <> 0) {
230                 $pc = round( 100 * ($qry_tmonth->visitors / $qry_lmonth->visitors ) - 100,1);
231                 if($pc >= 0) $pc = "+" . $pc;
232                 $qry_tmonth->change = "<code> (" . $pc . "%)</code>";
233         }
234         print "<td>" . $qry_tmonth->visitors . $qry_tmonth->change . "</td>\n";
235
236         #TARGET
237         $qry_tmonth->target = round($qry_tmonth->visitors / date("d", current_time('timestamp')) * 30);
238         if($qry_lmonth->visitors <> 0) {
239                 $pt = round( 100 * ($qry_tmonth->target / $qry_lmonth->visitors ) - 100,1);
240                 if($pt >= 0) $pt = "+" . $pt;
241                 $qry_tmonth->added = "<code> (" . $pt . "%)</code>";
242         }
243         print "<td>" . $qry_tmonth->target . $qry_tmonth->added . "</td>\n";
244
245         #YESTERDAY
246         $qry_y = $wpdb->get_row("
247                 SELECT count(DISTINCT ip) AS visitors
248                 FROM $table_name
249                 WHERE feed=''
250                 AND spider=''
251                 AND date = '$yesterday'
252         ");
253         print "<td>" . $qry_y->visitors . "</td>\n";
254
255         #TODAY
256         $qry_t = $wpdb->get_row("
257                 SELECT count(DISTINCT ip) AS visitors
258                 FROM $table_name
259                 WHERE feed=''
260                 AND spider=''
261                 AND date = '$today'
262         ");
263         print "<td>" . $qry_t->visitors . "</td>\n";
264     print "</tr>";
265
266         ################################################################################################
267         # PAGEVIEWS ROW
268         print "<tr><td><div style='background:$web_color;width:10px;height:10px;float:left;margin-top:4px;margin-right:5px;'></div>". __('Pageviews','statpress'). "</td>";
269
270         #TOTAL
271         $qry_total = $wpdb->get_row("
272                 SELECT count(date) as pageview
273                 FROM $table_name
274                 WHERE feed=''
275                 AND spider=''
276         ");
277         print "<td>" . $qry_total->pageview . "</td>\n";
278
279         #LAST MONTH
280         $prec=0;
281         $qry_lmonth = $wpdb->get_row("
282                 SELECT count(date) as pageview
283                 FROM $table_name
284                 WHERE feed=''
285                 AND spider=''
286                 AND date LIKE '" . $lastmonth . "%'
287         ");
288         print "<td>".$qry_lmonth->pageview."</td>\n";
289
290         #THIS MONTH
291         $qry_tmonth = $wpdb->get_row("
292                 SELECT count(date) as pageview
293                 FROM $table_name
294                 WHERE feed=''
295                 AND spider=''
296                 AND date LIKE '" . $thismonth . "%'
297         ");
298         if($qry_lmonth->pageview <> 0) {
299                 $pc = round( 100 * ($qry_tmonth->pageview / $qry_lmonth->pageview ) - 100,1);
300                 if($pc >= 0) $pc = "+" . $pc;
301                 $qry_tmonth->change = "<code> (" . $pc . "%)</code>";
302         }
303         print "<td>" . $qry_tmonth->pageview . $qry_tmonth->change . "</td>\n";
304
305         #TARGET
306         $qry_tmonth->target = round($qry_tmonth->pageview / date("d", current_time('timestamp')) * 30);
307         if($qry_lmonth->pageview <> 0) {
308                 $pt = round( 100 * ($qry_tmonth->target / $qry_lmonth->pageview ) - 100,1);
309                 if($pt >= 0) $pt = "+" . $pt;
310                 $qry_tmonth->added = "<code> (" . $pt . "%)</code>";
311         }
312         print "<td>" . $qry_tmonth->target . $qry_tmonth->added . "</td>\n";
313
314         #YESTERDAY
315         $qry_y = $wpdb->get_row("
316                 SELECT count(date) as pageview
317                 FROM $table_name
318                 WHERE feed=''
319                 AND spider=''
320                 AND date = '$yesterday'
321         ");
322         print "<td>" . $qry_y->pageview . "</td>\n";
323
324         #TODAY
325         $qry_t = $wpdb->get_row("
326                 SELECT count(date) as pageview
327                 FROM $table_name
328                 WHERE feed=''
329                 AND spider=''
330                 AND date = '$today'
331         ");
332         print "<td>" . $qry_t->pageview . "</td>\n";
333         print "</tr>";
334         ################################################################################################
335         # SPIDERS ROW
336         print "<tr><td><div style='background:$spider_color;width:10px;height:10px;float:left;margin-top:4px;margin-right:5px;'></div>Spiders</td>";
337         #TOTAL
338         $qry_total = $wpdb->get_row("
339                 SELECT count(date) as spiders
340                 FROM $table_name
341                 WHERE feed=''
342                 AND spider<>''
343         ");
344         print "<td>" . $qry_total->spiders . "</td>\n";
345     #LAST MONTH
346     $prec=0;
347         $qry_lmonth = $wpdb->get_row("
348                 SELECT count(date) as spiders
349                 FROM $table_name
350                 WHERE feed=''
351                 AND spider<>''
352                 AND date LIKE '" . $lastmonth . "%'
353         ");
354         print "<td>" . $qry_lmonth->spiders. "</td>\n";
355         
356         #THIS MONTH
357         $prec=$qry_lmonth->spiders;
358         $qry_tmonth = $wpdb->get_row("
359                 SELECT count(date) as spiders
360                 FROM $table_name
361                 WHERE feed=''
362                 AND spider<>''
363                 AND date LIKE '" . $thismonth . "%'
364         ");
365         if($qry_lmonth->spiders <> 0) {
366                 $pc = round( 100 * ($qry_tmonth->spiders / $qry_lmonth->spiders ) - 100,1);
367                 if($pc >= 0) $pc = "+" . $pc;
368                 $qry_tmonth->change = "<code> (" . $pc . "%)</code>";
369         }
370         print "<td>" . $qry_tmonth->spiders . $qry_tmonth->change . "</td>\n";
371
372         #TARGET
373         $qry_tmonth->target = round($qry_tmonth->spiders / date("d", current_time('timestamp')) * 30);
374         if($qry_lmonth->spiders <> 0) {
375                 $pt = round( 100 * ($qry_tmonth->target / $qry_lmonth->spiders ) - 100,1);
376                 if($pt >= 0) $pt = "+" . $pt;
377                 $qry_tmonth->added = "<code> (" . $pt . "%)</code>";
378         }
379         print "<td>" . $qry_tmonth->target . $qry_tmonth->added . "</td>\n";
380
381         #YESTERDAY
382         $qry_y = $wpdb->get_row("
383                 SELECT count(date) as spiders
384                 FROM $table_name
385                 WHERE feed=''
386                 AND spider<>''
387                 AND date = '$yesterday'
388         ");
389         print "<td>" . $qry_y->spiders . "</td>\n";
390         
391         #TODAY
392         $qry_t = $wpdb->get_row("
393                 SELECT count(date) as spiders
394                 FROM $table_name
395                 WHERE feed=''
396                 AND spider<>''
397                 AND date = '$today'
398         ");
399         print "<td>" . $qry_t->spiders . "</td>\n";
400     print "</tr>";
401         ################################################################################################
402         # FEEDS ROW
403         print "<tr><td><div style='background:$rss_color;width:10px;height:10px;float:left;margin-top:4px;margin-right:5px;'></div>Feeds</td>";
404         #TOTAL
405         $qry_total = $wpdb->get_row("
406                 SELECT count(date) as feeds
407                 FROM $table_name
408                 WHERE feed<>''
409                 AND spider=''
410         ");
411         print "<td>".$qry_total->feeds."</td>\n";
412
413         #LAST MONTH
414         $qry_lmonth = $wpdb->get_row("
415                 SELECT count(date) as feeds
416                 FROM $table_name
417                 WHERE feed<>''
418                 AND spider=''
419                 AND date LIKE '" . $lastmonth . "%'
420         ");
421         print "<td>".$qry_lmonth->feeds."</td>\n";
422
423         #THIS MONTH
424         $qry_tmonth = $wpdb->get_row("
425                 SELECT count(date) as feeds
426                 FROM $table_name
427                 WHERE feed<>''
428                 AND spider=''
429                 AND date LIKE '" . $thismonth . "%'
430         ");
431         if($qry_lmonth->feeds <> 0) {
432                 $pc = round( 100 * ($qry_tmonth->feeds / $qry_lmonth->feeds ) - 100,1);
433                 if($pc >= 0) $pc = "+" . $pc;
434                 $qry_tmonth->change = "<code> (" . $pc . "%)</code>";
435         }
436         print "<td>" . $qry_tmonth->feeds . $qry_tmonth->change . "</td>\n";
437
438         #TARGET
439         $qry_tmonth->target = round($qry_tmonth->feeds / date("d", current_time('timestamp')) * 30);
440         if($qry_lmonth->feeds <> 0) {
441                 $pt = round( 100 * ($qry_tmonth->target / $qry_lmonth->feeds ) - 100,1);
442                 if($pt >= 0) $pt = "+" . $pt;
443                 $qry_tmonth->added = "<code> (" . $pt . "%)</code>";
444         }
445         print "<td>" . $qry_tmonth->target . $qry_tmonth->added . "</td>\n";
446
447         $qry_y = $wpdb->get_row("
448                 SELECT count(date) as feeds
449                 FROM $table_name
450                 WHERE feed<>''
451                 AND spider=''
452                 AND date = '".$yesterday."'
453         ");
454         print "<td>".$qry_y->feeds."</td>\n";
455
456         $qry_t = $wpdb->get_row("
457                 SELECT count(date) as feeds
458                 FROM $table_name
459                 WHERE feed<>''
460                 AND spider=''
461                 AND date = '$today'
462         ");
463         print "<td>".$qry_t->feeds."</td>\n";
464
465     print "</tr></table><br />\n\n";
466     
467         ################################################################################################
468         ################################################################################################
469         # THE GRAPHS
470
471         # last "N" days graph  NEW
472         $gdays=get_option('statpress_daysinoverviewgraph'); if($gdays == 0) { $gdays=20; }
473 //      $start_of_week = get_settings('start_of_week');
474         $start_of_week = get_option('start_of_week');
475     print '<table width="100%" border="0"><tr>';
476         $qry = $wpdb->get_row("
477                 SELECT count(date) as pageview, date
478                 FROM $table_name
479                 GROUP BY date HAVING date >= '".gmdate('Ymd', current_time('timestamp')-86400*$gdays)."'
480                 ORDER BY pageview DESC
481                 LIMIT 1
482         ");
483         $maxxday=$qry->pageview;
484         if($maxxday == 0) { $maxxday = 1; }
485         # Y
486         $gd=(90/$gdays).'%';
487         for($gg=$gdays-1;$gg>=0;$gg--)
488         {
489                 #TOTAL VISITORS
490                 $qry_visitors = $wpdb->get_row("
491                         SELECT count(DISTINCT ip) AS total
492                         FROM $table_name
493                         WHERE feed=''
494                         AND spider=''
495                         AND date = '".gmdate('Ymd', current_time('timestamp')-86400*$gg)."'
496                 ");
497                 $px_visitors = round($qry_visitors->total*100/$maxxday);
498
499                 #TOTAL PAGEVIEWS (we do not delete the uniques, this is falsing the info.. uniques are not different visitors!)
500                 $qry_pageviews = $wpdb->get_row("
501                         SELECT count(date) as total
502                         FROM $table_name
503                         WHERE feed=''
504                         AND spider=''
505                         AND date = '".gmdate('Ymd', current_time('timestamp')-86400*$gg)."'
506                 ");
507                 $px_pageviews = round($qry_pageviews->total*100/$maxxday);
508
509                 #TOTAL SPIDERS
510                 $qry_spiders = $wpdb->get_row("
511                         SELECT count(ip) AS total
512                         FROM $table_name
513                         WHERE feed=''
514                         AND spider<>''
515                         AND date = '".gmdate('Ymd', current_time('timestamp')-86400*$gg)."'
516                 ");
517                 $px_spiders = round($qry_spiders->total*100/$maxxday);
518
519                 #TOTAL FEEDS
520                 $qry_feeds = $wpdb->get_row("
521                         SELECT count(ip) AS total
522                         FROM $table_name
523                         WHERE feed<>''
524                         AND spider=''
525                         AND date = '".gmdate('Ymd', current_time('timestamp')-86400*$gg)."'
526                 ");
527                 $px_feeds = round($qry_feeds->total*100/$maxxday);
528
529                 $px_white = 100 - $px_feeds - $px_spiders - $px_pageviews - $px_visitors;
530
531                 print '<td width="'.$gd.'" valign="bottom"';
532                 if($start_of_week == gmdate('w',current_time('timestamp')-86400*$gg)) { print ' style="border-left:2px dotted gray;"'; }  # week-cut
533                 print "><div style='float:left;height: 100%;width:100%;font-family:Helvetica;font-size:7pt;text-align:center;border-right:1px solid white;color:black;'>
534                 <div style='background:#ffffff;width:100%;height:".$px_white."px;'></div>
535                 <div style='background:$unique_color;width:100%;height:".$px_visitors."px;' title='".$qry_visitors->total." visitors'></div>
536                 <div style='background:$web_color;width:100%;height:".$px_pageviews."px;' title='".$qry_pageviews->total." pageviews'></div>
537                 <div style='background:$spider_color;width:100%;height:".$px_spiders."px;' title='".$qry_spiders->total." spiders'></div>
538                 <div style='background:$rss_color;width:100%;height:".$px_feeds."px;' title='".$qry_feeds->total." feeds'></div>
539                 <div style='background:gray;width:100%;height:1px;'></div>
540                 <br />".gmdate('d', current_time('timestamp')-86400*$gg) . ' ' . gmdate('M', current_time('timestamp')-86400*$gg) . "</div></td>\n";
541         }
542         print '</tr></table>';
543         
544         print '</div>';
545 # END OF OVERVIEW
546 ####################################################################################################
547
548
549
550
551         $querylimit="LIMIT 10";
552             
553         # Tabella Last hits
554         print "<div class='wrap'><h2>". __('Last hits','statpress'). "</h2><table class='widefat'><thead><tr><th scope='col'>". __('Date','statpress'). "</th><th scope='col'>". __('Time','statpress'). "</th><th scope='col'>IP</th><th scope='col'>". __('Language','statpress'). "</th><th scope='col'>". __('Page','statpress'). "</th><th scope='col'>OS</th><th scope='col'>Browser</th><th scope='col'>Feed</th></tr></thead>";
555         print "<tbody id='the-list'>";  
556
557         $fivesdrafts = $wpdb->get_results("SELECT * FROM $table_name WHERE (os<>'' OR feed<>'') order by id DESC $querylimit");
558         foreach ($fivesdrafts as $fivesdraft) {
559                 print "<tr>";
560                 print "<td>". irihdate($fivesdraft->date) ."</td>";
561                 print "<td>". $fivesdraft->time ."</td>";
562                 print "<td>". $fivesdraft->ip ."</td>";
563                 print "<td>". $fivesdraft->nation ."</td>";
564                 print "<td>". iri_StatPress_Abbrevia(iri_StatPress_Decode($fivesdraft->urlrequested),30) ."</td>";
565                 print "<td>". $fivesdraft->os . "</td>";
566                 print "<td>". $fivesdraft->browser . "</td>";
567                 print "<td>". $fivesdraft->feed . "</td>";
568                 print "</tr>";
569         }
570         print "</table></div>";
571         
572         
573         # Last Search terms
574         print "<div class='wrap'><h2>" . __('Last search terms','statpress') . "</h2><table class='widefat'><thead><tr><th scope='col'>".__('Date','statpress')."</th><th scope='col'>".__('Time','statpress')."</th><th scope='col'>".__('Terms','statpress')."</th><th scope='col'>". __('Engine','statpress'). "</th><th scope='col'>". __('Result','statpress'). "</th></tr></thead>";
575         print "<tbody id='the-list'>";  
576         $qry = $wpdb->get_results("SELECT date,time,referrer,urlrequested,search,searchengine FROM $table_name WHERE search<>'' ORDER BY id DESC $querylimit");
577         foreach ($qry as $rk) {
578                 print "<tr><td>".irihdate($rk->date)."</td><td>".$rk->time."</td><td><a href='".$rk->referrer."'>".$rk->search."</a></td><td>".$rk->searchengine."</td><td><a href='".get_bloginfo('url')."/?".$rk->urlrequested."'>". __('page viewed','statpress'). "</a></td></tr>\n";
579         }
580         print "</table></div>";
581         
582         # Referrer
583         print "<div class='wrap'><h2>".__('Last referrers','statpress')."</h2><table class='widefat'><thead><tr><th scope='col'>".__('Date','statpress')."</th><th scope='col'>".__('Time','statpress')."</th><th scope='col'>".__('URL','statpress')."</th><th scope='col'>".__('Result','statpress')."</th></tr></thead>";
584         print "<tbody id='the-list'>";  
585         $qry = $wpdb->get_results("SELECT date,time,referrer,urlrequested FROM $table_name WHERE ((referrer NOT LIKE '".get_option('home')."%') AND (referrer <>'') AND (searchengine='')) ORDER BY id DESC $querylimit");
586         foreach ($qry as $rk) {
587                 print "<tr><td>".irihdate($rk->date)."</td><td>".$rk->time."</td><td><a href='".$rk->referrer."'>".iri_StatPress_Abbrevia($rk->referrer,80)."</a></td><td><a href='".get_bloginfo('url')."/?".$rk->urlrequested."'>". __('page viewed','statpress'). "</a></td></tr>\n";
588         }
589         print "</table></div>";
590
591 /*      
592         # Last Agents
593         print "<div class='wrap'><h2>".__('Last agents','statpress')."</h2><table class='widefat'><thead><tr><th scope='col'>".__('Date','statpress')."</th><th scope='col'>".__('Time','statpress')."</th><th scope='col'>".__('Agent','statpress')."</th><th scope='col'>".__('What','statpress')."</th></tr></thead>";
594         print "<tbody id='the-list'>";  
595         $qry = $wpdb->get_results("SELECT date,time,agent,os,browser,spider FROM $table_name WHERE (agent <>'') ORDER BY id DESC $querylimit");
596         foreach ($qry as $rk) {
597                 print "<tr><td>".irihdate($rk->date)."</td><td>".$rk->time."</td><td>".$rk->agent."</td><td> ".$rk->os. " ".$rk->browser." ".$rk->spider."</td></tr>\n";
598         }
599         print "</table></div>";
600 */
601
602         # Last Agents 2
603         print "<div class='wrap'><h2>".__('Last agents','statpress')."</h2><table class='widefat'><thead><tr><th scope='col'>".__('Agent','statpress')."</th><th scope='col'>OS</th><th scope='col'></th><th scope='col'>Browser/Spider</th></tr></thead>";
604         print "<tbody id='the-list'>";  
605         $qry = $wpdb->get_results("SELECT agent,os,browser,spider FROM $table_name GROUP BY agent,os,browser,spider ORDER BY id DESC $querylimit");
606         foreach ($qry as $rk) {
607                 print "<tr><td>".$rk->agent."</td><td>".$rk->os."</td>";
608                 if($rk->browser != '') {
609                         $img=str_replace(" ","",strtolower($rk->browser)).".png";
610                         print "<td><IMG style='border:0px;width:16px;height:16px;' SRC='/wp-content/plugins/".dirname(plugin_basename(__FILE__))."/images/browsers/$img'></td>";
611                 }
612                 print "<td>".$rk->browser." ".$rk->spider."</td></tr>\n";
613         }
614         print "</table></div>";
615
616
617         # Last pages
618         print "<div class='wrap'><h2>".__('Last pages','statpress')."</h2><table class='widefat'><thead><tr><th scope='col'>".__('Date','statpress')."</th><th scope='col'>".__('Time','statpress')."</th><th scope='col'>".__('Page','statpress')."</th><th scope='col'>".__('What','statpress')."</th></tr></thead>";
619         print "<tbody id='the-list'>";  
620         $qry = $wpdb->get_results("SELECT date,time,urlrequested,os,browser,spider FROM $table_name WHERE (spider='' AND feed='') ORDER BY id DESC $querylimit");
621         foreach ($qry as $rk) {
622                 print "<tr><td>".irihdate($rk->date)."</td><td>".$rk->time."</td><td>".iri_StatPress_Abbrevia(iri_StatPress_Decode($rk->urlrequested),60)."</td><td> ".$rk->os. " ".$rk->browser." ".$rk->spider."</td></tr>\n";
623         }
624         print "</table></div>";
625         
626         # Last Spiders
627         print "<div class='wrap'><h2>".__('Last spiders','statpress')."</h2><table class='widefat'><thead><tr><th scope='col'>".__('Date','statpress')."</th><th scope='col'>".__('Time','statpress')."</th><th scope='col'>".__('Spider','statpress')."</th><th scope='col'>".__('Agent','statpress')."</th></tr></thead>";
628         print "<tbody id='the-list'>";  
629         $qry = $wpdb->get_results("SELECT date,time,agent,os,browser,spider FROM $table_name WHERE (spider<>'') ORDER BY id DESC $querylimit");
630         foreach ($qry as $rk) {
631                 print "<tr><td>".irihdate($rk->date)."</td><td>".$rk->time."</td><td>".$rk->spider."</td><td> ".$rk->agent."</td></tr>\n";
632         }
633         print "</table></div>";
634         
635         
636         print "<br />";
637         print "&nbsp;<i>StatPress table size: <b>".iritablesize($wpdb->prefix . "statpress")."</b></i><br />";
638         print "&nbsp;<i>StatPress current time: <b>".current_time('mysql')."</b></i><br />";
639         print "&nbsp;<i>RSS2 url: <b>".get_bloginfo('rss2_url').' ('.iri_StatPress_extractfeedreq(get_bloginfo('rss2_url')).")</b></i><br />";
640         
641 }       
642
643
644 function iri_StatPress_extractfeedreq($url) {
645         list($null,$q)=explode("?",$url);
646         list($res,$null)=explode("&",$q);
647         return $res;
648 }
649
650 function iriStatPressDetails() {
651         global $wpdb;
652         $table_name = $wpdb->prefix . "statpress";
653
654         $querylimit="LIMIT 10";
655
656         # Top days
657     iriValueTable2("date","Top days",5);
658
659         # O.S.
660     iriValueTable2("os","O.S.",0,"","","AND feed='' AND spider='' AND os<>''");
661
662         # Browser
663     iriValueTable2("browser","Browser",0,"","","AND feed='' AND spider='' AND browser<>''");    
664         
665         # Feeds
666     iriValueTable2("feed","Feeds",5,"","","AND feed<>''");
667     
668         # SE
669     iriValueTable2("searchengine","Search engines",10,"","","AND searchengine<>''");
670
671         # Search terms
672     iriValueTable2("search","Top search terms",20,"","","AND search<>''");
673
674         # Top referrer
675     iriValueTable2("referrer","Top referrer",10,"","","AND referrer<>'' AND referrer NOT LIKE '%".get_bloginfo('url')."%'");
676         
677         # Languages
678     iriValueTable2("nation","Languages",10,"","","AND nation<>'' AND spider=''");
679
680         # Spider
681     iriValueTable2("spider","Spiders",10,"","","AND spider<>''");
682
683         # Top Pages
684     iriValueTable2("urlrequested","Top pages",5,"","urlrequested","AND feed='' and spider=''");
685         
686         
687         # Top Days - Unique visitors
688     iriValueTable2("date","Top Days - Unique visitors",5,"distinct","ip","AND feed='' and spider=''"); /* Maddler 04112007: required patching iriValueTable */
689
690     # Top Days - Pageviews
691     iriValueTable2("date","Top Days - Pageviews",5,"","urlrequested","AND feed='' and spider=''"); /* Maddler 04112007: required patching iriValueTable */
692
693     # Top IPs - Pageviews
694     iriValueTable2("ip","Top IPs - Pageviews",5,"","urlrequested","AND feed='' and spider=''"); /* Maddler 04112007: required patching iriValueTable */
695 }
696
697
698 function iriStatPressSpy() {
699         global $wpdb;
700         $table_name = $wpdb->prefix . "statpress";
701         
702         # Spy
703         $today = gmdate('Ymd', current_time('timestamp'));
704         $yesterday = gmdate('Ymd', current_time('timestamp')-86400);
705         print "<div class='wrap'><h2>".__('Spy','statpress')."</h2>";
706         $sql="SELECT ip,nation,os,browser,agent FROM $table_name WHERE (spider='' AND feed='') AND (date BETWEEN '$yesterday' AND '$today') GROUP BY ip ORDER BY id DESC LIMIT 20";
707         $qry = $wpdb->get_results($sql);
708         
709 ?>
710 <script>
711 function ttogle(thediv){
712 if (document.getElementById(thediv).style.display=="inline") {
713 document.getElementById(thediv).style.display="none"
714 } else {document.getElementById(thediv).style.display="inline"}
715 }
716 </script>
717 <div align="center">
718 <table id="mainspytab" name="mainspytab" width="99%" border="0" cellspacing="0" cellpadding="4">
719 <?php
720         foreach ($qry as $rk) {
721                 print "<tr><td colspan='2' bgcolor='#dedede'><div align='left'>";
722                 print "<IMG SRC='http://api.hostip.info/flag.php?ip=".$rk->ip."' border=0 width=18 height=12>";
723                 print " <strong><span><font size='2' color='#7b7b7b'>".$rk->ip."</font></span></strong> ";
724                 print "<span style='color:#006dca;cursor:pointer;border-bottom:1px dotted #AFD5F9;font-size:8pt;' onClick=ttogle('".$rk->ip."');>".__('more info','statpress')."</span></div>";
725                 print "<div id='".$rk->ip."' name='".$rk->ip."'>".$rk->os.", ".$rk->browser;
726                 if(get_option('statpress_cryptip')!='checked') {
727                         print "<br><iframe style='overflow:hide;border:0px;width:100%;height:30px;font-family:helvetica;paddng:0;' scrolling='no' marginwidth=0 marginheight=0 src=http://api.hostip.info/get_html.php?ip=".$rk->ip."></iframe>";
728                 }
729                 print "<br><small>".gethostbyaddr($rk->ip)."</small>";
730                 print "<br><small>".$rk->agent."</small>";
731                 print "</div>";
732                 print "<script>document.getElementById('".$rk->ip."').style.display='none';</script>";
733                 print "</td></tr>";
734                 $qry2=$wpdb->get_results("SELECT * FROM $table_name WHERE ip='".$rk->ip."' AND (date BETWEEN '$yesterday' AND '$today') order by id LIMIT 10");
735                 foreach ($qry2 as $details) {
736                         print "<tr>";
737                         print "<td valign='top' width='151'><div><font size='1' color='#3B3B3B'><strong>".irihdate($details->date)." ".$details->time."</strong></font></div></td>";
738                         print "<td><div><a href='".get_bloginfo('url')."/?".$details->urlrequested."' target='_blank'>".iri_StatPress_Decode($details->urlrequested)."</a>";
739                         if($details->searchengine != '') {
740                                 print "<br><small>".__('arrived from','statpress')." <b>".$details->searchengine."</b> ".__('searching','statpress')." <a href='".$details->referrer."' target=_blank>".$details->search."</a></small>";
741                         } elseif($details->referrer != '' && strpos($details->referrer,get_option('home'))===FALSE) {
742                                 print "<br><small>".__('arrived from','statpress')." <a href='".$details->referrer."' target=_blank>".$details->referrer."</a></small>";
743                         }
744                         print "</div></td>";
745                         print "</tr>\n";
746                 }
747         }
748 ?>
749 </table>
750 </div>
751 <?php
752 }
753
754
755
756 function iri_CheckIP($ip) {
757         return ( ! preg_match( "/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/", $ip)) ? FALSE : TRUE;
758 }
759
760 function iriStatPressSearch($what='') {
761         global $wpdb;
762         $table_name = $wpdb->prefix . "statpress";
763         
764         $f['urlrequested']=__('URL Requested','statpress');
765         $f['agent']=__('Agent','statpress');
766         $f['referrer']=__('Referrer','statpress');
767         $f['search']=__('Search terms','statpress');
768         $f['searchengine']=__('Search engine','statpress');
769         $f['os']=__('Operative system','statpress');    
770         $f['browser']="Browser";
771         $f['spider']="Spider";
772         $f['ip']="IP";
773 ?>
774         <div class='wrap'><h2><?php _e('Search','statpress'); ?></h2>
775         <form method=get><table>
776         <?php
777                 for($i=1;$i<=3;$i++) {
778                         print "<tr>";
779                         print "<td>".__('Field','statpress')." <select name=where$i><option value=''></option>";
780                         foreach ( array_keys($f) as $k ) {
781                                 print "<option value='$k'";
782                                 if($_GET["where$i"] == $k) { print " SELECTED "; }
783                                 print ">".$f[$k]."</option>";
784                         }
785                         print "</select></td>";
786                         print "<td><input type=checkbox name=groupby$i value='checked' ".$_GET["groupby$i"]."> ".__('Group by','statpress')."</td>";
787                         print "<td><input type=checkbox name=sortby$i value='checked' ".$_GET["sortby$i"]."> ".__('Sort by','statpress')."</td>";
788                         print "<td>, ".__('if contains','statpress')." <input type=text name=what$i value='".$_GET["what$i"]."'></td>";
789                         print "</tr>";
790                 }
791         ?>
792         </table>
793         <br>
794         <table>
795         <tr>
796                 <td>
797                         <table>
798                                 <tr><td><input type=checkbox name=oderbycount value=checked <?php print $_GET['oderbycount'] ?>> <?php _e('sort by count if grouped','statpress'); ?></td></tr>
799                                 <tr><td><input type=checkbox name=spider value=checked <?php print $_GET['spider'] ?>> <?php _e('include spiders/crawlers/bot','statpress'); ?></td></tr>
800                                 <tr><td><input type=checkbox name=feed value=checked <?php print $_GET['feed'] ?>> <?php _e('include feed','statpress'); ?></td></tr>
801                         </table>
802                 </td>
803                 <td width=15> </td>
804                 <td>
805                         <table>
806                                 <tr>
807                                         <td><?php _e('Limit results to','statpress'); ?>
808                                                 <select name=limitquery><?php if($_GET['limitquery'] >0) { print "<option>".$_GET['limitquery']."</option>";} ?><option>1</option><option>5</option><option>10</option><option>20</option><option>50</option></select>
809                                         </td>
810                                 </tr>
811                                 <tr><td>&nbsp;</td></tr>
812                                 <tr>
813                                         <td align=right><input type=submit value=<?php _e('Search','statpress'); ?> name=searchsubmit></td>
814                                 </tr>
815                         </table>
816                 </td>
817         </tr>           
818         </table>        
819         <input type=hidden name=page value='wp-statpress/statpress.php'><input type=hidden name=statpress_action value=search>
820         </form><br>
821 <?php
822
823  if(isset($_GET['searchsubmit'])) {
824         # query builder
825         $qry="";
826         # FIELDS
827         $fields="";
828         for($i=1;$i<=3;$i++) {
829                 if($_GET["where$i"] != '') {
830                         $fields.=$_GET["where$i"].",";
831                 }
832         }
833         $fields=rtrim($fields,",");
834         # WHERE
835         $where="WHERE 1=1";
836         if($_GET['spider'] != 'checked') { $where.=" AND spider=''"; }
837         if($_GET['feed'] != 'checked') { $where.=" AND feed=''"; }
838         for($i=1;$i<=3;$i++) {
839                 if(($_GET["what$i"] != '') && ($_GET["where$i"] != '')) {
840                         $where.=" AND ".$_GET["where$i"]." LIKE '%".$_GET["what$i"]."%'";
841                 }
842         }
843         # ORDER BY
844         $orderby="";
845         for($i=1;$i<=3;$i++) {
846                 if(($_GET["sortby$i"] == 'checked') && ($_GET["where$i"] != '')) {
847                         $orderby.=$_GET["where$i"].',';
848                 }
849         }
850                 
851         # GROUP BY
852         $groupby="";
853         for($i=1;$i<=3;$i++) {
854                 if(($_GET["groupby$i"] == 'checked') && ($_GET["where$i"] != '')) {
855                         $groupby.=$_GET["where$i"].',';
856                 }
857         }
858         if($groupby != '') {
859                 $groupby="GROUP BY ".rtrim($groupby,',');
860                 $fields.=",count(*) as totale";
861                 if($_GET['oderbycount'] == 'checked') { $orderby="totale DESC,".$orderby; }
862         }
863         
864         if($orderby != '') { $orderby="ORDER BY ".rtrim($orderby,','); }
865         
866
867         $limit="LIMIT ".$_GET['limitquery'];
868
869         # Results
870         print "<h2>".__('Results','statpress')."</h2>";
871         $sql="SELECT $fields FROM $table_name $where $groupby $orderby $limit;";
872 //      print "$sql<br>";
873         print "<table class='widefat'><thead><tr>";
874         for($i=1;$i<=3;$i++) { 
875                 if($_GET["where$i"] != '') { print "<th scope='col'>".ucfirst($_GET["where$i"])."</th>"; }
876         }
877         if($groupby != '') { print "<th scope='col'>".__('Count','statpress')."</th>"; }
878         print "</tr></thead><tbody id='the-list'>";     
879         $qry=$wpdb->get_results($sql,ARRAY_N);
880         foreach ($qry as $rk) {
881                 print "<tr>";
882                 for($i=1;$i<=3;$i++) {
883                         print "<td>";
884                         if($_GET["where$i"] == 'urlrequested') { print iri_StatPress_Decode($rk[$i-1]); } else { print $rk[$i-1]; }
885                         print "</td>";
886                 }
887                 print "</tr>";
888         }
889         print "</table>";
890         print "<br /><br /><font size=1 color=gray>sql: $sql</font></div>";
891  }
892         
893 }
894
895 function iri_StatPress_Abbrevia($s,$c) {
896         $res=""; if(strlen($s)>$c) { $res="..."; }
897         return substr($s,0,$c).$res;
898         
899 }
900
901
902 function iri_StatPress_Decode($out_url) {
903         if($out_url == '') { $out_url=__('Page','statpress').": Home"; }
904         if(substr($out_url,0,4)=="cat=") { $out_url=__('Category','statpress').": ".get_cat_name(substr($out_url,4)); }
905         if(substr($out_url,0,2)=="m=") { $out_url=__('Calendar','statpress').": ".substr($out_url,6,2)."/".substr($out_url,2,4); }
906         if(substr($out_url,0,2)=="s=") { $out_url=__('Search','statpress').": ".substr($out_url,2); }
907         if(substr($out_url,0,2)=="p=") {
908                 $post_id_7 = get_post(substr($out_url,2), ARRAY_A);
909                 $out_url = $post_id_7['post_title'];
910         }
911         if(substr($out_url,0,8)=="page_id=") {
912                 $post_id_7=get_page(substr($out_url,8), ARRAY_A);
913                 $out_url = __('Page','statpress').": ".$post_id_7['post_title'];
914         }
915         return $out_url;
916 }
917
918
919 function iri_StatPress_URL() {
920     $urlRequested = (isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '' );
921         if ( $urlRequested == "" ) { // SEO problem!
922             $urlRequested = (isset($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : '' );
923         }
924         if(substr($urlRequested,0,2) == '/?') { $urlRequested=substr($urlRequested,2); }
925         if($urlRequested == '/') { $urlRequested=''; }
926         return $urlRequested;
927 }
928
929
930 # Converte da data us to default format di Wordpress
931 function irihdate($dt = "00000000") {
932         return mysql2date(get_option('date_format'), substr($dt,0,4)."-".substr($dt,4,2)."-".substr($dt,6,2));
933 }
934
935
936 function iritablesize($table) {
937         global $wpdb;
938         $res = $wpdb->get_results("SHOW TABLE STATUS LIKE '$table'");
939         foreach ($res as $fstatus) {
940                 $data_lenght = $fstatus->Data_length;
941                 $data_rows = $fstatus->Rows;
942         }
943         return number_format(($data_lenght/1024/1024), 2, ",", " ")." Mb ($data_rows records)";
944 }
945
946
947 function iriValueTable2($fld,$fldtitle,$limit = 0,$param = "", $queryfld = "", $exclude= "") {
948         global $wpdb;
949         $table_name = $wpdb->prefix . "statpress";
950         
951         if ($queryfld == '') { $queryfld = $fld; }
952         print "<div class='wrap'><table class='widefat'><thead><tr><th scope='col' style='width:400px;'><h2>$fldtitle</h2></th><th scope='col' style='width:100px;'>".__('Visits','statpress')."</th><th></th></tr></thead>";
953         $rks = $wpdb->get_var("SELECT count($param $queryfld) as rks FROM $table_name WHERE 1=1 $exclude;"); 
954         if($rks > 0) {
955                 $sql="SELECT count($param $queryfld) as pageview, $fld FROM $table_name WHERE 1=1 $exclude  GROUP BY $fld ORDER BY pageview DESC";
956                 if($limit > 0) { $sql=$sql." LIMIT $limit"; }
957                 $qry = $wpdb->get_results($sql);
958             $tdwidth=450;
959                 
960                 // Collects data
961                 $data=array();
962                 foreach ($qry as $rk) {
963                         $pc=round(($rk->pageview*100/$rks),1);
964                         if($fld == 'date') { $rk->$fld = irihdate($rk->$fld); }
965                         if($fld == 'urlrequested') { $rk->$fld = iri_StatPress_Decode($rk->$fld); }
966
967                 $data[substr($rk->$fld,0,50)]=$rk->pageview;
968                 }
969         }
970
971         // Draw table body
972         print "<tbody id='the-list'>";
973         if($rks > 0) {  // Chart!
974                 $chart=iriGoogleChart("","400x200",$data);
975                 print "<tr><td></td><td></td><td rowspan='".($limit+2)."'>$chart</td></tr>";
976                 foreach ($data as $key => $value) {
977                 print "<tr><td style='width:400px;overflow: hidden; white-space: nowrap; text-overflow: ellipsis;'>".$key;
978                 print "</td><td style='width:100px;text-align:center;'>".$value."</td>";
979                         print "</tr>";
980                 }
981         }
982         print "</tbody></table></div><br>\n";
983         
984 }
985
986
987 /*
988 function iriDomain($ip) {
989         $host=gethostbyaddr($ip);
990     if (ereg('^([0-9]{1,3}\.){3}[0-9]{1,3}$', $host)) {
991         return "";
992     } else {
993             return substr(strrchr($host,"."),1);
994         }
995 }
996 */
997
998 function iriGetLanguage($accepted) {
999         return substr($accepted,0,2);
1000 }
1001
1002
1003 function iriGetQueryPairs($url){
1004 $parsed_url = parse_url($url);
1005 $tab=parse_url($url);
1006 $host = $tab['host'];
1007 if(key_exists("query",$tab)){
1008  $query=$tab["query"];
1009  return explode("&",$query);
1010 }
1011 else{return null;}
1012 }
1013
1014
1015 function iriGetOS($arg){
1016     $arg=str_replace(" ","",$arg);
1017         $lines = file(ABSPATH.'wp-content/plugins/'.dirname(plugin_basename(__FILE__)).'/def/os.dat');
1018         foreach($lines as $line_num => $os) {
1019                 list($nome_os,$id_os)=explode("|",$os);
1020                 if(strpos($arg,$id_os)===FALSE) continue;
1021         return $nome_os; // riconosciuto
1022         }
1023     return '';
1024 }
1025
1026
1027 function iriGetBrowser($arg){
1028     $arg=str_replace(" ","",$arg);
1029         $lines = file(ABSPATH.'wp-content/plugins/'.dirname(plugin_basename(__FILE__)).'/def/browser.dat');
1030         foreach($lines as $line_num => $browser) {
1031                 list($nome,$id)=explode("|",$browser);
1032                 if(strpos($arg,$id)===FALSE) continue;
1033         return $nome; // riconosciuto
1034         }
1035     return '';
1036 }
1037
1038 function iriCheckBanIP($arg){
1039         $lines = file(ABSPATH.'wp-content/plugins/'.dirname(plugin_basename(__FILE__)).'/def/banips.dat');
1040         foreach($lines as $line_num => $banip) {
1041                 if(strpos($arg,rtrim($banip,"\n"))===FALSE) continue;
1042         return ''; // riconosciuto, da scartare
1043         }
1044     return $arg;
1045 }
1046
1047 function iriGetSE($referrer = null){
1048         $key = null;
1049         $lines = file(ABSPATH.'wp-content/plugins/'.dirname(plugin_basename(__FILE__)).'/def/searchengines.dat');
1050         foreach($lines as $line_num => $se) {
1051                 list($nome,$url,$key)=explode("|",$se);
1052                 if(strpos($referrer,$url)===FALSE) continue;
1053                 # trovato se
1054                 $variables = iriGetQueryPairs(html_entity_decode($referrer));
1055                 $i = count($variables);
1056                 while($i--){
1057                    $tab=explode("=",$variables[$i]);
1058                            if($tab[0] == $key){return ($nome."|".urldecode($tab[1]));}
1059                 }
1060         }
1061         return null;
1062 }
1063
1064 function iriGetSpider($agent = null){
1065     $agent=str_replace(" ","",$agent);
1066         $key = null;
1067         $lines = file(ABSPATH.'wp-content/plugins/'.dirname(plugin_basename(__FILE__)).'/def/spider.dat');
1068         foreach($lines as $line_num => $spider) {
1069                 list($nome,$key)=explode("|",$spider);
1070                 if(strpos($agent,$key)===FALSE) continue;
1071                 # trovato
1072                 return $nome;
1073         }
1074         return null;
1075 }
1076
1077
1078 function iri_StatPress_lastmonth() {
1079   $ta = getdate(current_time('timestamp'));
1080     
1081   $year = $ta['year'];
1082   $month = $ta['mon'];
1083     
1084   --$month; // go back 1 month
1085     
1086   if( $month === 0 ): // if this month is Jan
1087     --$year; // go back a year
1088     $month = 12; // last month is Dec
1089   endif;
1090     
1091   // return in format 'YYYYMM'
1092   return sprintf( $year.'%02d', $month); 
1093 }
1094
1095
1096 function iri_StatPress_CreateTable() {
1097         global $wpdb;
1098         global $wp_db_version;
1099         $table_name = $wpdb->prefix . "statpress";
1100         $sql_createtable = "CREATE TABLE " . $table_name . " (
1101         id mediumint(9) NOT NULL AUTO_INCREMENT,
1102         date text,
1103         time text,
1104         ip text,
1105         urlrequested text,
1106         agent text,
1107         referrer text,
1108         search text,
1109         nation text,
1110         os text,
1111         browser text,
1112         searchengine text,
1113         spider text,
1114         feed text,
1115         user text,
1116         timestamp text,
1117         UNIQUE KEY id (id)
1118         );";
1119         if($wp_db_version >= 5540)      $page = 'wp-admin/includes/upgrade.php';  
1120                                                                 else $page = 'wp-admin/upgrade'.'-functions.php';
1121         require_once(ABSPATH . $page);
1122         dbDelta($sql_createtable);      
1123 }
1124
1125 function iri_StatPress_is_feed($url) {
1126         if (stristr($url,get_bloginfo('rdf_url')) != FALSE) { return 'RDF'; }
1127         if (stristr($url,get_bloginfo('rss2_url')) != FALSE) { return 'RSS2'; }
1128         if (stristr($url,get_bloginfo('rss_url')) != FALSE) { return 'RSS'; }
1129         if (stristr($url,get_bloginfo('atom_url')) != FALSE) { return 'ATOM'; }
1130         if (stristr($url,get_bloginfo('comments_rss2_url')) != FALSE) { return 'COMMENT RSS'; }
1131         if (stristr($url,get_bloginfo('comments_atom_url')) != FALSE) { return 'COMMENT ATOM'; }
1132         if (stristr($url,'wp-feed.php') != FALSE) { return 'RSS2'; }
1133         if (stristr($url,'/feed/') != FALSE) { return 'RSS2'; }
1134         return '';
1135 }
1136
1137 function iriStatAppend() {
1138         global $wpdb;
1139         $table_name = $wpdb->prefix . "statpress";
1140         global $userdata;
1141         global $_STATPRESS;
1142     get_currentuserinfo();
1143         $feed='';
1144         
1145         // Time
1146         $timestamp  = current_time('timestamp');
1147         $vdate  = gmdate("Ymd",$timestamp);
1148         $vtime  = gmdate("H:i:s",$timestamp);
1149
1150         // IP
1151     $ipAddress = $_SERVER['REMOTE_ADDR'];
1152     if(iriCheckBanIP($ipAddress) == '') { return ''; }
1153         if(get_option('statpress_cryptip')=='checked') {
1154                 $ipAddress = crypt($ipAddress,'statpress');
1155         }
1156         
1157         // URL (requested)
1158         $urlRequested=iri_StatPress_URL();
1159         if (eregi(".ico$", $urlRequested)) { return ''; }
1160         if (eregi("favicon.ico", $urlRequested)) { return ''; }
1161         if (eregi(".css$", $urlRequested)) { return ''; }
1162         if (eregi(".js$", $urlRequested)) { return ''; }
1163         if (stristr($urlRequested,"/wp-content/plugins") != FALSE) { return ''; }
1164         if (stristr($urlRequested,"/wp-content/themes") != FALSE) { return ''; }
1165         if (stristr($urlRequested,"/wp-admin/") != FALSE) { return ''; }
1166
1167         $referrer = (isset($_SERVER['HTTP_REFERER']) ? htmlentities($_SERVER['HTTP_REFERER']) : '');
1168         $userAgent = (isset($_SERVER['HTTP_USER_AGENT']) ? htmlentities($_SERVER['HTTP_USER_AGENT']) : '');
1169         $spider=iriGetSpider($userAgent);
1170         
1171         if(($spider != '') and (get_option('statpress_donotcollectspider')=='checked')) { return ''; }
1172     
1173         if($spider != '') {
1174             $os=''; $browser='';
1175         } else {
1176                 // Trap feeds
1177                 $feed=iri_StatPress_is_feed(get_bloginfo('url').$_SERVER['REQUEST_URI']);
1178                 // Get OS and browser
1179                 $os=iriGetOS($userAgent);
1180                 $browser=iriGetBrowser($userAgent);
1181                 list($searchengine,$search_phrase)=explode("|",iriGetSE($referrer));
1182         }
1183         // Auto-delete visits if...
1184         if(get_option('statpress_autodelete') != '') {
1185                 $t=gmdate("Ymd",strtotime('-'.get_option('statpress_autodelete')));
1186                 $results =      $wpdb->query( "DELETE FROM " . $table_name . " WHERE date < '" . $t . "'");
1187         }
1188     if ((!is_user_logged_in()) OR (get_option('statpress_collectloggeduser')=='checked')) {
1189                 if($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) {
1190                         iri_StatPress_CreateTable();
1191                 }
1192                 $insert = "INSERT INTO " . $table_name .
1193             " (date, time, ip, urlrequested, agent, referrer, search,nation,os,browser,searchengine,spider,feed,user,timestamp) " .
1194             "VALUES ('$vdate','$vtime','$ipAddress','$urlRequested','".addslashes(strip_tags($userAgent))."','$referrer','" .
1195             addslashes(strip_tags($search_phrase))."','".iriGetLanguage($_SERVER['HTTP_ACCEPT_LANGUAGE']) .
1196             "','$os','$browser','$searchengine','$spider','$feed','$userdata->user_login','$timestamp')";
1197                 $results = $wpdb->query( $insert );
1198         }
1199 }
1200
1201
1202 function iriStatPressUpdate() {
1203         global $wpdb;
1204         $table_name = $wpdb->prefix . "statpress";
1205         
1206         $wpdb->show_errors();
1207         # update table
1208         print "Updating table struct $table_name... ";
1209         iri_StatPress_CreateTable();
1210         print "".__('done','statpress')."<br>";
1211         
1212         # Update Feed
1213         print "Updating Feeds... ";
1214     $wpdb->query("UPDATE $table_name SET feed='';");
1215     # not standard
1216     $wpdb->query("UPDATE $table_name SET feed='RSS2' WHERE urlrequested LIKE '%/feed/%';");
1217     $wpdb->query("UPDATE $table_name SET feed='RSS2' WHERE urlrequested LIKE '%wp-feed.php%';");
1218         # standard blog info urls
1219         $s=iri_StatPress_extractfeedreq(get_bloginfo('comments_atom_url'));
1220         if($s != '') {
1221             $wpdb->query("UPDATE $table_name SET feed='COMMENT ATOM' WHERE INSTR(urlrequested,'$s')>0;");
1222         }
1223         $s=iri_StatPress_extractfeedreq(get_bloginfo('comments_rss2_url'));
1224         if($s != '') {
1225             $wpdb->query("UPDATE $table_name SET feed='COMMENT RSS' WHERE INSTR(urlrequested,'$s')>0;");
1226         }
1227         $s=iri_StatPress_extractfeedreq(get_bloginfo('atom_url'));
1228         if($s != '') {
1229             $wpdb->query("UPDATE $table_name SET feed='ATOM' WHERE INSTR(urlrequested,'$s')>0;");
1230         }
1231         $s=iri_StatPress_extractfeedreq(get_bloginfo('rdf_url'));
1232         if($s != '') {
1233             $wpdb->query("UPDATE $table_name SET feed='RDF'  WHERE INSTR(urlrequested,'$s')>0;");
1234         }
1235         $s=iri_StatPress_extractfeedreq(get_bloginfo('rss_url'));
1236         if($s != '') {
1237             $wpdb->query("UPDATE $table_name SET feed='RSS'  WHERE INSTR(urlrequested,'$s')>0;");
1238         }
1239         $s=iri_StatPress_extractfeedreq(get_bloginfo('rss2_url'));
1240         if($s != '') {
1241             $wpdb->query("UPDATE $table_name SET feed='RSS2' WHERE INSTR(urlrequested,'$s')>0;");
1242         }
1243
1244 # elim    $wpdb->query("UPDATE $table_name SET feed='Y' WHERE (urlrequested LIKE '%feed=%') or (urlrequested LIKE '%wp-rss%') or (urlrequested LIKE '%wp-rdf%') or (urlrequested LIKE '%wp-commentsrss%') or (urlrequested LIKE '%wp-atom%');");
1245         print "".__('done','statpress')."<br>";
1246
1247         # Update OS
1248         print "Updating OSes... ";
1249     $wpdb->query("UPDATE $table_name SET os = '';");
1250         $lines = file(ABSPATH.'wp-content/plugins/'.dirname(plugin_basename(__FILE__)).'/def/os.dat');
1251         foreach($lines as $line_num => $os) {
1252                 list($nome_os,$id_os)=explode("|",$os);
1253                 $qry="UPDATE $table_name SET os = '$nome_os' WHERE os='' AND replace(agent,' ','') LIKE '%".$id_os."%';";
1254                 $wpdb->query($qry);
1255         }
1256         print "".__('done','statpress')."<br>";
1257         
1258         # Update Browser
1259         print "Updating Browsers... ";
1260     $wpdb->query("UPDATE $table_name SET browser = '';");
1261         $lines = file(ABSPATH.'wp-content/plugins/'.dirname(plugin_basename(__FILE__)).'/def/browser.dat');
1262         foreach($lines as $line_num => $browser) {
1263                 list($nome,$id)=explode("|",$browser);
1264                 $qry="UPDATE $table_name SET browser = '$nome' WHERE browser='' AND replace(agent,' ','') LIKE '%".$id."%';";
1265                 $wpdb->query($qry);
1266         }
1267         print "".__('done','statpress')."<br>";
1268
1269         # Update Spider
1270         print "Updating Spiders... ";
1271     $wpdb->query("UPDATE $table_name SET spider = '';");
1272         $lines = file(ABSPATH.'wp-content/plugins/'.dirname(plugin_basename(__FILE__)).'/def/spider.dat');
1273         foreach($lines as $line_num => $spider) {
1274                 list($nome,$id)=explode("|",$spider);
1275                 $qry="UPDATE $table_name SET spider = '$nome',os='',browser='' WHERE spider='' AND replace(agent,' ','') LIKE '%".$id."%';";
1276                 $wpdb->query($qry);
1277         }
1278         print "".__('done','statpress')."<br>";
1279
1280         # Update feed to ''
1281         print "Updating Feeds... ";
1282         $wpdb->query("UPDATE $table_name SET feed = '' WHERE isnull(feed);");   
1283         print "done<br>";
1284         
1285         # Update Search engine
1286         print "Updating Search engines... ";
1287         print "<br>";
1288         $wpdb->query("UPDATE $table_name SET searchengine = '', search='';");
1289         print "...null-ed!<br>";
1290         $qry = $wpdb->get_results("SELECT id, referrer FROM $table_name");
1291         print "...select-ed!<br>";
1292         foreach ($qry as $rk) {
1293                 list($searchengine,$search_phrase)=explode("|",iriGetSE($rk->referrer));
1294                 if($searchengine <> '') {
1295                         $q="UPDATE $table_name SET searchengine = '$searchengine', search='".addslashes($search_phrase)."' WHERE id=".$rk->id;
1296                         $wpdb->query($q);
1297                 }
1298         }
1299         print "".__('done','statpress')."<br>";
1300
1301         $wpdb->hide_errors();
1302         
1303         print "<br>&nbsp;<h1>".__('Updated','statpress')."!</h1>";
1304 }
1305
1306 function StatPress_Widget($w='') {
1307
1308 }
1309
1310 function StatPress_Print($body='') {
1311         print iri_StatPress_Vars($body);
1312 }
1313
1314
1315 function iri_StatPress_Vars($body) {
1316         global $wpdb;
1317         $table_name = $wpdb->prefix . "statpress";
1318         if(strpos(strtolower($body),"%visits%") !== FALSE) {
1319                 $qry = $wpdb->get_results("SELECT count(DISTINCT(ip)) as pageview FROM $table_name WHERE date = '".gmdate("Ymd",current_time('timestamp'))."' and spider='' and feed='';");
1320                 $body = str_replace("%visits%", $qry[0]->pageview, $body);
1321         }
1322         if(strpos(strtolower($body),"%totalvisits%") !== FALSE) {
1323                 $qry = $wpdb->get_results("SELECT count(DISTINCT(ip)) as pageview FROM $table_name WHERE spider='' and feed='';");
1324                 $body = str_replace("%totalvisits%", $qry[0]->pageview, $body);
1325         }
1326         if(strpos(strtolower($body),"%thistotalvisits%") !== FALSE) {
1327                 $qry = $wpdb->get_results("SELECT count(DISTINCT(ip)) as pageview FROM $table_name WHERE spider='' and feed='' AND urlrequested='".iri_StatPress_URL()."';");
1328                 $body = str_replace("%thistotalvisits%", $qry[0]->pageview, $body);
1329         }
1330         if(strpos(strtolower($body),"%since%") !== FALSE) {
1331                 $qry = $wpdb->get_results("SELECT date FROM $table_name ORDER BY date LIMIT 1;");
1332                 $body = str_replace("%since%", irihdate($qry[0]->date), $body);
1333         }
1334         if(strpos(strtolower($body),"%os%") !== FALSE) {
1335         $userAgent = (isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '');
1336                 $os=iriGetOS($userAgent);
1337         $body = str_replace("%os%", $os, $body);
1338     }
1339         if(strpos(strtolower($body),"%browser%") !== FALSE) {
1340                 $browser=iriGetBrowser($userAgent);
1341                 $body = str_replace("%browser%", $browser, $body);
1342         }
1343         if(strpos(strtolower($body),"%ip%") !== FALSE) {        
1344             $ipAddress = $_SERVER['REMOTE_ADDR'];
1345                 $body = str_replace("%ip%", $ipAddress, $body);
1346         }
1347         if(strpos(strtolower($body),"%visitorsonline%") !== FALSE) {    
1348                 $to_time = current_time('timestamp');
1349                 $from_time = strtotime('-4 minutes', $to_time);
1350                 $qry = $wpdb->get_results("SELECT count(DISTINCT(ip)) as visitors FROM $table_name WHERE spider='' and feed='' AND timestamp BETWEEN $from_time AND $to_time;");
1351                 $body = str_replace("%visitorsonline%", $qry[0]->visitors, $body);
1352         }
1353         if(strpos(strtolower($body),"%usersonline%") !== FALSE) {       
1354                 $to_time = current_time('timestamp');
1355                 $from_time = strtotime('-4 minutes', $to_time);
1356                 $qry = $wpdb->get_results("SELECT count(DISTINCT(ip)) as users FROM $table_name WHERE spider='' and feed='' AND user<>'' AND timestamp BETWEEN $from_time AND $to_time;");
1357                 $body = str_replace("%usersonline%", $qry[0]->users, $body);
1358         }
1359         if(strpos(strtolower($body),"%toppost%") !== FALSE) {
1360                 $qry = $wpdb->get_results("SELECT urlrequested,count(*) as totale FROM $table_name WHERE spider='' AND feed='' AND urlrequested LIKE '%p=%' GROUP BY urlrequested ORDER BY totale DESC LIMIT 1;");
1361                 $body = str_replace("%toppost%", iri_StatPress_Decode($qry[0]->urlrequested), $body);
1362         }
1363         if(strpos(strtolower($body),"%topbrowser%") !== FALSE) {
1364                 $qry = $wpdb->get_results("SELECT browser,count(*) as totale FROM $table_name WHERE spider='' AND feed='' GROUP BY browser ORDER BY totale DESC LIMIT 1;");
1365                 $body = str_replace("%topbrowser%", iri_StatPress_Decode($qry[0]->browser), $body);
1366         }
1367         if(strpos(strtolower($body),"%topos%") !== FALSE) {
1368                 $qry = $wpdb->get_results("SELECT os,count(*) as totale FROM $table_name WHERE spider='' AND feed='' GROUP BY os ORDER BY totale DESC LIMIT 1;");
1369                 $body = str_replace("%topos%", iri_StatPress_Decode($qry[0]->os), $body);
1370         }
1371         return $body;
1372 }
1373
1374
1375 function iri_StatPress_TopPosts($limit=5, $showcounts='checked') {
1376         global $wpdb;
1377         $res="\n<ul>\n";
1378         $table_name = $wpdb->prefix . "statpress";
1379         $qry = $wpdb->get_results("SELECT urlrequested,count(*) as totale FROM $table_name WHERE spider='' AND feed='' AND urlrequested LIKE '%p=%' GROUP BY urlrequested ORDER BY totale DESC LIMIT $limit;");
1380         foreach ($qry as $rk) {
1381                 $res.="<li><a href='?".$rk->urlrequested."'>".iri_StatPress_Decode($rk->urlrequested)."</a></li>\n";
1382                 if(strtolower($showcounts) == 'checked') { $res.=" (".$rk->totale.")"; }
1383         }
1384         return "$res</ul>\n";
1385 }
1386
1387
1388 function widget_statpress_init($args) {
1389         if ( !function_exists('register_sidebar_widget') || !function_exists('register_widget_control') )
1390                 return;
1391         // Multifunctional StatPress pluging
1392         function widget_statpress_control() {
1393                 $options = get_option('widget_statpress');
1394                 if ( !is_array($options) )
1395                         $options = array('title'=>'StatPress', 'body'=>'Visits today: %visits%');
1396                 if ( $_POST['statpress-submit'] ) {
1397                         $options['title'] = strip_tags(stripslashes($_POST['statpress-title']));
1398                         $options['body'] = stripslashes($_POST['statpress-body']);
1399                         update_option('widget_statpress', $options);
1400                 }
1401                 $title = htmlspecialchars($options['title'], ENT_QUOTES);
1402                 $body = htmlspecialchars($options['body'], ENT_QUOTES);
1403                 // the form
1404                 echo '<p style="text-align:right;"><label for="statpress-title">' . __('Title:') . ' <input style="width: 250px;" id="statpress-title" name="statpress-title" type="text" value="'.$title.'" /></label></p>';
1405                 echo '<p style="text-align:right;"><label for="statpress-body"><div>' . __('Body:', 'widgets') . '</div><textarea style="width: 288px;height:100px;" id="statpress-body" name="statpress-body" type="textarea">'.$body.'</textarea></label></p>';
1406                 echo '<input type="hidden" id="statpress-submit" name="statpress-submit" value="1" /><div style="font-size:7pt;">%totalvisits% %visits% %thistotalvisits% %os% %browser% %ip% %since% %visitorsonline% %usersonline% %toppost% %topbrowser% %topos%</div>';
1407         }
1408         function widget_statpress($args) {
1409             extract($args);
1410                 $options = get_option('widget_statpress');
1411                 $title = $options['title'];
1412                 $body = $options['body'];
1413         echo $before_widget;
1414         print($before_title . $title . $after_title);
1415                 print iri_StatPress_Vars($body);
1416             echo $after_widget;
1417     }
1418         register_sidebar_widget('StatPress', 'widget_statpress');
1419         register_widget_control(array('StatPress','widgets'), 'widget_statpress_control', 300, 210);
1420
1421     // Top posts
1422     function widget_statpresstopposts_control() {
1423                 $options = get_option('widget_statpresstopposts');
1424                 if ( !is_array($options) ) {
1425                         $options = array('title'=>'StatPress TopPosts', 'howmany'=>'5', 'showcounts'=>'checked');
1426                 }
1427                 if ( $_POST['statpresstopposts-submit'] ) {
1428                         $options['title'] = strip_tags(stripslashes($_POST['statpresstopposts-title']));
1429                         $options['howmany'] = stripslashes($_POST['statpresstopposts-howmany']);
1430                         $options['showcounts'] = stripslashes($_POST['statpresstopposts-showcounts']);
1431                         if($options['showcounts'] == "1") {$options['showcounts']='checked';}
1432                         update_option('widget_statpresstopposts', $options);
1433                 }
1434                 $title = htmlspecialchars($options['title'], ENT_QUOTES);
1435                 $howmany = htmlspecialchars($options['howmany'], ENT_QUOTES);
1436                 $showcounts = htmlspecialchars($options['showcounts'], ENT_QUOTES);
1437                 // the form
1438                 echo '<p style="text-align:right;"><label for="statpresstopposts-title">' . __('Title','statpress') . ' <input style="width: 250px;" id="statpress-title" name="statpresstopposts-title" type="text" value="'.$title.'" /></label></p>';
1439                 echo '<p style="text-align:right;"><label for="statpresstopposts-howmany">' . __('Limit results to','statpress') . ' <input style="width: 100px;" id="statpresstopposts-howmany" name="statpresstopposts-howmany" type="text" value="'.$howmany.'" /></label></p>';
1440                 echo '<p style="text-align:right;"><label for="statpresstopposts-showcounts">' . __('Visits','statpress') . ' <input id="statpresstopposts-showcounts" name="statpresstopposts-showcounts" type=checkbox value="checked" '.$showcounts.' /></label></p>';
1441                 echo '<input type="hidden" id="statpress-submitTopPosts" name="statpresstopposts-submit" value="1" />';
1442         }
1443         function widget_statpresstopposts($args) {
1444             extract($args);
1445                 $options = get_option('widget_statpresstopposts');
1446                 $title = htmlspecialchars($options['title'], ENT_QUOTES);
1447                 $howmany = htmlspecialchars($options['howmany'], ENT_QUOTES);
1448                 $showcounts = htmlspecialchars($options['showcounts'], ENT_QUOTES);
1449         echo $before_widget;
1450         print($before_title . $title . $after_title);
1451                 print iri_StatPress_TopPosts($howmany,$showcounts);
1452             echo $after_widget;
1453     }
1454         register_sidebar_widget('StatPress TopPosts', 'widget_statpresstopposts');
1455         register_widget_control(array('StatPress TopPosts','widgets'), 'widget_statpresstopposts_control', 300, 110);
1456 }
1457
1458
1459 load_plugin_textdomain('statpress', 'wp-content/plugins/'.dirname(plugin_basename(__FILE__)).'/locale');
1460
1461 add_action('admin_menu', 'iri_add_pages');
1462 add_action('plugins_loaded', 'widget_statpress_init');
1463 add_action('send_headers', 'iriStatAppend');  //add_action('wp_head', 'iriStatAppend');
1464
1465 register_activation_hook(__FILE__,'iri_StatPress_CreateTable');
1466
1467 ?>