Differences Between: [Versions 310 and 311] [Versions 310 and 400] [Versions 310 and 401] [Versions 310 and 402] [Versions 310 and 403] [Versions 39 and 310]
1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * This file is responsible for serving the one huge CSS of each theme. 19 * 20 * @package core 21 * @copyright 2009 Petr Skoda (skodak) {@link http://skodak.org} 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 26 // disable moodle specific debug messages and any errors in output, 27 // comment out when debugging or better look into error log! 28 define('NO_DEBUG_DISPLAY', true); 29 30 // we need just the values from config.php and minlib.php 31 define('ABORT_AFTER_CONFIG', true); 32 require('../config.php'); // this stops immediately at the beginning of lib/setup.php 33 require_once("$CFG->dirroot/lib/jslib.php"); 34 35 if ($slashargument = min_get_slash_argument()) { 36 $slashargument = ltrim($slashargument, '/'); 37 if (substr_count($slashargument, '/') < 2) { 38 header('HTTP/1.0 404 not found'); 39 die('Slash argument must contain both a revision and a file path'); 40 } 41 // image must be last because it may contain "/" 42 list($themename, $rev, $type) = explode('/', $slashargument, 3); 43 $themename = min_clean_param($themename, 'SAFEDIR'); 44 $rev = min_clean_param($rev, 'INT'); 45 $type = min_clean_param($type, 'SAFEDIR'); 46 47 } else { 48 $themename = min_optional_param('theme', 'standard', 'SAFEDIR'); 49 $rev = min_optional_param('rev', -1, 'INT'); 50 $type = min_optional_param('type', 'head', 'RAW'); 51 } 52 53 if ($type !== 'head' and $type !== 'footer') { 54 header('HTTP/1.0 404 not found'); 55 die('Theme was not found, sorry.'); 56 } 57 58 if (file_exists("$CFG->dirroot/theme/$themename/config.php")) { 59 // exists 60 } else if (!empty($CFG->themedir) and file_exists("$CFG->themedir/$themename/config.php")) { 61 // exists 62 } else { 63 header('HTTP/1.0 404 not found'); 64 die('Theme was not found, sorry.'); 65 } 66 67 $candidate = "$CFG->localcachedir/theme/$rev/$themename/javascript_$type.js"; 68 $etag = sha1("$rev/$themename/$type"); 69 70 if ($rev > 0 and file_exists($candidate)) { 71 if (!empty($_SERVER['HTTP_IF_NONE_MATCH']) || !empty($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { 72 // we do not actually need to verify the etag value because our files 73 // never change in cache because we increment the rev parameter 74 js_send_unmodified(filemtime($candidate), $etag); 75 } 76 js_send_cached($candidate, $etag); 77 } 78 79 //================================================================================= 80 // ok, now we need to start normal moodle script, we need to load all libs and $DB 81 define('ABORT_AFTER_CONFIG_CANCEL', true); 82 83 define('NO_MOODLE_COOKIES', true); // Session not used here 84 define('NO_UPGRADE_CHECK', true); // Ignore upgrade check 85 86 require("$CFG->dirroot/lib/setup.php"); 87 88 $theme = theme_config::load($themename); 89 $themerev = theme_get_revision(); 90 91 if ($themerev <= 0 or $rev != $themerev) { 92 // Do not send caching headers if they do not request current revision, 93 // we do not want to pollute browser caches with outdated JS. 94 js_send_uncached($theme->javascript_content($type)); 95 } 96 97 make_localcache_directory('theme', false); 98 99 js_write_cache_file_content($candidate, core_minify::js_files($theme->javascript_files($type))); 100 // Verify nothing failed in cache file creation. 101 clearstatcache(); 102 if (file_exists($candidate)) { 103 js_send_cached($candidate, $etag); 104 } 105 106 js_send_uncached($theme->javascript_content($type));
title
Description
Body
title
Description
Body
title
Description
Body
title
Body