GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 1ba1f4...ea41a5 )
by Alexey
05:37
created

ParametersWidget::init()   B

Complexity

Conditions 5
Paths 4

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %
Metric Value
dl 0
loc 14
rs 8.8571
cc 5
eloc 8
nc 4
nop 0
1
<?php
2
/**
3
 * @author Alexey Tatarinov <[email protected]>
4
 * @link https://github.com/shogodev/argilla/
5
 * @copyright Copyright &copy; 2003-2014 Shogo
6
 * @license http://argilla.ru/LICENSE
7
 * @package
8
 */
9
class ParametersWidget extends CWidget
10
{
11
  /**
12
   * @var BProduct
13
   */
14
  public $model;
15
16
  public $form;
17
18
  /**
19
   * @var array $hideParameters - масив id параметров которые нужно скрыть
20
   */
21
  public $hideParameters = array();
22
23
  public function init()
24
  {
25
    if( is_null($this->model) )
26
      throw new CHttpException(500, 'Укажите свойство model для виджета '.__CLASS__);
27
28
    if( is_null($this->form) )
29
      throw new CHttpException(500, 'Укажите свойство form для виджета '.__CLASS__);
30
31
    if( $this->model->asa('modificationBehavior') && $this->model->isModification())
32
    {
33
      $parent = $this->model->getParentModel();
34
      $this->model->section_id = $parent->section_id;
35
    }
36
  }
37
38
  public function run()
39
  {
40
    if( !$this->isAvailable() )
41
      return;
42
43
    echo CHtml::openTag('div', array('class' => 'group-view', 'id' => 'product-parameters'));
44
    $this->renderTable();
45
    echo CHtml::closeTag('div');
46
  }
47
48
  private function renderTable()
49
  {
50
    echo '<table class="items table table-striped table-bordered param-table">';
51
    echo '<thead><tr><th>Параметры</th><th>Значения</th></tr></thead>';
52
    echo '<tbody>';
53
    $this->renderBody();
54
    echo '</tbody>';
55
    echo '</table>';
56
  }
57
58
  private function renderBody()
59
  {
60
    foreach(BProductParam::model()->getParameters($this->model) as $parameter)
61
    {
62
      if( $parameter->isGroup() )
63
      {
64
        echo '<tr class="group"><td colspan="2">'.$parameter->name.'</td></tr>';
65
      }
66
      else
67
      {
68
        if( in_array($parameter->id, $this->hideParameters) )
69
          echo '<tr style="display: none">';
70
        else
71
          echo '<tr>';
72
        echo '<th>';
73
        echo CHtml::label($parameter->name, null);
74
        echo '</th>';
75
        echo '<td>';
76
        $this->renderParameter($parameter);
77
        echo '</td></tr>';
78
      }
79
    }
80
  }
81
82
  /**
83
   * @param BProductParam $param
84
   */
85
  private function renderParameter($param)
86
  {
87
    if( $this->model->asa('productColorBehavior') && $this->model->getColorParameterId() == $param->id )
88
    {
89
      $this->renderColorParameter($param, true);
90
      return;
91
    }
92
93
    if( $this->model->asa('updateParameterColorGroupBehavior') && $this->model->colorGroupParameterId == $param->id )
94
    {
95
      $this->renderColorParameter($param, false);
96
      return;
97
    }
98
99
    switch($param->type)
100
    {
101
      case 'text':
102
      case 'slider':
103
        echo CHtml::activeTextField($param, "[$param->id]value");
104
      break;
105
106 View Code Duplication
      case 'checkbox':
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
107
        echo CHtml::tag('div', array('style' => 'float: left'), false, false);
108
        echo $this->form->checkBoxList($param, "[$param->id]value", CHtml::listData($param->variants, 'id', 'name'), array('template' => '<span class="{labelCssClass}">{input}{label}</span>'));
109
        echo CHtml::closeTag('div');
110
      break;
111
112
      case 'select':
113
        echo $this->form->dropDownList($param, "[$param->id]value", array('' => 'Не задано') + CHtml::listData($param->variants, 'id', 'name'));
114
      break;
115
116 View Code Duplication
      case 'radio':
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
117
        echo CHtml::tag('div', array('style' => 'float: left'), false, false);
118
        echo $this->form->radioButtonList($param, "[$param->id]value", CHtml::listData($param->variants, 'id', 'name'));
119
        echo CHtml::closeTag('div');
120
      break;
121
    }
122
  }
123
124
  /**
125
   * @param BProductParam $param
126
   * @param boolean $image
127
   */
128
  private function renderColorParameter($param, $image)
129
  {
130
    $variants = array();
131
132
    foreach($param->variants as $i => $variant)
133
    {
134
      if($image )
135
        $variants[$variant->id] = CHtml::image($variant->getImage(), $variant->alt, array('style' => 'height: 25px; background: '.$variant->notice , 'title' => $variant->name, ));
136
      else
137
        $variants[$variant->id] = CHtml::tag('span', array('style' => 'display: block; height: 25px; width: 25px; background-color: '.$variant->notice , 'title' => $variant->name, ));
138
139
      if( is_array($param->value) && in_array($variant->id, $param->value) )
140
      {
141
        echo CHtml::tag('span', array('class' => 'checkbox'),
142
          CHtml::label($variants[$variant->id], null).
143
          CHtml::hiddenField("BProductParamName[$param->id][value][]", $variant->id)
144
        );
145
      }
146
    }
147
  }
148
149
  private function isAvailable()
150
  {
151
    return !$this->controller->popup && $this->controller->isUpdate();
152
  }
153
}
154