function getConnection() { // Variables defined in /config/config.php $hostname = MYSQL_HOSTNAME; $database = MYSQL_DATABASE; $username = MYSQL_USERNAME; $password = MYSQL_PASSWORD; try { // Create handle to database $dbh = new PDO("mysql:host={$hostname};dbname={$database}", $username, $password); // Throw PDOExceptions to catch $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Buffered queries, MySQL specific $dbh->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true); return $dbh; } catch (PDOException $e) { error_log("Cannot connect to database : " . $e->getMessage()); $request = new Lvc_Request(); $request->setControllerName('error'); $request->setActionName('view'); $request->setActionParams(array('error' => '500')); // Get a new front controller without any routers, // and have it process our handmade request. $fc = new Lvc_FrontController(); $fc->processRequest($request); exit; } }
/** * Send a 404 error page * @SuppressWarnings(PHPMD.ExitExpression) */ protected function send404() { $request = new Lvc_Request(); $request->setControllerName('error'); $request->setActionName('index'); $request->setActionParams(array('error' => '404', 'message' => 'We were unable to locate this recommendation, or it has already been submitted.')); // Get a new front controller without any routers, and have it process our handmade request. $frontController = new Lvc_FrontController(); $frontController->processRequest($request); exit; }
/** * Output a single file * @param string $name */ public function actionGet($name) { if ($file = $this->_em->getRepository('\\Jazzee\\Entity\\VirtualFile')->findOneBy(array('name' => $name))) { $virtualFile = new \Foundation\Virtual\VirtualFile($file->getName(), $file->getContents()); $virtualFile->output(); } //send a 404 $request = new Lvc_Request(); $request->setControllerName('error'); $request->setActionName('index'); $request->setActionParams(array('error' => '404', 'message' => 'File Not Found')); // Get a new front controller without any routers, and have it process our handmade request. $frontController = new Lvc_FrontController(); $frontController->processRequest($request); }
/** * Output a single file * @param string $name */ public function actionGet($name) { if ($file = \Jazzee\Globals::getFileStore()->getSessionFile($name)) { $file->output(); } //send a 404 $request = new Lvc_Request(); $request->setControllerName('error'); $request->setActionName('index'); $request->setActionParams(array('error' => '404', 'message' => 'File Not Found')); // Get a new front controller without any routers, and have it process our handmade request. $frontController = new Lvc_FrontController(); $frontController->processRequest($request); exit(0); }
/** * Constructor * Set up configuration containers * Start session handling * Setup error processing and email * @SuppressWarnings(PHPMD.ExitExpression) */ public function __construct() { parent::__construct(); $this->_previewMode = false; if ($this->_config->getMode() == 'MAINTENANCE') { $request = new \Lvc_Request(); $request->setControllerName('maintenance'); $request->setActionName('index'); // Get a new front controller without any routers, and have it process our handmade request. $frontController = new \Lvc_FrontController(); $frontController->processRequest($request); exit; } $this->setupSession(); $this->setupDoctrine(); }
/** * Constructor * Check for maintenance mode * @SuppressWarnings(PHPMD.ExitExpression) */ public function __construct() { parent::__construct(); if ($this->_config->getMode() == 'APPLY_MAINTENANCE') { $request = new \Lvc_Request(); $request->setControllerName('error'); $request->setActionName('index'); if (!($message = $this->_config->getMaintenanceModeMessage())) { $message = 'The application is currently down for maintenance'; } $request->setActionParams(array('error' => '503', 'message' => $message)); // Get a new front controller without any routers, and have it process our handmade request. $frontController = new \Lvc_FrontController(); $frontController->processRequest($request); exit; } }
$basicRouter->addRoute('#^apply/([^/]+)/([^/]+)/status/do/([^/]+)/([0-9]+)/?([0-9]+)?$#i', array('controller' => 'apply_status', 'action' => 'do', 'action_params' => array('programShortName' => 1, 'cycleName' => 2, 'what' => 3, 'pageId' => 4, 'answerId' => 5))); //applicant status $basicRouter->addRoute('#^apply/([^/]+)/([^/]+)/applicant/?(index|login|logout|new|forgotpassword)?$#i', array('controller' => 'apply_applicant', 'action' => 3, 'action_params' => array('programShortName' => 1, 'cycleName' => 2))); //applicant status $basicRouter->addRoute('#^apply/([^/]+)/([^/]+)/preview/([a-z]+)$#i', array('controller' => 'apply_preview', 'action' => 3, 'action_params' => array('programShortName' => 1, 'cycleName' => 2))); //applicant status $basicRouter->addRoute('#^apply/([^/]+)/([^/]+)/applicant/resetpassword/([a-z0-9]+)$#i', array('controller' => 'apply_applicant', 'action' => 'resetpassword', 'action_params' => array('programShortName' => 1, 'cycleName' => 2, 'uniqueId' => 3))); //default controller $basicRouter->addRoute('#^admin$#i', array('redirect' => 'admin/welcome')); //single applicant view $basicRouter->addRoute('#^admin/applicants/single/([0-9]+)/?([^/]+)?/?(.*)$#i', array('controller' => 'applicants_single', 'action' => 2, 'action_params' => array('applicantId' => 1), 'additional_params' => 3)); //transactions come as posts from outside sources $basicRouter->addRoute('#^transaction/(.*)$#i', array('controller' => 'transaction', 'action' => 'post', 'action_params' => array('name' => 1))); $fc->addRouter($basicRouter); //We use preg replace in the admin routers to cleanly group the administrative responsiblities in the URL $advancedRouter = new \Foundation\VC\FullRegexRewriteRouter(); $advancedRouter->addRoute('#^admin/(manage|payments|setup|applicants|scores)/([^/]+)/?([^/]*)/?(.*)$#i', array('controller' => '$1_$2', 'action' => '$3', 'additional_params' => '$4')); $advancedRouter->addRoute('#^admin/([^/]+)/?([^/]+)?/?(.*)$#i', array('controller' => 'admin_$1', 'action' => '$2', 'additional_params' => '$3')); $fc->addRouter($advancedRouter); try { $fc->processRequest(new Lvc_HttpRequest()); } catch (\Lvc_Exception $e) { $request = new \Lvc_Request(); $request->setControllerName('error'); $request->setActionName('index'); $request->setActionParams(array('error' => '404', 'message' => 'Sorry the page you are looking for could not be found.')); // Get a new front controller without any routers, and have it process our handmade request. $frontController = new \Lvc_FrontController(); $frontController->processRequest($request); exit(1); }
if (isset($_GET['url']) && $_GET['url'] === 'favicon.ico') { // Avoid "not found" errors for favicon, which is automatically requested by most browsers. } else { // Load core application config include_once '../config/application.php'; try { // Process the HTTP request using only the routers we need for this application. $fc = new Lvc_FrontController(); $fc->addRouter(new Lvc_RegexRewriteRouter($regexRoutes)); $fc->processRequest(new Lvc_HttpRequest()); } catch (Lvc_Exception $e) { // Log the error message error_log($e->getCode() . ': ' . $e->getMessage()); $code = $e->getCode() == 0 ? '404' : $e->getCode(); // Get a request for the 404 error page. $request = new Lvc_Request(); $request->setControllerName('error'); $request->setActionName('view'); $request->setActionParams(array('error' => $code)); // Get a new front controller without any routers, and have it process our handmade request. $fc = new Lvc_FrontController(); $fc->processRequest($request); } catch (ErrorException $e) { // Some other error, output "technical difficulties" message to user? error_log($e->getMessage()); } catch (Exception $e) { // Some other error, output "technical difficulties" message to user? error_log($e->getMessage()); } }
/** * Handle PHP Exception * @SuppressWarnings(PHPMD.ExitExpression) * @param Exception $exception */ public function handleException(\Exception $exception) { $message = $exception->getMessage(); $userMessage = 'Unspecified Technical Difficulties'; $code = 500; $log = $this->_log; if ($exception instanceof \Lvc_Exception) { $code = 404; $log = $this->_404Log; $userMessage = 'Sorry the page you are looking for could not be found.'; } if ($exception instanceof \PDOException) { $message = 'Problem with database connection. PDO says: ' . $message; $userMessage = 'We are experiencing a problem connecting to our database. Please try your request again.'; } if ($exception instanceof \Foundation\Exception) { $userMessage = $exception->getUserMessage(); } if ($exception instanceof \Foundation\Virtual\Exception) { $userMessage = $exception->getUserMessage(); $code = $exception->getHttpErrorCode(); $log = $this->_404Log; } /* Map the PHP error to a Log priority. */ switch ($exception->getCode()) { case E_WARNING: case E_USER_WARNING: $priority = \Monolog\Logger::WARNING; break; case E_NOTICE: case E_USER_NOTICE: $priority = \Monolog\Logger::INFO; break; case E_ERROR: case E_USER_ERROR: $priority = \Monolog\Logger::CRITICAL; break; default: $priority = \Monolog\Logger::INFO; } $log->addRecord($priority, $message); //send the error to PHP as well error_log($message); // Get a request for the error page $request = new \Lvc_Request(); $request->setControllerName('error'); $request->setActionName('index'); $request->setActionParams(array('error' => $code, 'message' => $userMessage)); // Get a new front controller without any routers, and have it process our handmade request. $frontController = new \Lvc_FrontController(); $frontController->processRequest($request); exit(1); }