You are here

function webform_get_submissions in Webform 5.2

Same name and namespace in other branches
  1. 6.3 includes/webform.submissions.inc \webform_get_submissions()
  2. 6.2 webform_submissions.inc \webform_get_submissions()
  3. 7.4 includes/webform.submissions.inc \webform_get_submissions()
  4. 7.3 includes/webform.submissions.inc \webform_get_submissions()

Return all the submissions for a particular node.

Parameters

$nid: The node ID for which submissions are being fetched.

$header: If the results of this fetch will be used in a sortable table, pass the array header of the table.

$uid: Optional; the user ID to filter the submissions by.

Return value

$submissions An array of submissions matching your filters.

5 calls to webform_get_submissions()
webform_component_delete in ./webform_components.inc
webform_results_clear in ./webform_report.inc
Delete all submissions for a node.
webform_results_download in ./webform_report.inc
Generate a Excel-readable CSV file containing all submissions for a Webform.
webform_results_submissions in ./webform_report.inc
Retrieve lists of submissions for a given webform.
webform_results_table in ./webform_report.inc
Create a table containing all submitted values for a webform node.

File

./webform_submissions.inc, line 149
This file is loaded when handling submissions, either submitting new, editing, or viewing. It also contains all CRUD functions for submissions.

Code

function webform_get_submissions($nid, $header = NULL, $uid = NULL, $pager_count = 0) {
  $sids = NULL;
  if ($pager_count) {
    $pager_query = 'SELECT * FROM {webform_submissions} WHERE nid = %d';
    if ($uid) {
      $pager_query .= ' AND uid = %d';
    }
    $res = pager_query($pager_query, $pager_count, 0, NULL, $nid, $uid);
    $sids = array();
    while ($row = db_fetch_object($res)) {
      $sids[] = $row->sid;
    }
    $sids = implode($sids, ',');
  }
  $query = 'SELECT s.*, sd.cid, sd.no, sd.data, u.name, u.mail, u.status ' . 'FROM {webform_submissions} s ' . 'LEFT JOIN {webform_submitted_data} sd ON sd.sid = s.sid ' . 'LEFT JOIN {users} u ON u.uid = s.uid ' . 'WHERE sd.nid = %d';
  if ($pager_count && !empty($sids)) {
    $query .= ' AND s.sid IN (%s)';
  }
  if ($uid) {
    $query .= ' AND u.uid = %d';
  }
  if (is_array($header)) {
    $query .= tablesort_sql($header);
    if (!isset($header[0]['sort'])) {
      $query .= ', sid ASC';
    }
    $query .= ', cid ASC, no ASC';
  }
  else {
    $query .= ' ORDER BY sid ASC, cid ASC, no ASC';
  }
  $res = $pager_count ? db_query($query, $nid, $sids, $uid) : db_query($query, $nid, $uid);
  $submissions = array();
  $previous = array();

  // Outer loop: iterate for each submission.
  while ($row = db_fetch_object($res)) {
    if ($row->sid != $previous) {
      $submissions[$row->sid] = new stdClass();
      $submissions[$row->sid]->sid = $row->sid;
      $submissions[$row->sid]->submitted = $row->submitted;
      $submissions[$row->sid]->remote_addr = $row->remote_addr;
      $submissions[$row->sid]->uid = $row->uid;
      $submissions[$row->sid]->name = $row->name;
      $submissions[$row->sid]->status = $row->status;
    }
    $submissions[$row->sid]->data[$row->cid]['value'][$row->no] = $row->data;
    $previous = $row->sid;
  }
  return $submissions;
}