/** * 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); }
* 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');