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.

Helper   A
last analyzed

Complexity

Total Complexity 16

Size/Duplication

Total Lines 218
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 43.59%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 218
ccs 17
cts 39
cp 0.4359
rs 10
wmc 16
lcom 1
cbo 3

7 Methods

Rating   Name   Duplication   Size   Complexity  
A import() 0 15 3
A isFile() 0 14 4
A autoload() 0 23 2
A mkdirs() 0 5 3
A getComposerVendorPath() 0 10 2
A logo() 0 4 1
B comment() 0 89 1
1
<?php
2
/**
3
 * Kotori.php
4
 *
5
 * A Tiny Model-View-Controller PHP Framework
6
 *
7
 * This content is released under the Apache 2 License
8
 *
9
 * Copyright (c) 2015-2017 Kotori Technology. All rights reserved.
10
 *
11
 * Licensed under the Apache License, Version 2.0 (the "License");
12
 * you may not use this file except in compliance with the License.
13
 * You may obtain a copy of the License at
14
 *
15
 *     http://www.apache.org/licenses/LICENSE-2.0
16
 *
17
 * Unless required by applicable law or agreed to in writing, software
18
 * distributed under the License is distributed on an "AS IS" BASIS,
19
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
 * See the License for the specific language governing permissions and
21
 * limitations under the License.
22
 */
23
24
/**
25
 * Helper Class
26
 *
27
 * Common API Helpers.
28
 *
29
 * @package     Kotori
30
 * @subpackage  Core
31
 * @author      Kokororin
32
 * @link        https://kotori.love
33
 */
