Overview

Packages

  • Auth
  • Core
  • Horde
    • Imsp
  • None
  • Notification

Classes

  • Horde
  • Horde_Config
  • Horde_Config_Form
  • Horde_Core_ActiveSync_Connector
  • Horde_Core_ActiveSync_Driver
  • Horde_Core_Ajax_Application
  • Horde_Core_Ajax_Imple
  • Horde_Core_Ajax_Imple_AutoCompleter
  • Horde_Core_Ajax_Imple_Geocoder_Geonames
  • Horde_Core_Ajax_Imple_SpellChecker
  • Horde_Core_Alarm_Handler_Notify
  • Horde_Core_Auth_Application
  • Horde_Core_Auth_Composite
  • Horde_Core_Auth_Ldap
  • Horde_Core_Auth_Msad
  • Horde_Core_Auth_Shibboleth
  • Horde_Core_Auth_Signup_Base
  • Horde_Core_Auth_Signup_Form
  • Horde_Core_Auth_Signup_Null
  • Horde_Core_Auth_Signup_Sql
  • Horde_Core_Auth_Signup_SqlObject
  • Horde_Core_Autoloader_Callback_Mime
  • Horde_Core_Autoloader_Callback_Nls
  • Horde_Core_Block
  • Horde_Core_Block_Collection
  • Horde_Core_Block_Layout
  • Horde_Core_Block_Layout_Manager
  • Horde_Core_Block_Layout_View
  • Horde_Core_Block_Upgrade
  • Horde_Core_Browser
  • Horde_Core_Bundle
  • Horde_Core_Cli
  • Horde_Core_Controller_NotFound
  • Horde_Core_Controller_RequestConfiguration
  • Horde_Core_Controller_RequestMapper
  • Horde_Core_Controller_SettingsFinder
  • Horde_Core_Db_Migration
  • Horde_Core_Factory_ActiveSyncBackend
  • Horde_Core_Factory_ActiveSyncServer
  • Horde_Core_Factory_ActiveSyncState
  • Horde_Core_Factory_Ajax
  • Horde_Core_Factory_Alarm
  • Horde_Core_Factory_Auth
  • Horde_Core_Factory_AuthSignup
  • Horde_Core_Factory_Base
  • Horde_Core_Factory_BlockCollection
  • Horde_Core_Factory_Browser
  • Horde_Core_Factory_Cache
  • Horde_Core_Factory_Crypt
  • Horde_Core_Factory_Data
  • Horde_Core_Factory_Db
  • Horde_Core_Factory_DbBase
  • Horde_Core_Factory_DbPear
  • Horde_Core_Factory_Dns
  • Horde_Core_Factory_Editor
  • Horde_Core_Factory_Facebook
  • Horde_Core_Factory_Group
  • Horde_Core_Factory_History
  • Horde_Core_Factory_HttpClient
  • Horde_Core_Factory_Identity
  • Horde_Core_Factory_Image
  • Horde_Core_Factory_Imple
  • Horde_Core_Factory_Imsp
  • Horde_Core_Factory_ImspAuth
  • Horde_Core_Factory_Injector
  • Horde_Core_Factory_KolabServer
  • Horde_Core_Factory_KolabSession
  • Horde_Core_Factory_KolabStorage
  • Horde_Core_Factory_Ldap
  • Horde_Core_Factory_Lock
  • Horde_Core_Factory_Logger
  • Horde_Core_Factory_LoginTasks
  • Horde_Core_Factory_Mail
  • Horde_Core_Factory_Mapper
  • Horde_Core_Factory_Matcher
  • Horde_Core_Factory_Memcache
  • Horde_Core_Factory_MimeViewer
  • Horde_Core_Factory_Notification
  • Horde_Core_Factory_Perms
  • Horde_Core_Factory_PermsCore
  • Horde_Core_Factory_Prefs
  • Horde_Core_Factory_Request
  • Horde_Core_Factory_Secret
  • Horde_Core_Factory_SessionHandler
  • Horde_Core_Factory_Share
  • Horde_Core_Factory_ShareBase
  • Horde_Core_Factory_Template
  • Horde_Core_Factory_TextFilter
  • Horde_Core_Factory_ThemesCache
  • Horde_Core_Factory_Token
  • Horde_Core_Factory_Tree
  • Horde_Core_Factory_Twitter
  • Horde_Core_Factory_UrlShortener
  • Horde_Core_Factory_Vfs
  • Horde_Core_Factory_View
  • Horde_Core_Factory_Weather
  • Horde_Core_Group_Ldap
  • Horde_Core_Log_Logger
  • Horde_Core_LoginTasks
  • Horde_Core_LoginTasks_Backend_Horde
  • Horde_Core_LoginTasks_SystemTask_Upgrade
  • Horde_Core_Mime_Viewer_Syntaxhighlighter
  • Horde_Core_Mime_Viewer_Vcard
  • Horde_Core_Notification_Event_Status
  • Horde_Core_Notification_Handler_Decorator_Hordelog
  • Horde_Core_Notification_Storage_Session
  • Horde_Core_Perms
  • Horde_Core_Perms_Ui
  • Horde_Core_Prefs_Cache_Session
  • Horde_Core_Prefs_Identity
  • Horde_Core_Prefs_Storage_Configuration
  • Horde_Core_Prefs_Storage_Hooks
  • Horde_Core_Prefs_Storage_Upgrade
  • Horde_Core_Prefs_Ui
  • Horde_Core_Prefs_Ui_Widgets
  • Horde_Core_Share_Driver
  • Horde_Core_Share_FactoryCallback
  • Horde_Core_Sidebar
  • Horde_Core_Text_Filter_Bbcode
  • Horde_Core_Text_Filter_Emails
  • Horde_Core_Text_Filter_Emoticons
  • Horde_Core_Text_Filter_Highlightquotes
  • Horde_Core_Translation
  • Horde_Core_Tree_Html
  • Horde_Core_Tree_Javascript
  • Horde_Core_Tree_Simplehtml
  • Horde_Core_Ui_FlagImage
  • Horde_Core_Ui_JsCalendar
  • Horde_Core_Ui_Language
  • Horde_Core_Ui_Layout
  • Horde_Core_Ui_ModalFormRenderer
  • Horde_Core_Ui_Pager
  • Horde_Core_Ui_Tabs
  • Horde_Core_Ui_TagCloud
  • Horde_Core_Ui_VarRenderer
  • Horde_Core_Ui_VarRenderer_Html
  • Horde_Core_Ui_VarRenderer_TablesetHtml
  • Horde_Core_Ui_Widget
  • Horde_ErrorHandler
  • Horde_Help
  • Horde_Menu
  • Horde_Registry
  • Horde_Registry_Api
  • Horde_Registry_Application
  • Horde_Registry_Caller
  • Horde_Registry_Nlsconfig
  • Horde_Script_Files
  • Horde_Session
  • Horde_Session_Null
  • Horde_Themes
  • Horde_Themes_Cache
  • Horde_Themes_Css
  • Horde_Themes_Element
  • Horde_Themes_Image
  • Horde_Themes_Sound

