You are here

class webform_handler_field_submission_count in Webform 6.3

Same name and namespace in other branches
  1. 7.4 views/webform_handler_field_submission_count.inc \webform_handler_field_submission_count
  2. 7.3 views/webform_handler_field_submission_count.inc \webform_handler_field_submission_count

Field handler to present the submission count of a node to the user.

Hierarchy

Expanded class hierarchy of webform_handler_field_submission_count

1 string reference to 'webform_handler_field_submission_count'
webform_views_data_alter in views/webform.views.inc
Implements hook_views_data_alter().

File

views/webform_handler_field_submission_count.inc, line 11
Views handler to display the number of submissions in a webform.

View source
class webform_handler_field_submission_count extends views_handler_field {
  function construct() {
    parent::construct();
    $this->count_type = $this->definition['count_type'];
    if ($this->count_type == 'node') {
      $this->additional_fields['nid'] = 'nid';
      $this->additional_fields['type'] = 'type';
    }
    elseif ($this->count_type == 'users') {
      $this->additional_fields['uid'] = 'uid';
    }
  }
  function option_definition() {
    $options = parent::option_definition();
    $options['label'] = array(
      'default' => '# of Submissions',
      'translatable' => TRUE,
    );
    return $options;
  }
  function query() {
    $this
      ->ensure_my_table();
    $this
      ->add_additional_fields();
  }
  function render($values) {
    global $user;
    $output = NULL;
    if ($this->count_type == 'node' && in_array($values->{$this->aliases['type']}, webform_variable_get('webform_node_types'))) {
      module_load_include('inc', 'webform', 'includes/webform.submissions');
      $node = node_load($values->{$this->aliases['nid']});
      if (webform_results_access($node, $user)) {
        $count = webform_get_submission_count($node->nid);
        $output = l($count, "node/{$node->nid}/webform-results");
      }
      else {
        $count = webform_get_submission_count($node->nid, $user->uid);
        $output = l($count, "node/{$node->nid}/submissions");
      }
    }
    elseif ($this->count_type == 'users') {
      $sql = "SELECT COUNT(sid) FROM {webform_submissions} WHERE uid = %d";
      $output = db_result(db_query($sql, $values->{$this->aliases['uid']}));
    }
    return $output;
  }

}

Members