/**
  * @see SugarView::process()
  */
 public function process()
 {
     global $current_user;
     if (!is_admin($current_user)) {
         sugar_die("Unauthorized access to administration.");
     }
     // Check if the theme is valid
     if (!isset($_REQUEST['theme']) || !in_array($_REQUEST['theme'], array_keys(SugarThemeRegistry::allThemes()))) {
         sugar_die("theme is invalid.");
     }
     if (isset($_REQUEST['do']) && $_REQUEST['do'] == 'save') {
         $theme_config = SugarThemeRegistry::getThemeConfig($_REQUEST['theme']);
         $configurator = new Configurator();
         foreach ($theme_config as $name => $def) {
             if (isset($_REQUEST[$name])) {
                 if ($_REQUEST[$name] == 'true') {
                     $_REQUEST[$name] = true;
                 } else {
                     if ($_REQUEST[$name] == 'false') {
                         $_REQUEST[$name] = false;
                     }
                 }
                 $configurator->config['theme_settings'][$_REQUEST['theme']][$name] = $_REQUEST[$name];
             }
         }
         $configurator->handleOverride();
         SugarApplication::redirect('index.php?module=Administration&action=ThemeSettings');
         exit;
     }
     parent::process();
 }
 public function testDisabledThemeNotInListOfAvailableThemes()
 {
     if (isset($GLOBALS['sugar_config']['disabled_themes'])) {
         $disabled_themes = $GLOBALS['sugar_config']['disabled_themes'];
         unset($GLOBALS['sugar_config']['disabled_themes']);
     }
     $GLOBALS['sugar_config']['disabled_themes'] = $this->_themeName;
     $themes = SugarThemeRegistry::availableThemes();
     $this->assertTrue(!isset($themes[$this->_themeName]));
     $themes = SugarThemeRegistry::unAvailableThemes();
     $this->assertTrue(isset($themes[$this->_themeName]));
     $themes = SugarThemeRegistry::allThemes();
     $this->assertTrue(isset($themes[$this->_themeName]));
     if (isset($disabled_themes)) {
         $GLOBALS['sugar_config']['disabled_themes'] = $disabled_themes;
     }
 }
 /** 
  * display the form
  */
 public function display()
 {
     global $mod_strings, $app_strings, $current_user;
     if (!is_admin($current_user)) {
         sugar_die($GLOBALS['app_strings']['ERR_NOT_ADMIN']);
     }
     $enabled = array();
     foreach (SugarThemeRegistry::availableThemes() as $dir => $theme) {
         $enabled[] = array("theme" => $theme, "dir" => $dir);
     }
     $disabled = array();
     foreach (SugarThemeRegistry::unAvailableThemes() as $dir => $theme) {
         $disabled[] = array("theme" => $theme, "dir" => $dir);
     }
     $this->ss->assign("THEMES", get_select_options_with_id(SugarThemeRegistry::allThemes(), $GLOBALS['sugar_config']['default_theme']));
     $this->ss->assign('enabled_modules', json_encode($enabled));
     $this->ss->assign('disabled_modules', json_encode($disabled));
     $this->ss->assign('mod', $mod_strings);
     $this->ss->assign('APP', $app_strings);
     $this->ss->assign('currentTheme', SugarThemeRegistry::current());
     echo $this->getModuleTitle(false);
     echo $this->ss->fetch('modules/Administration/templates/themeSettings.tpl');
 }