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