summaryrefslogtreecommitdiffstats
path: root/library/Businessprocess/Web/Form/Element/StateOverrides.php
diff options
context:
space:
mode:
Diffstat (limited to 'library/Businessprocess/Web/Form/Element/StateOverrides.php')
-rw-r--r--library/Businessprocess/Web/Form/Element/StateOverrides.php55
1 files changed, 55 insertions, 0 deletions
diff --git a/library/Businessprocess/Web/Form/Element/StateOverrides.php b/library/Businessprocess/Web/Form/Element/StateOverrides.php
new file mode 100644
index 0000000..c2216c0
--- /dev/null
+++ b/library/Businessprocess/Web/Form/Element/StateOverrides.php
@@ -0,0 +1,55 @@
+<?php
+
+namespace Icinga\Module\Businessprocess\Web\Form\Element;
+
+class StateOverrides extends FormElement
+{
+ public $helper = 'formStateOverrides';
+
+ /** @var array The overridable states */
+ protected $states;
+
+ /**
+ * Set the overridable states
+ *
+ * @param array $states
+ *
+ * @return $this
+ */
+ public function setStates(array $states)
+ {
+ $this->states = $states;
+
+ return $this;
+ }
+
+ /**
+ * Get the overridable states
+ *
+ * @return array
+ */
+ public function getStates()
+ {
+ return $this->states;
+ }
+
+ public function init()
+ {
+ $this->setIsArray(true);
+ }
+
+ public function setValue($value)
+ {
+ $cleanedValue = [];
+
+ if (! empty($value)) {
+ foreach ($value as $from => $to) {
+ if ((int) $from !== (int) $to) {
+ $cleanedValue[$from] = $to;
+ }
+ }
+ }
+
+ return parent::setValue($cleanedValue);
+ }
+}