This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | /** |
||
3 | * Finance module for HiPanel |
||
4 | * |
||
5 | * @link https://github.com/hiqdev/hipanel-module-finance |
||
6 | * @package hipanel-module-finance |
||
7 | * @license BSD-3-Clause |
||
8 | * @copyright Copyright (c) 2015-2019, HiQDev (http://hiqdev.com/) |
||
9 | */ |
||
10 | |||
11 | namespace hipanel\modules\finance\logic; |
||
12 | |||
13 | use hipanel\modules\finance\forms\AbstractTariffForm; |
||
14 | use hipanel\modules\finance\models\Tariff; |
||
15 | use hiqdev\hiart\ResponseErrorException; |
||
16 | use Yii; |
||
17 | use yii\base\BaseObject; |
||
18 | use yii\base\InvalidConfigException; |
||
19 | use yii\web\UnprocessableEntityHttpException; |
||
20 | |||
21 | abstract class AbstractTariffManager extends BaseObject |
||
22 | { |
||
23 | /** |
||
24 | * @var int Parent tariff ID |
||
25 | */ |
||
26 | public $parent_id; |
||
27 | |||
28 | /** |
||
29 | * @var AbstractTariffForm |
||
30 | */ |
||
31 | public $form; |
||
32 | |||
33 | /** |
||
34 | * @var array options used to build [[form]] |
||
35 | * @see buildForm() |
||
36 | */ |
||
37 | public $formOptions = []; |
||
38 | |||
39 | /** |
||
40 | * @var string |
||
41 | */ |
||
42 | public $scenario; |
||
43 | |||
44 | /** |
||
45 | * @var Tariff The actual tariff |
||
46 | */ |
||
47 | protected $tariff; |
||
48 | |||
49 | /** |
||
50 | * @var Tariff Parent tariff |
||
51 | */ |
||
52 | protected $parentTariff; |
||
53 | |||
54 | /** |
||
55 | * @var string The type used to find parent tariffs |
||
56 | */ |
||
57 | protected $type; |
||
58 | |||
59 | public function init() |
||
60 | { |
||
61 | if (!isset($this->type)) { |
||
62 | throw new InvalidConfigException('Property "type" must be set'); |
||
63 | } |
||
64 | |||
65 | $this->initParentTariff(); |
||
66 | $this->buildForm(); |
||
67 | } |
||
68 | |||
69 | /** |
||
70 | * Fills [[form]] property with a proper [[AbstractTariffForm]] object. |
||
71 | */ |
||
72 | protected function buildForm() |
||
73 | { |
||
74 | $this->form = Yii::createObject(array_merge([ |
||
75 | 'scenario' => $this->scenario, |
||
76 | 'parent_id' => $this->parent_id, |
||
77 | 'parentTariff' => $this->parentTariff, |
||
78 | 'tariff' => $this->tariff, |
||
79 | ], $this->getFormOptions())); |
||
80 | } |
||
81 | |||
82 | protected function getFormOptions() |
||
83 | { |
||
84 | return $this->formOptions; |
||
85 | } |
||
86 | |||
87 | protected function initParentTariff() |
||
88 | { |
||
89 | $id = $this->determineParentTariff(); |
||
90 | |||
91 | if ($id === null) { |
||
92 | return; |
||
93 | } |
||
94 | |||
95 | $this->parent_id = $id; |
||
96 | $this->parentTariff = Tariff::find() |
||
97 | ->where(['id' => $id]) |
||
98 | ->details() |
||
99 | ->one(); |
||
100 | |||
101 | // In case parent tariff is not available - use current tariff as the last hope fallback |
||
102 | if ($this->parentTariff === null && $this->tariff !== null) { |
||
103 | $this->parentTariff = clone $this->tariff; |
||
104 | } |
||
105 | } |
||
106 | |||
107 | /** |
||
108 | * Finds parent tariff ID. |
||
109 | * |
||
110 | * @return int |
||
111 | */ |
||
112 | protected function determineParentTariff() |
||
113 | { |
||
114 | if ($this->tariff === null) { |
||
115 | if (!empty($this->parent_id)) { |
||
116 | return $this->parent_id; |
||
117 | } |
||
118 | |||
119 | return null; |
||
120 | } |
||
121 | |||
122 | if ($this->tariff->parent_id !== null) { |
||
123 | return $this->tariff->parent_id; |
||
124 | } |
||
125 | |||
126 | return $this->tariff->id; |
||
127 | } |
||
128 | |||
129 | public function getType() |
||
130 | { |
||
131 | return $this->type; |
||
132 | } |
||
133 | |||
134 | /** |
||
135 | * @param Tariff $tariff |
||
136 | */ |
||
137 | public function setTariff($tariff) |
||
138 | { |
||
139 | $this->tariff = $tariff; |
||
140 | } |
||
141 | |||
142 | View Code Duplication | public function insert(): bool |
|
0 ignored issues
–
show
|
|||
143 | { |
||
144 | $data = $this->form->toArray(); |
||
145 | |||
146 | try { |
||
147 | $result = Tariff::perform('create', $data); |
||
148 | } catch (ResponseErrorException $e) { |
||
149 | throw new UnprocessableEntityHttpException($e->getMessage(), 0, $e); |
||
150 | } |
||
151 | |||
152 | $this->form->id = $result['id']; |
||
153 | |||
154 | return true; |
||
155 | } |
||
156 | |||
157 | View Code Duplication | public function update(): bool |
|
0 ignored issues
–
show
This method seems to be duplicated in 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...
|
|||
158 | { |
||
159 | $data = $this->form->toArray(); |
||
160 | |||
161 | try { |
||
162 | $result = Tariff::perform('update', $data); |
||
163 | } catch (ResponseErrorException $e) { |
||
164 | throw new UnprocessableEntityHttpException($e->getMessage(), 0, $e); |
||
165 | } |
||
166 | |||
167 | return true; |
||
168 | } |
||
169 | } |
||
170 |
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.