TmpRepository   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 88
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 4
dl 0
loc 88
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A generateKey() 0 4 1
A setFile() 0 8 2
A getFile() 0 10 2
A getFileName() 0 7 1
A removeFile() 0 10 2
1
<?php
2
3
namespace yiicod\fileupload\models\behaviors;
4
5
use Symfony\Component\Filesystem\Filesystem;
6
use Yii;
7
use yii\db\ActiveRecord;
8
use yii\web\Application;
9
10
class TmpRepository implements TmpRepositoryInterface
11
{
12
    /**
13
     * @var ActiveRecord
14
     */
15
    private $owner;
16
17
    public function __construct($owner)
18
    {
19
        $this->owner = $owner;
20
    }
21
22
    /**
23
     * Generate session key for file
24
     *
25
     * @param string $field Field name
26
     *
27
     * @return string
28
     */
29
    public function generateKey(string $field): string
30
    {
31
        return 'file_' . get_class($this->owner)::tableName() . $field;
0 ignored issues
show
Bug introduced by
The method tableName cannot be called on get_class($this->owner) (of type string).

Methods can only be called on objects. This check looks for methods being called on variables that have been inferred to never be objects.

Loading history...
32
    }
33
34
    /**
35
     * Save file to session, after move to "getFilePath"
36
     *
37
     * @author Orlov Alexey <[email protected]>
38
     *
39
     * @param string $file
40
     * @param string $field
41
     *
42
     * @return bool
43
     */
44
    public function setFile(string $file, string $field): bool
45
    {
46
        if (Yii::$app instanceof Application) {
47
            Yii::$app->session->set($this->generateKey($field), $file);
48
        }
49
50
        return true;
51
    }
52
53
    /**
54
     * Get file by session key
55
     *
56
     * @param string $field
57
     * @param bool $onlyName get only file name
0 ignored issues
show
Bug introduced by
There is no parameter named $onlyName. Was it maybe removed?

This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.

Consider the following example. The parameter $italy is not defined by the method finale(...).

/**
 * @param array $germany
 * @param array $island
 * @param array $italy
 */
function finale($germany, $island) {
    return "2:1";
}

The most likely cause is that the parameter was removed, but the annotation was not.

Loading history...
58
     *
59
     * @return string Return string
60
     */
61
    public function getFile(string $field): string
62
    {
63
        if (Yii::$app instanceof Application) {
64
            $file = Yii::$app->session->get($this->generateKey($field), '');
65
66
            return $file;
67
        }
68
69
        return '';
70
    }
71
72
    public function getFileName(string $field): string
73
    {
74
        $file = $this->getFile($field);
75
        $name = end(explode('/', $file));
0 ignored issues
show
Bug introduced by
explode('/', $file) cannot be passed to end() as the parameter $array expects a reference.
Loading history...
76
77
        return $name;
78
    }
79
80
    /**
81
     * Remove file by session key
82
     *
83
     * @param string $field
84
     *
85
     * @return bool
86
     */
87
    public function removeFile(string $field): bool
88
    {
89
        if (Yii::$app instanceof Application) {
90
            $fs = new Filesystem();
91
            $fs->remove(Yii::$app->session->get($this->generateKey($field)));
92
            Yii::$app->session->set($this->generateKey($field), '');
93
        }
94
95
        return true;
96
    }
97
}
98