PageRenderTime 53ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/referers.php

http://github.com/MightyGorgon/icy_phoenix
PHP | 198 lines | 142 code | 30 blank | 26 comment | 8 complexity | 8fc8d99d656964c6216ad654b467c76c MD5 | raw file
Possible License(s): AGPL-1.0
  1. <?php
  2. /**
  3. *
  4. * @package Icy Phoenix
  5. * @version $Id$
  6. * @copyright (c) 2008 Icy Phoenix
  7. * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  8. *
  9. */
  10. /**
  11. *
  12. * @Extra credits for this file
  13. * Bicet (bicets@gmail.com)
  14. *
  15. */
  16. define('IN_ICYPHOENIX', true);
  17. if (!defined('IP_ROOT_PATH')) define('IP_ROOT_PATH', './');
  18. if (!defined('PHP_EXT')) define('PHP_EXT', substr(strrchr(__FILE__, '.'), 1));
  19. include(IP_ROOT_PATH . 'common.' . PHP_EXT);
  20. // Start session management
  21. $user->session_begin();
  22. $auth->acl($user->data);
  23. $user->setup();
  24. // End session management
  25. // FORM CLASS - BEGIN
  26. include(IP_ROOT_PATH . 'includes/class_form.' . PHP_EXT);
  27. $class_form = new class_form();
  28. // FORM CLASS - END
  29. if ($config['disable_referers'] == true)
  30. {
  31. //message_die(GENERAL_MESSAGE, $lang['Feature_Disabled']);
  32. }
  33. $cms_page['page_id'] = 'referers';
  34. $cms_page['page_nav'] = (!empty($cms_config_layouts[$cms_page['page_id']]['page_nav']) ? true : false);
  35. $cms_page['global_blocks'] = (!empty($cms_config_layouts[$cms_page['page_id']]['global_blocks']) ? true : false);
  36. $cms_auth_level = (isset($cms_config_layouts[$cms_page['page_id']]['view']) ? $cms_config_layouts[$cms_page['page_id']]['view'] : AUTH_ALL);
  37. check_page_auth($cms_page['page_id'], $cms_auth_level);
  38. $start = request_var('start', 0);
  39. $start = ($start < 0) ? 0 : $start;
  40. // Referers sorting
  41. // GROUP BY - BEGIN
  42. $group_by_select_lang_array = array($lang['None'], $lang['REFERER_HOST'], $lang['REFERER_URL'], $lang['REFERER_T_URL'], $lang['REFERER_IP']);
  43. $group_by_select_array = array('0', 'host', 'url', 't_url', 'ip');
  44. $group_by = request_var('group_by', $group_by_select_array[0]);
  45. $group_by = (in_array($group_by, $group_by_select_array) ? $group_by : $group_by_select_array[0]);
  46. $select_name = 'group_by';
  47. $default = $group_by;
  48. $select_js = '';
  49. $group_by_select_box = $class_form->build_select_box($select_name, $default, $group_by_select_array, $group_by_select_lang_array, $select_js);
  50. // GROUP BY - END
  51. // SORT ORDER - BEGIN
  52. $sort_order_select_lang_array = array($lang['REFERER_HITS'], $lang['REFERER_HOST'], $lang['REFERER_URL'], $lang['REFERER_T_URL'], $lang['REFERER_IP'], $lang['REFERER_FIRST'], $lang['REFERER_LAST']);
  53. $sort_order_select_array = array('hits', 'host', 'url', 't_url', 'ip', 'first_visit', 'last_visit');
  54. $mode = request_var('mode', $sort_order_select_array[0]);
  55. $mode = (in_array($mode, $sort_order_select_array) ? $mode : $sort_order_select_array[0]);
  56. $select_name = 'mode';
  57. $default = $mode;
  58. $select_js = '';
  59. $sort_order_select_box = $class_form->build_select_box($select_name, $default, $sort_order_select_array, $sort_order_select_lang_array, $select_js);
  60. // SORT ORDER - END
  61. // SORT DIR - BEGIN
  62. $sort_dir_select_array = array('ASC', 'DESC');
  63. $sort_dir_select_lang_array = array($lang['Sort_Ascending'], $lang['Sort_Descending']);
  64. $sort_dir = request_var('order', 'DESC');
  65. $sort_dir = check_var_value($sort_dir, array('DESC', 'ASC'));
  66. $select_name = 'order';
  67. $default = ($sort_dir == 'ASC') ? 'ASC' : 'DESC';
  68. $select_js = '';
  69. $sort_dir_select_box = $class_form->build_select_box($select_name, $default, $sort_dir_select_array, $sort_dir_select_lang_array, $select_js);
  70. // SORT DIR - END
  71. $modes_array = array(
  72. 'hits' => 'hits',
  73. 'host' => 'host',
  74. 'url' => 'url',
  75. 't_url' => 't_url',
  76. 'ip' => 'ip',
  77. 'first_visit' => 'firstvisit',
  78. 'last_visit' => 'lastvisit',
  79. );
  80. $order_by = isset($modes_array[$mode]) ? $modes_array[$mode] : $modes_array[0];
  81. $start = request_var('start', 0);
  82. $start = ($start < 0) ? 0 : $start;
  83. $referer_id = request_var('referer_id', '', true);
  84. $mode = request_var('mode', 'hits');
  85. $sort_order = request_var('order', 'DESC');
  86. $sort_order = check_var_value($sort_order, array('DESC', 'ASC'));
  87. make_jumpbox(CMS_PAGE_VIEWFORUM);
  88. $template->assign_vars(array(
  89. 'L_CLEAR' => $lang['REFERERS_CLEAR'],
  90. 'L_TITLE' => $lang['REFERERS_TITLE'],
  91. 'L_SELECT_SORT_METHOD' => $lang['Select_sort_method'],
  92. 'L_SUBMIT' => $lang['Sort'],
  93. 'L_ORDER' => $lang['Order'],
  94. 'L_SORT' => $lang['Sort'],
  95. 'L_HOST' => $lang['REFERER_HOST'],
  96. 'L_URL' => $lang['REFERER_URL'],
  97. 'L_IP' => $lang['REFERER_IP'],
  98. 'L_HITS' => $lang['REFERER_HITS'],
  99. 'L_FIRST' => $lang['REFERER_FIRST'],
  100. 'L_LAST' => $lang['REFERER_LAST'],
  101. 'L_DELETE' => $lang['REFERER_DELETE'],
  102. 'S_GROUP_BY_SELECT' => $group_by_select_box,
  103. 'S_MODE_SELECT' => $sort_order_select_box,
  104. 'S_ORDER_SELECT' => $sort_dir_select_box,
  105. 'S_MODE_ACTION' => append_sid('referers.' . PHP_EXT)
  106. )
  107. );
  108. $total_sql = '';
  109. $select_sql = '';
  110. $group_by_sql = '';
  111. $total_hits = false;
  112. if (!empty($group_by))
  113. {
  114. $group_by_array = array(
  115. 'host' => 'host',
  116. 'url' => 'url',
  117. 't_url' => 't_url',
  118. 'ip' => 'ip',
  119. );
  120. $group_by_field = isset($group_by_array[$group_by]) ? $group_by_array[$group_by] : $group_by_array[0];
  121. $total_hits = true;
  122. $select_sql = ", SUM(hits) AS total_hits ";
  123. $group_by_sql = " GROUP BY " . $group_by_field . " ";
  124. $total_sql = "SELECT count(distinct(" . $group_by_field . ")) AS total FROM " . REFERERS_TABLE;
  125. $order_by = ($mode == 'hits') ? 'total_hits' : $order_by;
  126. }
  127. $order_by = $group_by_sql . " ORDER BY " . $order_by . " " . $sort_dir . " LIMIT $start, " . $config['topics_per_page'];
  128. $sql = "SELECT *" . $select_sql . " FROM " . REFERERS_TABLE . $order_by;
  129. $result = $db->sql_query($sql);
  130. $i = 0;
  131. while($row = $db->sql_fetchrow($result))
  132. {
  133. $row_class = ($i % 2) ? $theme['td_class2'] : $theme['td_class1'];
  134. $max_chars = 50;
  135. $url_name = (strlen($row['url']) > $max_chars) ? (substr($row['url'], 0, $max_chars) . '...') : $row['url'];
  136. $t_url_name = (strlen($row['t_url']) > $max_chars) ? (substr($row['t_url'], 0, $max_chars) . '...') : $row['t_url'];
  137. $template->assign_block_vars('refersrow', array(
  138. 'ID' => $i + ($start + 1),
  139. 'REFER_ID' => $row['id'],
  140. 'ROW_CLASS' => $row_class,
  141. 'HOST' => $row['host'],
  142. 'URL' => '<a href="' . htmlspecialchars($row['url']) . '" rel="nofollow" target="_blank">' . htmlspecialchars($url_name) . '</a>',
  143. 'T_URL' => '<a href="' . append_sid(IP_ROOT_PATH . $row['t_url']) . '" target="_blank">' . htmlspecialchars($t_url_name) . '</a>',
  144. 'IP' => '<a href="http://whois.sc/' . htmlspecialchars(urlencode($row['ip'])) . '" target="_blank">' . htmlspecialchars($row['ip']) . '</a>',
  145. 'HITS' => $total_hits ? $row['total_hits'] : $row['hits'],
  146. 'FIRST' => create_date_ip($config['default_dateformat'], $row['firstvisit'], $config['board_timezone']),
  147. 'LAST' => create_date_ip($config['default_dateformat'], $row['lastvisit'], $config['board_timezone'])
  148. )
  149. );
  150. $i++;
  151. }
  152. $pagination = '&nbsp;';
  153. $sql = !empty($total_sql) ? $total_sql : ("SELECT count(*) AS total FROM " . REFERERS_TABLE);
  154. $result = $db->sql_query($sql);
  155. if ($total = $db->sql_fetchrow($result))
  156. {
  157. $total_referers = $total['total'];
  158. $pagination = generate_pagination('referers.' . PHP_EXT . '?mode=' . $mode . '&amp;order=' . $sort_dir . '&amp;group_by=' . $group_by, $total_referers , $config['topics_per_page'], $start);
  159. }
  160. $db->sql_freeresult($result);
  161. $template->assign_vars(array(
  162. 'PAGINATION' => $pagination,
  163. 'PAGE_NUMBER' => sprintf($lang['Page_of'], (floor($start / $config['topics_per_page']) + 1), ceil($total_referers / $config['topics_per_page'])),
  164. 'L_GOTO_PAGE' => $lang['Goto_page']
  165. )
  166. );
  167. full_page_generation('referers_body.tpl', $lang['REFERERS'], '', '');
  168. ?>