function _webform2pdf_get_template_vars in Webform2PDF 6.2
Same name and namespace in other branches
- 6 webform2pdf.module \_webform2pdf_get_template_vars()
3 calls to _webform2pdf_get_template_vars()
File
- ./
webform2pdf.module, line 276
Code
function _webform2pdf_get_template_vars($node, $submission) {
$tokens = array_flip(_webform2pdf_list_template_vars($node));
foreach ($tokens as $key => $token) {
$tokens[$key] = '';
}
foreach ($node->webform['components'] as $component) {
if (!empty($submission->data[$component['cid']]['value']) && isset($component['type'])) {
switch ($component['type']) {
case 'date':
if (!empty($submission->data[$component['cid']]['value'][0])) {
$timestamp = strtotime($submission->data[$component['cid']]['value'][0] . ' GMT');
$format = webform_date_format('medium');
$date = format_date($timestamp, 'custom', $format, 0);
$tokens['%' . $component['form_key']] = $date;
}
else {
$tokens['%' . $component['form_key']] = '';
}
break;
case 'time':
if (!empty($submission->data[$component['cid']]['value'][0])) {
list($hour, $min, $sec) = explode(':', $submission->data[$component['cid']]['value'][0]);
$ampm = '';
if ($component['extra']['hourformat'] === '12-hour') {
if ($hour > 12) {
$hour -= 12;
$ampm = t('pm');
}
else {
$ampm = t('am');
}
}
$tokens['%' . $component['form_key']] = trim($hour . ':' . $min . ' ' . $ampm);
}
else {
$tokens['%' . $component['form_key']] = '';
}
break;
case 'grid':
$answers = $questions = array();
$a = explode("<nl2br>", preg_replace("/(\r\n)+|(\n|\r)+/", "<nl2br>", $component['extra']['options']));
$q = explode("<nl2br>", preg_replace("/(\r\n)+|(\n|\r)+/", "<nl2br>", $component['extra']['questions']));
foreach ($a as $key => $value) {
if (strpos($value, '|') === FALSE) {
$key = $option = $value;
}
else {
$key = drupal_substr($value, 0, strpos($value, '|'));
$option = drupal_substr($value, strpos($value, '|') + 1);
}
$answers[$key] = $option;
}
foreach ($q as $key => $value) {
if (strpos($value, '|') === FALSE) {
$key = $option = $value;
}
else {
$key = drupal_substr($value, 0, strpos($value, '|'));
$option = drupal_substr($value, strpos($value, '|') + 1);
}
$questions[$key] = $option;
}
$grid = array();
foreach ($submission->data[$component['cid']]['value'] as $question => $answer) {
if (isset($questions[$question]) && isset($answers[$answer])) {
$grid[] = $questions[$question] . ': ' . $answers[$answer];
}
}
$tokens['%' . $component['form_key']] = implode("<br />\n", $grid);
break;
case 'select':
// in the $component:
// if aslist=Y, then standard select + if multiple=Y then Multi-select
// if aslist=N and multiple=Y then checkbox (there is no difference between single, and multivalue)
// if aslist=N and multiple=N then radiobuton (there is no difference between single, and multivalue)
$values = $submission->data[$component['cid']]['value'];
if (is_array($values)) {
$items = explode("<nl2br>", preg_replace("/(\r\n)+|(\n|\r)+/", "<nl2br>", $component['extra']['items']));
$options = array();
foreach ($items as $item) {
if (strpos($item, '|') === FALSE) {
$key = $option = $item;
}
else {
$key = drupal_substr($item, 0, strpos($item, '|'));
$option = drupal_substr($item, strpos($item, '|') + 1);
}
$options[$key] = $option;
}
$select = $selectNL = $selectAll = $selectAllNL = array();
foreach ($options as $key => $option) {
if (in_array($option, $values) || in_array($key, $values)) {
if (!empty($option)) {
$select[] = $option;
$selectNL[] = ' - ' . $option . "<br />\n";
$selectAll[] = '<u><b><span class="selected">' . $option . '</span></b></u>';
$selectAllNL[] = ' [X] ' . $option . "<br />\n";
}
}
else {
if (!empty($option)) {
$selectAll[] = $option;
$selectAllNL[] = ' [ ] ' . $option . "<br />\n";
}
}
}
// select_or_other module support
if (module_exists('select_or_other')) {
$potential_values = array_merge(array_keys($options), array_values($options));
$diff = array_diff($values, $potential_values);
if (count($diff)) {
foreach ($diff as $value) {
if (!empty($value)) {
$select[] = check_plain($value);
$selectNL[] = ' - ' . check_plain($value) . "<br />\n";
$selectAll[] = '<u><b><span class="selected">' . check_plain($value) . '</span></b></u>';
$selectAllNL[] = ' [X] ' . check_plain($value) . "<br />\n";
}
}
}
}
$tokens['%' . $component['form_key']] = implode(', ', $select);
$tokens['%' . $component['form_key'] . '-all'] = implode(', ', $selectAll);
$tokens['%' . $component['form_key'] . '-nl'] = implode('', $selectNL);
$tokens['%' . $component['form_key'] . '-all-nl'] = implode('', $selectAllNL);
}
else {
$tokens['%' . $component['form_key']] = $tokens['%' . $component['form_key'] . '-all'] = $tokens['%' . $component['form_key'] . '-nl'] = $tokens['%' . $component['form_key'] . '-all-nl'] = '';
}
break;
case 'number':
if (!empty($submission->data[$component['cid']]['value'][0])) {
$decimals = 0;
if ($component['extra']['integer']) {
$decimals = is_numeric($component['extra']['decimals']) ? (int) $component['extra']['decimals'] : 0;
}
$tokens['%' . $component['form_key']] = number_format($submission->data[$component['cid']]['value'][0], $decimals, $component['extra']['point'], $component['extra']['separator']);
}
else {
$tokens['%' . $component['form_key']] = '';
}
break;
case 'email':
case 'hidden':
case 'textarea':
case 'textfield':
if (!empty($submission->data[$component['cid']]['value'][0])) {
$tokens['%' . $component['form_key']] = str_replace('<br>', '<br />', nl2br(check_plain($submission->data[$component['cid']]['value'][0])));
}
else {
$tokens['%' . $component['form_key']] = '';
}
break;
// markup', 'pagebreak', etc.
default:
// _hook_webform2pdf_get_template_vars call, support of extra types
foreach (module_list() as $module) {
$function = '_' . $module . '_webform2pdf_get_template_vars';
if (function_exists($function)) {
$function($component, $submission, $tokens);
}
}
break;
}
}
}
// node id
$tokens['%nid'] = $node->nid;
// submission id
$tokens['%sid'] = $submission->sid;
// hook_webform2pdf_tokens($tokens, $node, $submission): modify values of $tokens array
drupal_alter('webform2pdf_tokens', $tokens, $node, $submission);
return $tokens;
}