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

HasButtonRendererTrait   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
eloc 21
dl 0
loc 51
ccs 0
cts 22
cp 0
rs 10
c 1
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getNewButtonRenderer() 0 10 1
A getButtonRenderer() 0 8 2
A renderButtons() 0 14 3
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