PageRenderTime 58ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 1ms

/wp-content/plugins/statpress-reloaded/statpress.php

https://bitbucket.org/openfarmtech/weblog-content
PHP | 2143 lines | 1802 code | 196 blank | 145 comment | 297 complexity | dc13578254ba6f93217fd565059f1d82 MD5 | raw file
Possible License(s): GPL-2.0, AGPL-1.0, LGPL-2.0, LGPL-3.0, BSD-3-Clause, GPL-3.0, LGPL-2.1, AGPL-3.0, CC-BY-SA-3.0

Large files files are truncated, but you can click here to view the full file

  1. <?php
  2. /*
  3. Plugin Name: StatPress Reloaded
  4. Plugin URI: http://blog.matrixagents.org/wp-plugins/
  5. Description: Improved real time stats for your blog
  6. Version: 1.5.21
  7. Author: Manuel Grabowski
  8. Author URI: http://blog.matrixagents.org/
  9. */
  10. $_STATPRESS['version'] = '1.5.21';
  11. $_STATPRESS['feedtype'] = '';
  12. if ($_GET['statpress_action'] == 'exportnow')
  13. {
  14. iriStatPressExportNow();
  15. }
  16. function iri_add_pages()
  17. {
  18. // Create table if it doesn't exist
  19. global $wpdb;
  20. $table_name = $wpdb->prefix . 'statpress';
  21. if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name)
  22. {
  23. iri_StatPress_CreateTable();
  24. }
  25. // add submenu
  26. $mincap = get_option('statpress_mincap');
  27. if ($mincap == '')
  28. {
  29. $mincap = 'level_8';
  30. }
  31. add_menu_page('StatPress Reloaded', 'StatPress', $mincap, __FILE__, 'iriStatPress');
  32. add_submenu_page(__FILE__, __('Details', 'statpress'), __('Details', 'statpress'), $mincap, __FILE__ . '&statpress_action=details', 'iriStatPressDetails');
  33. add_submenu_page(__FILE__, __('Spy', 'statpress'), __('Spy', 'statpress'), $mincap, __FILE__ . '&statpress_action=spy', 'iriStatPressSpy');
  34. add_submenu_page(__FILE__, __('Search', 'statpress'), __('Search', 'statpress'), $mincap, __FILE__ . '&statpress_action=search', 'iriStatPressSearch');
  35. add_submenu_page(__FILE__, __('Export', 'statpress'), __('Export', 'statpress'), $mincap, __FILE__ . '&statpress_action=export', 'iriStatPressExport');
  36. add_submenu_page(__FILE__, __('Options', 'statpress'), __('Options', 'statpress'), $mincap, __FILE__ . '&statpress_action=options', 'iriStatPressOptions');
  37. add_submenu_page(__FILE__, __('User Agents', 'statpress'), __('User Agents', 'statpress'), $mincap, __FILE__ . '&statpress_action=agents', 'iriStatPressAgents');
  38. add_submenu_page(__FILE__, __('StatPressUpdate', 'statpress'), __('StatPressUpdate', 'statpress'), $mincap, __FILE__ . '&statpress_action=up', 'iriStatPressUpdate');
  39. //add_submenu_page(__FILE__, __('Support','statpress'), __('Support','statpress'), $mincap, 'http://matrixagents.org/phpBB/viewforum.php?f=3');
  40. }
  41. function permalinksEnabled()
  42. {
  43. global $wpdb;
  44. $result = $wpdb->get_row('SELECT `option_value` FROM `' . $wpdb->prefix . 'options` WHERE `option_name` = "permalink_structure"');
  45. if ($result->option_value != '')
  46. {
  47. return true;
  48. }
  49. else
  50. {
  51. return false;
  52. }
  53. }
  54. function my_substr($str, $x, $y = 0)
  55. {
  56. if($y == 0)
  57. {
  58. $y = strlen($str) - $x;
  59. }
  60. if(function_exists('mb_substr'))
  61. {
  62. return mb_substr($str, $x, $y);
  63. }
  64. else
  65. {
  66. return substr($str, $x, $y);
  67. }
  68. }
  69. function iriStatPress()
  70. {
  71. if ($_GET['statpress_action'] == 'export')
  72. {
  73. iriStatPressExport();
  74. }
  75. elseif ($_GET['statpress_action'] == 'up')
  76. {
  77. iriStatPressUpdate();
  78. }
  79. elseif ($_GET['statpress_action'] == 'spy')
  80. {
  81. iriStatPressSpy();
  82. }
  83. elseif ($_GET['statpress_action'] == 'search')
  84. {
  85. iriStatPressSearch();
  86. }
  87. elseif ($_GET['statpress_action'] == 'details')
  88. {
  89. iriStatPressDetails();
  90. }
  91. elseif ($_GET['statpress_action'] == 'options')
  92. {
  93. iriStatPressOptions();
  94. }
  95. elseif ($_GET['statpress_action'] == 'overview')
  96. {
  97. iriStatPressMain();
  98. }
  99. elseif ($_GET['statpress_action'] == 'agents')
  100. {
  101. iriStatPressAgents();
  102. }
  103. else
  104. {
  105. iriStatPressMain();
  106. }
  107. }
  108. function iriStatPressOptions()
  109. {
  110. if ($_POST['saveit'] == 'yes')
  111. {
  112. update_option('statpress_collectloggeduser', $_POST['statpress_collectloggeduser']);
  113. update_option('statpress_autodelete', $_POST['statpress_autodelete']);
  114. update_option('statpress_daysinoverviewgraph', $_POST['statpress_daysinoverviewgraph']);
  115. update_option('statpress_mincap', $_POST['statpress_mincap']);
  116. update_option('statpress_donotcollectspider', $_POST['statpress_donotcollectspider']);
  117. update_option('statpress_autodelete_spider', $_POST['statpress_autodelete_spider']);
  118. // update database too
  119. iri_StatPress_CreateTable();
  120. print "<br /><div class='updated'><p>" . __('Saved', 'statpress') . "!</p></div>";
  121. }
  122. else
  123. {
  124. ?>
  125. <div class='wrap'><h2><?php
  126. _e('Options', 'statpress');
  127. ?></h2>
  128. <form method=post><table width=100%>
  129. <?php
  130. print "<tr><td><input type=checkbox name='statpress_collectloggeduser' value='checked' " . get_option('statpress_collectloggeduser') . "> " . __('Collect data about logged users, too.', 'statpress') . "</td></tr>";
  131. print "<tr><td><input type=checkbox name='statpress_donotcollectspider' value='checked' " . get_option('statpress_donotcollectspider') . "> " . __('Do not collect spiders visits', 'statpress') . "</td></tr>";
  132. ?>
  133. <tr><td><?php
  134. _e('Automatically delete visits older than', 'statpress');
  135. ?>
  136. <select name="statpress_autodelete">
  137. <option value="" <?php
  138. if (get_option('statpress_autodelete') == '')
  139. print "selected";
  140. ?>><?php
  141. _e('Never delete!', 'statpress');
  142. ?></option>
  143. <option value="1 month" <?php
  144. if (get_option('statpress_autodelete') == "1 month")
  145. print "selected";
  146. ?>>1 <?php
  147. _e('month', 'statpress');
  148. ?></option>
  149. <option value="3 months" <?php
  150. if (get_option('statpress_autodelete') == "3 months")
  151. print "selected";
  152. ?>>3 <?php
  153. _e('months', 'statpress');
  154. ?></option>
  155. <option value="6 months" <?php
  156. if (get_option('statpress_autodelete') == "6 months")
  157. print "selected";
  158. ?>>6 <?php
  159. _e('months', 'statpress');
  160. ?></option>
  161. <option value="1 year" <?php
  162. if (get_option('statpress_autodelete') == "1 year")
  163. print "selected";
  164. ?>>1 <?php
  165. _e('year', 'statpress');
  166. ?></option>
  167. </select></td></tr>
  168. <tr><td><?php _e('Automatically delete spider visits older than','statpress'); ?>
  169. <select name="statpress_autodelete_spider">
  170. <option value="" <?php if(get_option('statpress_autodelete_spider') =='' ) print "selected"; ?>><?php _e('Never delete!','statpress'); ?></option>
  171. <option value="1 day" <?php if(get_option('statpress_autodelete_spider') == "1 day") print "selected"; ?>>1 <?php _e('day','statpress'); ?></option>
  172. <option value="1 week" <?php if(get_option('statpress_autodelete_spider') == "1 week") print "selected"; ?>>1 <?php _e('week','statpress'); ?></option>
  173. <option value="1 month" <?php if(get_option('statpress_autodelete_spider') == "1 month") print "selected"; ?>>1 <?php _e('month','statpress'); ?></option>
  174. <option value="1 year" <?php if(get_option('statpress_autodelete_spider') == "1 year") print "selected"; ?>>1 <?php _e('year','statpress'); ?></option>
  175. </select></td></tr>
  176. <tr><td><?php
  177. _e('Days in Overview graph', 'statpress');
  178. ?>
  179. <select name="statpress_daysinoverviewgraph">
  180. <option value="7" <?php
  181. if (get_option('statpress_daysinoverviewgraph') == 7)
  182. print "selected";
  183. ?>>7</option>
  184. <option value="10" <?php
  185. if (get_option('statpress_daysinoverviewgraph') == 10)
  186. print "selected";
  187. ?>>10</option>
  188. <option value="20" <?php
  189. if (get_option('statpress_daysinoverviewgraph') == 20)
  190. print "selected";
  191. ?>>20</option>
  192. <option value="30" <?php
  193. if (get_option('statpress_daysinoverviewgraph') == 30)
  194. print "selected";
  195. ?>>30</option>
  196. <option value="50" <?php
  197. if (get_option('statpress_daysinoverviewgraph') == 50)
  198. print "selected";
  199. ?>>50</option>
  200. </select></td></tr>
  201. <tr><td><?php
  202. _e('Minimum capability to view stats', 'statpress');
  203. ?>
  204. <select name="statpress_mincap">
  205. <?php
  206. iri_dropdown_caps(get_option('statpress_mincap'));
  207. ?>
  208. </select>
  209. <a href="http://codex.wordpress.org/Roles_and_Capabilities" target="_blank"><?php
  210. _e("more info", 'statpress');
  211. ?></a>
  212. </td></tr>
  213. <tr><td><br><input type=submit value="<?php
  214. _e('Save options', 'statpress');
  215. ?>"></td></tr>
  216. </tr>
  217. </table>
  218. <input type=hidden name=saveit value=yes>
  219. <input type=hidden name=page value=statpress><input type=hidden name=statpress_action value=options>
  220. </form>
  221. </div>
  222. <?php
  223. } // chiude saveit
  224. }
  225. function iri_dropdown_caps($default = false)
  226. {
  227. global $wp_roles;
  228. $role = get_role('administrator');
  229. foreach ($role->capabilities as $cap => $grant)
  230. {
  231. print "<option ";
  232. if ($default == $cap)
  233. {
  234. print "selected ";
  235. }
  236. print ">$cap</option>";
  237. }
  238. }
  239. function iriStatPressExport()
  240. {
  241. ?>
  242. <div class='wrap'><h2><?php
  243. _e('Export stats to text file', 'statpress');
  244. ?> (csv)</h2>
  245. <form method=get><table>
  246. <tr><td><?php
  247. _e('From', 'statpress');
  248. ?></td><td><input type=text name=from> (YYYYMMDD)</td></tr>
  249. <tr><td><?php
  250. _e('To', 'statpress');
  251. ?></td><td><input type=text name=to> (YYYYMMDD)</td></tr>
  252. <tr><td><?php
  253. _e('Fields delimiter', 'statpress');
  254. ?></td><td><select name=del><option>,</option><option>;</option><option>|</option></select></tr>
  255. <tr><td></td><td><input type=submit value=<?php
  256. _e('Export', 'statpress');
  257. ?>></td></tr>
  258. <input type=hidden name=page value=statpress><input type=hidden name=statpress_action value=exportnow>
  259. </table></form>
  260. </div>
  261. <?php
  262. }
  263. function iriStatPressExportNow()
  264. {
  265. global $wpdb;
  266. $table_name = $wpdb->prefix . "statpress";
  267. $filename = get_bloginfo('title') . "-statpress_" . $_GET['from'] . "-" . $_GET['to'] . ".csv";
  268. header('Content-Description: File Transfer');
  269. header("Content-Disposition: attachment; filename=$filename");
  270. header('Content-Type: text/plain charset=' . get_option('blog_charset'), true);
  271. $qry = $wpdb->get_results("SELECT * FROM $table_name WHERE date>='" . (date("Ymd", strtotime(my_substr($_GET['from'], 0, 8)))) . "' AND date<='" . (date("Ymd", strtotime(my_substr($_GET['to'], 0, 8)))) . "';");
  272. $del = my_substr($_GET['del'], 0, 1);
  273. 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";
  274. foreach ($qry as $rk)
  275. {
  276. print '"' . $rk->date . '"' . $del . '"' . $rk->time . '"' . $del . '"' . $rk->ip . '"' . $del . '"' . $rk->urlrequested . '"' . $del . '"' . $rk->agent . '"' . $del . '"' . $rk->referrer . '"' . $del . '"' . urldecode($rk->search) . '"' . $del . '"' . $rk->nation . '"' . $del . '"' . $rk->os . '"' . $del . '"' . $rk->browser . '"' . $del . '"' . $rk->searchengine . '"' . $del . '"' . $rk->spider . '"' . $del . '"' . $rk->feed . '"' . "\n";
  277. }
  278. die();
  279. }
  280. function iriStatPressMain()
  281. {
  282. global $wpdb;
  283. $table_name = $wpdb->prefix . "statpress";
  284. // OVERVIEW table
  285. $unique_color = "#114477";
  286. $web_color = "#3377B6";
  287. $rss_color = "#f38f36";
  288. $spider_color = "#83b4d8";
  289. $lastmonth = iri_StatPress_lastmonth();
  290. $thismonth = gmdate('Ym', current_time('timestamp'));
  291. $yesterday = gmdate('Ymd', current_time('timestamp') - 86400);
  292. $today = gmdate('Ymd', current_time('timestamp'));
  293. $tlm[0] = my_substr($lastmonth, 0, 4);
  294. $tlm[1] = my_substr($lastmonth, 4, 2);
  295. print "<div class='wrap'><h2>" . __('Overview', 'statpress') . "</h2>";
  296. print "<table class='widefat'><thead><tr>
  297. <th scope='col'></th>
  298. <th scope='col'>" . __('Total', 'statpress') . "</th>
  299. <th scope='col'>" . __('Last month', 'statpress') . "<br /><font size=1>" . gmdate('M, Y', gmmktime(0, 0, 0, $tlm[1], 1, $tlm[0])) . "</font></th>
  300. <th scope='col'>" . __('This month', 'statpress') . "<br /><font size=1>" . gmdate('M, Y', current_time('timestamp')) . "</font></th>
  301. <th scope='col'>" . __('Target', 'statpress') . " " . __('This month', 'statpress') . "<br /><font size=1>" . gmdate('M, Y', current_time('timestamp')) . "</font></th>
  302. <th scope='col'>" . __('Yesterday', 'statpress') . "<br /><font size=1>" . gmdate('d M, Y', current_time('timestamp') - 86400) . "</font></th>
  303. <th scope='col'>" . __('Today', 'statpress') . "<br /><font size=1>" . gmdate('d M, Y', current_time('timestamp')) . "</font></th>
  304. </tr></thead>
  305. <tbody id='the-list'>";
  306. //###############################################################################################
  307. // VISITORS ROW
  308. print "<tr><td><div style='background:$unique_color;width:10px;height:10px;float:left;margin-top:4px;margin-right:5px;'></div>" . __('Visitors', 'statpress') . "</td>";
  309. //TOTAL
  310. $qry_total = $wpdb->get_row("
  311. SELECT count(DISTINCT ip) AS visitors
  312. FROM $table_name
  313. WHERE feed=''
  314. AND spider=''
  315. ");
  316. print "<td>" . $qry_total->visitors . "</td>\n";
  317. //LAST MONTH
  318. $qry_lmonth = $wpdb->get_row("
  319. SELECT count(DISTINCT ip) AS visitors
  320. FROM $table_name
  321. WHERE feed=''
  322. AND spider=''
  323. AND date LIKE '" . mysql_real_escape_string($lastmonth) . "%'
  324. ");
  325. print "<td>" . $qry_lmonth->visitors . "</td>\n";
  326. //THIS MONTH
  327. $qry_tmonth = $wpdb->get_row("
  328. SELECT count(DISTINCT ip) AS visitors
  329. FROM $table_name
  330. WHERE feed=''
  331. AND spider=''
  332. AND date LIKE '" . mysql_real_escape_string($thismonth) . "%'
  333. ");
  334. if ($qry_lmonth->visitors <> 0)
  335. {
  336. $pc = round(100 * ($qry_tmonth->visitors / $qry_lmonth->visitors) - 100, 1);
  337. if ($pc >= 0)
  338. $pc = "+" . $pc;
  339. $qry_tmonth->change = "<code> (" . $pc . "%)</code>";
  340. }
  341. print "<td>" . $qry_tmonth->visitors . $qry_tmonth->change . "</td>\n";
  342. //TARGET
  343. $qry_tmonth->target = round($qry_tmonth->visitors / (time() - mktime(0,0,0,date('m'),date('1'),date('Y'))) * (86400 * date('t')));
  344. if ($qry_lmonth->visitors <> 0)
  345. {
  346. $pt = round(100 * ($qry_tmonth->target / $qry_lmonth->visitors) - 100, 1);
  347. if ($pt >= 0)
  348. $pt = "+" . $pt;
  349. $qry_tmonth->added = "<code> (" . $pt . "%)</code>";
  350. }
  351. print "<td>" . $qry_tmonth->target . $qry_tmonth->added . "</td>\n";
  352. //YESTERDAY
  353. $qry_y = $wpdb->get_row("
  354. SELECT count(DISTINCT ip) AS visitors
  355. FROM $table_name
  356. WHERE feed=''
  357. AND spider=''
  358. AND date = '" . mysql_real_escape_string($yesterday) . "'
  359. ");
  360. print "<td>" . $qry_y->visitors . "</td>\n";
  361. //TODAY
  362. $qry_t = $wpdb->get_row("
  363. SELECT count(DISTINCT ip) AS visitors
  364. FROM $table_name
  365. WHERE feed=''
  366. AND spider=''
  367. AND date = '" . mysql_real_escape_string($today) . "'
  368. ");
  369. print "<td>" . $qry_t->visitors . "</td>\n";
  370. print "</tr>";
  371. //###############################################################################################
  372. // PAGEVIEWS ROW
  373. print "<tr><td><div style='background:$web_color;width:10px;height:10px;float:left;margin-top:4px;margin-right:5px;'></div>" . __('Pageviews', 'statpress') . "</td>";
  374. //TOTAL
  375. $qry_total = $wpdb->get_row("
  376. SELECT count(date) as pageview
  377. FROM $table_name
  378. WHERE feed=''
  379. AND spider=''
  380. ");
  381. print "<td>" . $qry_total->pageview . "</td>\n";
  382. //LAST MONTH
  383. $prec = 0;
  384. $qry_lmonth = $wpdb->get_row("
  385. SELECT count(date) as pageview
  386. FROM $table_name
  387. WHERE feed=''
  388. AND spider=''
  389. AND date LIKE '" . mysql_real_escape_string($lastmonth) . "%'
  390. ");
  391. print "<td>" . $qry_lmonth->pageview . "</td>\n";
  392. //THIS MONTH
  393. $qry_tmonth = $wpdb->get_row("
  394. SELECT count(date) as pageview
  395. FROM $table_name
  396. WHERE feed=''
  397. AND spider=''
  398. AND date LIKE '" . mysql_real_escape_string($thismonth) . "%'
  399. ");
  400. if ($qry_lmonth->pageview <> 0)
  401. {
  402. $pc = round(100 * ($qry_tmonth->pageview / $qry_lmonth->pageview) - 100, 1);
  403. if ($pc >= 0)
  404. $pc = "+" . $pc;
  405. $qry_tmonth->change = "<code> (" . $pc . "%)</code>";
  406. }
  407. print "<td>" . $qry_tmonth->pageview . $qry_tmonth->change . "</td>\n";
  408. //TARGET
  409. $qry_tmonth->target = round($qry_tmonth->pageview / (time() - mktime(0,0,0,date('m'),date('1'),date('Y'))) * (86400 * date('t')));
  410. if ($qry_lmonth->pageview <> 0)
  411. {
  412. $pt = round(100 * ($qry_tmonth->target / $qry_lmonth->pageview) - 100, 1);
  413. if ($pt >= 0)
  414. $pt = "+" . $pt;
  415. $qry_tmonth->added = "<code> (" . $pt . "%)</code>";
  416. }
  417. print "<td>" . $qry_tmonth->target . $qry_tmonth->added . "</td>\n";
  418. //YESTERDAY
  419. $qry_y = $wpdb->get_row("
  420. SELECT count(date) as pageview
  421. FROM $table_name
  422. WHERE feed=''
  423. AND spider=''
  424. AND date = '" . mysql_real_escape_string($yesterday) . "'
  425. ");
  426. print "<td>" . $qry_y->pageview . "</td>\n";
  427. //TODAY
  428. $qry_t = $wpdb->get_row("
  429. SELECT count(date) as pageview
  430. FROM $table_name
  431. WHERE feed=''
  432. AND spider=''
  433. AND date = '" . mysql_real_escape_string($today) . "'
  434. ");
  435. print "<td>" . $qry_t->pageview . "</td>\n";
  436. print "</tr>";
  437. //###############################################################################################
  438. // SPIDERS ROW
  439. print "<tr><td><div style='background:$spider_color;width:10px;height:10px;float:left;margin-top:4px;margin-right:5px;'></div>" . __('Spiders', 'statpress') . "</td>";
  440. //TOTAL
  441. $qry_total = $wpdb->get_row("
  442. SELECT count(date) as spiders
  443. FROM $table_name
  444. WHERE feed=''
  445. AND spider<>''
  446. ");
  447. print "<td>" . $qry_total->spiders . "</td>\n";
  448. //LAST MONTH
  449. $prec = 0;
  450. $qry_lmonth = $wpdb->get_row("
  451. SELECT count(date) as spiders
  452. FROM $table_name
  453. WHERE feed=''
  454. AND spider<>''
  455. AND date LIKE '" . mysql_real_escape_string($lastmonth) . "%'
  456. ");
  457. print "<td>" . $qry_lmonth->spiders . "</td>\n";
  458. //THIS MONTH
  459. $prec = $qry_lmonth->spiders;
  460. $qry_tmonth = $wpdb->get_row("
  461. SELECT count(date) as spiders
  462. FROM $table_name
  463. WHERE feed=''
  464. AND spider<>''
  465. AND date LIKE '" . mysql_real_escape_string($thismonth) . "%'
  466. ");
  467. if ($qry_lmonth->spiders <> 0)
  468. {
  469. $pc = round(100 * ($qry_tmonth->spiders / $qry_lmonth->spiders) - 100, 1);
  470. if ($pc >= 0)
  471. $pc = "+" . $pc;
  472. $qry_tmonth->change = "<code> (" . $pc . "%)</code>";
  473. }
  474. print "<td>" . $qry_tmonth->spiders . $qry_tmonth->change . "</td>\n";
  475. //TARGET
  476. $qry_tmonth->target = round($qry_tmonth->spiders / (time() - mktime(0,0,0,date('m'),date('1'),date('Y'))) * (86400 * date('t')));
  477. if ($qry_lmonth->spiders <> 0)
  478. {
  479. $pt = round(100 * ($qry_tmonth->target / $qry_lmonth->spiders) - 100, 1);
  480. if ($pt >= 0)
  481. $pt = "+" . $pt;
  482. $qry_tmonth->added = "<code> (" . $pt . "%)</code>";
  483. }
  484. print "<td>" . $qry_tmonth->target . $qry_tmonth->added . "</td>\n";
  485. //YESTERDAY
  486. $qry_y = $wpdb->get_row("
  487. SELECT count(date) as spiders
  488. FROM $table_name
  489. WHERE feed=''
  490. AND spider<>''
  491. AND date = '" . mysql_real_escape_string($yesterday) . "'
  492. ");
  493. print "<td>" . $qry_y->spiders . "</td>\n";
  494. //TODAY
  495. $qry_t = $wpdb->get_row("
  496. SELECT count(date) as spiders
  497. FROM $table_name
  498. WHERE feed=''
  499. AND spider<>''
  500. AND date = '" . mysql_real_escape_string($today) . "'
  501. ");
  502. print "<td>" . $qry_t->spiders . "</td>\n";
  503. print "</tr>";
  504. //###############################################################################################
  505. // FEEDS ROW
  506. print "<tr><td><div style='background:$rss_color;width:10px;height:10px;float:left;margin-top:4px;margin-right:5px;'></div>" . __('Feeds', 'statpress') . "</td>";
  507. //TOTAL
  508. $qry_total = $wpdb->get_row("
  509. SELECT count(date) as feeds
  510. FROM $table_name
  511. WHERE feed<>''
  512. AND spider=''
  513. ");
  514. print "<td>" . $qry_total->feeds . "</td>\n";
  515. //LAST MONTH
  516. $qry_lmonth = $wpdb->get_row("
  517. SELECT count(date) as feeds
  518. FROM $table_name
  519. WHERE feed<>''
  520. AND spider=''
  521. AND date LIKE '" . mysql_real_escape_string($lastmonth) . "%'
  522. ");
  523. print "<td>" . $qry_lmonth->feeds . "</td>\n";
  524. //THIS MONTH
  525. $qry_tmonth = $wpdb->get_row("
  526. SELECT count(date) as feeds
  527. FROM $table_name
  528. WHERE feed<>''
  529. AND spider=''
  530. AND date LIKE '" . mysql_real_escape_string($thismonth) . "%'
  531. ");
  532. if ($qry_lmonth->feeds <> 0)
  533. {
  534. $pc = round(100 * ($qry_tmonth->feeds / $qry_lmonth->feeds) - 100, 1);
  535. if ($pc >= 0)
  536. $pc = "+" . $pc;
  537. $qry_tmonth->change = "<code> (" . $pc . "%)</code>";
  538. }
  539. print "<td>" . $qry_tmonth->feeds . $qry_tmonth->change . "</td>\n";
  540. //TARGET
  541. $qry_tmonth->target = round($qry_tmonth->feeds / (time() - mktime(0,0,0,date('m'),date('1'),date('Y'))) * (86400 * date('t')));
  542. if ($qry_lmonth->feeds <> 0)
  543. {
  544. $pt = round(100 * ($qry_tmonth->target / $qry_lmonth->feeds) - 100, 1);
  545. if ($pt >= 0)
  546. $pt = "+" . $pt;
  547. $qry_tmonth->added = "<code> (" . $pt . "%)</code>";
  548. }
  549. print "<td>" . $qry_tmonth->target . $qry_tmonth->added . "</td>\n";
  550. $qry_y = $wpdb->get_row("
  551. SELECT count(date) as feeds
  552. FROM $table_name
  553. WHERE feed<>''
  554. AND spider=''
  555. AND date = '" . mysql_real_escape_string($yesterday) . "'
  556. ");
  557. print "<td>" . $qry_y->feeds . "</td>\n";
  558. $qry_t = $wpdb->get_row("
  559. SELECT count(date) as feeds
  560. FROM $table_name
  561. WHERE feed<>''
  562. AND spider=''
  563. AND date = '" . mysql_real_escape_string($today) . "'
  564. ");
  565. print "<td>" . $qry_t->feeds . "</td>\n";
  566. print "</tr></table><br />\n\n";
  567. //###############################################################################################
  568. //###############################################################################################
  569. // THE GRAPHS
  570. // last "N" days graph NEW
  571. $gdays = get_option('statpress_daysinoverviewgraph');
  572. if ($gdays == 0)
  573. {
  574. $gdays = 20;
  575. }
  576. // $start_of_week = get_settings('start_of_week');
  577. $start_of_week = get_option('start_of_week');
  578. print '<table width="100%" border="0"><tr>';
  579. $qry = $wpdb->get_row("
  580. SELECT count(date) as pageview, date
  581. FROM $table_name
  582. GROUP BY date HAVING date >= '" . gmdate('Ymd', current_time('timestamp') - 86400 * $gdays) . "'
  583. ORDER BY pageview DESC
  584. LIMIT 1
  585. ");
  586. $maxxday = $qry->pageview;
  587. if ($maxxday == 0)
  588. {
  589. $maxxday = 1;
  590. }
  591. // Y
  592. $gd = (90 / $gdays) . '%';
  593. for ($gg = $gdays - 1; $gg >= 0; $gg--)
  594. {
  595. //TOTAL VISITORS
  596. $qry_visitors = $wpdb->get_row("
  597. SELECT count(DISTINCT ip) AS total
  598. FROM $table_name
  599. WHERE feed=''
  600. AND spider=''
  601. AND date = '" . gmdate('Ymd', current_time('timestamp') - 86400 * $gg) . "'
  602. ");
  603. $px_visitors = round($qry_visitors->total * 100 / $maxxday);
  604. //TOTAL PAGEVIEWS (we do not delete the uniques, this is falsing the info.. uniques are not different visitors!)
  605. $qry_pageviews = $wpdb->get_row("
  606. SELECT count(date) as total
  607. FROM $table_name
  608. WHERE feed=''
  609. AND spider=''
  610. AND date = '" . gmdate('Ymd', current_time('timestamp') - 86400 * $gg) . "'
  611. ");
  612. $px_pageviews = round($qry_pageviews->total * 100 / $maxxday);
  613. //TOTAL SPIDERS
  614. $qry_spiders = $wpdb->get_row("
  615. SELECT count(ip) AS total
  616. FROM $table_name
  617. WHERE feed=''
  618. AND spider<>''
  619. AND date = '" . gmdate('Ymd', current_time('timestamp') - 86400 * $gg) . "'
  620. ");
  621. $px_spiders = round($qry_spiders->total * 100 / $maxxday);
  622. //TOTAL FEEDS
  623. $qry_feeds = $wpdb->get_row("
  624. SELECT count(ip) AS total
  625. FROM $table_name
  626. WHERE feed<>''
  627. AND spider=''
  628. AND date = '" . gmdate('Ymd', current_time('timestamp') - 86400 * $gg) . "'
  629. ");
  630. $px_feeds = round($qry_feeds->total * 100 / $maxxday);
  631. $px_white = 100 - $px_feeds - $px_spiders - $px_pageviews - $px_visitors;
  632. print '<td width="' . $gd . '" valign="bottom"';
  633. if ($start_of_week == gmdate('w', current_time('timestamp') - 86400 * $gg))
  634. {
  635. print ' style="border-left:2px dotted gray;"';
  636. }
  637. // week-cut
  638. 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;'>
  639. <div style='background:#ffffff;width:100%;height:" . $px_white . "px;'></div>
  640. <div style='background:$unique_color;width:100%;height:" . $px_visitors . "px;' title='" . $qry_visitors->total . " " . __('visitors', 'statpress')."'></div>
  641. <div style='background:$web_color;width:100%;height:" . $px_pageviews . "px;' title='" . $qry_pageviews->total . " " . __('pageviews', 'statpress')."'></div>
  642. <div style='background:$spider_color;width:100%;height:" . $px_spiders . "px;' title='" . $qry_spiders->total . " " . __('spiders', 'statpress')."'></div>
  643. <div style='background:$rss_color;width:100%;height:" . $px_feeds . "px;' title='" . $qry_feeds->total . " " . __('feeds', 'statpress')."'></div>
  644. <div style='background:gray;width:100%;height:1px;'></div>
  645. <br />" . gmdate('d', current_time('timestamp') - 86400 * $gg) . ' ' . gmdate('M', current_time('timestamp') - 86400 * $gg) . "</div></td>\n";
  646. }
  647. print '</tr></table>';
  648. print '</div>';
  649. // END OF OVERVIEW
  650. //###################################################################################################
  651. $querylimit = "LIMIT 20";
  652. // Tabella Last hits
  653. 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', 'statpress') . "</th><th scope='col'>" . __('Threat', 'statpress') . "</th><th scope='col'>" . __('Domain', 'statpress') . "</th><th scope='col'>" . __('Page', 'statpress') . "</th><th scope='col'>" . __('OS', 'statpress') . "</th><th scope='col'>" . __('Browser', 'statpress') . "</th><th scope='col'>" . __('Feed', 'statpress') . "</th></tr></thead>";
  654. print "<tbody id='the-list'>";
  655. $fivesdrafts = $wpdb->get_results("SELECT * FROM $table_name WHERE (os<>'' OR feed<>'') order by id DESC $querylimit");
  656. foreach ($fivesdrafts as $fivesdraft)
  657. {
  658. print "<tr>";
  659. print "<td>" . irihdate($fivesdraft->date) . "</td>";
  660. print "<td>" . $fivesdraft->time . "</td>";
  661. print "<td>" . $fivesdraft->ip . "</td>";
  662. print "<td>" . $fivesdraft->threat_score;
  663. if ($fivesdraft->threat_score > 0)
  664. {
  665. print "/";
  666. if ($fivesdraft->threat_type == 0)
  667. print "Sp"; // Spider
  668. else
  669. {
  670. if (($fivesdraft->threat_type & 1) == 1)
  671. print "S"; // Suspicious
  672. if (($fivesdraft->threat_type & 2) == 2)
  673. print "H"; // Harvester
  674. if (($fivesdraft->threat_type & 4) == 4)
  675. print "C"; // Comment spammer
  676. }
  677. }
  678. print "<td>" . $fivesdraft->nation . "</td>";
  679. print "<td>" . iri_StatPress_Abbrevia(iri_StatPress_Decode($fivesdraft->urlrequested), 30) . "</td>";
  680. print "<td>" . $fivesdraft->os . "</td>";
  681. print "<td>" . $fivesdraft->browser . "</td>";
  682. print "<td>" . $fivesdraft->feed . "</td>";
  683. print "</tr>";
  684. }
  685. print "</table></div>";
  686. // Last Search terms
  687. 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>";
  688. print "<tbody id='the-list'>";
  689. $qry = $wpdb->get_results("SELECT date,time,referrer,urlrequested,search,searchengine FROM $table_name WHERE search<>'' ORDER BY id DESC $querylimit");
  690. foreach ($qry as $rk)
  691. {
  692. print "<tr><td>" . irihdate($rk->date) . "</td><td>" . $rk->time . "</td><td><a href='" . $rk->referrer . "'>" . urldecode($rk->search) . "</a></td><td>" . $rk->searchengine . "</td><td><a href='" . irigetblogurl() . ((strpos($rk->urlrequested, 'index.php') === FALSE) ? $rk->urlrequested : '') . "'>" . __('page viewed', 'statpress') . "</a></td></tr>\n";
  693. }
  694. print "</table></div>";
  695. // Referrer
  696. 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>";
  697. print "<tbody id='the-list'>";
  698. $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");
  699. foreach ($qry as $rk)
  700. {
  701. 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='" . irigetblogurl() . ((strpos($rk->urlrequested, 'index.php') === FALSE) ? $rk->urlrequested : '') . "'>" . __('page viewed', 'statpress') . "</a></td></tr>\n";
  702. }
  703. print "</table></div>";
  704. // Last Agents
  705. 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>";
  706. print "<tbody id='the-list'>";
  707. $qry = $wpdb->get_results("SELECT date,time,agent,os,browser,spider FROM $table_name WHERE (agent <>'') ORDER BY id DESC $querylimit");
  708. foreach ($qry as $rk)
  709. {
  710. 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";
  711. }
  712. print "</table></div>";
  713. // Last pages
  714. 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>";
  715. print "<tbody id='the-list'>";
  716. $qry = $wpdb->get_results("SELECT date,time,urlrequested,os,browser,spider FROM $table_name WHERE (spider='' AND feed='') ORDER BY id DESC $querylimit");
  717. foreach ($qry as $rk)
  718. {
  719. 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";
  720. }
  721. print "</table></div>";
  722. // Last Spiders
  723. print "<div class='wrap'><h2>" . __('Last spiders', 'statpress') . "</h2>";
  724. print "<table class='widefat'><thead><tr>";
  725. print "<th scope='col'>" . __('Date', 'statpress') . "</th>";
  726. print "<th scope='col'>" . __('Time', 'statpress') . "</th>";
  727. print "<th scope='col'>" . __('Spider', 'statpress') . "</th>";
  728. print "<th scope='col'>" . __('Page', 'statpress') . "</th>";
  729. print "<th scope='col'>" . __('Agent', 'statpress') . "</th>";
  730. print "</tr></thead><tbody id='the-list'>";
  731. $qry = $wpdb->get_results("SELECT date,time,agent,spider,urlrequested,agent FROM $table_name WHERE (spider<>'') ORDER BY id DESC $querylimit");
  732. foreach ($qry as $rk)
  733. {
  734. print "<tr><td>" . irihdate($rk->date) . "</td>";
  735. print "<td>" . $rk->time . "</td>";
  736. print "<td>" . $rk->spider . "</td>";
  737. print "<td>" . iri_StatPress_Abbrevia(iri_StatPress_Decode($rk->urlrequested), 30) . "</td>";
  738. print "<td> " . $rk->agent . "</td></tr>\n";
  739. }
  740. print "</table></div>";
  741. print "<br />";
  742. print "&nbsp;<i>" . __('StatPress table size', 'statpress') . ": <b>" . iritablesize($wpdb->prefix . "statpress") . "</b></i><br />";
  743. print "&nbsp;<i>" . __('StatPress current time', 'statpress') . ": <b>" . current_time('mysql') . "</b></i><br />";
  744. print "&nbsp;<i>" . __('RSS2 url', 'statpress') . ": <b>" . get_bloginfo('rss2_url') . ' (' . iri_StatPress_extractfeedreq(get_bloginfo('rss2_url')) . ")</b></i><br />";
  745. print "&nbsp;<i>" . __('ATOM url', 'statpress') . ": <b>" . get_bloginfo('atom_url') . ' (' . iri_StatPress_extractfeedreq(get_bloginfo('atom_url')) . ")</b></i><br />";
  746. print "&nbsp;<i>" . __('RSS url', 'statpress') . ": <b>" . get_bloginfo('rss_url') . ' (' . iri_StatPress_extractfeedreq(get_bloginfo('rss_url')) . ")</b></i><br />";
  747. print "&nbsp;<i>" . __('COMMENT RSS2 url', 'statpress') . ": <b>" . get_bloginfo('comments_rss2_url') . ' (' . iri_StatPress_extractfeedreq(get_bloginfo('comments_rss2_url')) . ")</b></i><br />";
  748. print "&nbsp;<i>" . __('COMMENT ATOM url', 'statpress') . ": <b>" . get_bloginfo('comments_atom_url') . ' (' . iri_StatPress_extractfeedreq(get_bloginfo('comments_atom_url')) . ")</b></i><br />";
  749. }
  750. function iriStatPressDetails()
  751. {
  752. global $wpdb;
  753. $table_name = $wpdb->prefix . "statpress";
  754. $querylimit = "LIMIT 10";
  755. // Top days
  756. iriValueTable("date", __('Top days', 'statpress'), 5);
  757. // O.S.
  758. iriValueTable("os", __('O.S.', 'statpress'), 0, "", "", "AND feed='' AND spider='' AND os<>''");
  759. // Browser
  760. iriValueTable("browser", __('Browser', 'statpress'), 0, "", "", "AND feed='' AND spider='' AND browser<>''");
  761. // Feeds
  762. iriValueTable("feed", __('Feeds', 'statpress'), 5, "", "", "AND feed<>''");
  763. // SE
  764. iriValueTable("searchengine", __('Search engines', 'statpress'), 10, "", "", "AND searchengine<>''");
  765. // Search terms
  766. iriValueTable("search", __('Top search terms', 'statpress'), 20, "", "", "AND search<>''");
  767. // Top referrer
  768. iriValueTable("referrer", __('Top referrer', 'statpress'), 10, "", "", "AND referrer<>'' AND referrer NOT LIKE '%" . get_bloginfo('url') . "%'");
  769. // Countries
  770. iriValueTable("nation", __('Countries (domains)', 'statpress'), 10, "", "", "AND nation<>'' AND spider=''");
  771. // Spider
  772. iriValueTable("spider", __('Spiders', 'statpress'), 10, "", "", "AND spider<>''");
  773. // Top Pages
  774. iriValueTable("urlrequested", __('Top pages', 'statpress'), 5, "", "urlrequested", "AND feed='' and spider=''");
  775. // Top Days - Unique visitors
  776. iriValueTable("date", __('Top Days - Unique visitors', 'statpress'), 5, "distinct", "ip", "AND feed='' and spider=''");
  777. /* Maddler 04112007: required patching iriValueTable */
  778. // Top Days - Pageviews
  779. iriValueTable("date", __('Top Days - Pageviews', 'statpress'), 5, "", "urlrequested", "AND feed='' and spider=''");
  780. /* Maddler 04112007: required patching iriValueTable */
  781. // Top IPs - Pageviews
  782. iriValueTable("ip", __('Top IPs - Pageviews', 'statpress'), 5, "", "urlrequested", "AND feed='' and spider=''");
  783. /* Maddler 04112007: required patching iriValueTable */
  784. }
  785. function iriStatPressSpy()
  786. {
  787. global $wpdb;
  788. $table_name = $wpdb->prefix . "statpress";
  789. $LIMIT = 20;
  790. if(isset($_GET['pn']))
  791. {
  792. // Get Current page from URL
  793. $page = $_GET['pn'];
  794. if($page <= 0)
  795. {
  796. // Page is less than 0 then set it to 1
  797. $page = 1;
  798. }
  799. }
  800. else
  801. {
  802. // URL does not show the page set it to 1
  803. $page = 1;
  804. }
  805. // Create MySQL Query String
  806. $strqry = "SELECT id FROM $table_name WHERE (spider='' AND feed='') GROUP BY ip";
  807. $query = $wpdb->get_results($strqry);
  808. $TOTALROWS = $wpdb->num_rows;
  809. $NumOfPages = $TOTALROWS / $LIMIT;
  810. $LimitValue = ($page * $LIMIT) - $LIMIT;
  811. // Spy
  812. $today = gmdate('Ymd', current_time('timestamp'));
  813. $yesterday = gmdate('Ymd', current_time('timestamp') - 86400);
  814. print "<div class='wrap'><h2>" . __('Spy', 'statpress') . "</h2>";
  815. $sql = "SELECT ip,nation,os,browser,agent FROM $table_name WHERE (spider='' AND feed='') GROUP BY ip ORDER BY id DESC LIMIT $LimitValue, $LIMIT";
  816. $qry = $wpdb->get_results($sql);
  817. ?>
  818. <script>
  819. function ttogle(thediv){
  820. if (document.getElementById(thediv).style.display=="inline") {
  821. document.getElementById(thediv).style.display="none"
  822. } else {document.getElementById(thediv).style.display="inline"}
  823. }
  824. </script>
  825. <div align="center">
  826. <div id="paginating" align="center">Pages:
  827. <?php
  828. // Check to make sure we&#x2019;re not on page 1 or Total number of pages is not 1
  829. if($page == ceil($NumOfPages) && $page != 1) {
  830. for($i = 1; $i <= ceil($NumOfPages)-1; $i++) {
  831. // Loop through the number of total pages
  832. if($i > 0) {
  833. // if $i greater than 0 display it as a hyperlink
  834. echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=statpress-reloaded/statpress.php&statpress_action=spy&pn=' . $i . '">' . $i . '</a> ';
  835. }
  836. }
  837. }
  838. if($page == ceil($NumOfPages) ) {
  839. $startPage = $page;
  840. } else {
  841. $startPage = 1;
  842. }
  843. for ($i = $startPage; $i <= $page+6; $i++) {
  844. // Display first 7 pages
  845. if ($i <= ceil($NumOfPages)) {
  846. // $page is not the last page
  847. if($i == $page) {
  848. // $page is current page
  849. echo " [{$i}] ";
  850. } else {
  851. // Not the current page Hyperlink them
  852. echo '<a href="' . $_SERVER['SCRIPT_NAME'] . '?page=statpress-reloaded/statpress.php&statpress_action=spy&pn=' . $i . '">' . $i . '</a> ';
  853. }
  854. }
  855. }
  856. ?>
  857. </div>
  858. <table id="mainspytab" name="mainspytab" width="99%" border="0" cellspacing="0" cellpadding="4">
  859. <?php
  860. foreach ($qry as $rk)
  861. {
  862. print "<tr><td colspan='2' bgcolor='#dedede'><div align='left'>";
  863. print "<IMG SRC='http://api.hostip.info/flag.php?ip=" . $rk->ip . "' border=0 width=18 height=12>";
  864. print " <strong><span><font size='2' color='#7b7b7b'>" . $rk->ip . "</font></span></strong> ";
  865. print "<span style='color:#006dca;cursor:pointer;border-bottom:1px dotted #AFD5F9;font-size:8pt;' onClick=ttogle('" . $rk->ip . "');>" . __('more info', 'statpress') . "</span></div>";
  866. print "<div id='" . $rk->ip . "' name='" . $rk->ip . "'>" . $rk->os . ", " . $rk->browser;
  867. // print "<br><iframe style='overflow:hide;border:0px;width:100%;height:15px;font-family:helvetica;paddng:0;' scrolling='no' marginwidth=0 marginheight=0 src=http://showip.fakap.net/txt/".$rk->ip."></iframe>";
  868. print "<br><iframe style='overflow:hide;border:0px;width:100%;height:40px;font-family:helvetica;paddng:0;' scrolling='no' marginwidth=0 marginheight=0 src=http://api.hostip.info/get_html.php?ip=" . $rk->ip . "></iframe>";
  869. if ($rk->nation)
  870. {
  871. print "<br><small>" . gethostbyaddr($rk->ip) . "</small>";
  872. }
  873. print "<br><small>" . $rk->agent . "</small>";
  874. print "</div>";
  875. print "<script>document.getElementById('" . $rk->ip . "').style.display='none';</script>";
  876. print "</td></tr>";
  877. $qry2 = $wpdb->get_results("SELECT * FROM $table_name WHERE ip='" . $rk->ip . "' AND (date BETWEEN '$yesterday' AND '$today') order by id LIMIT 10");
  878. foreach ($qry2 as $details)
  879. {
  880. print "<tr>";
  881. print "<td valign='top' width='151'><div><font size='1' color='#3B3B3B'><strong>" . irihdate($details->date) . " " . $details->time . "</strong></font></div></td>";
  882. print "<td><div><a href='" . irigetblogurl() . ((strpos($details->urlrequested, 'index.php') === FALSE) ? $details->urlrequested : '') . "' target='_blank'>" . iri_StatPress_Decode($details->urlrequested) . "</a>";
  883. if ($details->searchengine != '')
  884. {
  885. print "<br><small>" . __('arrived from', 'statpress') . " <b>" . $details->searchengine . "</b> " . __('searching', 'statpress') . " <a href='" . $details->referrer . "' target=_blank>" . urldecode($details->search) . "</a></small>";
  886. }
  887. elseif ($details->referrer != '' && strpos($details->referrer, get_option('home')) === false)
  888. {
  889. print "<br><small>" . __('arrived from', 'statpress') . " <a href='" . $details->referrer . "' target=_blank>" . $details->referrer . "</a></small>";
  890. }
  891. print "</div></td>";
  892. print "</tr>\n";
  893. }
  894. }
  895. ?>
  896. </table>
  897. </div>
  898. <?php
  899. }
  900. function iriStatPressSearch($what = '')
  901. {
  902. global $wpdb;
  903. $table_name = $wpdb->prefix . "statpress";
  904. $f['urlrequested'] = __('URL Requested', 'statpress');
  905. $f['agent'] = __('Agent', 'statpress');
  906. $f['referrer'] = __('Referrer', 'statpress');
  907. $f['search'] = __('Search terms', 'statpress');
  908. $f['searchengine'] = __('Search engine', 'statpress');
  909. $f['os'] = __('Operative system', 'statpress');
  910. $f['browser'] = __('Browser', 'statpress');
  911. $f['spider'] = __('Spider', 'statpress');
  912. $f['ip'] = __('IP', 'statpress');
  913. ?>
  914. <div class='wrap'><h2><?php
  915. _e('Search', 'statpress');
  916. ?></h2>
  917. <form method=get><table>
  918. <?php
  919. for ($i = 1; $i <= 3; $i++)
  920. {
  921. print "<tr>";
  922. print "<td>" . __('Field', 'statpress') . " <select name=where$i><option value=''></option>";
  923. foreach (array_keys($f) as $k)
  924. {
  925. print "<option value='$k'";
  926. if ($_GET["where$i"] == $k)
  927. {
  928. print " SELECTED ";
  929. }
  930. print ">" . $f[$k] . "</option>";
  931. }
  932. print "</select></td>";
  933. print "<td><input type=checkbox name=groupby$i value='checked' " . $_GET["groupby$i"] . "> " . __('Group by', 'statpress') . "</td>";
  934. print "<td><input type=checkbox name=sortby$i value='checked' " . $_GET["sortby$i"] . "> " . __('Sort by', 'statpress') . "</td>";
  935. print "<td>, " . __('if contains', 'statpress') . " <input type=text name=what$i value='" . $_GET["what$i"] . "'></td>";
  936. print "</tr>";
  937. }
  938. ?>
  939. </table>
  940. <br>
  941. <table>
  942. <tr>
  943. <td>
  944. <table>
  945. <tr><td><input type=checkbox name=oderbycount value=checked <?php
  946. print $_GET['oderbycount']
  947. ?>> <?php
  948. _e('sort by count if grouped', 'statpress');
  949. ?></td></tr>
  950. <tr><td><input type=checkbox name=spider value=checked <?php
  951. print $_GET['spider']
  952. ?>> <?php
  953. _e('include spiders/crawlers/bot', 'statpress');
  954. ?></td></tr>
  955. <tr><td><input type=checkbox name=feed value=checked <?php
  956. print $_GET['feed']
  957. ?>> <?php
  958. _e('include feed', 'statpress');
  959. ?></td></tr>
  960. <tr><td><input type=checkbox name=distinct value=checked <?php
  961. print $_GET['distinct']
  962. ?>> <?php
  963. _e('SELECT DISTINCT', 'statpress');
  964. ?></td></tr>
  965. </table>
  966. </td>
  967. <td width=15> </td>
  968. <td>
  969. <table>
  970. <tr>
  971. <td><?php
  972. _e('Limit results to', 'statpress');
  973. ?>
  974. <select name=limitquery><?php
  975. if ($_GET['limitquery'] > 0)
  976. {
  977. print "<option>" . $_GET['limitquery'] . "</option>";
  978. }
  979. ?><option>1</option><option>5</option><option>10</option><option>20</option><option>50</option><option>100</option><option>250</option><option>500</option></select>
  980. </td>
  981. </tr>
  982. <tr><td>&nbsp;</td></tr>
  983. <tr>
  984. <td align=right><input type=submit value=<?php
  985. _e('Search', 'statpress');
  986. ?> name=searchsubmit></td>
  987. </tr>
  988. </table>
  989. </td>
  990. </tr>
  991. </table>
  992. <input type=hidden name=page value='statpress-reloaded/statpress.php'><input type=hidden name=statpress_action value=search>
  993. </form><br>
  994. <?php
  995. if (isset($_GET['searchsubmit']))
  996. {
  997. // query builder
  998. $qry = "";
  999. // FIELDS
  1000. $fields = "";
  1001. for ($i = 1; $i <= 3; $i++)
  1002. {
  1003. if ($_GET["where$i"] != '')
  1004. {
  1005. $fields .= $_GET["where$i"] . ",";
  1006. }
  1007. }
  1008. $fields = rtrim($fields, ",");
  1009. // WHERE
  1010. $where = "WHERE 1=1";
  1011. if ($_GET['spider'] != 'checked')
  1012. {
  1013. $where .= " AND spider=''";
  1014. }
  1015. if ($_GET['feed'] != 'checked')
  1016. {
  1017. $where .= " AND feed=''";
  1018. }
  1019. for ($i = 1; $i <= 3; $i++)
  1020. {
  1021. if (($_GET["what$i"] != '') && ($_GET["where$i"] != ''))
  1022. {
  1023. $where .= " AND " . $_GET["where$i"] . " LIKE '%" . mysql_real_escape_string($_GET["what$i"]) . "%'";
  1024. }
  1025. }
  1026. // ORDER BY
  1027. $orderby = "";
  1028. for ($i = 1; $i <= 3; $i++)
  1029. {
  1030. if (($_GET["sortby$i"] == 'checked') && ($_GET["where$i"] !=

Large files files are truncated, but you can click here to view the full file