Submission.php in Little helpers 7
File
src/Webform/Submission.php
View source
<?php
namespace Drupal\little_helpers\Webform;
module_load_include('inc', 'webform', 'includes/webform.submissions');
class Submission {
public $node;
protected $submission;
public $webform;
protected $data;
public static function load($nid, $sid, $reset = FALSE) {
if (!$nid || !$sid) {
return NULL;
}
$node = node_load($nid);
$submission = webform_get_submission($nid, $sid, $reset);
if ($node && $submission) {
return new static($node, $submission);
}
}
public function __construct($node_or_webform, $submission) {
$this->submission = $submission;
if ($node_or_webform instanceof Webform) {
$this->node = $node_or_webform->node;
$this->webform = $node_or_webform;
}
else {
$this->node = $node_or_webform;
$this->webform = new Webform($node_or_webform);
}
$this->data = array();
if (!isset($submission->tracking)) {
$submission->tracking = (object) [];
}
$webform4 = Webform::is_webform4();
foreach (array_keys($this->node->webform['components']) as $cid) {
if (isset($this->submission->data[$cid])) {
$this->data[$cid] = $webform4 ? $this->submission->data[$cid] : $this->submission->data[$cid]['value'];
}
else {
$this->data[$cid] = array(
NULL,
);
}
}
}
public function valueByKey($form_key) {
if ($component =& $this->webform
->componentByKey($form_key)) {
return $this
->valueByCid($component['cid']);
}
elseif (isset($this->submission->tracking->{$form_key})) {
return $this->submission->tracking->{$form_key};
}
}
public function valuesByKey($form_key) {
if ($component =& $this->webform
->componentByKey($form_key)) {
return $this
->valuesByCid($component['cid']);
}
elseif (isset($this->submission->tracking->{$form_key})) {
return $this->submission->tracking->{$form_key};
}
}
public function valuesByType($type) {
$values = array();
foreach (array_keys($this->webform
->componentsByType($type)) as $cid) {
$values[$cid] = $this
->valueByCid($cid);
}
return $values;
}
public function valueByCid($cid) {
reset($this->data[$cid]);
return current($this->data[$cid]);
}
public function valuesByCid($cid) {
return $this->data[$cid];
}
public function unwrap() {
return $this->submission;
}
public function ids() {
return array(
'nid' => $this->node->nid,
'sid' => $this->submission->sid,
);
}
public function __get($name) {
return $this->submission->{$name};
}
public function __sleep() {
$this->nid = $this->node->nid;
$this->sid = $this->submission->sid;
return array(
'nid',
'sid',
);
}
public function __wakeup() {
if (!($node = node_load($this->nid))) {
throw new \UnexpectedValueException('Tried to __wakeup with non-existing node.');
}
if (!($submission = webform_get_submission($this->nid, $this->sid))) {
throw new \UnexpectedValueException('Tried to __wakeup with non-existing submission.');
}
$this
->__construct($node, $submission);
}
public function getNode() {
return $this->node;
}
}
Classes
Name |
Description |
Submission |
A useful wrapper for webform submission objects. |