Passed
Push — v1 ( 0f87a2...543469 )
by Andrew
08:17 queued 04:56
created

ErrorsTarget   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 67
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 7
eloc 21
dl 0
loc 67
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A collect() 0 26 6
A export() 0 2 1
1
<?php
2
/**
3
 * Webperf plugin for Craft CMS 3.x
4
 *
5
 * Monitor the performance of your webpages through real-world user timing data
6
 *
7
 * @link      https://nystudio107.com
0 ignored issues
show
Coding Style introduced by
The tag in position 1 should be the @copyright tag
Loading history...
8
 * @copyright Copyright (c) 2019 nystudio107
0 ignored issues
show
Coding Style introduced by
@copyright tag must contain a year and the name of the copyright holder
Loading history...
9
 */
0 ignored issues
show
Coding Style introduced by
PHP version not specified
Loading history...
Coding Style introduced by
Missing @category tag in file comment
Loading history...
Coding Style introduced by
Missing @package tag in file comment
Loading history...
Coding Style introduced by
Missing @author tag in file comment
Loading history...
Coding Style introduced by
Missing @license tag in file comment
Loading history...
10
11
namespace nystudio107\webperf\log;
12
13
use nystudio107\webperf\Webperf;
14
15
use yii\log\Target;
0 ignored issues
show
Bug introduced by
The type yii\log\Target was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
16
17
/**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
18
 * @author    nystudio107
0 ignored issues
show
Coding Style introduced by
The tag in position 1 should be the @package tag
Loading history...
Coding Style introduced by
Content of the @author tag must be in the form "Display Name <[email protected]>"
Loading history...
Coding Style introduced by
Tag value indented incorrectly; expected 2 spaces but found 4
Loading history...
19
 * @package   Webperf
0 ignored issues
show
Coding Style introduced by
Tag value indented incorrectly; expected 1 spaces but found 3
Loading history...
20
 * @since     1.0.0
0 ignored issues
show
Coding Style introduced by
The tag in position 3 should be the @author tag
Loading history...
Coding Style introduced by
Tag value indented incorrectly; expected 3 spaces but found 5
Loading history...
21
 */
0 ignored issues
show
Coding Style introduced by
Missing @category tag in class comment
Loading history...
Coding Style introduced by
Missing @license tag in class comment
Loading history...
Coding Style introduced by
Missing @link tag in class comment
Loading history...
22
class ErrorsTarget extends Target
23
{
24
    // Constants
25
    // =========================================================================
26
27
    const ERROR_LEVELS = [
28
        1 => 'error',
29
        2 => 'warning'
30
    ];
31
32
    // Public Properties
33
    // =========================================================================
34
35
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
36
     * @var array accumulated page errors
37
     */
38
    public $pageErrors = [];
39
40
    // Public Methods
41
    // =========================================================================
42
43
    /**
44
     * Processes the given log messages.
45
     * This method will filter the given messages with [[levels]] and
46
     * [[categories]]. And if requested, it will also export the filtering
47
     * result to specific medium (e.g. email).
48
     *
49
     * @param array $messages log messages to be processed. See
50
     *                        [[Logger::messages]] for the structure of each
51
     *                        message.
52
     * @param bool  $final    whether this method is called at the end of the
53
     *                        current application
54
     */
0 ignored issues
show
Coding Style introduced by
Missing @return tag in function comment
Loading history...
55
    public function collect($messages, $final)
56
    {
57
        // Bail if either values are null
58
        if (($messages === null) || ($this->messages === null)) {
59
            return;
60
        }
61
        // Merge in any messages intended for us
62
        $this->messages = array_merge(
0 ignored issues
show
Bug Best Practice introduced by
The property messages does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
63
            $this->messages,
64
            static::filterMessages($messages, $this->getLevels(), $this->categories, $this->except)
65
        );
66
        foreach ($this->messages as $message) {
67
            // Ignore objects/arrays
68
            if (!\is_string($message[0])) {
69
                continue;
70
            }
71
            $this->pageErrors[] = [
72
                'level' => self::ERROR_LEVELS[$message[1]],
73
                'message' => $message[0],
74
                'category' => $message[2],
75
            ];
76
        }
77
        $this->messages = [];
78
        if ($final) {
79
            $this->export();
80
            Webperf::$plugin->beacons->includeCraftErrorsBeacon();
81
        }
82
    }
83
84
    /**
0 ignored issues
show
Coding Style introduced by
Missing short description in doc comment
Loading history...
85
     * @inheritdoc
86
     */
0 ignored issues
show
Coding Style introduced by
Missing @return tag in function comment
Loading history...
87
    public function export()
88
    {
89
    }
90
}
91