Completed
Push — master ( 3048ca...b66556 )
by Dmitry
09:13
created

AvailableMerchants   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 3
dl 0
loc 31
ccs 0
cts 8
cp 0
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B run() 0 21 6
1
<?php
2
3
namespace hipanel\modules\finance\widgets;
4
5
use hipanel\modules\finance\models\Merchant;
6
use yii\base\Widget;
7
use yii\helpers\Html;
8
use Yii;
9
10
class AvailableMerchants extends Widget
11
{
12
    /**
13
     * @var Merchant[]
14
     */
15
    public $merchants;
16
17
    const PAYPAL_PROCESSING = 'PayPal';
18
19
    public function run()
20
    {
21
        if ($this->merchants === null && Yii::$app->hasModule('merchant') && Yii::$app->user->can('deposit')) {
22
            $this->merchants = Yii::$app->getModule('merchant')->getPurchaseRequestCollection()->getItems();
23
        }
24
25
        if (empty($this->merchants)) {
26
            return '';
27
        }
28
29
        $list = array_map(function($merchant) { return $merchant->label; }, $this->merchants);
30
        $htmlList = array_unique(array_map(function($merchant) { return Html::tag('b', $merchant); }, $list));
31
32
        $out[] = Yii::t('hipanel:finance', 'We accept the following automatic payment methods') . ":";
0 ignored issues
show
Coding Style Comprehensibility introduced by
$out was never initialized. Although not strictly required by PHP, it is generally a good practice to add $out = array(); before regardless.

Adding an explicit array definition is generally preferable to implicit array definition as it guarantees a stable state of the code.

Let’s take a look at an example:

foreach ($collection as $item) {
    $myArray['foo'] = $item->getFoo();

    if ($item->hasBar()) {
        $myArray['bar'] = $item->getBar();
    }

    // do something with $myArray
}

As you can see in this example, the array $myArray is initialized the first time when the foreach loop is entered. You can also see that the value of the bar key is only written conditionally; thus, its value might result from a previous iteration.

This might or might not be intended. To make your intention clear, your code more readible and to avoid accidental bugs, we recommend to add an explicit initialization $myArray = array() either outside or inside the foreach loop.

Loading history...
33
        $out[] = implode(',&nbsp; ', $htmlList);
34
        if (\in_array(self::PAYPAL_PROCESSING, $list, true)) {
35
            $out[] = Yii::t('hipanel:finance', 'as well as PayPal payments from your Visa and MasterCard');
36
        }
37
38
        return implode(" ", $out);
39
    }
40
}
41