statistics.views.inc 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. <?php
  2. /**
  3. * @file
  4. * Provide views data and handlers for statistics.module.
  5. *
  6. * @ingroup views_module_handlers
  7. */
  8. /**
  9. * Implements hook_views_data().
  10. */
  11. function statistics_views_data() {
  12. // Basic table information.
  13. // ----------------------------------------------------------------
  14. // 'node_counter' table.
  15. $data['node_counter']['table']['group'] = t('Content statistics');
  16. // Joins to the node table.
  17. $data['node_counter']['table']['join'] = array(
  18. 'node' => array(
  19. 'left_field' => 'nid',
  20. 'field' => 'nid',
  21. ),
  22. );
  23. // Total count.
  24. $data['node_counter']['totalcount'] = array(
  25. 'title' => t('Total views'),
  26. 'help' => t('The total number of times the node has been viewed.'),
  27. 'field' => array(
  28. 'handler' => 'views_handler_field_statistics_numeric',
  29. 'click sortable' => TRUE,
  30. ),
  31. 'filter' => array(
  32. 'handler' => 'views_handler_filter_numeric',
  33. ),
  34. 'sort' => array(
  35. 'handler' => 'views_handler_sort',
  36. ),
  37. );
  38. // Day count.
  39. $data['node_counter']['daycount'] = array(
  40. 'title' => t('Views today'),
  41. 'help' => t('The total number of times the node has been viewed today.'),
  42. 'field' => array(
  43. 'handler' => 'views_handler_field_statistics_numeric',
  44. 'click sortable' => TRUE,
  45. ),
  46. 'filter' => array(
  47. 'handler' => 'views_handler_filter_numeric',
  48. ),
  49. 'sort' => array(
  50. 'handler' => 'views_handler_sort',
  51. ),
  52. );
  53. // Timestamp.
  54. $data['node_counter']['timestamp'] = array(
  55. 'title' => t('Most recent view'),
  56. 'help' => t('The most recent time the node has been viewed.'),
  57. 'field' => array(
  58. 'handler' => 'views_handler_field_node_counter_timestamp',
  59. 'click sortable' => TRUE,
  60. ),
  61. 'filter' => array(
  62. 'handler' => 'views_handler_filter_date',
  63. ),
  64. 'sort' => array(
  65. 'handler' => 'views_handler_sort',
  66. ),
  67. );
  68. // ----------------------------------------------------------------
  69. // 'accesslog' table.
  70. $data['accesslog']['table']['group'] = t('Access log');
  71. // Advertise this table as a possible base table.
  72. $data['accesslog']['table']['base'] = array(
  73. 'field' => 'aid',
  74. 'title' => t('Access log'),
  75. 'help' => t('Stores site access information.'),
  76. 'weight' => 10,
  77. );
  78. // For other base tables, explain how we join.
  79. $data['accesslog']['table']['join'] = array(
  80. 'users' => array(
  81. 'field' => 'uid',
  82. 'left_field' => 'uid',
  83. ),
  84. );
  85. // Access event ID / 'aid'.
  86. $data['accesslog']['aid'] = array(
  87. 'title' => t('Aid'),
  88. 'help' => t('Unique access event ID.'),
  89. 'field' => array(
  90. 'handler' => 'views_handler_field_numeric',
  91. 'click sortable' => TRUE,
  92. ),
  93. 'argument' => array(
  94. 'handler' => 'views_handler_argument_numeric',
  95. 'name field' => 'wid',
  96. 'numeric' => TRUE,
  97. ),
  98. 'filter' => array(
  99. 'handler' => 'views_handler_filter_numeric',
  100. ),
  101. 'sort' => array(
  102. 'handler' => 'views_handler_sort',
  103. ),
  104. );
  105. // Session ID.
  106. $data['accesslog']['sid'] = array(
  107. 'title' => t('Session ID'),
  108. 'help' => t('Browser session ID of user that visited page.'),
  109. 'field' => array(
  110. 'handler' => 'views_handler_field',
  111. 'click sortable' => TRUE,
  112. ),
  113. 'filter' => array(
  114. 'handler' => 'views_handler_filter_string',
  115. ),
  116. 'argument' => array(
  117. 'handler' => 'views_handler_argument_string',
  118. ),
  119. 'sort' => array(
  120. 'handler' => 'views_handler_sort',
  121. ),
  122. );
  123. // Title.
  124. $data['accesslog']['title'] = array(
  125. 'title' => t('Page title'),
  126. 'help' => t('Title of page visited.'),
  127. 'field' => array(
  128. 'handler' => 'views_handler_field_accesslog_path',
  129. 'click sortable' => TRUE,
  130. ),
  131. 'filter' => array(
  132. 'handler' => 'views_handler_filter_string',
  133. ),
  134. 'sort' => array(
  135. 'handler' => 'views_handler_sort',
  136. ),
  137. 'argument' => array(
  138. 'handler' => 'views_handler_argument_string',
  139. ),
  140. );
  141. // Path.
  142. $data['accesslog']['path'] = array(
  143. 'title' => t('Path'),
  144. 'help' => t('Internal path to page visited (relative to Drupal root.)'),
  145. 'field' => array(
  146. 'handler' => 'views_handler_field_accesslog_path',
  147. 'click sortable' => TRUE,
  148. ),
  149. 'filter' => array(
  150. 'handler' => 'views_handler_filter_string',
  151. ),
  152. 'sort' => array(
  153. 'handler' => 'views_handler_sort',
  154. ),
  155. // No argument here. Can't send forward slashes as arguments. Can be
  156. // worked around by node ID. (but what about aliases?)
  157. );
  158. // Referrer.
  159. $data['accesslog']['url'] = array(
  160. 'title' => t('Referrer'),
  161. 'help' => t('Referrer URI.'),
  162. 'field' => array(
  163. 'handler' => 'views_handler_field_url',
  164. 'click sortable' => TRUE,
  165. ),
  166. 'filter' => array(
  167. 'handler' => 'views_handler_filter_string',
  168. ),
  169. 'sort' => array(
  170. 'handler' => 'views_handler_sort',
  171. ),
  172. );
  173. // Hostname.
  174. $data['accesslog']['hostname'] = array(
  175. 'title' => t('Hostname'),
  176. 'help' => t('Hostname of user that visited the page.'),
  177. 'field' => array(
  178. 'handler' => 'views_handler_field',
  179. 'click sortable' => TRUE,
  180. ),
  181. 'filter' => array(
  182. 'handler' => 'views_handler_filter_string',
  183. ),
  184. 'sort' => array(
  185. 'handler' => 'views_handler_sort',
  186. ),
  187. 'argument' => array(
  188. 'handler' => 'views_handler_argument_string',
  189. ),
  190. );
  191. // User ID / 'uid'.
  192. $data['accesslog']['uid'] = array(
  193. 'title' => t('User'),
  194. 'help' => t('The user who visited the site.'),
  195. 'relationship' => array(
  196. 'handler' => 'views_handler_relationship',
  197. 'base' => 'users',
  198. 'base field' => 'uid',
  199. ),
  200. );
  201. // Timer.
  202. $data['accesslog']['timer'] = array(
  203. 'title' => t('Timer'),
  204. 'help' => t('Time in milliseconds that the page took to load.'),
  205. 'field' => array(
  206. 'handler' => 'views_handler_field_numeric',
  207. 'click sortable' => TRUE,
  208. ),
  209. 'filter' => array(
  210. 'handler' => 'views_handler_filter_numeric',
  211. ),
  212. 'sort' => array(
  213. 'handler' => 'views_handler_sort',
  214. ),
  215. );
  216. // Timestamp.
  217. $data['accesslog']['timestamp'] = array(
  218. 'title' => t('Timestamp'),
  219. 'help' => t('Timestamp of when the page was visited.'),
  220. 'field' => array(
  221. 'handler' => 'views_handler_field_date',
  222. 'click sortable' => TRUE,
  223. ),
  224. 'sort' => array(
  225. 'handler' => 'views_handler_sort',
  226. ),
  227. 'filter' => array(
  228. 'handler' => 'views_handler_filter_date',
  229. ),
  230. );
  231. return $data;
  232. }