コード例 #1
0
 public static function shouldDebugRequest(Minify_Env $env)
 {
     if ($env->get('debug')) {
         return true;
     }
     $cookieValue = $env->cookie('minifyDebug');
     if ($cookieValue) {
         foreach (preg_split('/\\s+/', $cookieValue) as $debugUri) {
             $pattern = '@' . preg_quote($debugUri, '@') . '@i';
             $pattern = str_replace(array('\\*', '\\?'), array('.*', '.'), $pattern);
             if (preg_match($pattern, $env->getRequestUri())) {
                 return true;
             }
         }
     }
     return false;
 }
コード例 #2
0
ファイル: Factory.php プロジェクト: mrclay/minify
 /**
  * @param mixed $spec
  *
  * @return Minify_SourceInterface
  *
  * @throws Minify_Source_FactoryException
  */
 public function makeSource($spec)
 {
     if (is_string($spec)) {
         $spec = array('filepath' => $spec);
     } elseif ($spec instanceof Minify_SourceInterface) {
         return $spec;
     }
     $source = null;
     if (empty($spec['filepath'])) {
         // not much we can check
         return new Minify_Source($spec);
     }
     if ($this->options['resolveDocRoot'] && 0 === strpos($spec['filepath'], '//')) {
         $spec['filepath'] = $this->env->getDocRoot() . substr($spec['filepath'], 1);
     }
     if (!empty($this->options['fileChecker'])) {
         $spec['filepath'] = call_user_func($this->options['fileChecker'], $spec['filepath']);
     }
     if ($this->options['checkAllowDirs']) {
         $allowDirs = (array) $this->options['allowDirs'];
         $inAllowedDir = false;
         $filePath = $this->env->normalizePath($spec['filepath']);
         foreach ($allowDirs as $allowDir) {
             if (strpos($filePath, $this->env->normalizePath($allowDir)) === 0) {
                 $inAllowedDir = true;
             }
         }
         if (!$inAllowedDir) {
             $allowDirsStr = implode(';', $allowDirs);
             throw new Minify_Source_FactoryException("File '{$spec['filepath']}' is outside \$allowDirs " . "({$allowDirsStr}). If the path is resolved via an alias/symlink, look into the " . "\$min_symlinks option.");
         }
     }
     $basename = basename($spec['filepath']);
     if ($this->options['noMinPattern'] && preg_match($this->options['noMinPattern'], $basename)) {
         if (preg_match('~\\.(css|less)$~i', $basename)) {
             $spec['minifyOptions']['compress'] = false;
             // we still want URI rewriting to work for CSS
         } else {
             $spec['minifier'] = 'Minify::nullMinifier';
         }
     }
     $hoursBehind = $this->options['uploaderHoursBehind'];
     if ($hoursBehind != 0) {
         $spec['uploaderHoursBehind'] = $hoursBehind;
     }
     foreach ($this->handlers as $basenamePattern => $handler) {
         if (preg_match($basenamePattern, $basename)) {
             $source = call_user_func($handler, $spec);
             break;
         }
     }
     if (!$source) {
         throw new Minify_Source_FactoryException("Handler not found for file: {$basename}");
     }
     return $source;
 }
コード例 #3
0
ファイル: index.php プロジェクト: chaoyanjie/HiBlog
// 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
$server = $_SERVER;
if ($min_documentRoot) {
    $server['DOCUMENT_ROOT'] = $min_documentRoot;
}
$env = new Minify_Env(array('server' => $server));
// TODO probably should do this elsewhere...
$min_serveOptions['minifierOptions']['text/css']['docRoot'] = $env->getDocRoot();
$min_serveOptions['minifierOptions']['text/css']['symlinks'] = $min_symlinks;
// auto-add targets to allowDirs
foreach ($min_symlinks as $uri => $target) {
    $min_serveOptions['minApp']['allowDirs'][] = $target;
}
if ($min_allowDebugFlag) {
    // TODO get rid of static stuff
    $min_serveOptions['debug'] = Minify_DebugDetector::shouldDebugRequest($env);
}
if (!empty($min_concatOnly)) {
    $min_serveOptions['concatOnly'] = true;
}
if ($min_errorLogger) {
コード例 #4
0
ファイル: Show.php プロジェクト: chaoyanjie/HiBlog
 public function indexAction()
 {
     include APP_PATH . '/library/Thirdpart/Minify/bootstrap.php';
     // set config path defaults
     $min_configPaths = array('base' => CONF_PATH . '/minify-config.php', 'test' => CONF_PATH . '/minify-config-test.php');
     // check for custom config paths
     if (!empty($min_customConfigPaths) && is_array($min_customConfigPaths)) {
         $min_configPaths = array_merge($min_configPaths, $min_customConfigPaths);
     }
     // load config
     require $min_configPaths['base'];
     if (isset($_GET['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
     $server = $_SERVER;
     if ($min_documentRoot) {
         $server['DOCUMENT_ROOT'] = $min_documentRoot;
     }
     $env = new Minify_Env(array('server' => $server));
     // TODO probably should do this elsewhere...
     $min_serveOptions['minifierOptions']['text/css']['docRoot'] = $env->getDocRoot();
     $min_serveOptions['minifierOptions']['text/css']['symlinks'] = $min_symlinks;
     // auto-add targets to allowDirs
     foreach ($min_symlinks as $uri => $target) {
         $min_serveOptions['minApp']['allowDirs'][] = $target;
     }
     if ($min_allowDebugFlag) {
         // TODO get rid of static stuff
         $min_serveOptions['debug'] = Minify_DebugDetector::shouldDebugRequest($env);
     }
     if (!empty($min_concatOnly)) {
         $min_serveOptions['concatOnly'] = true;
     }
     if ($min_errorLogger) {
         if (true === $min_errorLogger) {
             $min_errorLogger = FirePHP::getInstance(true);
         }
         // TODO get rid of global state
         Minify_Logger::setLogger($min_errorLogger);
     }
     // check for URI versioning
     if (null !== $env->get('v') || preg_match('/&\\d/', $env->server('QUERY_STRING'))) {
         $min_serveOptions['maxAge'] = 31536000;
     }
     // need groups config?
     if (null !== $env->get('g')) {
         // we need groups config
         $min_serveOptions['minApp']['groups'] = \Model\Minify::loadGroupConfig();
     }
     // cache defaults
     if (!isset($min_cachePath)) {
         $min_cachePath = '';
     }
     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 */
     $minify = call_user_func($min_factories['minify'], $cache);
     /* @var Minify $minify */
     if (!$env->get('f') && $env->get('g') === null) {
         // no spec given
         $msg = '<p>No "f" or "g" parameters were detected.</p>';
         $url = 'https://github.com/mrclay/minify/blob/master/docs/CommonProblems.wiki.md#long-url-parameters-are-ignored';
         $defaults = $minify->getDefaultOptions();
         $minify->errorExit($defaults['badRequestHeader'], $url, $msg);
     }
     $sourceFactoryOptions = array();
     // translate legacy setting to option for source factory
     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);
     return false;
 }