mirror of
https://github.com/mrclay/minify.git
synced 2025-08-13 17:44:00 +02:00
A couple improvements
Show 400 if request is missing spec (instead of redirect) Allow config.php to change factories for Minify and MinApp objects These should've been separate commits, :(
This commit is contained in:
10
config.php
10
config.php
@@ -187,5 +187,15 @@ $min_symlinks = array();
|
|||||||
$min_uploaderHoursBehind = 0;
|
$min_uploaderHoursBehind = 0;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Advanced: you can replace some of the PHP classes Minify uses to serve requests.
|
||||||
|
* To do this, assign a callable to one of the elements of the $min_factories array.
|
||||||
|
*
|
||||||
|
* You can see the default implementations (and what gets passed in) in index.php.
|
||||||
|
*/
|
||||||
|
//$min_factories['minify'] = ... a callable
|
||||||
|
//$min_factories['controller'] = ... a callable
|
||||||
|
|
||||||
|
|
||||||
// try to disable output_compression (may not have an effect)
|
// try to disable output_compression (may not have an effect)
|
||||||
ini_set('zlib.output_compression', '0');
|
ini_set('zlib.output_compression', '0');
|
||||||
|
80
index.php
80
index.php
@@ -28,6 +28,20 @@ if (isset($_GET['test'])) {
|
|||||||
include $min_configPaths['test'];
|
include $min_configPaths['test'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// setup factories
|
||||||
|
$defaultFactories = array(
|
||||||
|
'minify' => function (Minify_CacheInterface $cache) {
|
||||||
|
return new Minify($cache);
|
||||||
|
},
|
||||||
|
'controller' => function (Minify_Env $env, Minify_Source_Factory $sourceFactory) {
|
||||||
|
return new Minify_Controller_MinApp($env, $sourceFactory);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
if (!isset($min_factories)) {
|
||||||
|
$min_factories = array();
|
||||||
|
}
|
||||||
|
$min_factories = array_merge($defaultFactories, $min_factories);
|
||||||
|
|
||||||
// use an environment object to encapsulate all input
|
// use an environment object to encapsulate all input
|
||||||
$server = $_SERVER;
|
$server = $_SERVER;
|
||||||
if ($min_documentRoot) {
|
if ($min_documentRoot) {
|
||||||
@@ -37,18 +51,6 @@ $env = new Minify_Env(array(
|
|||||||
'server' => $server,
|
'server' => $server,
|
||||||
));
|
));
|
||||||
|
|
||||||
// setup cache
|
|
||||||
if (!isset($min_cachePath)) {
|
|
||||||
$min_cachePath = '';
|
|
||||||
}
|
|
||||||
if (is_string($min_cachePath)) {
|
|
||||||
$cache = new Minify_Cache_File($min_cachePath, $min_cacheFileLocking);
|
|
||||||
} else {
|
|
||||||
$cache = $min_cachePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
$server = new Minify($cache);
|
|
||||||
|
|
||||||
// TODO probably should do this elsewhere...
|
// TODO probably should do this elsewhere...
|
||||||
$min_serveOptions['minifierOptions']['text/css']['docRoot'] = $env->getDocRoot();
|
$min_serveOptions['minifierOptions']['text/css']['docRoot'] = $env->getDocRoot();
|
||||||
$min_serveOptions['minifierOptions']['text/css']['symlinks'] = $min_symlinks;
|
$min_serveOptions['minifierOptions']['text/css']['symlinks'] = $min_symlinks;
|
||||||
@@ -81,32 +83,44 @@ if (null !== $env->get('v') || preg_match('/&\\d/', $env->server('QUERY_STRING')
|
|||||||
|
|
||||||
// need groups config?
|
// need groups config?
|
||||||
if (null !== $env->get('g')) {
|
if (null !== $env->get('g')) {
|
||||||
// well need groups config
|
// we need groups config
|
||||||
$min_serveOptions['minApp']['groups'] = (require $min_configPaths['groups']);
|
$min_serveOptions['minApp']['groups'] = (require $min_configPaths['groups']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($env->get('f') || null !== $env->get('g')) {
|
// cache defaults
|
||||||
// serving!
|
if (!isset($min_cachePath)) {
|
||||||
if (! isset($min_serveController)) {
|
$min_cachePath = '';
|
||||||
$sourceFactoryOptions = array();
|
}
|
||||||
|
if (!isset($min_cacheFileLocking)) {
|
||||||
|
$min_cacheFileLocking = true;
|
||||||
|
}
|
||||||
|
if (is_string($min_cachePath)) {
|
||||||
|
$cache = new Minify_Cache_File($min_cachePath, $min_cacheFileLocking);
|
||||||
|
} else {
|
||||||
|
// assume it meets interface.
|
||||||
|
$cache = $min_cachePath;
|
||||||
|
}
|
||||||
|
/* @var Minify_CacheInterface $cache */
|
||||||
|
|
||||||
// translate legacy setting to option for source factory
|
$minify = call_user_func($min_factories['minify'], $cache);
|
||||||
if (isset($min_serveOptions['minApp']['noMinPattern'])) {
|
/* @var Minify $minify */
|
||||||
$sourceFactoryOptions['noMinPattern'] = $min_serveOptions['minApp']['noMinPattern'];
|
|
||||||
}
|
|
||||||
$sourceFactory = new Minify_Source_Factory($env, $sourceFactoryOptions, $cache);
|
|
||||||
|
|
||||||
$min_serveController = new Minify_Controller_MinApp($env, $sourceFactory);
|
if (!$env->get('f') && $env->get('g') === null) {
|
||||||
}
|
// no spec given
|
||||||
$server->serve($min_serveController, $min_serveOptions);
|
$defaults = $minify->getDefaultOptions();
|
||||||
exit;
|
$url = 'https://github.com/mrclay/minify/blob/master/docs/UserGuide.wiki.md#creating-minify-urls';
|
||||||
|
$minify->errorExit($defaults['badRequestHeader'], $url);
|
||||||
}
|
}
|
||||||
|
|
||||||
// not serving
|
$sourceFactoryOptions = array();
|
||||||
if ($min_enableBuilder) {
|
|
||||||
header('Location: builder/');
|
|
||||||
exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
header('Location: /');
|
// translate legacy setting to option for source factory
|
||||||
exit;
|
if (isset($min_serveOptions['minApp']['noMinPattern'])) {
|
||||||
|
$sourceFactoryOptions['noMinPattern'] = $min_serveOptions['minApp']['noMinPattern'];
|
||||||
|
}
|
||||||
|
$sourceFactory = new Minify_Source_Factory($env, $sourceFactoryOptions, $cache);
|
||||||
|
|
||||||
|
$controller = call_user_func($min_factories['controller'], $env, $sourceFactory);
|
||||||
|
/* @var Minify_ControllerInterface $controller */
|
||||||
|
|
||||||
|
$minify->serve($controller, $min_serveOptions);
|
||||||
|
@@ -426,11 +426,16 @@ class Minify {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $header
|
* Show an error page
|
||||||
*
|
*
|
||||||
* @param string $url
|
* @param string $header E.g. 'HTTP/1.0 500 Internal Server Error'
|
||||||
|
* @param string $url URL to direct the user to
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @internal This is not part of the public API and is subject to change
|
||||||
|
* @access private
|
||||||
*/
|
*/
|
||||||
protected function errorExit($header, $url)
|
public function errorExit($header, $url)
|
||||||
{
|
{
|
||||||
$url = htmlspecialchars($url, ENT_QUOTES);
|
$url = htmlspecialchars($url, ENT_QUOTES);
|
||||||
list(,$h1) = explode(' ', $header, 2);
|
list(,$h1) = explode(' ', $header, 2);
|
||||||
|
Reference in New Issue
Block a user