Table of Contents

  1. Preferences
    1. Preference groups
    2. Individual preferences
      1. Valid preference types
      2. Valid default values
    3. Scope
    4. Preference values
      1. Default values
      2. Hooks
    5. Identities
    6. More information

Preferences

Preferences (or short "Prefs") is Horde's name for user settings, i.e. any settings that can be changed by users individually. Preferences are available for almost all Horde applications and may be accessed by users clicking on the Options button in the top menu bar. There is also direct access to the individual applications' preference interfaces through the expandable Options menu entry in the left menu bar. Whether these buttons appear and under which condition can be configured by the administrator in Horde's configuration. Users can switch between the different applications' preferences by either using the entries in the left menu, or by picking an application in the top right drop down list inside the preference interface.

If you set up a Horde installation for more than a few individuals you might want to go through all available preferences to check whether the default values make sense for your kind of organization, or to even hide preferences that don't make sense for your users or might confuse them.

Preferences are organized in preference groups that are again divided into columns in the preference interface. All preferences, their descriptions, default values, groups, and columns are defined in the application's config/prefs.php file. This file contains two sections.

Preference groups

The first section which defines the $prefGroups variable, is responsible for grouping individual preferences into groups. The result is the overview page that users will see if accessing the preference interface. Each $prefGroups entry defines one group by setting

You can change any of these settings according to your needs but please note a few things:

If there is only a single preference group for an application, the user will get directly to that preference group when he accesses the preference interface, skipping the overview page altogether.

Individual preferences

The second section of the prefs.php files contains the definitions of the individual preferences, as specified in the $_prefs variable. Generally each entry in $_prefs is associated with a user setting, but there are a few exceptions. The following settings define how a preference work:

Valid preference types

Preference type Explanation
checkbox Provides a checkbox.
enum Provides a selection list in the UI, list is specified in the associated 'enum' setting.
implicit Provides storage for 'special' types.
link Provides a link to another data entry form.
number Provides a 3-character textbox to enter a natural number; syntaxcheck is performed after data entry.
password Provides a textbox for password entry.
select Provides a selection list in the UI that is built in lib/prefs.php.
special Provides an UI widget.
text Provides a single-line textbox.
textarea Provides a multi-line textbox.

Valid default values

Preference type Value format
checkbox 0 or false for unchecked, 1 or true for checked
enum Preselected item from associated enumeration
implicit Depends on the individual preference
link Not used
number Number value, integer or float
password Should be ''
select Preselected item from associated selection list
special Not used
text Text value, e.g. string in single quotes
textarea Text value, e.g. string in double quotes, lines separated with "\n"

Scope

Preference values

Preference values are cached in the user's session. This means that default value changes in the prefs.php configuration file don't have any effect until the user logs in the next time. Changes to the "cosmetic" settings that influence the interface like descriptions or grouping are applied immediately.

Preference values stored in the preference backend take precedence over the default settings defined in prefs.php, even if the preferences are locked. The idea is that you can override preferences for individual user by setting values for them in the backend. As a consequence, you have to delete existing values in backend, if you change the default value and want it to be applied to all users, even those that already changed that setting. This could be done with a SQL preference with the following query for example:

DELETE FROM horde_prefs WHERE pref_scope = '<application_name>' AND pref_name = '<preference_name>'

Default values

Hooks

Identities

More information

See CustomizingPreferencesH3 for a number of user-contributed preference settings and hooks.