public function dispatch(Route $route, Request $request, Response $response) { $controller = __NAMESPACE__ . '\\Controllers\\' . $route->getController(); $action = $route->getAction(); $foo = new $controller($request, $response); $foo->{$action}(); $response->send(); }
public function preview_page() { $page = Page::getByID(intval($_REQUEST['cID'], 10), 'RECENT'); if (!is_object($page) || $page->isError()) { throw new \InvalidArgumentException('Invalid collection ID'); } $permissions = new Permissions($page); if ($permissions->canPreviewPageAsUser() && $permissions->canRead() && Config::get('concrete.permissions.model') == 'advanced') { /** @var Request $request */ $request = Request::getInstance(); $request->setCustomRequestUser(false); $request->setCurrentPage($page); if ($request->request('customUser')) { $user_info = UserInfo::getByUserName($request->request('customUser')); if ($user_info && is_object($user_info) && !$user_info->isError()) { $request->setCustomRequestUser($user_info); } } $request->setCustomRequestDateTime(Core::make('helper/form/date_time')->translate('preview_as_user_datetime', $request->request())); $controller = $page->getPageController(); $view = $controller->getViewObject(); $response = new \Response(); $response->setContent($view->render()); $response->send(); } }
/** * Displays a particular model. * @param integer $id the ID of the model to be displayed */ public function actionIndex() { //echo CJSON::encode("ok"); //Yii::app()->end(); if (isset($_POST['Company'])) { $id = (int) $_POST['Company']; // //if has access //$database= Company::model()->findByPk($id); Yii::log($id, 'info', 'app'); //Yii::app()->user->setState('Database',$database ); //Yii::app()->user->setState('Company',$id); //echo 'ok'; Company::model()->select($id); //redirect Response::send(); } if (Yii::app()->user->Company != 0) { Yii::app()->user->setState('Company', 0); $this->redirect('company'); Yii::app()->end(); } $model = new Company('search'); $model->unsetAttributes(); // clear any default values $this->render('index', array('model' => $model)); }
public function run() { $route = $this->router->match($this->request); if ($route === false) { $actionName = self::ACTION_NOT_FOUND; } else { $actionName = $route->getName(); } if (!$this->actions->has($actionName)) { throw new \Exception(sprintf('Action %s not found', $actionName)); } $this->store->setFileName($actionName); if ($this->request->isAjax()) { $this->view->setRenderType(View::RENDER_JSON); } else { $this->view->setContentView('error'); } $action = $this->actions->get($actionName); call_user_func_array($action, array($this)); if (is_callable($this->postAction)) { call_user_func_array($this->postAction, array($this)); } $this->response->setContent($this->view->render()); $this->response->send(); }
public static function to($url) { Response::clean(); Response::header('Location', $url); Response::send(); exit; }
public function preview() { $request = \Request::getInstance(); $c = \Page::getByID($this->request->get('cID')); $cp = new \Permissions($c); if ($cp->canViewPageVersions()) { $c->loadVersionObject(\Core::make('helper/security')->sanitizeInt($_REQUEST['cvID'])); $spoofed_request = \Request::createFromGlobals(); if ($device_handle = $request->headers->get('x-device-handle')) { if ($device = \Core::make('device/manager')->get($device_handle)) { if ($agent = $device->getUserAgent()) { $spoofed_request->headers->set('User-Agent', $agent); } } } $spoofed_request->setCustomRequestUser(-1); $spoofed_request->setCurrentPage($c); \Request::setInstance($spoofed_request); $controller = $c->getPageController(); $controller->runTask('view', array()); $view = $controller->getViewObject(); $response = new \Response(); $content = $view->render(); // Reset just in case. \Request::setInstance($request); $response->setContent($content); $response->send(); exit; } }
/** * When this type of exception isn't caught this method is called by * Error::exception_handler() to deal with the problem. */ public function handle() { $response = new \Response(\View::forge('404'), 404); \Event::shutdown(); $response->send(true); return; }
/** * @mcms_message ru.molinos.cms.page.content */ public static function hookRequest(Context $ctx) { if (true === self::isLocked($ctx)) { $r = new Response(t('На сервере ведутся технические работы, обратитесь чуть позже.'), 'text/plain', 503); $r->send(); } }
public static function error($message, $status = 501) { Event::trigger('api.error', [$message, $status]); Response::status($status); Response::json(['error' => ['type' => 'fatal', 'status' => $status, 'message' => $message]]); Response::send(); exit; }
/** * 执行应用程序 * @access public * @return void */ public static function run() { // 注册错误和异常处理机制 以及初始化配置 register_shutdown_function('\\think\\Error::appShutdown'); set_error_handler('\\think\\Error::appError'); set_exception_handler('\\think\\Error::appException'); Config::load(THINK_PATH . 'config' . EXT); // 初始化应用(公共模块) 初始化变量配置 self::initModule(COMMON_MODULE, Config::get()); // 获取配置参数 $config = Config::get(); // 设置系统时区 date_default_timezone_set($config['default_timezone']); // 监听app_init APP_HOOK && Hook::listen('app_init'); // 开启多语言机制 // 启动session CLI 不开启 if (!IS_CLI && $config['use_session']) { Session::init($config['session']); } if (empty(self::$dispatch['type'])) { // 未指定调度类型 则进行URL路由检测 self::route($config); } // 记录路由信息 APP_DEBUG && Log::record('[ ROUTE ] ' . var_export(self::$dispatch, true), 'info'); // 监听app_begin APP_HOOK && Hook::listen('app_begin'); // 根据类型调度 switch (self::$dispatch['type']) { case 'redirect': // 执行重定向跳转 header('Location: ' . self::$dispatch['url'], true, self::$dispatch['status']); break; case 'module': // 模块/控制器/操作 $data = self::module(self::$dispatch['module'], $config); break; case 'controller': // 执行控制器操作 //$data = Loader::action(self::$dispatch['controller'], self::$dispatch['params']); break; case 'method': // 执行回调方法 $data = self::invokeMethod(self::$dispatch['method'], self::$dispatch['params']); break; case 'function': // 规则闭包 $data = self::invokeFunction(self::$dispatch['function'], self::$dispatch['params']); break; default: throw new Exception('dispatch type not support', 10008); } // 监听app_end APP_HOOK && Hook::listen('app_end', $data); // 输出数据到客户端 return Response::send($data, Response::type(), Config::get('response_return')); }
function show() { $configuration = new Config(); $database = new SafeMySQL(array('user' => $configuration->db->username, 'pass' => $configuration->db->password, 'db' => $configuration->db->database, 'charset' => $configuration->db->charset)); $data = $database->getAll('SELECT * FROM students'); $response = new Response(); $response->setContent(json_encode($data)); $response->send(); }
function about(Request $request, Response $response) { $this->v->set_tplname('mod_default_about'); $this->nav_flag1 = 'about'; if ($request->is_hashreq()) { } else { } $response->send($this->v); }
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; } }
protected function returnSuccess($data, $message = null) { $res = new Response(); $res->success = true; $res->data = $data; $res->message = $message; $res->send(); exit; }
public function send() { $location = $this->location; if (!preg_match('#^https?://#', $location)) { $location = $this->getSchema() . '://' . $_SERVER['HTTP_HOST'] . $location; } $this->addHeader('Location: ' . $location); parent::send(); }
public function testResponse() { $response = new Response(); $response->setContent('some output'); ob_start(); $response->send(); $output = ob_get_contents(); ob_end_clean(); $this->assertEquals('some output', $output); }
function session_required() { // if the session has expired set the cookie again Database::refresh_session_if_staying_logged_in(); // cancels script execution when the session cookie is not set // returns an "no session" error if (!isset($_SESSION['id'])) { Response::send("no session", "error"); } }
/** * show error page * * call error action method and set response status code * This will work as well for ajax call, see how ajax calls are handled in main.js * * @param string $error * */ public function error($error) { $errorController = new ErrorsController(); if (!method_exists("ErrorsController", $error)) { $error = "System"; } $errors = ["notfound" => 404, "system" => 500, "badrequest" => 400, "unauthorized" => 401, "forbidden" => 403]; $code = isset($errors[strtolower($error)]) ? $errors[strtolower($error)] : 500; $this->response->setStatusCode($code); //clear, get page, then send headers $this->response->clearBuffer(); $errorController->{$error}(); $this->response->send(); }
/** * * Report the error * * @param [string] The message to be displayed * @param [boolean] Whether or not to display PHP backtrace */ function report($msg, $backtrace = true) { // Check for error reporting flag if ($this->config['error_reporting']) { Template::load('error_reporting.html', array("msg" => $msg, "backtrace" => print_r(debug_backtrace(), true))); exit; } else { // Prepare 404 response $Response = new Response(); $Response->setCode(404); $Response->send(); Template::load('404.html'); } exit; }
public function actionCalc() { $model = new Docdetails(); if (isset($_POST['Docdetails']['line'])) { $i = $_POST['Docdetails']['line']; $model->attributes = $_POST['Docdetails'][$i]; if (isset($_POST['CalcPriceWithVat'])) { Response::send(200, $model->CalcPriceWithVat()); } if (isset($_POST['CalcPriceWithOutVat'])) { Response::send(200, $model->CalcPriceWithOutVat()); } Response::send(200, $model->CalcPrice()); } }
/** * instantiate controller object and trigger it's action method * * @param string $controller * @param string $method * @param array $args * @return Response */ private function invoke($controller, $method = "index", $args = []) { $this->request->addParams(['controller' => $controller, 'action' => $method, 'args' => $args]); $this->controller = new $controller($this->request, $this->response); $result = $this->controller->startupProcess(); if ($result instanceof Response) { return $result->send(); } if (!empty($args)) { $response = call_user_func_array([$this->controller, $method], $args); } else { $response = $this->controller->{$method}(); } if ($response instanceof Response) { return $response->send(); } return $this->response->send(); }
/** * Renders the exception. * @param \Exception $exception the exception to be rendered. */ protected function renderException($exception) { if (Yii::$app->has('response')) { $response = Yii::$app->getResponse(); // reset parameters of response to avoid interference with partially created response data // in case the error occurred while sending the response. $response->isSent = false; $response->stream = null; $response->data = null; $response->content = null; } else { $response = new Response(); } //$useErrorView = $response->format === Response::FORMAT_HTML && (!YII_DEBUG || $exception instanceof UserException); $response->format === Response::FORMAT_JSON; $response->data = $this->convertExceptionToArray($exception); $response->send(); }
public static function handleException(Exception $exception) { // Log exception $logger = Application::instance()->logger(); if ($logger !== null) { $msg = sprintf("%s: %s", get_class($exception), $exception->getMessage()); try { $logger->error($msg); } catch (Exception $e) { // Ignore exception, it will be handled next time } } // Mail exception $errorsMailer = new ErrorsMailer(); try { $errorsMailer->deliverErrorMail($exception); } catch (Exception $e) { // Ignore exception, it will be handled next time } // Render exception for development and show 500 page in production try { if (is_development()) { $format = is_cli() ? 'txt' : 'html'; $view_template = sprintf('errors/exception.%s.php', $format); $request = new Request(); $view = new View(APP_VIEWS_DIR, $view_template, array('exception' => $exception, 'request' => $request)); $response = new Response(); $response->statusCode = 500; $response->body = $view->render(); $response->send(); } else { if (!is_cli()) { $view = new View(PUBLIC_DIR, '500.html'); $response = new Response(); $response->statusCode = 500; $response->body = $view->render(); $response->send(); } } } catch (Exception $e) { echo $e->getMessage(); } exit; }
/** * action 'login' * @param Request $request * @param Response $response */ public function login(Request $request, Response $response) { $show_page = true; $retmsg = ''; $retuname = ''; $retupass = ''; if (isset($_POST['loginname']) && isset($_POST['password'])) { $loginname = trim($_POST['loginname']); $password = trim($_POST['password']); $verifycode = isset($_POST['verifycode']) ? trim($_POST['verifycode']) : ''; unset($_POST['loginname'], $_POST['password'], $_POST['verifycode']); $retuname = $loginname; $retupass = $password; if ('' == $loginname) { $retmsg = '请输入用户名'; } elseif ('' == $password) { $retmsg = '请输入密码'; } elseif ('' == $verifycode) { $retmsg = '请输入验证码'; } elseif (0 && $verifycode != $_SESSION['verifycode']) { $retmsg = '请输入正确的验证码'; } else { $check = User_Model::check_logined($loginname, $password, $admin); if ($check < 0) { $retmsg = '不存在该用户'; } elseif ($check === 0) { $retmsg = '密码错误!'; } else { //Final Login Success $retmsg = '登录成功!'; unset($_SESSION['verifycode']); $_SESSION['logined_uid'] = $admin['admin_uid']; $_SESSION['logined_uname'] = $admin['admin_uname']; $response->redirect('/home'); } } } if ($show_page) { $v = new PageView('mod_user_login', '_page_front'); $v->assign('retmsg', $retmsg)->assign('retuname', $retuname)->assign('retupass', $retupass); $response->send($v); } }
/** * Вывод содержимого объекта. */ public static function on_get_dump(Context $ctx) { $filter = array('id' => $ctx->get('node')); if (!$ctx->canDebug()) { $filter['deleted'] = 0; } if ($ctx->get('raw')) { $node = Node::load($filter, $ctx->db); $temp = $node->{'never should this field exist'}; mcms::debug($node); } else { $xml = Node::findXML($filter, $ctx->db); if (empty($xml)) { throw new RuntimeException(t('Для этого документа нет XML представления (такого быть не должно), см. <a href="@url">сырой вариант</a>.', array('@url' => '?q=node/' . $filter['id'] . '/dump&raw=1'))); } $res = new Response('<?xml version="1.0"?>' . $xml, 'text/xml'); $res->send(); } throw new ForbiddenException(); }
public function __construct() { // check that site was enabled. if (!\Model_Sites::isSiteEnabled()) { $request = \Request::forge('error/403')->execute(); $response = new \Response($request, 403); $response->set_status(403); $response->send(true); unset($request, $response); exit; } // fix changed current language but autoload not reload \Lang::load('fslang'); // call web cron to run tasks (including purge old login history) \Library\WebCron::forge()->init(); // set default theme name // @todo [fuelstart][theme] for theme management. you should get default theme setting from db here. \Config::load('theme', true); $theme_active = \Config::get('theme.active'); $this->theme_system_name = $theme_active; unset($theme_active); }
$result = array(); $files = diverse_array($files); foreach ($files as $file) { $f = new UploadedFile(); $f->name = $file['name']; $f->mime = $file['type']; $f->size = $file['size']; $f->tempfile = $file['tmp_name']; $f->error = $file['error']; // 'expire' doesn't exist neither in $_FILES nor in UploadedFile; // commented out for future implementation //$f->expire = $file['expire']; $result[] = $f; } return $result; } $type = isset($_GET['output']) ? $_GET['output'] : 'json'; $response = new Response($type); if (isset($_FILES['files'])) { $uploads = refiles($_FILES['files']); try { foreach ($uploads as $upload) { $res[] = upload_file($upload); } $response->send($res); } catch (Exception $e) { $response->error($e->getCode(), $e->getMessage()); } } else { $response->error(400, 'No input file(s)'); }
/** * 执行应用程序 * @access public * @return void */ public static function run() { // 初始化公共模块 self::initModule(COMMON_MODULE, Config::get()); // 读取扩展配置文件 if (Config::get('extra_config_list')) { foreach (Config::get('extra_config_list') as $file) { Config::load($file, $file); } } // 获取配置参数 $config = Config::get(); // 加载额外文件 if (!empty($config['extra_file_list'])) { foreach ($config['extra_file_list'] as $file) { $file = strpos($file, '.') ? $file : APP_PATH . $file . EXT; if (is_file($file)) { include_once $file; } } } // 日志初始化 Log::init($config['log']); // 缓存初始化 Cache::connect($config['cache']); // 设置系统时区 date_default_timezone_set($config['default_timezone']); // 监听app_init APP_HOOK && Hook::listen('app_init'); // 开启多语言机制 if ($config['lang_switch_on']) { // 获取当前语言 defined('LANG_SET') or define('LANG_SET', Lang::range()); // 加载系统语言包 Lang::load(THINK_PATH . 'lang' . DS . LANG_SET . EXT); } // 启动session CLI 不开启 if (!IS_CLI && $config['use_session']) { Session::init($config['session']); } // 应用URL调度 self::dispatch($config); // 监听app_run APP_HOOK && Hook::listen('app_run'); // 执行操作 if (!preg_match('/^[A-Za-z](\\/|\\.|\\w)*$/', CONTROLLER_NAME)) { // 安全检测 throw new Exception('illegal controller name:' . CONTROLLER_NAME, 10000); } if (Config::get('action_bind_class')) { $class = self::bindActionClass(Config::get('empty_controller')); $instance = new $class(); // 操作绑定到类后 固定执行run入口 $action = 'run'; } else { $instance = Loader::controller(CONTROLLER_NAME, '', Config::get('empty_controller')); // 获取当前操作名 $action = ACTION_NAME . Config::get('action_suffix'); } if (!$instance) { throw new Exception('class [ ' . Loader::parseClass(MODULE_NAME, CONTROLLER_LAYER, CONTROLLER_NAME) . ' ] not exists', 10001); } try { // 操作方法开始监听 $call = [$instance, $action]; APP_HOOK && Hook::listen('action_begin', $call); if (!preg_match('/^[A-Za-z](\\w)*$/', $action)) { // 非法操作 throw new \ReflectionException(); } //执行当前操作 $method = new \ReflectionMethod($instance, $action); if ($method->isPublic()) { // URL参数绑定检测 if (Config::get('url_params_bind') && $method->getNumberOfParameters() > 0) { // 获取绑定参数 $args = self::getBindParams($method, Config::get('url_parmas_bind_type')); // 全局过滤 array_walk_recursive($args, 'think\\Input::filterExp'); $data = $method->invokeArgs($instance, $args); } else { $data = $method->invoke($instance); } // 操作方法执行完成监听 APP_HOOK && Hook::listen('action_end', $data); // 输出数据 return Response::send($data, Response::type(), Config::get('response_return')); } else { // 操作方法不是Public 抛出异常 throw new \ReflectionException(); } } catch (\ReflectionException $e) { // 操作不存在 if (method_exists($instance, '_empty')) { $method = new \ReflectionMethod($instance, '_empty'); $data = $method->invokeArgs($instance, [$action, '']); // 操作方法执行完成监听 APP_HOOK && Hook::listen('action_end', $data); // 输出数据 return Response::send($data, Response::type(), Config::get('response_return')); } else { throw new Exception('method [ ' . (new \ReflectionClass($instance))->getName() . '->' . $action . ' ] not exists ', 10002); } } }
if (Config::$items['error']['log']) { call_user_func(Config::$items['error']['logger'], $exception); } }; /** * Create the exception handler function. All of the error handlers * registered by the framework call this closure to avoid duplicate * code. This Closure will pass the exception to the developer * defined handler in the configuration file. */ $handler = function ($exception) use($logger) { $logger($exception); if (Config::$items['error']['detail']) { echo "== Unhandled Exception ==\n" . $exception->getMessage() . "\n" . $exception->getFile() . " on line " . $exception->getLine() . "\n\n" . $exception->getTraceAsString() . "\n\n"; $response = new Response('', '500'); $response->send(); } else { $response = Response::json(['msg' => $exception->getMessage(), 'file' => $exception->getFile() . ':' . $exception->getLine(), 'trace' => $exception->getTraceAsString()], 500); $response->send(); } exit(1); }; /** * Register the PHP exception handler. The framework throws exceptions * on every error that cannot be handled. All of those exceptions will * be sent through this closure for processing. */ set_exception_handler(function ($exception) use($handler) { $handler($exception); }); /**
/** * 执行应用程序 * @access public * @return void */ public static function run() { // 初始化应用(公共模块) self::initModule(COMMON_MODULE, Config::get()); // 读取扩展配置文件 if (Config::get('extra_config_list')) { foreach (Config::get('extra_config_list') as $name => $file) { $file = strpos($file, '.') ? $file : APP_PATH . $file . EXT; Config::load($file, is_string($name) ? $name : pathinfo($file, PATHINFO_FILENAME)); } } // 获取配置参数 $config = Config::get(); // 加载额外文件 if (!empty($config['extra_file_list'])) { foreach ($config['extra_file_list'] as $file) { $file = strpos($file, '.') ? $file : APP_PATH . $file . EXT; if (is_file($file)) { include_once $file; } } } // 设置系统时区 date_default_timezone_set($config['default_timezone']); // 监听app_init APP_HOOK && Hook::listen('app_init'); // 开启多语言机制 if ($config['lang_switch_on']) { // 获取当前语言 defined('LANG_SET') or define('LANG_SET', Lang::range()); // 加载系统语言包 Lang::load(THINK_PATH . 'lang' . DS . LANG_SET . EXT); if (!APP_MULTI_MODULE) { Lang::load(APP_PATH . 'lang' . DS . LANG_SET . EXT); } } // 启动session CLI 不开启 if (!IS_CLI && $config['use_session']) { Session::init($config['session']); } if (empty(self::$dispatch['type'])) { // 未指定调度类型 则进行URL路由检测 self::route($config); } // 监听app_begin APP_HOOK && Hook::listen('app_begin'); // 根据类型调度 switch (self::$dispatch['type']) { case 'redirect': // 执行重定向跳转 header('Location: ' . self::$dispatch['url'], true, self::$dispatch['status']); break; case 'module': // 模块/控制器/操作 $data = self::module(self::$dispatch['module'], $config); break; case 'controller': // 执行控制器操作 $data = Loader::action(self::$dispatch['controller'], self::$dispatch['params']); break; case 'method': // 执行回调方法 $data = self::invokeMethod(self::$dispatch['method'], self::$dispatch['params']); break; case 'function': // 规则闭包 $data = self::invokeFunction(self::$dispatch['function'], self::$dispatch['params']); break; default: throw new Exception('dispatch type not support', 10008); } // 监听app_end APP_HOOK && Hook::listen('app_end', $data); // 输出数据到客户端 return Response::send($data, Response::type(), Config::get('response_return')); }