Completed
Push — master ( 47bdab...b8e171 )
by Gabriel
01:58 queued 11s
created

HasButtonRendererTrait::getButtonRenderer()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 4
dl 0
loc 8
ccs 0
cts 5
cp 0
rs 10
c 1
b 0
f 0
cc 2
nc 2
nop 1
crap 6
1
<?php
2
3
namespace Nip\Form\Renderer\Traits;
4
5
use Nip\Form\Buttons\AbstractButton;
6
use Nip_Form_Renderer_Button_Abstract as AbstractButtonRenderer;
7
8
/**
9
 * Trait HasButtonRendererTrait
10
 * @package Nip\Form\Renderer\Traits
11
 */
12
trait HasButtonRendererTrait
13
{
14
    protected $buttonsRenderer = [];
15
16
    /**
17
     * @return string
18
     */
19
    public function renderButtons()
20
    {
21
        $return = '';
22
        $buttons = $this->getForm()->getButtons();
0 ignored issues
show
Bug introduced by
It seems like getForm() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

22
        $buttons = $this->/** @scrutinizer ignore-call */ getForm()->getButtons();
Loading history...
23
        if ($buttons) {
24
            $return .= '<div class="form-actions">';
25
            foreach ($buttons as $button) {
26
                $return .= $button->render() . "\n";
27
            }
28
            $return .= '    <div class="clear"></div>';
29
            $return .= '</div>';
30
        }
31
32
        return $return;
33
    }
34
35
    /**
36
     * @param AbstractButton $button
37
     * @return mixed
38
     */
39
    public function getButtonRenderer(AbstractButton $button)
40
    {
41
        $name = $button->getName();
42
        if (!isset($this->buttonsRenderer[$name])) {
43
            $this->buttonsRenderer[$name] = $this->getNewButtonRenderer($button);
44
        }
45
46
        return $this->buttonsRenderer[$name];
47
    }
48
49
    /**
50
     * @param AbstractButton $button
51
     * @return mixed
52
     */
53
    protected function getNewButtonRenderer(AbstractButton $button)
54
    {
55
        $type = $button->getType();
56
        $name = 'Nip_Form_Renderer_Button_' . ucfirst($type);
57
        /** @var AbstractButtonRenderer $renderer */
58
        $renderer = new $name();
59
        $renderer->setRenderer($this);
60
        $renderer->setItem($button);
61
62
        return $renderer;
63
    }
64
}
65