webform.views.inc 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. <?php
  2. /**
  3. * @file
  4. * Views hooks implemented for the Webform module.
  5. */
  6. function webform_views_data() {
  7. /**
  8. * Submissions table definitions.
  9. */
  10. $data['webform_submissions']['table']['group'] = t('Webform submissions');
  11. $data['webform_submissions']['table']['base'] = array(
  12. 'field' => 'sid',
  13. 'title' => t('Webform submissions'),
  14. 'help' => t('Submissions generated from Webform forms.'),
  15. );
  16. // sid
  17. $data['webform_submissions']['sid'] = array(
  18. 'title' => t('Sid'),
  19. 'help' => t('The submission ID of the submission.'),
  20. 'field' => array(
  21. 'handler' => 'views_handler_field_numeric',
  22. 'click sortable' => TRUE,
  23. ),
  24. 'filter' => array(
  25. 'title' => t('Sid'),
  26. 'handler' => 'views_handler_filter_numeric',
  27. ),
  28. 'sort' => array(
  29. 'handler' => 'views_handler_sort',
  30. ),
  31. 'argument' => array(
  32. 'handler' => 'views_handler_argument_numeric',
  33. ),
  34. );
  35. // nid
  36. $data['webform_submissions']['nid'] = array(
  37. 'title' => t('Node'),
  38. 'help' => t('The webform node this submission was generated from.'),
  39. 'relationship' => array(
  40. 'base' => 'node',
  41. 'field' => 'nid',
  42. 'handler' => 'views_handler_relationship',
  43. 'label' => t('Webform Node'),
  44. ),
  45. );
  46. // uid
  47. $data['webform_submissions']['uid'] = array(
  48. 'title' => t('User'),
  49. 'help' => t('The user who sent the webform submission.'),
  50. 'relationship' => array(
  51. 'base' => 'users',
  52. 'field' => 'uid',
  53. 'handler' => 'views_handler_relationship',
  54. 'label' => t('Webform Submission User'),
  55. ),
  56. );
  57. // is_draft
  58. $data['webform_submissions']['is_draft'] = array(
  59. 'title' => t('Draft'),
  60. 'help' => t('Whether or not the submission is a draft.'),
  61. 'field' => array(
  62. 'handler' => 'webform_handler_field_is_draft',
  63. 'click sortable' => TRUE,
  64. ),
  65. 'filter' => array(
  66. 'handler' => 'webform_handler_filter_is_draft',
  67. ),
  68. 'sort' => array(
  69. 'handler' => 'views_handler_sort',
  70. ),
  71. );
  72. // submitted
  73. $data['webform_submissions']['submitted'] = array(
  74. 'title' => t('Submitted'),
  75. 'help' => t('The date this submission was submitted.'),
  76. 'field' => array(
  77. 'handler' => 'views_handler_field_date',
  78. 'click sortable' => TRUE,
  79. ),
  80. 'filter' => array(
  81. 'title' => t('Submitted'),
  82. 'handler' => 'views_handler_filter_date',
  83. ),
  84. 'sort' => array(
  85. 'handler' => 'views_handler_sort_date',
  86. ),
  87. );
  88. // remote_addr
  89. $data['webform_submissions']['remote_addr'] = array(
  90. 'title' => t('Remote address'),
  91. 'help' => t('The remote IP address of the user that submitted this submission.'),
  92. 'field' => array(
  93. 'handler' => 'views_handler_field',
  94. 'click sortable' => TRUE,
  95. ),
  96. 'filter' => array(
  97. 'title' => t('Remote address'),
  98. 'handler' => 'views_handler_filter_string',
  99. ),
  100. 'sort' => array(
  101. 'handler' => 'views_handler_sort',
  102. ),
  103. );
  104. // view link
  105. $data['webform_submissions']['view_submission'] = array(
  106. 'field' => array(
  107. 'title' => t('View link'),
  108. 'help' => t('Provide a simple link to view the submission.'),
  109. 'handler' => 'webform_handler_field_submission_link',
  110. 'link_type' => 'view',
  111. ),
  112. );
  113. // edit link
  114. $data['webform_submissions']['edit_submission'] = array(
  115. 'field' => array(
  116. 'title' => t('Edit link'),
  117. 'help' => t('Provide a simple link to edit the submission.'),
  118. 'handler' => 'webform_handler_field_submission_link',
  119. 'link_type' => 'edit',
  120. ),
  121. );
  122. // delete link
  123. $data['webform_submissions']['delete_submission'] = array(
  124. 'field' => array(
  125. 'title' => t('Delete link'),
  126. 'help' => t('Provide a simple link to delete the submission.'),
  127. 'handler' => 'webform_handler_field_submission_link',
  128. 'link_type' => 'delete',
  129. ),
  130. );
  131. return $data;
  132. }
  133. /**
  134. * Implements hook_views_data_alter().
  135. */
  136. function webform_views_data_alter(&$data) {
  137. // Webform submission from node.
  138. $data['node']['webform_submission'] = array(
  139. 'title' => t('Webform submission'),
  140. 'help' => t('Webform submissions of the given Webform node.'),
  141. 'real field' => 'nid',
  142. 'relationship' => array(
  143. 'base' => 'webform_submissions',
  144. 'base field' => 'nid',
  145. 'handler' => 'views_handler_relationship',
  146. 'label' => t('Webform Submission'),
  147. ),
  148. );
  149. $data['node']['table']['join']['webform_submissions'] = array(
  150. 'field' => 'nid',
  151. 'left_field' => 'nid',
  152. 'left_table' => 'webform_submissions',
  153. );
  154. // Submission count (node).
  155. $data['node']['webform_submission_count_node'] = array(
  156. 'field' => array(
  157. 'title' => t('Webform submission count'),
  158. 'help' => t('The number of webform submissions on this node.'),
  159. 'handler' => 'webform_handler_field_submission_count',
  160. 'count_type' => 'node',
  161. ),
  162. );
  163. // Webform submission of user.
  164. $data['users']['webform_submission'] = array(
  165. 'title' => t('Webform submission'),
  166. 'help' => t('Webform submissions of the given user.'),
  167. 'real field' => 'uid',
  168. 'relationship' => array(
  169. 'base' => 'webform_submissions',
  170. 'base field' => 'uid',
  171. 'handler' => 'views_handler_relationship',
  172. 'label' => t('Webform Submission'),
  173. ),
  174. );
  175. // Submission count (user).
  176. $data['users']['webform_submission_count_user'] = array(
  177. 'field' => array(
  178. 'title' => t('Webform submission count'),
  179. 'help' => t('The number of webform submissions for this user.'),
  180. 'handler' => 'webform_handler_field_submission_count',
  181. 'count_type' => 'users',
  182. ),
  183. );
  184. // Link for editing the webform.
  185. $data['node']['webform_edit'] = array(
  186. 'field' => array(
  187. 'title' => t('Webform edit link'),
  188. 'help' => t('Provide a simple link to edit the webform components and configuration.'),
  189. 'handler' => 'webform_handler_field_node_link_edit',
  190. ),
  191. );
  192. // Link for viewing webform results.
  193. $data['node']['webform_results'] = array(
  194. 'field' => array(
  195. 'title' => t('Webform results link'),
  196. 'help' => t('Provide a simple link to view the results of a webform.'),
  197. 'handler' => 'webform_handler_field_node_link_results',
  198. ),
  199. );
  200. // Webform form content.
  201. $data['node']['webform_form_body'] = array(
  202. 'field' => array(
  203. 'title' => t('Webform form body'),
  204. 'help' => t('The Webform form body display for this node.'),
  205. 'handler' => 'webform_handler_field_form_body',
  206. ),
  207. );
  208. }
  209. /**
  210. * Implements hook_views_handlers().
  211. */
  212. function webform_views_handlers() {
  213. return array(
  214. 'info' => array(
  215. 'path' => drupal_get_path('module', 'webform') . '/views',
  216. ),
  217. 'handlers' => array(
  218. 'webform_handler_field_submission_link' => array(
  219. 'parent' => 'views_handler_field',
  220. 'file' => 'webform_handler_field_submission_link.inc',
  221. ),
  222. 'webform_handler_field_submission_count' => array(
  223. 'parent' => 'views_handler_field',
  224. 'file' => 'webform_handler_field_submission_count.inc',
  225. ),
  226. 'webform_handler_field_node_link_edit' => array(
  227. 'parent' => 'views_handler_field_node_link',
  228. ),
  229. 'webform_handler_field_node_link_results' => array(
  230. 'parent' => 'views_handler_field_node_link',
  231. ),
  232. 'webform_handler_field_form_body' => array(
  233. 'parent' => 'views_handler_field',
  234. 'file' => 'webform_handler_field_form_body.inc',
  235. ),
  236. 'webform_handler_field_is_draft' => array(
  237. 'parent' => 'views_handler_field',
  238. 'file' => 'webform_handler_field_is_draft.inc',
  239. ),
  240. 'webform_handler_filter_is_draft' => array(
  241. 'parent' => 'views_handler_filter_in_operator',
  242. 'file' => 'webform_handler_filter_is_draft.inc',
  243. ),
  244. ),
  245. );
  246. }