Failed Conditions
Push — stable ( 017e16...b83837 )
by
unknown
07:54 queued 02:55
created

jquery.php ➔ jquery_out()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 0
dl 0
loc 22
rs 9.568
c 0
b 0
f 0
1
<?php
2
3
use dokuwiki\Cache\Cache;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, Cache.

Let’s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let’s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
4
5
if(!defined('DOKU_INC')) define('DOKU_INC', dirname(__FILE__) . '/../../');
6
if(!defined('NOSESSION')) define('NOSESSION', true); // we do not use a session or authentication here (better caching)
7
if(!defined('NL')) define('NL', "\n");
8
if(!defined('DOKU_DISABLE_GZIP_OUTPUT')) define('DOKU_DISABLE_GZIP_OUTPUT', 1); // we gzip ourself here
9
require_once(DOKU_INC . 'inc/init.php');
10
11
// MAIN
12
header('Content-Type: application/javascript; charset=utf-8');
13
jquery_out();
14
15
/**
16
 * Delivers the jQuery JavaScript
17
 *
18
 * We do absolutely nothing fancy here but concatenating the different files
19
 * and handling conditional and gzipped requests
20
 *
21
 * uses cache or fills it
22
 */
23
function jquery_out() {
24
    $cache = new Cache('jquery', '.js');
25
    $files = array(
26
        DOKU_INC . 'lib/scripts/jquery/jquery.min.js',
27
        DOKU_INC . 'lib/scripts/jquery/jquery-ui.min.js',
28
    );
29
    $cache_files = $files;
30
    $cache_files[] = __FILE__;
31
32
    // check cache age & handle conditional request
33
    // This may exit if a cache can be used
34
    $cache_ok = $cache->useCache(array('files' => $cache_files));
35
    http_cached($cache->cache, $cache_ok);
36
37
    $js = '';
38
    foreach($files as $file) {
39
        $js .= file_get_contents($file)."\n";
40
    }
41
    stripsourcemaps($js);
42
43
    http_cached_finish($cache->cache, $js);
44
}
45