芝麻web文件管理V1.00
编辑当前文件:/home/mgatv524/public_html/fmd/lib/Controller/Error.php
setCommonDependencies($log, $sanitizerService, $state, $user, $help, $date, $config); } /** * @throws ConfigurationException * @throws \Slim\Exception\Stop * @throws \Xibo\Exception\ControllerNotImplemented */ public function notFound() { $app = $this->getApp(); // Not found controller happens outside the normal middleware stack for some reason // Setup the translations for gettext Translate::InitLocale($this->getConfig()); // Configure the locale for date/time if (Translate::GetLocale(2) != '') $this->getDate()->setLocale(Translate::GetLocale(2)); $this->getLog()->debug('Page Not Found. %s', $app->request()->getResourceUri()); $message = __('Page not found'); // Different action depending on the app name switch ($app->getName()) { case 'web': // Set up theme \Xibo\Middleware\Theme::setTheme($app); if ($app->request()->isAjax()) { $this->getState()->hydrate([ 'success' => false, 'message' => $message, 'template' => '' ]); } else { $app->flashNow('globalError', $message); $this->getState()->template = 'not-found'; } $this->render(); break; case 'auth': case 'api': case 'test': $this->getState()->hydrate([ 'httpStatus' => 404, 'success' => false, 'message' => $message ]); $this->render(); break; case 'console': case 'maint': // Render the error page. echo $message; $app->stop(); break; } } /** * @param \Exception $e * @throws ConfigurationException * @throws \Slim\Exception\Stop * @throws \Xibo\Exception\ControllerNotImplemented */ public function handler(\Exception $e) { $app = $this->getApp(); $handled = $this->handledError($e); $app->commit = false; if ($handled) { $this->getLog()->debug($e->getMessage() . $e->getTraceAsString()); } else { // Log the full error $this->getLog()->debug($e->getMessage() . $e->getTraceAsString()); $this->getLog()->error($e->getMessage() . ' Exception Type: ' . get_class($e)); } // Different action depending on the app name switch ($app->getName()) { case 'web': $message = ($handled) ? $e->getMessage() : __('Unexpected Error, please contact support.'); if ($app->request()->isAjax()) { $this->getState()->hydrate([ 'success' => false, 'message' => $message, 'template' => '' ]); } else { // Template depending on whether one exists for the type of exception // get the exception class $exceptionClass = 'error-' . strtolower(str_replace('\\', '-', get_class($e))); // An upgrade might be pending if ($e instanceof AccessDeniedException && $this->getConfig()->isUpgradePending()) $exceptionClass = 'upgrade-in-progress-page'; if (file_exists(PROJECT_ROOT . '/views/' . $exceptionClass . '.twig')) $this->getState()->template = $exceptionClass; else $this->getState()->template = 'error'; $app->flashNow('globalError', $message); } $this->render(); break; case 'auth': case 'api': $status = 500; if ($e instanceof OAuthException) { $status = $e->httpStatusCode; foreach ($e->getHttpHeaders() as $header) { $app->response()->header($header); } } else if ($e instanceof \InvalidArgumentException) { $status = 422; } else if (property_exists(get_class($e), 'httpStatusCode')) { $status = $e->httpStatusCode; } $this->getState()->hydrate([ 'httpStatus' => $status, 'success' => false, 'message' => (($handled) ? __($e->getMessage()) : __('Unexpected Error, please contact support.')), 'data' => (method_exists($e, 'getErrorData')) ? $e->getErrorData() : [] ]); $this->render(); break; case 'console': case 'maint': // Render the error page. if ($handled) { echo $e->getMessage(); } else echo __('Unknown Error'); $app->stop(); break; } } /** * Determine if we are a handled exception * @param $e * @return bool */ private function handledError($e) { if (method_exists($e, 'handledException')) return $e->handledException(); return ($e instanceof \InvalidArgumentException || $e instanceof OAuthException || $e instanceof FormExpiredException || $e instanceof AccessDeniedException || $e instanceof InstanceSuspendedException || $e instanceof UpgradePendingException || $e instanceof TokenExpiredException ); } }