Example #1
0
function solve_paths($text)
{
    static $test = array('/(?<=font\\/)\\S+\\.(?:woff|eot|ttf|svg)\\b/i', '/(?<=img\\/)\\S+\\.(?:jpe?g|png|gif)\\b/i');
    foreach ($test as $expr) {
        $text = preg_replace_callback($expr, function ($match) {
            return \Sauce\App\Assets::solve($match[0]);
        }, $text);
    }
    return $text;
}
Example #2
0
 public static function initialize(\Closure $lambda)
 {
     $test = strtoupper(PHP_SAPI);
     if (strpos($test, 'CLI') === FALSE or $test === 'CLI-SERVER') {
         // static assets
         if ($path = \Postman\Request::value('@')) {
             $test = \Sauce\App\Assets::read($path);
             $output = new \Postman\Response(200, array('Content-Type' => $test['type']), $test['output']);
             \Sauce\Logger::debug("Serve {$path}");
             return $output;
         }
         // settings
         \Labourer\Web\Session::initialize();
         ignore_user_abort(FALSE);
         // locales
         if (!($key = option('language'))) {
             $set = \Locale\Base::all();
             $key = key($set);
         }
         @setlocale(LC_ALL, "{$key}.UTF-8");
         \Locale\Config::set('default', $key);
         \Locale\Base::load_path(path(APP_PATH, 'app', 'locale'));
     }
     \Sauce\Logger::debug('Ready');
     // defaults
     $out = \Sauce\Base::$response;
     $lambda($out);
     if ($action = \Broil\Routing::run()) {
         $uri = \Broil\Config::get('request_uri');
         $method = \Broil\Config::get('request_method');
         \Sauce\Logger::debug("{$method} {$uri}");
         \Sauce\Logger::debug("Route {$action['match']}");
         if (!empty($action['before'])) {
             foreach ((array) $action['before'] as $callback) {
                 $action = call_user_func($callback, $action);
             }
         }
         params($action['params']);
         if (is_string($action['to'])) {
             if (strpos($action['to'], '://') !== FALSE) {
                 $out = new \Postman\Response(redirect($action));
             } elseif (strpos($action['to'], '#') !== FALSE) {
                 $cache = empty($action['no-cache']) ? isset($action['expires']) ? $action['expires'] : option('expires') : 0;
                 $cache = APP_ENV === 'production' && \Postman\Request::method() === 'GET' ? $cache : 0;
                 @(list($controller, $method) = explode('#', (string) $action['to']));
                 \Sauce\App\Handler::execute($controller, $method, $cache);
             } else {
                 throw new \Exception("Unknown '{$action['to']}' action");
             }
         } elseif (is_callable($action['to'])) {
             ob_start();
             $tmp = call_user_func($action['to']);
             $old = ob_get_clean();
             if (is_array($tmp)) {
                 @(list($out->status, $out->headers, $out->response) = $tmp);
             } else {
                 $out->status = is_numeric($tmp) ? (int) $tmp : 200;
                 $out->response = is_string($tmp) ? $tmp : $old;
             }
         } elseif (is_array($action['to'])) {
             $out = new \Postman\Response($action['to']);
         } else {
             throw new \Exception("Cannot execute '{$action['to']}'");
         }
         if (!empty($action['after'])) {
             foreach ((array) $action['after'] as $callback) {
                 $out = call_user_func($callback, $out);
             }
         }
         \Sauce\Logger::debug('Done ', json_encode((array) $out->headers));
         return $out;
     } else {
         throw new \Exception("Route not reach");
     }
 }
Example #3
0
                                    $out[$key] = js_min($out[$key]);
                                }
                            }
                            status('prepare', "{$key}");
                        }
                    }
                    // final integration
                    if (!empty($out)) {
                        $set = array_keys($out);
                        write($tmp = path(TMP, md5($file)), join("\n", $out));
                        $hash = md5(md5_file($tmp) . filesize($tmp));
                        $name = str_replace($base_path . DIRECTORY_SEPARATOR, '', $file);
                        $min_file = path($static_dir, \IO\File::extn($name) . "{$hash}.{$type}");
                        if (s3_handle()) {
                            s3_upload_asset($tmp, str_replace($static_dir . DIRECTORY_SEPARATOR, '', $min_file));
                        } else {
                            is_dir(dirname($min_file)) or mkdir(dirname($min_file), 0777, TRUE);
                            rename($tmp, $min_file);
                        }
                        \Sauce\App\Assets::assign($path = str_replace(path($base_path, $type) . DIRECTORY_SEPARATOR, '', $file), $hash);
                        status('hashing', "{$path} [{$hash}]");
                    }
                }
            });
        }
    }
    status('update', 'config/resources.php');
    \Sauce\App\Assets::save();
} else {
    error("\n  Nothing to do\n");
}
Example #4
0
function tag_for($src)
{
    return \Sauce\App\Assets::tag_for($src);
}