Projet

Général

Profil

Paste
Télécharger (2,98 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / webform / views / webform_plugin_row_submission_view.inc @ 76bdcd04

1 a45e4bc1 Assos Assos
<?php
2
3
/**
4
 * Contains the submission view row style plugin.
5 01f36513 Assos Assos
 *
6 a45e4bc1 Assos Assos
 * Plugin which performs a webform_submission_render on the resulting object.
7
 *
8
 * Most of the code on this object is in the theme function.
9
 *
10
 * @ingroup views_row_plugins
11
 */
12
class webform_views_plugin_row_submission_view extends views_plugin_row {
13 01f36513 Assos Assos
14 feca1e4a Assos Assos
  /**
15
   * Basic properties that let the row style follow relationships.
16 01f36513 Assos Assos
   *
17
   * @var string
18 feca1e4a Assos Assos
   */
19 a45e4bc1 Assos Assos
  public $base_table = 'webform_submissions';
20
  public $base_field = 'sid';
21
22 feca1e4a Assos Assos
  /**
23
   * Stores the nodes loaded with pre_render.
24 01f36513 Assos Assos
   *
25
   * @var array
26 feca1e4a Assos Assos
   */
27 a45e4bc1 Assos Assos
  private $submissions = array();
28
  private $nodes = array();
29
30 feca1e4a Assos Assos
  /**
31 76bdcd04 Assos Assos
   * {@inheritdoc}
32 feca1e4a Assos Assos
   */
33
  public function option_definition() {
34 a45e4bc1 Assos Assos
    $options = parent::option_definition();
35
36
    $options['format'] = array('default' => 'html');
37
38
    return $options;
39
  }
40
41 feca1e4a Assos Assos
  /**
42 76bdcd04 Assos Assos
   * {@inheritdoc}
43 feca1e4a Assos Assos
   */
44
  public function options_form(&$form, &$form_state) {
45 a45e4bc1 Assos Assos
    parent::options_form($form, $form_state);
46
47
    $options = $this->options_form_summary_options();
48
    $form['format'] = array(
49
      '#type' => 'radios',
50
      '#options' => $options,
51
      '#title' => t('Display mode'),
52
      '#default_value' => $this->options['format'],
53
    );
54
  }
55
56
  /**
57
   * Return the main options, which are shown in the summary title.
58
   */
59 feca1e4a Assos Assos
  public function options_form_summary_options() {
60 a45e4bc1 Assos Assos
    return array(
61
      'html' => t('HTML'),
62
      'text' => t('Plain text'),
63
    );
64
  }
65
66 feca1e4a Assos Assos
  /**
67
   *
68
   */
69
  public function summary_title() {
70 a45e4bc1 Assos Assos
    $options = $this->options_form_summary_options();
71
    return check_plain($options[$this->options['format']]);
72
  }
73
74 feca1e4a Assos Assos
  /**
75
   *
76
   */
77
  public function pre_render($values) {
78 a45e4bc1 Assos Assos
    $sids = array();
79
    foreach ($values as $row) {
80
      $sids[] = $row->{$this->field_alias};
81
    }
82
    module_load_include('inc', 'webform', 'includes/webform.submissions');
83
    $this->submissions = $sids ? webform_get_submissions(array('sid' => $sids)) : array();
84
85
    $nids = array();
86
    foreach ($this->submissions as $sid => $submission) {
87
      $nids[] = $submission->nid;
88
    }
89
    $nids = array_unique($nids);
90
    $this->nodes = $nids ? node_load_multiple($nids) : array();
91
  }
92
93 feca1e4a Assos Assos
  /**
94
   *
95
   */
96
  public function render($row) {
97 a45e4bc1 Assos Assos
    if (isset($this->submissions[$row->{$this->field_alias}])) {
98
      $submission = $this->submissions[$row->{$this->field_alias}];
99
      $node = $this->nodes[$submission->nid];
100
      $submission->view = $this->view;
101
      $format = $this->options['format'];
102
      $build = webform_submission_render($node, $submission, NULL, $format);
103
104
      // Add extra theme functions:
105
      $themes = array();
106
      foreach ($build['#theme'] as $hook) {
107
        $themes = array_merge($themes, _views_theme_functions($hook, $this->view, $this->view->display[$this->view->current_display]));
108
      }
109
      $build['#theme'] = $themes;
110
111 76bdcd04 Assos Assos
      // Render built submission, and if unsanitized plain text is used, make
112
      // it safe for display.
113 a45e4bc1 Assos Assos
      $render = drupal_render($build);
114
      return $format == 'html' ? $render : nl2br(check_plain($render));
115
    }
116
  }
117 feca1e4a Assos Assos
118 a45e4bc1 Assos Assos
}