summaryrefslogtreecommitdiffstats
path: root/application/views/helpers/FormStateOverrides.php
blob: 74ed2f486bfe3c6fbb78c5547196bf660e4527de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php

// Avoid complaints about missing namespace and invalid class name
// @codingStandardsIgnoreStart
class Zend_View_Helper_FormStateOverrides extends Zend_View_Helper_FormElement
{
    // @codingStandardsIgnoreEnd

    public function formStateOverrides($name, $value = null, $attribs = null)
    {
        $states = $attribs['states'];
        unset($attribs['states']);
        $attribs['multiple'] = '';

        $html = '';
        foreach ($states as $state => $label) {
            if ($state === 0) {
                continue;
            }

            $chosen = $state;
            if (isset($value[$state])) {
                $chosen = $value[$state];
            }

            $options = [$state => t('Keep actual state')] + $states;

            $html .= '<label><span>' . $this->view->escape($label) . '</span>';
            $html .= $this->view->formSelect(
                sprintf('%s[%d]', substr($name, 0, -2), $state),
                $chosen,
                $attribs,
                $options
            );
            $html .= '</label>';
        }

        return $html;
    }
}