Hi John,
I removed the two slashes and /home/httpd/html/horde/turba/config/backends.php looks like this now:
<?php
/**
* This file is where you specify the sources of contacts available to users
* at your installation. It contains a large number of EXAMPLES. Please
* remove or comment out those examples that YOU DON'T NEED. There are a
* number of properties that you can set for each server, including:
*
* IMPORTANT: DO NOT EDIT THIS FILE!
* Local overrides MUST be placed in backends.local.php or backends.d/.
* If the 'vhosts' setting has been enabled in Horde's configuration, you can
* use backends-servername.php.
*
* Example backends.local.php configuration file that enables the LDAP address
* book and adds a composite field to the SQL address book:
*
* <?php
* $cfgSources['localldap']['disabled'] = false;
* $cfgSources['localldap']['params']['server'] = 'localhost';
* $cfgSources['localldap']['params']['root'] = 'cn=contacts,dc=horde,dc=org';
* $cfgSources['localldap']['params']['bind_dn'] = 'cn=admin,ou=users,dc=horde,dc=org';
* $cfgSources['localldap']['params']['bind_password'] = 'somesecret';
* $cfgSources['localsql']['map']['homeAddress'] = array(
* 'fields' => array(
* 'homeStreet',
* 'homePostalCode',
* 'homeCity',
* 'homeCountry'
* ),
* 'format' => "%s\n%s %s\n%s"
* );
*
* Properties that can be set for each server:
*
* disabled: (boolean) If true, the config entry is disabled.
*
* title: (string) This is the common (user-visible) name that you want
* displayed in the contact source drop-down box.
*
* type: (string) The types 'ldap', 'sql', 'kolab', 'imsp', 'group',
* 'favourites' and 'prefs' are currently supported. Kolab address books
* can be used with any IMAP server that supports METADATA.
* Preferences-based address books are not intended for production
* installs unless you really know what you're doing - they are not
* searchable, and they won't scale well if a user has a large number of
* entries.
*
* params: (array) These are the connection parameters specific to the contact
* source.
*
* General settings:
* - charset: (string) The character set that the backend stores
* data in. Many LDAP servers use utf-8. Database servers
* typically use iso-8859-1.
* - filter: (string) Filter your result based on certain condition
* in SQL and LDAP backends. A filter can be specified to
* avoid some unwanted data. For example, if the source is
* an external SQL database, to select records with the
* delete flag = 0: 'filter' => 'deleted=0'.
* Don't enclose 'filter' in brackets - this will done
* automatically. Also keep in mind that a full filter
* line will be built from 'filter' and 'objectclass'
* parameters.
*
* Settings that only apply to LDAP servers:
* - bind_dn: (string) Only applies to LDAP servers which do not
* allow anonymous connections. Active Directory servers
* do not allow it by default, so before using one as a
* Turba source, you must create a "rightless" user,
* which is only allowed to connect to the server, and
* set the 'bind_dn' parameter like
* 'rightless@example.com' (not
* 'cn=rightless,dc=example,dc=com').
* - bind_password: (string) Only applies to LDAP servers which do
* not allow anonymous connection. You should set
* this to the cleartext password for the user
* specified in 'bind_dn'.
* - checkrequired: (boolean) If true, consult the LDAP schema for
* any attributes that are required by the given
* objectclass(es). Required attributes will be
* provided automatically if the
* 'checkrequired_string' parameter is present.
* - checksyntax: (boolean) If present, inspect the LDAP schema for
* particular attributes by the type defined in the
* corresponding schema.
* - deref: (integer) One of:
* - LDAP_DEREF_NEVER
* - LDAP_DEREF_SEARCHING
* - LDAP_DEREF_FINDING
* - LDAP_DEREF_ALWAYS
* This setting tells the LDAP server when to dereference
* aliases. See
http://www.php.net/ldap for more
* information.
* - dn: (array) Defines the list of LDAP attributes that build a
* valid DN.
* - objectclass: (array) Defines a list of objectclasses that
* contacts must belong to, and that new objects will
* be created with.
* - referrals: (integer) Either 0 or 1. See the LDAP documentation
* about the corresponding parameter REFERRALS. Windows
* 2003 Server requires that you set this parameter to
* 0.
* - root: (string) Defines the base DN where to start the search
* (i.e. dc=example,dc=com).
* - scope: (string) Can be set to 'one' to search one level of the
* LDAP directory, or 'sub' to search all levels. 'one'
* will work for most setups and should be much faster.
* However we default to 'sub' for backwards compatibility.
* - sizelimit: (integer) Limit the search to this number of
* entries. Empty value or 0 means no limit. Keep in
* mind that servers can impose their own search
* limits.
* - tls: (boolean) If true, try to use a TLS connection to the
* server.
* - version: (integer) Specifies LDAP server version: either 2 or
* 3. Active Directory servers require version 3.
*
* map: (array) A list of mappings from the Turba attribute names (keys) to
* the attribute names by which they are known in this contact
* source (values).
*
* Turba also supports composite fields. A composite field is
* defined by mapping the field name to an array containing a
* list of component fields and a format string (similar to a
* printf() format string; however, note that positioned
* parameters like %1$s will NOT work).
*
* 'attribute' defines where the composed value is saved, and is
* optional.
*
* 'parse' defines a list of format strings and field names that
* should be used for splitting up composite fields, in the order
* of precedence, and is optional.
*
* An example:
* ...
* 'name' => array(
* 'fields' => array('firstname', 'lastname'),
* 'format' => '%s %s',
* 'attribute' => 'object_name'
* ),
* 'firstname' => 'object_firstname',
* 'lastname' => 'object_lastname',
* ...
*
* Standard Turba attributes are:
* - __key: [REQUIRED] A backend-specific ID for the entry (any
* value as long as it is unique inside that source).
* - __members: Serialized PHP array with list of Group
* members.
* - __owner: User name of the contact's owner
* - __type: Either 'Object' or 'Group'
* - __uid: Globally unique ID of the entry (used for
* synchronizing and must be able to be set to any
* value).
*
* More Turba attributes are defined in config/attributes.php.
*
* tabs: (array) All fields can be grouped into tabs with this optional entry.
* This list is multidimensional hash; keys are the tab titles.
*
* Example:
* 'tabs' => array(
* 'Addresses' => array(
* 'homeAddress',
* 'workAddress'
* ),
* 'Names' => array(
* 'firstname',
* 'lastname',
* 'alias'
* )
* );
*
* search: (array) A list of Turba attribute names that can be searched for
* this source.
*
* strict: (array) A list of native field/attribute names that must always be
* matched exactly in a search.
*
* approximate: (array) Only applies to LDAP servers. If set, should be an
* array of native field/attribute names to search
* "approximately" (for example, "Sánchez", "Sanchez", and
* "Sanchéz" will all match a search string of "sanchez").
*
* export: (boolean) If true, this source will appear on the Export menu,
* allowing users to export the contacts to a CSV (etc.) file.
*
* browse: (boolean) If true, this source will be browseable via the Browse
* menu item, and empty searches against the source will return all
* contacts.
*
* use_shares: (boolean) If true, Horde_Share functionality will be enabled
* for this source - allowing users to share their personal
* address books as well as to create new ones.
*
* Since Turba only supports having one backend configured for
* creating new shares, use the 'shares' configuration option to
* specify which backend will be used for creating new shares. All
* permission checking will be done against Horde_Share, but note
* that any 'extended' permissions (such as max_contacts) will
* still be enforced. Also note that the backend driver must have
* support for using this. Supported: SQL, IMAP/Kolab, and IMSP.
*
* all_shares: (boolean) If true (and 'use_shares' is true) the corresponding
* source will be assumed to handle all shares that are not
* explicitly assigned to another source. Supported: IMAP/Kolab.
*
* list_name_field: (string) Taken as the field to store contact list names
* in. This is required when using a composite field as the
* 'name' field.
*
* alternative_name: (string) Taken as the field to use an alternative in case
* the name field is empty.
*/
/**
* A local address book in an SQL database. This implements a private
* per-user address book. Sharing of this source with other users may be
* accomplished by enabling Horde_Share for this source by setting
* 'use_shares' => true.
*
* Be sure to create a turba_objects table in your Horde database from the
* schema in turba/scripts/db/turba.sql if you use this source.
*/
$cfgSources['localsql'] = array(
// ENABLED by default
'disabled' => false,
'title' => _("Shared Address Books"),
'type' => 'sql',
'params' => array(
// The default connection details are pulled from the Horde-wide SQL
// connection configuration.
// To use another DB connection, you must provide configuration
// information here - for example,
//'sql' => array(
// 'persistent' => false,
// 'username' => 'horde',
// 'password' => 'secret',
// 'socket' => '/var/run/mysqld/mysqld.sock',
// 'protocol' => 'unix',
// 'database' => 'horde',
// 'charset' => 'utf-8',
// 'ssl' => false,
// 'splitread' => false,
// 'phptype' => 'mysql'
//),
'table' => 'turba_objects'
),
'map' => array(
'__key' => 'object_id',
'__owner' => 'owner_id',
'__type' => 'object_type',
'__members' => 'object_members',
'__uid' => 'object_uid',
'firstname' => 'object_firstname',
'lastname' => 'object_lastname',
'middlenames' => 'object_middlenames',
'namePrefix' => 'object_nameprefix',
'nameSuffix' => 'object_namesuffix',
'name' => array('fields' => array('namePrefix', 'firstname',
'middlenames', 'lastname',
'nameSuffix'),
'format' => '%s %s %s %s %s',
'parse' => array(
array('fields' => array('firstname', 'middlenames',
'lastname'),
'format' => '%s %s %s'),
array('fields' => array('firstname', 'lastname'),
'format' => '%s %s'))),
// This is a shorter version of a "name" composite field which only
// consists of the first name and last name.
// 'name' => array('fields' => array('firstname', 'lastname'),
// 'format' => '%s %s'),
'alias' => 'object_alias',
'yomifirstname' => 'object_yomifirstname',
'yomilastname' => 'object_yomilastname',
'birthday' => 'object_bday',
'anniversary' => 'object_anniversary',
'spouse' => 'object_spouse',
'photo' => 'object_photo',
'phototype' => 'object_phototype',
'homeStreet' => 'object_homestreet',
'homePOBox' => 'object_homepob',
'homeCity' => 'object_homecity',
'homeProvince' => 'object_homeprovince',
'homePostalCode' => 'object_homepostalcode',
'homeCountry' => 'object_homecountry',
'homeAddress' => array('fields' => array('homeStreet', 'homeCity',
'homeProvince',
'homePostalCode'),
'format' => "%s\n%s, %s %s"),
'workStreet' => 'object_workstreet',
'workPOBox' => 'object_workpob',
'workCity' => 'object_workcity',
'workProvince' => 'object_workprovince',
'workPostalCode' => 'object_workpostalcode',
'workCountry' => 'object_workcountry',
'workAddress' => array('fields' => array('workStreet', 'workCity',
'workProvince',
'workPostalCode'),
'format' => "%s\n%s, %s %s"),
'otherStreet' => 'object_otherstreet',
'otherPOBox' => 'object_otherpob',
'otherCity' => 'object_othercity',
'otherProvince' => 'object_otherprovince',
'otherPostalCode' => 'object_otherpostalcode',
'otherCountry' => 'object_othercountry',
'otherAddress' => array('fields' => array('otherStreet', 'otherCity',
'otherProvince',
'otherPostalCode'),
'format' => "%s\n%s, %s %s"),
'department' => 'object_department',
'manager' => 'object_manager',
'assistant' => 'object_assistant',
'timezone' => 'object_tz',
'email' => 'object_email',
'homeEmail' => 'object_homeemail',
'workEmail' => 'object_workemail',
'homePhone' => 'object_homephone',
'homePhone2' => 'object_homephone2',
--snip
I created a custom-template directory in:
/etc/e-smith/templates-custom/home/httpd/horde/turba/config/backends.local.php
Next step would be:
copy the contents of /etc/e-smith/templates/home/httpd/html/horde/turba/config/backends.local.php/40LocalSQL and remove the above mentioned comments.
BUT my 40LocalSQL looks like this:
//40LocalSQL
{
my $sab = ($horde{SharedAddressBooks} || 'enabled') eq 'disabled' ? 'false' : 'true';
$OUT = "\$cfgSources['localsql']['use_shares'] = $sab;"
}
$cfgSources['localsql']['map']['children'] = 'object_children';
$cfgSources['localsql']['map']['emails'] = 'object_email';
$cfgSources['localsql']['tabs'] = array(
_("Personal") => array('firstname', 'lastname', 'middlenames',
'namePrefix', 'nameSuffix', 'name', 'alias',
'birthday', 'spouse', 'anniversary', 'children',
'yomifirstname', 'yomilastname', 'photo'),
_("Location") => array('homeStreet', 'homePOBox', 'homeCity',
'homeProvince', 'homePostalCode', 'homeCountry',
'homeAddress', 'workStreet', 'workPOBox',
'workCity', 'workProvince', 'workPostalCode',
'workCountry', 'workAddress', 'otherStreet',
'otherPOBox', 'otherCity', 'otherProvince',
'otherPostalCode', 'otherCountry',
'otherAddress','timezone'),
_("Communications") => array('emails', 'homeEmail', 'workEmail',
'homePhone', 'homePhone2',
'workPhone', 'workPhone2', 'carPhone',
'radioPhone', 'companyPhone',
'assistPhone', 'homeFax',
'cellPhone', 'fax', 'pager', 'imaddress',
'imaddress2', 'imaddress3'),
_("Organization") => array('title', 'role', 'company', 'department', 'logo', 'assistant', 'manager'),
_("Other") => array('notes', 'website', 'freebusyUrl',
'pgpPublicKey', 'smimePublicKey'),
);
In other words - no slashes to remove. What should I do?
I'm facing another problem. While doing a pear ua today (slashes are removed as above mentioned) I am told in the horde admin configuration to perform an update of the horde configuration. I'm not able to do this as admin in the webinterface. Horde tells me it has to be done manually.
How can I solve this?
Thank's for any help,
stefan