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:  * Wrapper for Horde_Cli that adds functionality specific to Horde
  4:  * applications.
  5:  *
  6:  * Copyright 2011-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:  * @todo Extend Horde_Cli when we can use LSB of PHP 5.3 in Horde_Cli::init().
 12:  *
 13:  * @author  Jan Schneider <jan@horde.org>
 14:  * @package Core
 15:  */
 16: class Horde_Core_Cli
 17: {
 18:     /**
 19:      * The Horde_Cli object we are wrapping.
 20:      *
 21:      * @var Horde_Cli
 22:      */
 23:     protected $_cli;
 24: 
 25:     /**
 26:      * Constructor.
 27:      */
 28:     public function __construct()
 29:     {
 30:         $this->_cli = Horde_Cli::init();
 31:     }
 32: 
 33:     /**
 34:      * Proxy method.
 35:      */
 36:     public function __call($method, $args)
 37:     {
 38:         return call_user_func_array(array($this->_cli, $method), $args);
 39:     }
 40: 
 41:     /**
 42:      * Shows a prompt for a single configuration setting.
 43:      *
 44:      * @param Horde_Variables $vars  This is going to be populated with the
 45:      *                               answers.
 46:      * @param string $prefix         The current prefix for $name.
 47:      * @param string $name           The name of the configuration setting.
 48:      * @param array $field           A part of the parsed configuration tree as
 49:      *                               returned from Horde_Config.
 50:      */
 51:     public function question($vars, $prefix, $name, $field)
 52:     {
 53:         if (!isset($field['desc'])) {
 54:             // This is a <configsection>.
 55:             foreach ($field as $sub => $sub_field) {
 56:                 $this->question($vars, $prefix . '__' . $name, $sub, $sub_field);
 57:             }
 58:             return;
 59:         }
 60: 
 61:         $question = $field['desc'];
 62:         $default = $field['default'];
 63:         $values = null;
 64:         if (isset($field['switch'])) {
 65:             $values = array();
 66:             foreach ($field['switch'] as $case => $case_field) {
 67:                 $values[$case] = $case_field['desc'];
 68:             }
 69:         } else {
 70:             switch ($field['_type']) {
 71:             case 'boolean':
 72:                 $values = array(true => 'Yes', false => 'No');
 73:                 $default = (int)$default;
 74:                 break;
 75:             case 'enum':
 76:                 $values = $field['values'];
 77:                 break;
 78:             }
 79:             if (!empty($field['required'])) {
 80:                 $question .= $this->red('*');
 81:             }
 82:         }
 83: 
 84:         while (true) {
 85:             if ($name == 'password') {
 86:                 $value = $this->passwordPrompt($question);
 87:             } else {
 88:                 $value = $this->prompt($question, $values, $default);
 89:             }
 90:             if (empty($field['required']) || $value !== '') {
 91:                 break;
 92:             } else {
 93:                 $this->writeln($this->red('This field is required.'));
 94:             }
 95:         }
 96: 
 97:         if (isset($field['switch']) &&
 98:             !empty($field['switch'][$value]['fields'])) {
 99:             foreach ($field['switch'][$value]['fields'] as $sub => $sub_field) {
100:                 $this->question($vars, $prefix, $sub, $sub_field);
101:             }
102:         }
103: 
104:         $vars->set($prefix . '__' . $name, $value);
105:     }
106: }
107: 
API documentation generated by ApiGen