function webform_get_submissions in Webform 5.2
Same name and namespace in other branches
- 6.3 includes/webform.submissions.inc \webform_get_submissions()
- 6.2 webform_submissions.inc \webform_get_submissions()
- 7.4 includes/webform.submissions.inc \webform_get_submissions()
- 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;
}