You are here

function webform_results_submissions in Webform 7.4

Same name and namespace in other branches
  1. 5.2 webform_report.inc \webform_results_submissions()
  2. 6.3 includes/webform.report.inc \webform_results_submissions()
  3. 6.2 webform_report.inc \webform_results_submissions()
  4. 7.3 includes/webform.report.inc \webform_results_submissions()

Retrieve lists of submissions for a given webform.

1 string reference to 'webform_results_submissions'
webform_menu in ./webform.module
Implements hook_menu().

File

includes/webform.report.inc, line 16
This file includes helper functions for creating reports for webform.module.

Code

function webform_results_submissions($node, $user_filter, $pager_count) {
  global $user;

  // Determine whether views or hard-coded tables should be used for the
  // submissions table.
  if (!webform_variable_get('webform_table')) {

    // Load the submissions view.
    $view = webform_get_view($node, 'webform_submissions');
    if ($user_filter) {
      if ($user->uid) {
        drupal_set_title(t('Submissions for %user', array(
          '%user' => $user->name,
        )), PASS_THROUGH);
      }
      else {
        drupal_set_title(t('Your submissions'));
        webform_disable_page_cache();
      }
      return $view
        ->preview('default', array(
        $node->nid,
        $user->uid,
      ));
    }
    else {
      return $view
        ->preview('default', array(
        $node->nid,
      ));
    }
  }
  if (isset($_GET['results']) && is_numeric($_GET['results'])) {
    $pager_count = $_GET['results'];
  }
  $header = theme('webform_results_submissions_header', array(
    'node' => $node,
  ));
  if ($user_filter) {
    if ($user->uid) {
      drupal_set_title(t('Submissions for %user', array(
        '%user' => $user->name,
      )), PASS_THROUGH);
    }
    else {
      drupal_set_title(t('Your submissions'));
      webform_disable_page_cache();
    }
    $submissions = webform_get_submissions(array(
      'nid' => $node->nid,
      'uid' => $user->uid,
    ), $header, $pager_count);
    $count = webform_get_submission_count($node->nid, $user->uid, NULL);
  }
  else {
    $submissions = webform_get_submissions($node->nid, $header, $pager_count);
    $count = webform_get_submission_count($node->nid, NULL, NULL);
  }
  $operation_column = end($header);
  $operation_total = $operation_column['colspan'];
  $rows = array();
  foreach ($submissions as $sid => $submission) {
    $row = array(
      $submission->is_draft ? t('@serial (draft)', array(
        '@serial' => $submission->serial,
      )) : $submission->serial,
      format_date($submission->submitted, 'short'),
    );
    if (webform_results_access($node, $user)) {
      $row[] = theme('username', array(
        'account' => $submission,
      ));
      $row[] = $submission->remote_addr;
    }
    $row[] = l(t('View'), "node/{$node->nid}/submission/{$sid}");
    $operation_count = 1;

    // No need to call this multiple times, just reference this in a variable.
    $destination = drupal_get_destination();
    if (webform_submission_access($node, $submission, 'edit', $user)) {
      $row[] = l(t('Edit'), "node/{$node->nid}/submission/{$sid}/edit", array(
        'query' => $destination,
      ));
      $operation_count++;
    }
    if (webform_submission_access($node, $submission, 'delete', $user)) {
      $row[] = l(t('Delete'), "node/{$node->nid}/submission/{$sid}/delete", array(
        'query' => $destination,
      ));
      $operation_count++;
    }
    if ($operation_count < $operation_total) {
      $row[count($row) - 1] = array(
        'data' => $row[count($row) - 1],
        'colspan' => $operation_total - $operation_count + 1,
      );
    }
    $rows[] = $row;
  }
  $element['#theme'] = 'webform_results_submissions';
  $element['#node'] = $node;
  $element['#submissions'] = $submissions;
  $element['#total_count'] = $count;
  $element['#pager_count'] = $pager_count;
  $element['#attached']['library'][] = array(
    'webform',
    'admin',
  );
  $element['table']['#theme'] = 'table';
  $element['table']['#header'] = $header;
  $element['table']['#rows'] = $rows;
  $element['table']['#operation_total'] = $operation_total;
  return $element;
}