/**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     if (!\Config::get('app.debug') && Plugin::$routerActive === false) {
         $cachePath = (new CacheFileHandler())->getCachePath();
         $blacklist = file_exists($cachePath . '/index-blacklist.config') ? file_get_contents($cachePath . '/index-blacklist.config') : null;
         $paramBlacklist = file_exists($cachePath . '/param-blacklist.config') ? json_decode(file_get_contents($cachePath . '/param-blacklist.config'), true) : [];
         $paramBlacklistFunctionFile = $cachePath . '/param-blacklist-function.php';
         if (file_exists($paramBlacklistFunctionFile)) {
             include $paramBlacklistFunctionFile;
             if (preg_match('/^(?!\\/backend)(?!\\/combine)' . $blacklist . '/i', $request->getPathInfo()) === 1 && !isParamBlacklisted($paramBlacklist)) {
                 $file = $cachePath . $request->getPathInfo() . '.html';
                 if (file_exists($file)) {
                     return \Response::make(file_get_contents($file));
                 } else {
                     try {
                         /**
                          * For development purpose, you must set the loopbackUrl on config to use a different baseURL for internal php server.
                          * Because it can handle only one request at a time, you need to open 2 servers with different port or hostname.
                          */
                         $responseRaw = file_get_contents(\Config::get('app.loopbackUrl', \Config::get('app.url')) . $request->getPathInfo() . '?nocache=1');
                     } catch (\ErrorException $e) {
                         if (strstr($e->getMessage(), '404 Not Found')) {
                             $controller = \App::make('Cms\\Classes\\Controller');
                             $response = $controller->run('/404');
                             $response->setStatusCode(404);
                             $this->tryLazyCache($request->getPathInfo(), $response->getContent());
                             return $response;
                         } else {
                             throw $e;
                         }
                     }
                     $this->tryLazyCache($request->getPathInfo(), $responseRaw);
                     return \Response::make($responseRaw);
                 }
             }
         }
     }
     return $next($request);
 }
Esempio n. 2
0
 * User: shina
 * Date: 11/18/15
 * Time: 2:38 PM
 */
use ebussola\statefull\classes\CacheFileHandler;
Route::get('/ebussola-statefull-ajax-flash-message', function () {
    return Response::json(\Flash::toArray());
});
if (!Config::get('app.debug')) {
    $cachePath = (new CacheFileHandler())->getCachePath();
    $blacklist = file_exists($cachePath . '/route-blacklist.config') ? file_get_contents($cachePath . '/route-blacklist.config') : null;
    $paramBlacklist = file_exists($cachePath . '/param-blacklist.config') ? json_decode(file_get_contents($cachePath . '/param-blacklist.config'), true) : [];
    $paramBlacklistFunctionFile = $cachePath . '/param-blacklist-function.php';
    if (file_exists($paramBlacklistFunctionFile)) {
        include $paramBlacklistFunctionFile;
        if (!isParamBlacklisted($paramBlacklist)) {
            Route::get('/{route}', function ($route) use($cachePath) {
                \eBussola\Statefull\Plugin::$routerActive = true;
                $file = $cachePath . '/' . $route . '.html';
                if (file_exists($file)) {
                    return file_get_contents($file);
                } else {
                    try {
                        /**
                         * For development purpose, you must set the loopbackUrl on config to use a different baseURL for internal php server.
                         * Because it can handle only one request at a time, you need to open 2 servers with different port or hostname.
                         */
                        $responseRaw = file_get_contents(Config::get('app.loopbackUrl', Config::get('app.url')) . '/' . $route . '?nocache=1');
                    } catch (ErrorException $e) {
                        if (strstr($e->getMessage(), '404 Not Found')) {
                            $controller = App::make('Cms\\Classes\\Controller');