Changeset 3730:5c45a5df9a59 for inc/load_plugin_file.php
- Timestamp:
- 03/08/18 17:58:39 (8 years ago)
- Branch:
- default
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
inc/load_plugin_file.php
r3143 r3730 13 13 # ClearBricks and DotClear classes auto-loader 14 14 if (@is_dir('/usr/lib/clearbricks')) { 15 define('CLEARBRICKS_PATH','/usr/lib/clearbricks');16 } elseif (is_dir(dirname(__FILE__) .'/libs/clearbricks')) {17 define('CLEARBRICKS_PATH',dirname(__FILE__).'/libs/clearbricks');15 define('CLEARBRICKS_PATH', '/usr/lib/clearbricks'); 16 } elseif (is_dir(dirname(__FILE__) . '/libs/clearbricks')) { 17 define('CLEARBRICKS_PATH', dirname(__FILE__) . '/libs/clearbricks'); 18 18 } elseif (isset($_SERVER['CLEARBRICKS_PATH']) && is_dir($_SERVER['CLEARBRICKS_PATH'])) { 19 define('CLEARBRICKS_PATH',$_SERVER['CLEARBRICKS_PATH']);19 define('CLEARBRICKS_PATH', $_SERVER['CLEARBRICKS_PATH']); 20 20 } 21 21 22 22 if (!defined('CLEARBRICKS_PATH') || !is_dir(CLEARBRICKS_PATH)) { 23 23 exit('No clearbricks path defined'); 24 24 } 25 25 26 require CLEARBRICKS_PATH .'/_common.php';26 require CLEARBRICKS_PATH . '/_common.php'; 27 27 28 28 if (isset($_SERVER['DC_RC_PATH'])) { 29 define('DC_RC_PATH',$_SERVER['DC_RC_PATH']);29 define('DC_RC_PATH', $_SERVER['DC_RC_PATH']); 30 30 } elseif (isset($_SERVER['REDIRECT_DC_RC_PATH'])) { 31 define('DC_RC_PATH',$_SERVER['REDIRECT_DC_RC_PATH']);31 define('DC_RC_PATH', $_SERVER['REDIRECT_DC_RC_PATH']); 32 32 } else { 33 define('DC_RC_PATH',dirname(__FILE__).'/config.php');33 define('DC_RC_PATH', dirname(__FILE__) . '/config.php'); 34 34 } 35 35 36 36 if (!is_file(DC_RC_PATH)) { 37 trigger_error('Unable to open config file',E_USER_ERROR);38 37 trigger_error('Unable to open config file', E_USER_ERROR); 38 exit; 39 39 } 40 40 … … 42 42 43 43 if (empty($_GET['pf'])) { 44 45 http::head(404,'Not Found');46 44 header('Content-Type: text/plain'); 45 http::head(404, 'Not Found'); 46 exit; 47 47 } 48 48 49 49 // $_GET['v'] : version in url to bypass cache in case of dotclear upgrade or in dev mode 50 50 // but don't care of value 51 if (isset($_GET['v'])) 52 { 51 if (isset($_GET['v'])) { 53 52 unset($_GET['v']); 54 53 } 55 54 56 55 // Only $_GET['pf'] is allowed in URL 57 if (count($_GET) > 1) 58 { 56 if (count($_GET) > 1) { 59 57 header('Content-Type: text/plain'); 60 http::head(403, 'Forbidden');58 http::head(403, 'Forbidden'); 61 59 exit; 62 60 } 63 61 64 $allow_types = array('png', 'jpg','jpeg','gif','css','js','swf','svg');62 $allow_types = array('png', 'jpg', 'jpeg', 'gif', 'css', 'js', 'swf', 'svg'); 65 63 66 64 $pf = path::clean($_GET['pf']); 67 65 68 $paths = array_reverse(explode(PATH_SEPARATOR, DC_PLUGINS_ROOT));66 $paths = array_reverse(explode(PATH_SEPARATOR, DC_PLUGINS_ROOT)); 69 67 70 68 # Adding some folders here to load some stuff 71 $paths[] = dirname(__FILE__) .'/swf';72 $paths[] = dirname(__FILE__) .'/js';73 $paths[] = dirname(__FILE__) .'/css';69 $paths[] = dirname(__FILE__) . '/swf'; 70 $paths[] = dirname(__FILE__) . '/js'; 71 $paths[] = dirname(__FILE__) . '/css'; 74 72 75 foreach ($paths as $m) 76 { 77 $PF = path::real($m.'/'.$pf); 73 foreach ($paths as $m) { 74 $PF = path::real($m . '/' . $pf); 78 75 79 80 81 76 if ($PF !== false) { 77 break; 78 } 82 79 } 83 80 unset($paths); 84 81 85 82 if ($PF === false || !is_file($PF) || !is_readable($PF)) { 86 87 http::head(404,'Not Found');88 83 header('Content-Type: text/plain'); 84 http::head(404, 'Not Found'); 85 exit; 89 86 } 90 87 91 if (!in_array(files::getExtension($PF), $allow_types)) {92 93 http::head(404,'Not Found');94 88 if (!in_array(files::getExtension($PF), $allow_types)) { 89 header('Content-Type: text/plain'); 90 http::head(404, 'Not Found'); 91 exit; 95 92 } 96 93 97 http::$cache_max_age = 7 * 24 * 60 * 60; 98 http::cache(array_merge(array($PF), get_included_files()));94 http::$cache_max_age = 7 * 24 * 60 * 60; // One week cache for plugin's files served by ?pf=… is better than old 2 hours 95 http::cache(array_merge(array($PF), get_included_files())); 99 96 100 header('Content-Type: ' .files::getMimeType($PF));97 header('Content-Type: ' . files::getMimeType($PF)); 101 98 // Content-length is not mandatory and must be the exact size of content transfered AFTER possible compression (gzip, deflate, …) 102 99 //header('Content-Length: '.filesize($PF));
Note: See TracChangeset
for help on using the changeset viewer.