GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 226f28...b47508 )
by Gjero
02:52
created

Logger::init()   C

Complexity

Conditions 7
Paths 3

Size

Total Lines 22
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 1
Metric Value
cc 7
eloc 13
c 1
b 1
f 1
nc 3
nop 0
dl 0
loc 22
rs 6.9811
1
<?php
2
/**
3
 * Pimf
4
 *
5
 * @copyright Copyright (c)  Gjero Krsteski (http://krsteski.de)
6
 * @license   http://opensource.org/licenses/MIT MIT
7
 */
8
9
namespace Pimf;
10
11
use Pimf\Adapter\File;
12
13
/**
14
 * Logger with common logging options into a file.
15
 *
16
 * @package Pimf
17
 * @author  Gjero Krsteski <[email protected]>
18
 */
19
class Logger
20
{
21
    /**
22
     * @var resource
23
     */
24
    private $handle;
25
26
    /**
27
     * @var resource
28
     */
29
    private $warnHandle;
30
31
    /**
32
     * @var resource
33
     */
34
    private $errorHandle;
35
36
    /**
37
     * @var string
38
     */
39
    private $storageDir;
40
41
    /**
42
     * @var string
43
     */
44
    private static $remoteIp;
45
46
    /**
47
     * @var string
48
     */
49
    private static $script;
50
51
    /**
52
     * @param string $remoteIp
53
     * @param string $script
54
     */
55
    public static function setup($remoteIp, $script)
56
    {
57
        self::$remoteIp = $remoteIp;
58
        self::$script = $script;
59
    }
60
61
    /**
62
     * @param string $localeStorageDir Use better the local TMP dir or dir with mod 777.
63
     */
64
    public function __construct($localeStorageDir)
65
    {
66
        $this->storageDir = (string)$localeStorageDir;
67
    }
68
69
    /**
70
     * @throws \RuntimeException If something went wrong on creating the log dir and file.
71
     */
72
    public function init()
73
    {
74
        if (is_resource($this->errorHandle)
75
            && is_resource($this->handle)
76
            && is_resource($this->warnHandle)
77
        ) {
78
            return;
79
        }
80
81
        $file = new File($this->storageDir, "pimf-logs.txt");
82
        $this->handle = $file->open();
83
84
        $file = new File($this->storageDir, "pimf-warnings.txt");
85
        $this->warnHandle = $file->open();
86
87
        $file = new File($this->storageDir, "pimf-errors.txt");
88
        $this->errorHandle = $file->open();
89
90
        if (!$this->errorHandle || !$this->handle || !$this->warnHandle) {
91
            throw new \RuntimeException("failed to obtain a handle to logger file");
92
        }
93
    }
94
95
    /**
96
     * @param string $msg
97
     *
98
     * @return Logger
99
     */
100
    public function debug($msg)
101
    {
102
        if ($this->iniGetBool('display_errors') === true) {
103
            $this->write((string)$msg, 'DEBUG');
104
        }
105
106
        return $this;
107
    }
108
109
    /**
110
     * @param string $msg
111
     *
112
     * @return Logger
113
     */
114
    public function warn($msg)
115
    {
116
        if ($this->iniGetBool('display_errors') === true) {
117
            $this->write((string)$msg, 'WARNING');
118
        }
119
120
        return $this;
121
    }
122
123
    /**
124
     * @param string $msg
125
     *
126
     * @return Logger
127
     */
128
    public function error($msg)
129
    {
130
        $this->write((string)$msg, 'ERROR');
131
132
        return $this;
133
    }
134
135
    /**
136
     * @param string $msg
137
     *
138
     * @return Logger
139
     */
140
    public function info($msg)
141
    {
142
        if ($this->iniGetBool('display_errors') === true) {
143
            $this->write((string)$msg, 'INFO');
144
        }
145
146
        return $this;
147
    }
148
149
    /**
150
     * @param string $msg
151
     * @param string $severity
152
     */
153
    protected function write($msg, $severity = 'DEBUG')
154
    {
155
        $msg = $this->format($msg, $severity);
156
157
        if ($severity == 'WARNING') {
158
            fwrite($this->warnHandle, $msg);
159
        } elseif ($severity == 'ERROR') {
160
            fwrite($this->errorHandle, $msg);
161
        } else {
162
            fwrite($this->handle, $msg);
163
164
        }
165
    }
166
167
    public function __destruct()
168
    {
169
        if (is_resource($this->handle)
170
            && is_resource($this->warnHandle)
171
            && is_resource($this->errorHandle)
172
        ) {
173
174
            if (fclose($this->handle) === false) {
175
                $this->error('Logger failed to close the handle to the log file');
176
            }
177
178
            fclose($this->warnHandle);
179
            fclose($this->errorHandle);
180
        }
181
    }
182
183
    /**
184
     * Formats the error message in representable manner.
185
     *
186
     * @param string $message
187
     * @param string $severity
188
     *
189
     * @return string
190
     */
191
    private function format($message, $severity)
192
    {
193
        $msg = date("m-d-Y") . " " . date("G:i:s") . " " . self::$remoteIp;
194
195
        $IPLength = strlen(self::$remoteIp);
196
        $numWhitespaces = 15 - $IPLength;
197
198
        for ($i = 0; $i < $numWhitespaces; $i++) {
199
            $msg .= " ";
200
        }
201
202
        $msg .= " " . $severity . ": ";
203
204
        $lastSlashIndex = strrpos(self::$script, "/");
205
        $fileName = self::$script;
206
207
        if ($lastSlashIndex !== false) {
208
            $fileName = substr(self::$script, $lastSlashIndex + 1);
209
        }
210
211
        $msg .= $fileName . "\t";
212
        $msg .= ": " . $message . "\r\n";
213
214
        return $msg;
215
    }
216
217
    /**
218
     * @param string $varname
219
     *
220
     * @return bool
221
     */
222
    protected function iniGetBool($varname)
223
    {
224
        $varvalue = ini_get($varname);
225
226
        switch (strtolower($varvalue)) {
227
            case 'on':
228
            case 'yes':
229
            case 'true':
230
                return 'assert.active' !== $varname;
231
            case 'stdout':
232
            case 'stderr':
233
                return 'display_errors' === $varname;
234
            default:
235
                return (bool)(int)$varvalue;
236
        }
237
    }
238
}
239