示例#1
0
 /**
  * Disables a theme.
  *
  * @param \Symfony\Component\HttpFoundation\Request $request
  *   A request object containing a theme name and a valid token.
  *
  * @return \Symfony\Component\HttpFoundation\RedirectResponse
  *   Redirects back to the appearance admin page.
  *
  * @throws \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
  *   Throws access denied when no theme or token is set in the request or when
  *   the token is invalid.
  */
 public function disable(Request $request)
 {
     $theme = $request->get('theme');
     $config = $this->config('system.theme');
     if (isset($theme)) {
         // Get current list of themes.
         $themes = $this->themeHandler->listInfo();
         // Check if the specified theme is one recognized by the system.
         if (!empty($themes[$theme])) {
             // Do not disable the default or admin theme.
             if ($theme === $config->get('default') || $theme === $config->get('admin')) {
                 drupal_set_message($this->t('%theme is the default theme and cannot be disabled.', array('%theme' => $themes[$theme]->info['name'])), 'error');
             } else {
                 $this->themeHandler->disable(array($theme));
                 drupal_set_message($this->t('The %theme theme has been disabled.', array('%theme' => $themes[$theme]->info['name'])));
             }
         } else {
             drupal_set_message($this->t('The %theme theme was not found.', array('%theme' => $theme)), 'error');
         }
         return $this->redirect('system.themes_page');
     }
     throw new AccessDeniedHttpException();
 }