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

AvailableMerchants::run()   B

Complexity

Conditions 6
Paths 6

Size

Total Lines 21

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 42

Importance

Changes 0
Metric Value
dl 0
loc 21
ccs 0
cts 8
cp 0
rs 8.9617
c 0
b 0
f 0
cc 6
nc 6
nop 0
crap 42
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