public static function viaJavaScript($url, $parent = false) { if ($link = Filter::with('core.redirect', $url)) { Response::type('text/html'); Response::add('<script>' . ($parent ? 'parent.' : '') . 'location.href="', addslashes($link), '"</script>'); Response::send(); exit; } }
/** * Add execution time to response * * @return void */ public static function showExecutionTime() { $time = Timer::stop(); if (Response::$outJson) { Response::add(['executionTime' => $time . 'ms']); } else { Response::add("<!-- executionTime {$time}ms -->"); } }
/** * Render template as JSON, add render result to Response output * Set Response[status] as $status * * @param string $name * @param string $status * @return void */ public static function renderJson($template, $status = 'ok', $data = null) { $template = new Template($template); $output = ['status' => $status, 'data' => $template->render()]; if (is_array($data)) { $output = array_merge($output, $data); } Response::setJson(); Response::add($output); }
/** * Start the route dispatcher and resolve the URL request. * @param string $URL The URL to match onto. * @param string $method The HTTP method. * @param bool $return_route If setted to true it will *NOT* execute the route but it will return her. * @return boolean true if a route callback was executed. */ public static function dispatch($URL = null, $method = null, $return_route = false) { if (!$URL) { $URL = Request::URI(); } if (!$method) { $method = Request::method(); } $__deferred_send = new Deferred(function () { if (Options::get('core.response.autosend', true)) { Response::send(); } }); if (empty(static::$optimized_tree)) { foreach ((array) static::$routes as $group => $routes) { foreach ($routes as $route) { if (is_a($route, 'Route') && $route->match($URL, $method)) { if ($return_route) { return $route; } else { $route->run($route->extractArgs($URL), $method); return true; } } } } } else { $routes =& static::$optimized_tree; foreach (explode('/', trim($URL, '/')) as $segment) { if (is_array($routes) && isset($routes[$segment])) { $routes =& $routes[$segment]; } else { if (is_array($routes) && isset($routes[''])) { $routes =& $routes['']; } else { break; } } } if (is_array($routes) && isset($routes[0]) && !is_array($routes[0])) { foreach ((array) $routes as $route) { if (is_a($route, __CLASS__) && $route->match($URL, $method)) { if ($return_route) { return $route; } else { $route->run($route->extractArgs($URL), $method); return true; } } } } } Response::status(404, '404 Resource not found.'); foreach (array_filter(array_merge(static::trigger(404) ?: [], Event::trigger(404) ?: [])) as $res) { Response::add($res); } return false; }
/** * Show queries number for debug * Add queries count to response (json or plain) * * @return void */ public static function showResources() { $count = self::$queries; if (Response::$outJson) { Response::add(['db queries' => $count]); } else { Response::add("<!-- db queries {$count} -->"); } }
/** * @param $key * @param $value */ public function setOutput($key, $value) { Response::add($value, $key); }