Issues (459)

src/util/JpGraphErrObjectImg.php (3 issues)

1
<?php
2
3
/**
4
 * JPGraph v4.0.3
5
 */
6
7
namespace Amenadiel\JpGraph\Util;
8
9
use Amenadiel\JpGraph\Image;
10
use Amenadiel\JpGraph\Text;
11
12
/**
13
 * An image based error handler.
14
 */
15
class JpGraphErrObjectImg extends JpGraphErrObject
16
{
17
    public function __construct()
18
    {
19
        parent::__construct();
20
        // Empty. Reserved for future use
21
    }
22
23
    public function Raise($aMsg, $aHalt = true)
24
    {
25
        $img_iconerror =
26
            'iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAAAaV' .
27
            'BMVEX//////2Xy8mLl5V/Z2VvMzFi/v1WyslKlpU+ZmUyMjEh/' .
28
            'f0VyckJlZT9YWDxMTDjAwMDy8sLl5bnY2K/MzKW/v5yyspKlpY' .
29
            'iYmH+MjHY/PzV/f2xycmJlZVlZWU9MTEXY2Ms/PzwyMjLFTjea' .
30
            'AAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACx' .
31
            'IAAAsSAdLdfvwAAAAHdElNRQfTBgISOCqusfs5AAABLUlEQVR4' .
32
            '2tWV3XKCMBBGWfkranCIVClKLd/7P2Q3QsgCxjDTq+6FE2cPH+' .
33
            'xJ0Ogn2lQbsT+Wrs+buAZAV4W5T6Bs0YXBBwpKgEuIu+JERAX6' .
34
            'wM2rHjmDdEITmsQEEmWADgZm6rAjhXsoMGY9B/NZBwJzBvn+e3' .
35
            'wHntCAJdGu9SviwIwoZVDxPB9+Rc0TSEbQr0j3SA1gwdSn6Db0' .
36
            '6Tm1KfV6yzWGQO7zdpvyKLKBDmRFjzeB3LYgK7r6A/noDAfjtS' .
37
            'IXaIzbJSv6WgUebTMV4EoRB8a2mQiQjgtF91HdKDKZ1gtFtQjk' .
38
            'YcWaR5OKOhkYt+ZsTFdJRfPAApOpQYJTNHvCRSJR6SJngQadfc' .
39
            'vd69OLMddVOPCGVnmrFD8bVYd3JXfxXPtLR/+mtv59/ALWiiMx' .
40
            'qL72fwAAAABJRU5ErkJggg==';
41
42
        if (function_exists('imagetypes')) {
43
            $supported = imagetypes();
44
        } else {
45
            $supported = 0;
46
        }
47
48
        if (!function_exists('imagecreatefromstring')) {
49
            $supported = 0;
50
        }
51
52
        if (ob_get_length() || headers_sent() || !($supported & IMG_PNG)) {
53
            // Special case for headers already sent or that the installation doesn't support
54
            // the PNG format (which the error icon is encoded in).
55
            // Dont return an image since it can't be displayed
56
            die($this->iTitle . ' ' . $aMsg);
0 ignored issues
show
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
57
        }
58
59
        $aMsg  = wordwrap($aMsg, 55);
60
        $lines = substr_count($aMsg, "\n");
61
62
        // Create the error icon GD
63
        $erricon = Image\Image::CreateFromString(base64_decode($img_iconerror, true));
64
65
        // Create an image that contains the error text.
66
        $w = 400;
67
        $h = 100 + 15 * max(0, $lines - 3);
68
69
        $img = new Image\Image($w, $h);
70
71
        // Drop shadow
72
        $img->SetColor('gray');
73
        $img->FilledRectangle(5, 5, $w - 1, $h - 1, 10);
0 ignored issues
show
The call to Amenadiel\JpGraph\Image\Image::FilledRectangle() has too many arguments starting with 10. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

73
        $img->/** @scrutinizer ignore-call */ 
74
              FilledRectangle(5, 5, $w - 1, $h - 1, 10);

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
74
        $img->SetColor('gray:0.7');
75
        $img->FilledRectangle(5, 5, $w - 3, $h - 3, 10);
76
77
        // Window background
78
        $img->SetColor('lightblue');
79
        $img->FilledRectangle(1, 1, $w - 5, $h - 5);
80
        $img->CopyCanvasH($img->img, $erricon, 5, 30, 0, 0, 40, 40);
81
82
        // Window border
83
        $img->SetColor('black');
84
        $img->Rectangle(1, 1, $w - 5, $h - 5);
85
        $img->Rectangle(0, 0, $w - 4, $h - 4);
86
87
        // Window top row
88
        $img->SetColor('darkred');
89
        for ($y = 3; $y < 18; $y += 2) {
90
            $img->Line(1, $y, $w - 6, $y);
91
        }
92
93
        // "White shadow"
94
        $img->SetColor('white');
95
96
        // Left window edge
97
        $img->Line(2, 2, 2, $h - 5);
98
        $img->Line(2, 2, $w - 6, 2);
99
100
        // "Gray button shadow"
101
        $img->SetColor('darkgray');
102
103
        // Gray window shadow
104
        $img->Line(2, $h - 6, $w - 5, $h - 6);
105
        $img->Line(3, $h - 7, $w - 5, $h - 7);
106
107
        // Window title
108
        $m = floor($w / 2 - 5);
109
        $l = 110;
110
        $img->SetColor('lightgray:1.3');
111
        $img->FilledRectangle($m - $l, 2, $m + $l, 16);
112
113
        // Stroke text
114
        $img->SetColor('darkred');
115
        $img->SetFont(FF_FONT2, FS_BOLD);
116
        $img->StrokeText($m - 90, 15, $this->iTitle);
117
        $img->SetColor('black');
118
        $img->SetFont(FF_FONT1, FS_NORMAL);
119
        $txt = new Text\Text($aMsg, 52, 25);
120
        $txt->SetFont(FF_FONT1);
121
        $txt->Align('left', 'top');
122
        $txt->Stroke($img);
123
        if ($this->iDest) {
124
            $img->Stream($this->iDest);
125
        } else {
126
            $img->Headers();
127
            $img->Stream();
128
        }
129
        if ($aHalt) {
130
            die();
0 ignored issues
show
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
131
        }
132
    }
133
}
134