webform_handler_field_submission_count.inc 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. /**
  3. * @file
  4. * Views handler to display the number of submissions in a webform.
  5. */
  6. /**
  7. * Field handler to present the submission count of a node to the user.
  8. */
  9. class webform_handler_field_submission_count extends views_handler_field {
  10. function construct() {
  11. parent::construct();
  12. $this->count_type = $this->definition['count_type'];
  13. if ($this->count_type == 'node') {
  14. $this->additional_fields['nid'] = 'nid';
  15. $this->additional_fields['type'] = 'type';
  16. }
  17. elseif ($this->count_type == 'users') {
  18. $this->additional_fields['uid'] = 'uid';
  19. }
  20. }
  21. function option_definition() {
  22. $options = parent::option_definition();
  23. $options['label'] = array('default' => '# of Submissions', 'translatable' => TRUE);
  24. return $options;
  25. }
  26. function query() {
  27. $this->ensure_my_table();
  28. $this->add_additional_fields();
  29. }
  30. function render($values) {
  31. global $user;
  32. $output = NULL;
  33. if ($this->count_type == 'node' && in_array($values->{$this->aliases['type']}, webform_variable_get('webform_node_types'))) {
  34. module_load_include('inc', 'webform', 'includes/webform.submissions');
  35. $node = node_load($values->{$this->aliases['nid']});
  36. if (webform_results_access($node, $user)) {
  37. $count = webform_get_submission_count($node->nid);
  38. $output = l($count, "node/$node->nid/webform-results");
  39. }
  40. else {
  41. $count = webform_get_submission_count($node->nid, $user->uid);
  42. $output = l($count, "node/$node->nid/submissions");
  43. }
  44. }
  45. elseif ($this->count_type == 'users') {
  46. $output = db_select('webform_submissions')
  47. ->condition('uid', $values->{$this->aliases['uid']})
  48. ->countQuery()->execute()->fetchField();
  49. }
  50. return $output;
  51. }
  52. }