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.

tag()   C
last analyzed

Complexity

Conditions 13
Paths 17

Size

Total Lines 32
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 13
eloc 22
nc 17
nop 3
dl 0
loc 32
rs 6.6166
c 1
b 0
f 0

How to fix   Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * This file is part of the O2System Framework package.
4
 *
5
 * For the full copyright and license information, please view the LICENSE
6
 * file that was distributed with this source code.
7
 *
8
 * @author         Steeve Andrian Salim
9
 * @copyright      Copyright (c) Steeve Andrian Salim
10
 */
11
// ------------------------------------------------------------------------
12
/**
13
 * HTML Helper
14
 *
15
 * A collection of helper function to work with html.
16
 */
17
// ------------------------------------------------------------------------
18
19
if ( ! function_exists('tag')) {
20
    /**
21
     * tag
22
     *
23
     * Generate html tag with auto closed when the content is set.
24
     *
25
     * @param string      $tagName
26
     * @param string|null $contents
27
     * @param array       $attributes
28
     *
29
     * @return string
30
     */
31
    function tag($tagName, $contents = null, array $attributes = [])
32
    {
33
        if (($tag = substr($tagName, 0)) === '/') {
34
            $element = new \O2System\Html\Element($tag);
35
36
            return $element->close();
37
        } else {
38
            $element = new \O2System\Html\Element($tagName);
39
            if (count($attributes)) {
40
                foreach ($attributes as $name => $value) {
41
                    $element->attributes->addAttribute($name, $value);
42
                }
43
            }
44
45
            if (is_array($contents)) {
0 ignored issues
show
introduced by
The condition is_array($contents) is always false.
Loading history...
46
                foreach ($contents as $content) {
47
                    if ($content instanceof \O2System\Html\Element) {
48
                        $element->childNodes->push($content);
49
                    } elseif (is_string($content) || is_numeric($content)) {
50
                        $element->textContent->push($content);
51
                    }
52
                }
53
            } elseif ($contents instanceof \O2System\Html\Element) {
54
                $element->childNodes->push($contents);
55
            } elseif (is_string($contents) || is_numeric($contents)) {
56
                $element->textContent->push($contents);
57
            }
58
59
            if ( ! is_null($contents)) {
60
                return $element->render();
61
            } else {
62
                return $element->open();
63
            }
64
        }
65
    }
66
}
67
68
// ------------------------------------------------------------------------
69
70
if ( ! function_exists('video')) {
71
    /**
72
     * video
73
     *
74
     * Generate video, such as a movie clip or other video streams.
75
     *
76
     * @param string $src
77
     * @param array  $attributes
78
     *
79
     * @return string
80
     */
81
    function video($src, array $attributes = [])
82
    {
83
        $attributes = array_merge([
84
            'width'    => 320,
85
            'height'   => 240,
86
            'controls' => 'controls',
87
        ], $attributes);
88
89
        $video = new \O2System\Html\Element('video');
90
91
        foreach ($attributes as $name => $value) {
92
            $video->attributes->addAttribute($name, $value);
93
        }
94
95
        $ext = strtolower(pathinfo($src, PATHINFO_EXTENSION));
96
97
        if (in_array($ext, ['mp4', 'ogg', 'webm'])) {
98
            $source = new \O2System\Html\Element('source');
99
100
            if (is_file($src)) {
101
                $src = path_to_url($src);
102
            }
103
104
            $source->attributes->addAttribute('src', $src);
105
            $source->attributes->addAttribute('type', 'video/' . $ext);
106
            $video->childNodes->push($source);
107
        }
108
109
        $video->textContent->push(language()->getLine('VIDEO_NOT_SUPPORTED'));
110
111
        return $video->render();
112
    }
113
}
114
115
// ------------------------------------------------------------------------
116
117
if ( ! function_exists('audio')) {
118
    /**
119
     * audio
120
     *
121
     * Generate audio, such as music or other audio streams.
122
     *
123
     * @param string $src
124
     * @param array  $attributes
125
     *
126
     * @return string
127
     */
128
    function audio($src, array $attributes = [])
129
    {
130
        $attributes = array_merge([
131
            'controls' => 'controls',
132
        ], $attributes);
133
134
        $audio = new \O2System\Html\Element('audio');
135
136
        foreach ($attributes as $name => $value) {
137
            $audio->attributes->addAttribute($name, $value);
138
        }
139
140
        $ext = strtolower(pathinfo($src, PATHINFO_EXTENSION));
141
142
        if (in_array($ext, ['mpeg', 'ogg', 'wav'])) {
143
            $source = new \O2System\Html\Element('source');
144
145
            if (is_file($src)) {
146
                $src = path_to_url($src);
147
            }
148
149
            $source->attributes->addAttribute('src', $src);
150
            $source->attributes->addAttribute('type', 'audio/' . $ext);
151
            $audio->childNodes->push($source);
152
        }
153
154
        $audio->textContent->push(language()->getLine('AUDIO_NOT_SUPPORTED'));
155
156
        return $audio->render();
157
    }
158
}
159
160
// ------------------------------------------------------------------------
161
162
if ( ! function_exists('canvas')) {
163
    /**
164
     * canvas
165
     *
166
     * Generate canvas html element.
167
     *
168
     * @param array $attributes
169
     *
170
     * @return string
171
     */
172
    function canvas(array $attributes = [])
173
    {
174
        $canvas = new \O2System\Html\Element('canvas');
175
176
        if (count($attributes)) {
177
            foreach ($attributes as $name => $value) {
178
                $canvas->attributes->addAttribute($name, $value);
179
            }
180
        }
181
182
        $canvas->textContent->push(language()->getLine('CANVAS_NOT_SUPPORTED'));
183
184
        return $canvas->render();
185
    }
186
}
187
// ------------------------------------------------------------------------
188
189
if ( ! function_exists('heading')) {
190
    /**
191
     * heading
192
     *
193
     * Generates html heading tag.
194
     *
195
     * @param string $textContent
196
     * @param int    $level
197
     * @param array  $attributes
198
     *
199
     * @return string
200
     */
201
    function heading($textContent = '', $level = 1, array $attributes = [])
202
    {
203
        return (new \O2System\Framework\Libraries\Ui\Contents\Heading($textContent, $level, $attributes))->render();
204
    }
205
}
206
207
// ------------------------------------------------------------------------
208
209
if ( ! function_exists('ul')) {
210
    /**
211
     * ul
212
     *
213
     * Generates an HTML unordered list from an single or multi-dimensional array.
214
     *
215
     * @param    array $list
216
     * @param    array $attributes
217
     *
218
     * @return    string
219
     */
220
    function ul($list, array $attributes = [])
221
    {
222
        return (new \O2System\Framework\Libraries\Ui\Contents\Lists\Unordered($attributes))->createLists($list)->render();
223
    }
224
}
225
226
// ------------------------------------------------------------------------
227
228
if ( ! function_exists('ol')) {
229
    /**
230
     * ol
231
     *
232
     * Generates an HTML ordered list from an single or multi-dimensional array.
233
     *
234
     * @param    array $list
235
     * @param    array $attributes
236
     *
237
     * @return    string
238
     */
239
    function ol($list, array $attributes = [])
240
    {
241
        return (new \O2System\Framework\Libraries\Ui\Contents\Lists\Ordered($attributes))->createLists($list)->render();
242
    }
243
}
244
245
// ------------------------------------------------------------------------
246
247
if ( ! function_exists('img')) {
248
    /**
249
     * img
250
     *
251
     * @param string $src
252
     * @param array  $attributes
253
     *
254
     * @return string
255
     */
256
    function img($src = '', $alt, array $attributes = [])
257
    {
258
        $img = new \O2System\Framework\Libraries\Ui\Contents\Image($src, $alt);
259
260
        if (count($attributes)) {
261
            foreach ($attributes as $name => $value) {
262
                $img->attributes->addAttribute($name, $value);
263
            }
264
        }
265
    }
266
}
267
268
// ------------------------------------------------------------------------
269
270
if ( ! function_exists('meta')) {
271
    /**
272
     * meta
273
     *
274
     * Generates meta tags from an array of key/values
275
     *
276
     * @param    $meta      string|array
277
     * @param    $content   string|null
278
     * @param    $type      string
279
     *
280
     * @return    string
281
     */
282
    function meta($meta = '', $content = '', $type = 'name')
0 ignored issues
show
Unused Code introduced by
The parameter $type is not used and could be removed. ( Ignorable by Annotation )

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

282
    function meta($meta = '', $content = '', /** @scrutinizer ignore-unused */ $type = 'name')

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
283
    {
284
        // Since we allow the data to be passes as a string, a simple array
285
        // or a multidimensional one, we need to do a little prepping.
286
        if ( ! is_array($meta)) {
287
            $meta = [['name' => $meta, 'content' => $content, 'type']];
288
        } elseif (isset($meta[ 'name' ])) {
289
            // Turn single array into multidimensional
290
            $meta = [$meta];
291
        }
292
293
        $output = [];
294
295
        foreach ($meta as $attributes) {
296
            $element = new \O2System\Html\Element('meta');
297
            $element->attributes->addAttribute('type',
298
                (isset($attributes[ 'type' ]) && $attributes[ 'type' ] !== 'name') ? 'http-equiv' : 'name');
299
            $element->attributes->addAttribute('name',
300
                isset($attributes[ 'content' ]) ? $attributes[ 'content' ] : '');
301
            $element->attributes->addAttribute('name',
302
                isset($attributes[ 'content' ]) ? $attributes[ 'content' ] : '');
303
304
            if (count($attributes)) {
305
                foreach ($attributes as $meta => $value) {
306
                    $element->attributes->addAttribute($meta, $value);
307
                }
308
            }
309
310
            $output[] = $element;
311
        }
312
313
        return implode(PHP_EOL, $output);
314
    }
315
}
316
317
// ------------------------------------------------------------------------
318
319
if ( ! function_exists('parse_attributes')) {
320
    /**
321
     * parse_attributes
322
     *
323
     * Parse attributes from html tag string.
324
     *
325
     * @param $string
326
     *
327
     * @return array
328
     */
329
    function parse_attributes($string)
330
    {
331
        $attributes = [];
332
333
        if (is_string($string)) {
334
            if (is_html($string)) {
335
                $xml = simplexml_load_string(str_replace('>', '/>', $string));
336
            } else {
337
                $xml = simplexml_load_string('<tag ' . $string . '/>');
338
            }
339
340
            foreach ($xml->attributes() as $key => $node) {
341
                $attributes[ $key ] = (string)$node;
342
            }
343
        }
344
345
        return $attributes;
346
    }
347
}
348
349
// ------------------------------------------------------------------------
350
351
if ( ! function_exists('remove_tags')) {
352
    /**
353
     * remove_tags
354
     *
355
     * Remove the tags but keep the content.
356
     * Note this function always assumed no two tags start the same way (e.g. <tag> and <tags>)
357
     *
358
     * @param   string       $html          HTML Source Code
359
     * @param   string|array $tags          Single HTML Tag | List of HTML Tag
360
     * @param   bool         $strip_content Whether to display the content of inside tag or erase it
361
     *
362
     * @return  string
363
     */
364
    function remove_tags($html, $tags, $strip_content = false)
365
    {
366
        $content = '';
367
        if ( ! is_array($tags)) {
368
            $tags = (strpos($html, '>') !== false ? explode('>', str_replace('<', '', $tags)) : [$tags]);
369
            if (end($tags) == '') {
370
                array_pop($tags);
371
            }
372
        }
373
        foreach ($tags as $tag) {
374
            if ($strip_content) {
375
                $content = '(.+</' . $tag . '[^>]*>|)';
376
            }
377
378
            $html = preg_replace('#</?' . $tag . '[^>]*>' . $content . '#is', '', $html);
379
        }
380
381
        return $html;
382
    }
383
}
384
385
// ------------------------------------------------------------------------
386
387
if ( ! function_exists('extract_tag')) {
388
    /**
389
     * extract_tag
390
     *
391
     * Extract content inside tag.
392
     *
393
     * @param  string  $html HTML Source Code
394
     * @param   string $tag  HTML Tag
395
     *
396
     * @return  string
397
     */
398
    function extract_tag($html, $tag = 'div')
399
    {
400
        $html = preg_match_all("/(\<" . $tag . ")(.*?)(" . $tag . ">)/si", $html, $matches);
0 ignored issues
show
Unused Code introduced by
The assignment to $html is dead and can be removed.
Loading history...
401
402
        $result = '';
403
        foreach ($matches[ 0 ] as $item) {
404
            $result = preg_replace("/\<[\/]?" . $tag . "\>/", '', $item);
405
        }
406
407
        return $result;
408
    }
409
}