Exceptions

  • Horde_Exception_HookNotSet
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * A Horde_Form:: form that implements a user interface for the config
  4:  * system.
  5:  *
  6:  * Copyright 2002-2012 Horde LLC (http://www.horde.org/)
  7:  *
  8:  * See the enclosed file COPYING for license information (LGPL). If you
  9:  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
 10:  *
 11:  * @author   Chuck Hagenbuch <chuck@horde.org>
 12:  * @category Horde
 13:  * @package  Core
 14:  */
 15: class Horde_Config_Form extends Horde_Form
 16: {
 17:     /**
 18:      * Don't use form tokens for the configuration form - while
 19:      * generating configuration info, things like the Token system
 20:      * might not work correctly. This saves some headaches.
 21:      *
 22:      * @var boolean
 23:      */
 24:     protected $_useFormToken = false;
 25: 
 26:     /**
 27:      * Contains the Horde_Config object that this form represents.
 28:      *
 29:      * @var Horde_Config
 30:      */
 31:     protected $_xmlConfig;
 32: 
 33:     /**
 34:      * Contains the Horde_Variables object of this form.
 35:      *
 36:      * @var Horde_Variables
 37:      */
 38:     protected $_vars;
 39: 
 40:     /**
 41:      * Whether to fill $this->_vars with values from the existing
 42:      * configuration.
 43:      *
 44:      * @var boolean
 45:      */
 46:     protected $_fillvars;
 47: 
 48:     /**
 49:      * Constructor.
 50:      *
 51:      * @param Horde_Variables &$vars  The variables object of this form.
 52:      * @param string $app             The name of the application that this
 53:      *                                configuration form is for.
 54:      * @param boolean $fillvars       Whether to fill the $vars object with
 55:      *                                values from the existing configuration.
 56:      *                                @since Horde_Core 1.1.
 57:      */
 58:     public function __construct(&$vars, $app, $fillvars = false)
 59:     {
 60:         parent::__construct($vars);
 61: 
 62:         $this->_xmlConfig = new Horde_Config($app);
 63:         $this->_vars = &$vars;
 64:         $this->_fillvars = $fillvars;
 65:         if ($fillvars) {
 66:             $vars->app = $app;
 67:         }
 68:         $config = $this->_xmlConfig->readXMLConfig();
 69:         $this->addHidden('', 'app', 'text', true);
 70:         $this->_buildVariables($config);
 71:     }
 72: 
 73:     /**
 74:      * Builds the form based on the specified level of the configuration tree.
 75:      *
 76:      * @param array $config   The portion of the configuration tree for that
 77:      *                        the form fields should be created.
 78:      * @param string $prefix  A string representing the current position
 79:      *                        inside the configuration tree.
 80:      */
 81:     protected function _buildVariables($config, $prefix = '')
 82:     {
 83:         if (!is_array($config)) {
 84:             return;
 85:         }
 86: 
 87:         foreach ($config as $name => $configitem) {
 88:             $prefixedname = empty($prefix) ? $name : $prefix . '|' . $name;
 89:             $varname = str_replace('|', '__', $prefixedname);
 90:             if ($configitem == 'placeholder') {
 91:                 continue;
 92:             } elseif (isset($configitem['tab'])) {
 93:                 $this->setSection($configitem['tab'], $configitem['desc']);
 94:             } elseif (isset($configitem['switch'])) {
 95:                 $selected = $this->_vars->getExists($varname, $wasset);
 96:                 $var_params = array();
 97:                 $select_option = true;
 98:                 if (is_bool($configitem['default'])) {
 99:                     $configitem['default'] = $configitem['default'] ? 'true' : 'false';
100:                 }
101:                 foreach ($configitem['switch'] as $option => $case) {
102:                     $var_params[$option] = $case['desc'];
103:                     if ($option == $configitem['default']) {
104:                         $select_option = false;
105:                         if (!$wasset) {
106:                             $selected = $option;
107:                         }
108:                     }
109:                 }
110: 
111:                 $name = '$conf[' . implode('][', explode('|', $prefixedname)) . ']';
112:                 $desc = $configitem['desc'];
113: 
114:                 $v = &$this->addVariable($name, $varname, 'enum', true, false, $desc, array($var_params, $select_option));
115:                 if (array_key_exists('default', $configitem)) {
116:                     $v->setDefault($configitem['default']);
117:                     if ($this->_fillvars) {
118:                         $this->_vars->set($varname, $configitem['default']);
119:                     }
120:                 }
121:                 if (!empty($configitem['is_default'])) {
122:                     $v->_new = true;
123:                 }
124:                 $v_action = Horde_Form_Action::factory('reload');
125:                 $v->setAction($v_action);
126:                 if (isset($selected) && isset($configitem['switch'][$selected])) {
127:                     $this->_buildVariables($configitem['switch'][$selected]['fields'], $prefix);
128:                 }
129:             } elseif (isset($configitem['_type'])) {
130:                 $required = (isset($configitem['required'])) ? $configitem['required'] : true;
131:                 $type = $configitem['_type'];
132: 
133:                 if (($type == 'header') || ($type == 'description')) {
134:                     $required = false;
135:                 }
136: 
137:                 $var_params = ($type == 'multienum' || $type == 'enum')
138:                     ? array($configitem['values'])
139:                     : array();
140: 
141:                 if ($type == 'header' || $type == 'description') {
142:                     $name = $configitem['desc'];
143:                     $desc = null;
144:                 } else {
145:                     $name = '$conf[' . implode('][', explode('|', $prefixedname)) . ']';
146:                     $desc = $configitem['desc'];
147:                     if ($type == 'php') {
148:                         $type = 'text';
149:                         $desc .= "\nEnter a valid PHP expression.";
150:                     }
151:                 }
152: 
153:                 $v = &$this->addVariable($name, $varname, $type, $required, false, $desc, $var_params);
154:                 if (isset($configitem['default'])) {
155:                     $v->setDefault($configitem['default']);
156:                     if ($this->_fillvars) {
157:                         switch ($type) {
158:                         case 'boolean':
159:                             if ($configitem['default']) {
160:                                 $this->_vars->set($varname, 'on');
161:                             }
162:                             break;
163:                         case 'int':
164:                             $this->_vars->set($varname, (string)$configitem['default']);
165:                             break;
166:                         default:
167:                             $this->_vars->set($varname, $configitem['default']);
168:                             break;
169:                         }
170:                     }
171:                 }
172:                 if (!empty($configitem['is_default'])) {
173:                     $v->_new = true;
174:                 }
175:             } else {
176:                 $this->_buildVariables($configitem, $prefixedname);
177:             }
178:         }
179:     }
180: 
181: }
182: 
API documentation generated by ApiGen