1<?php
2
3use dokuwiki\Cache\Cache;
4
5if (!defined('DOKU_INC')) define('DOKU_INC', __DIR__ . '/../../');
6if (!defined('NOSESSION')) define('NOSESSION', true); // we do not use a session or authentication here (better caching)
7if (!defined('NL')) define('NL', "\n");
8if (!defined('DOKU_DISABLE_GZIP_OUTPUT')) define('DOKU_DISABLE_GZIP_OUTPUT', 1); // we gzip ourself here
9require_once(DOKU_INC . 'inc/init.php');
10
11// MAIN
12header('Content-Type: application/javascript; charset=utf-8');
13jquery_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 */
23function jquery_out()
24{
25    $cache = new Cache('jquery', '.js');
26    $files = [
27        DOKU_INC . 'lib/scripts/jquery/jquery.min.js',
28        DOKU_INC . 'lib/scripts/jquery/jquery-ui.min.js'
29    ];
30    $cache_files = $files;
31    $cache_files[] = __FILE__;
32
33    // check cache age & handle conditional request
34    // This may exit if a cache can be used
35    $cache_ok = $cache->useCache(['files' => $cache_files]);
36    http_cached($cache->cache, $cache_ok);
37
38    $js = '';
39    foreach ($files as $file) {
40        $js .= file_get_contents($file) . "\n";
41    }
42    stripsourcemaps($js);
43
44    http_cached_finish($cache->cache, $js);
45}
46