34
namespace Kotori\Core;
35
36
use Composer\Autoload\ClassLoader;
37
use Kotori\Debug\Hook;
38
use Kotori\Exception\NotFoundException;
39
use ReflectionClass;
40
41
abstract class Helper
42
{
43
    /**
44
     * Require Array
45
     *
46
     * @var array
47
     */
48
    protected static $require = [];
49
50
    /**
51
     * Include One File
52
     *
53
     * @param  string $path
54
     * @return boolean
55
     */
56 1
    public static function import($path)
57
    {
58 1
        $path = realpath($path);
59 1
        Hook::listen(str_replace(Container::get('config')->get('app_full_path'), '', $path));
60 1
        if (!isset(self::$require[$path])) {
61 1
            if (self::isFile($path)) {
62 1
                require $path;
63 1
                self::$require[$path] = true;
64
            } else {
65
                self::$require[$path] = false;
66
            }
67
        }
68
69 1
        return self::$require[$path];
70
    }
71
72
    /**
73
     * Detect whether file is existed
74
     *
75
     * @param  string $path
76
     * @return boolean
77
     */
78 2
    public static function isFile($path)
79
    {
80 2
        if (is_file($path)) {
81 2
            if (strstr(PHP_OS, 'WIN')) {
82
                if (basename(realpath($path)) != basename($path)) {
83
                    return false;
84
                }
85
            }
86
87 2
            return true;
88
        }
89
90
        return false;
91
    }
92
93
    /**
94
     * Global autoload function
95
     *
96
     * @param  string $class
97
     * @return void
98
     */
99
    public static function autoload($class)
100
    {
101
        $baseRoot = Container::get('config')->get('app_full_path');
102
        // project-specific namespace prefix
103
        $prefix = Container::get('config')->get('namespace_prefix');
104
105
        // does the class use the namespace prefix?
106
        $len = strlen($prefix);
107
        if (strncmp($prefix, $class, $len) !== 0) {
108
            // no, move to the next registered autoloader
109
            return;
110
        }
111
112
        // get the relative class name
113
        $relativeClass = substr($class, $len);
114
115
        // replace the namespace prefix with the base directory, replace namespace
116
        // separators with directory separators in the relative class name, append
117
        // with .php
118
        $file = $baseRoot . '/' . str_replace('\\', '/', $relativeClass) . '.php';
119
120
        self::import($file);
121
    }
122
123
    /**
124
     * recursively create a long directory path
125
     *
126
     * @param  string   $pathname
127
     * @param  int      $mode
128
     * @return boolean
129
     */
130
    public static function mkdirs($pathname, $mode = 0755)
131
    {
132
        is_dir(dirname($pathname)) || self::mkdirs(dirname($pathname), $mode);
133
        return is_dir($pathname) || @mkdir($pathname, $mode); // @codingStandardsIgnoreLine
134
    }
135
136
    /**
137
     * Get vendor absolute path
138
     *
139
     * @return string
140
     *
141
     * @throws \Kotori\Exception\NotFoundException
142
     */
143 1
    public static function getComposerVendorPath()
144
    {
145 1
        $reflection = new ReflectionClass(ClassLoader::class);
146 1
        $vendorDir = dirname(dirname($reflection->getFileName()));
147 1
        if (!$vendorDir) {
148
            throw new NotFoundException('cannot find composer vendor path');
149
        }
150
151 1
        return $vendorDir;
152
    }
153
154
    /**
155
     * Show Kotori Logo
156
     *
157
     * @return string
158
     */
159
    public static function logo()
160
    {
161
        return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAKKUlEQVR42sWX6VNb5xXG+VfamU7zqV/6oZ1MM0naZNImaevW2I4bGyfstgGzi00IJCSwJSEkdiF2sW+2AAPGZjEyCIRkQCBALMaAzWpjwAK03Pv0XOHYJkyn+ZKJZp654o7mvr/7POec98ULAPNLyuvNF/aX0vsAng/Lsif19rc/z+cUgNvtxu6rF1hZsuH5yiJ9f0n3XB6YnxXg6OgQq8+ewjTSh/YGNTqq5OiuU6JfV4GttRW4XC44SQzDvIU55dZ7+qmuEQDL2O2v2c6H7YhRRSNOGoJsZTSa1Mm4XZiM5sJUDA93w7A8iTabAVv7O28XcROQfX8Puztb2H25hdd7r+A4OgDjcYz5aQB2+z5jnTKzvreC8IH6In5bchEfq/6DFFUISrNikS2PRHRJIj6pvIGv7/BhWpn2xMRpfeUJjH06dDcVoKshD0PdDZgd02NtZR6v93cJxP1/o/MaHuhi6rWF7BeBf8VvCs7jVzWX8GvNN/iz/FvESAIQkRYAP2kgfJXXEFkci9buOixYTVien0KPrhKVWYnQ3IxCpSIBTYVp6KpWoO+2BuNDHQRiw+Gh/URspwDUkkiGH+rDfnr2I3ygPIfflVyGd14AklShyFFGokgRg4KMCKhSQ5DJvwql4DrU6VGoyk5FTa4AJdJYKATXILhxGfzQy8gRheNOaTp6GpTQt5XCYuzHq52X/xPCS50azAiunWfPnPsUZwQXkJYfjsrCRNSo4iGP90VC4FlIQr9FMT8U1aJI1IijoOFfhyohCFWKOLSXpUNXKkFFVjxEkd8j2v8cJDx/1BcK0VOvRG9TPsz6Dk9ncbGdAki7cZERh33DxgWfhSrtKioyo5CTHIz4AG+IQ33QpkrFRLMGi/fqsdzXgsXOWvQW3UKtlIe2IhHuaW+hq0qKlqJUFKVHQJYQjJig80iL9kOzJo0gstDbkIspYy8OD+ynXPC64fM1w/M/wxakBCFXEARpzHeQhPmgTMKDtasB25ZH2J4awrLxAVZGe7Aw0AZDUxG6ym6iozwD3VUygpCitVSMSnk0tFlxyBaGIjrwPOQUWWuZhBwSo7M2G8sL054oTgDIYnyY/GR/NpfvB1V8IKrT46GvK8LrBTPcazNwr9vg3pyFY82KTQIx6bQYbFTjblkG2krS0E4Pb6dF2in3qsxY1BBAY4EAiuQQxAZdQKmMB60yAfX5Qgx0Np6KwaswJZApSgkkgCB0FcvQpKQHkRqLVLhdmof+Zi1WxwdwuDqF/aUx2PrbMEQO3FanQqcRobU4jUDEaCWY6iwe6rMT0ZDHRwNBpNy4hPRYf5TL45ErDEerNh8HP4rBSxXny2TH+7Hd5VnQqbMQcNEbouQEVFeUQluqQYZQAF5IINrK87Fu0WPV1IsRXTmaC1JpSKWghUBuU/53NEJUyKI8ELXZCQQkRqEkHMKIK1TQfIiifVGVn4GNtWcnAYpSQpi6zER2jfJtpreur6pES0MdBh60Y3FuGrlKGdJFQoT6+5K1CuwvPsaOzQhrfwt66nI8DjRzE7OAD7UoBJXSGIoiznOfcyJXFIq6HD4U/GvIobpafjJ3EuB+sYwxtpSyzifjWJswYGl2EtJoH/SqruBOURqUvMuIuxGMsrwc1ORI4eLqYmMOR89nsUcwswM6dFXK0ZRPi/HpdzcjoJXzoCsWUW2IUZedhBpyRE3DSpoahfXnP3JgtrOeWdF3sO7FcTgXLdi2jaEqNQDVkR/ju88+wE3fP0IcG4TpwV6M32/xFCWzuUiFeSzn+jy2Z0Zg0JWiTpWCWpofNYp4TyStJSKaFTxyIpkGVjRKVBIc2F+fBNga6WZ2TP2s0zIM18QwDkgLPToM1+ehNTeerBRgvK8V9uUpOJ9TG9HbMxvzBEHXrQXSokdHq1YsGe+jry6PaklM7qVQkaYeF2ZOgseJdq3yTQTvWtFrf0LP7Joess7RQbg4mUgWI5xPJ7EzO0qtNwzHKm1A63NvFudkOxZBuDfnPXHszo/D/tSKrekRmDurCYDrkhSU05sXpYeRIxRJuQzGh51wM+9a0csxbWAc1hHWNTZ0vDinMQNcSxa4uYWfzYChBRjO+h8ANo/F1YLz+QyWTf24X10CCxXu9rSRIIYweFvt2c4LhCGQ8r4nIJGnXfUddXA6HG9j8LKP9zGMjQBmjXBZR+CaJM2MwvXUAmZlimQFQxBugnDRYpx+AOHqYW9xDI+7dagqyEEKLxq1eQo8H9dTyxJUlQIaSSQB+EJHkbQXp+Khrgx7u7vvALYG2xj3jIF122jhOdK8Ce6FMbifTIDhICgKDsJNGR/Mm2GfGz0uxDcAdro/T44tzVlgtU4iJSkBZaqbeEEvND90lxaW0oi/jjvkBgfQ06TG9ub6+wA65sDSzzKzBjC2YTAE4SYI18Jj0hhcHpBJuAnmkAAcS/T3ms0TiZuuzyyDKKGMH9VLsEwdVKEpQFhwILrry6gmJmBsq0ZxRhTNiSSKgHbIliK83N54rwbGe5jD8V7WNf0IzMwQyA28MvVAX5KHzhwFlg19OFgYp5qY8EAwq1wk08exkJ4YOpEZ+AnEl36PW5EXwfP5G8SCJEQF+2Fj4hFGWrXQZvLQmJtA3SFA/50S7NPR7S2Ay9LPuCwPWdfkQ6oBPXZG7qFOkIDwz77A9U8+Q4VYgqcTZryYm8ARFw2dDZnld7HsTA+jUy1C3Lk/QH71Q8iC/gQNgfuc+xeWDPdxtzQL2fxA1GbFoDk3EQ9ayuBwHL0DcJIDjok+1jnRh6PxXgxk34LS+wKkX52B8PMvkfD5V/TgUNwtKYa5rQl71mFyYsIDwcF42pV2yQ46jpVnXEGumPJurIOP9xn012poPEchI/IyquQRaM5PxuB9neeY/w7A3M04zQ9Yx+Me7OjbMC9Nx5ooDduSDLqKYQyPhuqf3gj76C+I/fsZDFaq4aIRzHBtSvXhnKG6mDRixzxAe0MJZs0G6O/dpT0gCV2lKiT6nYUs9gqq6XDbrE7Dos164kzg5RztZJyjXaxjtBubHbXYUWXhMDMLRwql52qXZWI5WQjV388i+MOPUS9M8nSLmyvSuceemeHmZod5CE7rKJwEtjNlgKWjno5xYRAEeSMvOQBaWQSaaLunU/iJ/xm8Dg2tjMPYwZKwdbcGO0rFW4AfZJdmYjQ8BoIv/wFTlRruOYphgebGHE1M2sCcJj3co4/gJBgHQb2go7mpuQw5Mf6QRl2GRniVIILR0VBOb/+jA8nLTi1zMNTKHhrasEdb7HpeFvZlchxkHjvB6UCuwNMUEaojwvBqpIvadYjaddgD4qL2dU3S2z8eBLefOG1mbIz0oFaeDGHIBSpAPygoAjkNo4GuFg/A+6dCr9VaFbPf38geDrXicFCH7ZZy7OVknwJYl8uwdLsSrqkBMLOD8MyNWYLgZOPEOTKKDWMPKqTJEFz7Bpm873Ar6hKSA/8NJR33zEO9pwD+C7GUKIVlXfUCAAAAAElFTkSuQmCC';
162
    }
163
164
    /**
165
     * Show Kotori Comment
166
     *
167
     * @return string
168
     */
169
    public static function comment()
170
    {
171
        return '<!--
172
>>> Powered by Kotori.php <<<
173
(https://github.com/kokororin/Kotori.php)
174
                                         iiiiiii
175
                                  iiiiii        i
176
                               iiiiii       i    i   iiiii
177
                              ii    ii       i iii  i     i     i
178
                              iiii           i iiii       iiii       iii
179
                             iirirri          iini      i               iiii
180
                             irniirnri        iii     i                    iiii
181
                             iiiiiiiiriiii    ir    i  iiiiii i         i     iii
182
                            i              i       i iriiiiiiiiiii     iiii   iiiii
183
                            i               i   iiiiri          i i i i   iiii iriiii
184
                            i               ii iii iiiiiii         iii      iii  rriiiii
185
                            rr            iiiii       iiiirii iii    iiii     iri irrii iii
186
                          r ii          ii    i i i ii   iiiiiirriiii iiii     ii iiiii iiii
187
                          riiini      iiiii iiiiii ii iii iiiiiiiiiirrriiiiri    iiii ri    ii
188
                         riirrrr    iriiiiiiiiiiiiiiii iii i   iiii iirnrriiiri   iiiiir iii iii
189
                         rirrrrn   iiiiiiii iii i iiiiiiiii i i irii  iiririiirii  iri ii ii  iii
190
                        iirrrrrni riiiiiiiiiii  iriiiiiiiiiiiiii iriii iii rriinri  ii iii i i iii
191
                        irrrrrrnoiiiiiiii i   irri i  i i i iii i iriii  ii irirrri ii  ii  i i iii
192
                       iirrrrrnni            iniii i             i iiii   ii irrirni ii  iii i i iii
193
                       irrrrrnn             rni i i  i             ii ii  i   iriirriii iiiiiii   iii
194
                      iirrrrrn             nni  i i ii              i ii   ii  ii inr ii iii i i i ii
195
                      iirrrrn           i nni    ii i                  i    i   i irriiii  ii       ii
196
                      irrrrni i        rinni   i ii i       i          i           iriii   ii      i ii
197
                       rrrni ii       inrni    iiriii       ii         ii    i      iii     i  iiii  ii
198
                       rrrr ini iiiiiirnni     iiriri ii i  riii     i ii     i      i      iiiiii  iii
199
                       rrniinriiiiiiiinnr  iii  rirriir iiiiriri iii i ii i   i             iii    iiii
200
                       nrnirniiiiiiiirnr        r riirriiiiniirr iii iiiiii   ii            ii    iiiii
201
                       rrrinniiiiiiiinn         i i irniiiinr nriiiiiiririr   rr            ii  iiriiir
202
                       rrrrnriiiiiiiio           i   ririiiii rriiiiiinirir i in            ii iiiri ir
203
                       rrinnriniiiiirr                           iiiiinrirnii iri i i        iiiiri  rr
204
                       rirnniiniiiiir    nkkmri                        i rri irnii iii i  i  iirri  ini
205
                       rrrnrrrniiiiir  kkoiikkkn                          iriirni iiiii  ii iirri   rri
206
                       rrnrrrrniiiiii kk      kk               nkkkkmoi    iinnniiiiiiii riirii    rrr
207
                       irnrrnrniiiiiink     iioo              kmni  imkkr    irri riiii iriii    irrir
208
                       iinrrnrnriiiiiin mkinkkrk             ii        nmki    r iri i  rr i    inrrii
209
                       iinrrnnnniiiir i kmi i  m                i     irnmkr   i iriii iniii  iinrirrr
210
                       rinrrrnnniiiir   ikr   rr                nki rkmriomkn iiiriii irriii irrriirin
211
                      iiirnrrrnnniiir    rmrinn                 imi  ii  onnkii rri   rriinirrriiirirni
212
                      iiirnrrnnnnniii                            koi    ioiniiiirri  rrriirirriiiirirrr
213
                      riirnrrnnnnonii                             rriinmm    iirri  rrrrr  rriiiiirirrri
214
                     iriirrrrnrnoiinii                                      riirri rnrni i iriiiirriiriri
215
                    iiiinirnnrrnr inri                                   rr  nriiirnni  i  riiiirriirrir
216
                    iiiiirirnnrrnr  iiri                                 i   nrriinnii     irriiiriiirriir
217
                    riiiriirnrnrnr  i   i                                  ionri rn   i    riiriiiiiirri ir
218
                   iiiiiiiinnrnnnn  ir                                   inori  ir   i    rririiiriiirrii ii
219
                  iriiiiiiinrrrrnr  im          nkktnriii               iii     ii      iiririi iriiiiriri ii
220
                  irriiiiiirnrninnr  rmr         nknrirrrrnnr                         iri iirrriirriiiirrri  ii
221
                 rriiiiiiinrniinor  nrmr        in        ir                 ini  iinni  irrri rrrrrrirrrni  ir
222
                rrriiiiiirnnn itni innrin        ii       ii                ioonnnnnni  iinri ii iiirrirrriri ir
223
               inii iiiiinrni rnoi rrni rni       iiiiiiiii               iri rnrrrnr i irri ii      irirr iri ir
224
              itiiiiiiiiinnn  rto  nro  inir                            irii   rnrrn ii iniii          nrri iri iri
225
             ioiii  iiiinroi  rnn irrr i riirr                      iiiii i i   irri i iriii            irn   iriiri
226
            imi ii   iiinnr   non rini i riiinmr                iiiiiiiiii i   i  ri i rri               rnr   iri ii
227
           imriir     irnn ii nmi nin ii iriiimiirii      i iiiiiii iiiiiii i ii ii i ini                rini    iiiiri
228
           or  ii     inoiiiiinmiiririiiiiniiitri  iiiiiiinr iiiiiiiiiiiii   iii rii ini                 iirr  ii  iiiiiii
229
          ni   ii  i  rki     mo iriiiiiiiniiitri    ii  iooi iiiiiiiii i   iii ii  in                    riri ii i iiiiii
230
         rr    r  ii ion      mr iri      riiitr     i  ionnoi iiiiiii i   ii   ii ini                   iiriri iiii  iiiii
231
        io    ir ir  rk       ki rn       ri ikr       ronnntr  iii i i   ii   ii ir      i          i iriiii ri iiiiiiiiirri
232
        m     iiini  ki      ik  nn       ii  ti      imnntiir i i   i   i     i ii      i              rriiii ii iiiiiii  irri
233
       mr     rirr  nn       oo  nr        i  ni     ionnni ii iiiii    i     i  i     ii                rriiii iiiiiiiiiii iirr
234
      nm      rini ik        ki  ni        ri ii    ionnoi   iii   ii  ii    ii ii   ii                   iririi iiiiiiiiiiii  irn
235
     ik       rini ni       it   ni         iiii   ionttiii ii      ii ii   ii ii   i                      rrirr  iiiiiiiiiiiii  rrr
236
     kn       rnriin        ni   ni        i iirirntnoni  iri       iiiii   i  i   i                        rrirr  irrrrriiiiiiiiiiirni
237
    nmi       nnr n        in    rr        i  iinnntnni    ii   ii    i    i  r i                           iriiri  iiiiriiiiiiiirriirni
238
   ioo        nniir        k     in  i     i  i   rnnni     i    i   iii  ii ri                              irrini               iiirinr
239
   ron        onir        or      ki  i    i     nnnnii     i    iriii    i ir                                riiini  i              irirni
240
   mtn        nnir       no       ro        i   nonr ii     iiiiii iii   i  r                                 iririni  i              iiiini
241
  iotr        nnii      rm         nn       iinnnnr   iriii          i  ii ii                                 irrirrnr  i              iiiinr
242
  itnr   i i  nnii     nm           inri   irnnnni     i              iii ii                                   riiirinri ii            iiiiini
243
   nnr        iti     mm          i   inkmkmknnii                      i  r                                    iriririnni ii            iiiiini
244
   nnn         nr   rkt                      rii                      ii ni                                    iirriirirni iii           iiiirr
245
   rnn         rriimkr                       riiii                   ii nr          i                          iriirrirrrnniiii           iiiini
246
    nki        irnmo                        r ii iiiiiii          iiii rn           i                          irriirririrrniiiii          iiirn
247
     oo         rin           i            ii   i               iii iirnr           iii                         rrriiirrrrrrnniiiri        irirri
248
      on        rii                        i     iii      iiiiii    irnr            iiii                        rrrriiirrrrrrrriiiiri       iirnr
249
       rn        rir                      r        iiiiiiii        iirri        ii  iii                         rrrirriiirrrrrrri irrii       rnni
250
         i       iiiii          ii       ii           i           iiinri         iii iii                        rnirrrrriiinrrrrni  irrr      inrri
251
                  ii iii                 i                       ir irr           iiiii                         rnrrrrrrrriiirrrrnn   iinri   inrn
252
                   iniiiri       i       i                      iri nrr            iiiii                         rnrrrrrrrriiiinrrrni    irnr inrrii
253
                     iiiiiiiiiirni       i                      ni inri              iiii                        inrnrrrrrrrriiiirrrnni     irnnni  i
254
                        iiiiiiii   i     i                     nr  rrri               iiiii                       rrrrrnrrrrrrri iirrnnn       inn
255
-->
256
';
257
    }
258
}
259