You are here

function _webform2pdf_get_template_vars in Webform2PDF 6.2

Same name and namespace in other branches
  1. 6 webform2pdf.module \_webform2pdf_get_template_vars()
3 calls to _webform2pdf_get_template_vars()
theme_webform2pdf_mail2pdf in ./webform2pdf.module
webform2pdf_download_pdf_form_submit in includes/webform2pdf.download.inc
webform2pdf_submission_download_pdf in includes/webform2pdf.download.inc

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;
}