Passed
Branch master (9b4352)
by Rutger
13:03
created

Oauth2EncryptionKeyUsageAction   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 7
eloc 28
c 1
b 0
f 0
dl 0
loc 43
ccs 0
cts 28
cp 0
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B run() 0 41 7
1
<?php
2
3
namespace rhertogh\Yii2Oauth2Server\controllers\console\encryption;
4
5
use rhertogh\Yii2Oauth2Server\controllers\console\Oauth2EncryptionController;
6
use yii\base\Action;
7
use yii\console\ExitCode;
8
use yii\console\widgets\Table;
9
10
/**
11
 * @property Oauth2EncryptionController $controller
12
 */
13
class Oauth2EncryptionKeyUsageAction extends Action
14
{
15
    public function run()
16
    {
17
        $module = $this->controller->module;
18
        $modelUsage = $module->getStorageEncryptionKeyUsage();
19
20
        if ($this->controller->keyName) {
21
            $keyName = $this->controller->keyName;
22
            $result = [];
23
            foreach ($modelUsage as $model => $modelResult) {
24
                if (array_key_exists($keyName, $modelResult)) {
25
                    $result[$model] = $modelResult[$keyName];
26
                } else {
27
                    $result[$model] = '[none]';
28
                }
29
            }
30
31
            $this->controller->stdout('Storage Encryption Key Usage for "' . $keyName . '":' . PHP_EOL);
32
            $this->controller->stdout(Table::widget([
33
                'headers' => ['Model', 'Usage'],
34
                'rows' => array_map(fn($model) => [$model, $result[$model]], array_keys($result)),
35
            ]));
36
        } else {
37
            $result = [];
38
            foreach ($modelUsage as $modelResult) {
39
                foreach ($modelResult as $keyName => $modelPks) {
40
                    if (array_key_exists($keyName, $result)) {
41
                        $result[$keyName] += count($modelPks);
42
                    } else {
43
                        $result[$keyName] = count($modelPks);
44
                    }
45
                }
46
            }
47
48
            $this->controller->stdout('Storage Encryption Keys Usage:' . PHP_EOL);
49
            $this->controller->stdout(Table::widget([
50
                'headers' => ['Key', 'Usage'],
51
                'rows' => array_map(fn($keyName) => [$keyName, $result[$keyName]], array_keys($result)),
52
            ]));
53
        }
54
55
        return ExitCode::OK;
56
    }
57
}
58