function _webform_analysis_component in Webform 7.3
Same name and namespace in other branches
- 6.3 webform.api.php \_webform_analysis_component()
- 7.4 webform.api.php \_webform_analysis_component()
Calculate and returns statistics about results for this component.
This takes into account all submissions to this webform. The output of this function will be displayed under the "Results" tab then "Analysis".
Parameters
$component: An array of information describing the component, directly correlating to the webform_component database schema.
$sids: An optional array of submission IDs (sid). If supplied, the analysis will be limited to these sids.
$single: Boolean flag determining if the details about a single component are being shown. May be used to provided detailed information about a single component's analysis, such as showing "Other" options within a select list.
Return value
An array of data rows, each containing a statistic for this component's submissions.
Related topics
File
- ./
webform.api.php, line 865 - Sample hooks demonstrating usage in Webform.
Code
function _webform_analysis_component($component, $sids = array(), $single = FALSE) {
// Generate the list of options and questions.
$options = _webform_select_options_from_text($component['extra']['options'], TRUE);
$questions = _webform_select_options_from_text($component['extra']['questions'], TRUE);
// Generate a lookup table of results.
$query = db_select('webform_submitted_data', 'wsd')
->fields('wsd', array(
'no',
'data',
))
->condition('nid', $component['nid'])
->condition('cid', $component['cid'])
->condition('data', '', '<>')
->groupBy('no')
->groupBy('data');
$query
->addExpression('COUNT(sid)', 'datacount');
if (count($sids)) {
$query
->condition('sid', $sids, 'IN');
}
$result = $query
->execute();
$counts = array();
foreach ($result as $data) {
$counts[$data->no][$data->data] = $data->datacount;
}
// Create an entire table to be put into the returned row.
$rows = array();
$header = array(
'',
);
// Add options as a header row.
foreach ($options as $option) {
$header[] = $option;
}
// Add questions as each row.
foreach ($questions as $qkey => $question) {
$row = array(
$question,
);
foreach ($options as $okey => $option) {
$row[] = !empty($counts[$qkey][$okey]) ? $counts[$qkey][$okey] : 0;
}
$rows[] = $row;
}
$output = theme('table', array(
'header' => $header,
'rows' => $rows,
'attributes' => array(
'class' => array(
'webform-grid',
),
),
));
return array(
array(
array(
'data' => $output,
'colspan' => 2,
),
),
);
}