You are here

function _webform2pdf_get_template_vars in Webform2PDF 6

Same name and namespace in other branches
  1. 6.2 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 ./webform2pdf.module
webform2pdf_submission_download_pdf in ./webform2pdf.module

File

./webform2pdf.module, line 1282

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'])) {
      switch ($component['type']) {
        case 'date':
          $timestamp = strtotime($submission->data[$component['cid']]['value'][0] . '/' . $submission->data[$component['cid']]['value'][1] . '/' . $submission->data[$component['cid']]['value'][2] . ' GMT');
          $format = webform_date_format('medium');
          $date = format_date($timestamp, 'custom', $format, 0);
          $tokens['%' . $component['form_key']] = $date;
          break;
        case 'time':
          if (!empty($submission->data[$component['cid']]['value'][0])) {
            $tokens['%' . $component['form_key']] = $submission->data[$component['cid']]['value'][0] . ':' . $submission->data[$component['cid']]['value'][1];
            if (!empty($submission->data[$component['cid']]['value'][2])) {
              $tokens['%' . $component['form_key']] .= ' ' . $submission->data[$component['cid']]['value'][2];
            }
          }
          else {
            $tokens['%' . $component['form_key']] = '';
          }
          break;
        case 'grid':
          $options = array();
          $opts = explode("<nl2br>", preg_replace("/(\r\n)+|(\n|\r)+/", "<nl2br>", $component['extra']['options']));
          foreach ($opts as $opt) {
            list($key, $var) = explode('|', $opt);
            if (empty($var)) {
              $options[$key] = trim($key);
            }
            else {
              $options[$key] = trim($var);
            }
          }
          $questions = explode("<nl2br>", preg_replace("/(\r\n)+|(\n|\r)+/", "<nl2br>", $component['extra']['questions']));
          ksort($submission->data[$component['cid']]['value']);
          $t = array();
          foreach ($submission->data[$component['cid']]['value'] as $num => $answer) {
            $t[] = $questions[$num] . ': ' . $options[$answer];
          }
          $tokens['%' . $component['form_key']] = implode("<br />\n", $t);
          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']));
            $selectNL = $selectAll = $selectAllNL = array();
            foreach ($values as $value) {
              $selectNL[] = ' - ' . $value . "<br />\n";
            }
            foreach ($items as $key => $item) {
              if (strpos($item, '|')) {
                $item = substr($item, 0, strpos($item, '|'));
              }
              if (in_array($item, $values)) {
                $selectAll[] = '<u><b><span class="selected">' . $item . '</span></b></u>';
                $selectAllNL[] = ' [X] ' . $item . "<br />\n";
              }
              else {
                $selectAll[] = $item;
                $selectAllNL[] = ' [  ] ' . $item . "<br />\n";
              }
            }
            $tokens['%' . $component['form_key']] = implode(', ', $values);
            $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 'email':
        case 'hidden':
        case 'textarea':
        case 'textfield':
          if (!empty($submission->data[$component['cid']]['value'][0])) {
            $tokens['%' . $component['form_key']] = $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)) {
              call_user_func($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;
}