Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:mail_c7:horde_5 [20.09.2014 21:54. ]
django [Links]
centos:mail_c7:horde_5 [20.04.2018 10:46. ] (aktuell)
Zeile 652: Zeile 652:
  */  */
  
-/** +/* LOCALSQL ​*/ 
- * A local address book in an SQL database. This implements a private +// Django : 2014-09-12 Adressbuch personalisiert 
- * per-user address book. Sharing of this source with other users may be +// default: '​title'​ => _("​Shared Address Books"​),​ 
- * accomplished by enabling Horde_Share for this source by setting +$cfgSources['​localsql']['​disabled'​] = false; 
- * '​use_shares'​ => true. +// ENABLED by default 
- * +// Django : 2014-09-12 Adressbuch (Favoriten) deaktiviert 
- * Be sure to create a turba_objects table in your Horde database from the +$cfgSources['favourites'​]['​disabled'​] = true; 
- * schema in turba/scripts/​db/​turba.sql if you use this source. +$cfgSources['​favourites'​]['​title'​] = _("persAdressbuch ​(Favoriten)");
- */ +
-$cfgSources['​localsql'​] = array( +
-    // ENABLED by default +
-    '​disabled'​ => false, +
-    // Django : 2014-09-12 Adressbuch personalisiert +
-    // default: '​title'​ => _("​Shared Address Books"​),​ +
-    '​title'​ => _("​gemeinsames Adressbuch"​),​ +
-    '​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',​ +
-        '​homeFax'​ => '​object_homefax',​ +
-        '​workPhone'​ => '​object_workphone',​ +
-        '​workPhone2'​ => '​object_workphone2',​ +
-        '​cellPhone'​ => '​object_cellphone',​ +
-        '​carPhone'​ => '​object_carphone',​ +
-        '​radioPhone'​ => '​object_radiophone',​ +
-        '​companyPhone'​ => '​object_companyphone',​ +
-        '​assistPhone'​ => '​object_assistantphone',​ +
-        '​fax'​ => '​object_fax',​ +
-        '​pager'​ => '​object_pager',​ +
-        '​title'​ => '​object_title',​ +
-        '​role'​ => '​object_role',​ +
-        '​company'​ => '​object_company',​ +
-        '​logo'​ => '​object_logo',​ +
-        '​logotype'​ => '​object_logotype',​ +
-        '​notes'​ => '​object_notes',​ +
-        '​website'​ => '​object_url',​ +
-        '​freebusyUrl'​ => '​object_freebusyurl',​ +
-        '​pgpPublicKey'​ => '​object_pgppublickey',​ +
-        '​smimePublicKey'​ => '​object_smimepublickey',​ +
-        '​imaddress'​ => '​object_imaddress',​ +
-        '​imaddress2'​ => '​object_imaddress2',​ +
-        '​imaddress3'​ => '​object_imaddress3'​ +
-    ), +
-    '​tabs'​ => array( +
-        _("​Personal"​) => array('​firstname',​ '​lastname',​ '​middlenames',​ +
-                               '​namePrefix',​ '​nameSuffix',​ '​name',​ '​alias',​ +
-                               '​birthday',​ '​spouse',​ '​anniversary',​ +
-                               '​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('​email',​ '​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'​),​ +
-    ), +
-    '​search'​ => array( +
-        '​name',​ +
-        '​email'​ +
-    ), +
-    '​strict'​ => array( +
-        '​object_id',​ +
-        '​owner_id',​ +
-        '​object_type',​ +
-        '​object_uid'​ +
-    ), +
-    '​export'​ => true, +
-    '​browse'​ => true, +
-    '​use_shares'​ => true, +
-    '​list_name_field'​ => '​lastname',​ +
-    '​alternative_name'​ => '​company',​ +
-); +
- +
-/** +
- * A local address book in an LDAP directory. This implements a public +
- * (shared) address book. +
- * +
- * To store distribution lists in the LDAP directory, you'll need to include +
- * horde.schema from Horde in your LDAP configuration. +
- * +
- * To store freebusy information in the LDAP directory, you'll need to include +
- * rfc2739.schema from Horde in your LDAP configuration. +
- */ +
-$cfgSources['​localldap'​] ​= array( +
-    // Disabled by default +
-    ​'​disabled' => true, +
-    '​title'​ => _("​Shared Directory"​),​ +
-    '​type'​ => '​ldap',​ +
-    '​params'​ => array( +
-        '​server'​ => '​ldap.example.com',​ +
-        '​port'​ => 389, +
-        '​tls'​ => false, +
-        '​root'​ => '​dc=example,​dc=com',​ +
-        '​bind_dn'​ => '​cn=admin,​ou=users,​dc=example,​dc=com',​ +
-        // For Active Directory:​ +
-        // '​bind_dn'​ => '​username@example.com',​ +
-        '​bind_password'​ => '​********',​ +
-        '​sizelimit'​ => 200, +
-        // For Active Directory:​ +
-        // '​sizelimit'​ => 0, +
-        '​dn'​ => array('​cn'​),​ +
-        '​objectclass'​ => array('​top',​ +
-                               '​person',​ +
-                               '​organizationalPerson',​ +
-                               '​inetOrgPerson'​),​ +
-                               // Add '​turbaContact'​ to this array if using +
-                               // '​turbaType'​ attribute below, and '​calEntry'​ +
-                               // if using '​freebusyUrl'​. +
-        // For Active Directory:​ +
-        // '​objectclass'​ => array('​organizationalPerson',​ +
-        //                        '​user',​ +
-        //                        '​group',​ +
-        //                        '​contact'​),​ +
-        '​scope'​ => '​one',​ +
-        // For Active Directory:​ +
-        // '​scope'​ => '​sub',​ +
-        '​charset'​ => '​utf-8',​ +
-        // Consult the LDAP schema to verify that all required attributes for +
-        // an entry are set and add them if needed. +
-        '​checkrequired'​ => false, +
-        // Value used to fill in missing required attributes. +
-        '​checkrequired_string'​ => ' ', +
-        // Check LDAP schema for valid syntax. If this is false an address +
-        // field is assumed to have postalAddress syntax; otherwise the schema +
-        // is consulted for the syntax to use. +
-        '​checksyntax'​ => false, +
-        '​version'​ => 3, +
- +
-        // For Active Directory you probably want to also set the following +
-        // parameters:​ +
-        // '​deref'​ => LDAP_DEREF_ALWAYS,​ +
-        // '​filter'​ => '&​(SAMAccountName=*)(mail=*)',​ +
-        // '​referrals'​ => 0, +
-    ), +
-    '​map'​ => array( +
-        '​__key'​ => '​dn',​ +
- +
-        // Remove this mapping if using Active Directory server: +
-        '​__uid'​ => '​uid',​ +
- +
-        // From horde.schema. ​ Make sure you have '​turbaContact'​ objectClass +
-        // included above: +
-        // '​__type'​ => '​turbaType',​ +
-        // '​__members'​ => '​turbaMembers',​ +
- +
-        '​name'​ => '​cn',​ +
-        '​email'​ => '​mail',​ +
-        '​homePhone'​ => '​homephone',​ +
-        '​workPhone'​ => '​telephonenumber',​ +
-        '​cellPhone'​ => '​mobiletelephonenumber',​ +
-        '​homeAddress'​ => '​homepostaladdress',​ +
- +
-        // From rfc2739.schema:​ +
-        // '​freebusyUrl'​ => '​calFBURL',​ +
- +
-        // For Active Directory servers: +
-        // '​name'​ => '​displayname',​ +
-        // '​title'​ => '​title',​ +
-        // '​cellPhone'​ => '​mobile',​ +
-        // '​department'​ => '​department',​ +
-        // '​company'​ => '​company',​ +
-    ), +
-    '​search'​ => array( +
-        '​name',​ +
-        '​email',​ +
-        '​homePhone',​ +
-        '​workPhone',​ +
-        '​cellPhone',​ +
-        '​homeAddress'​ +
-    ), +
-    '​strict'​ => array( +
-        '​dn',​ '​uid'​ +
-    ), +
-    '​approximate'​ => array( +
-        '​cn',​ +
-    ), +
-    // For Active Directory servers: +
-    // '​approximate'​ => array( +
-    //     '​displayname',​ +
-    //     '​samaccountname',​ +
-    // ), +
-    '​export'​ => true, +
-    '​browse'​ => true, +
-); +
- +
-/** +
- * A personal LDAP address book. This assumes that the login is +
- * <​username>​@domain.com and that the users are stored on the same LDAP +
- * server. Thus it is possible to bind with the username and password from the +
- * user. For more info; please refer to the docs/LDAP file in the Turba +
- * distribution. +
- * +
- * To store distribution lists in the LDAP directory, you'll need to include +
- * horde.schema from Horde in your LDAP configuration. +
- * +
- * To store freebusy information in the LDAP directory, you'll need to include +
- * rfc2739.schema from Horde in your LDAP configuration. +
- */ +
-/* First we need to get the uid. */ +
-$_ldap_uid = $GLOBALS['​registry']->​getAuth('​bare'​);​ +
-$_ldap_basedn ​'​dc=example,​dc=com';​ +
-$cfgSources['​personal_ldap'​] = array( +
-    // Disabled by default +
-    '​disabled'​ => true, +
-    '​title'​ => _("My Address Book"​),​ +
-    '​type'​ => '​ldap',​ +
-    '​params'​ => array( +
-        '​server'​ => '​localhost',​ +
-        '​tls'​ => false+
-        '​root'​ => '​ou='​ . $_ldap_uid . ',​ou=personal_addressbook,'​ . $_ldap_basedn,​ +
-        '​bind_dn'​ => '​uid='​ . $_ldap_uid . ',​ou=People,'​ . $_ldap_basedn,​ +
-        '​bind_password'​ => $GLOBALS['​registry'​]->​getAuthCredential('​password'​),​ +
-        '​dn'​ => array('​uid'​),​ +
-        '​objectclass'​ => array('​top',​ +
-                               '​person',​ +
-                               // '​turbaContact',​ +
-                               '​inetOrgPerson',​ +
-                               // '​calEntry',​ +
-                               '​organizationalPerson'​),​ +
-        '​scope'​ => '​one',​ +
-        '​charset'​ => '​utf-8',​ +
-        '​version'​ => 3 +
-    ), +
-    '​map'​ => array( +
-        '​__key'​ => '​dn',​ +
-        '​__uid'​ => '​uid',​ +
- +
-        // From horde.schema:​ +
-        // '​__type'​ => '​turbaType',​ +
-        // '​__members'​ => '​turbaMembers',​ +
- +
-        '​name'​ => '​cn',​ +
-        '​email'​ => '​mail',​ +
-        '​lastname'​ => '​sn',​ +
-        '​title'​ => '​title',​ +
-        '​company'​ => '​organizationname',​ +
-        '​businessCategory'​ => '​businesscategory',​ +
-        '​workAddress'​ => '​postaladdress',​ +
-        '​workPostalCode'​ => '​postalcode',​ +
-        '​workPhone'​ => '​telephonenumber',​ +
-        '​fax'​ => '​facsimiletelephonenumber',​ +
-        '​homeAddress'​ => '​homepostaladdress',​ +
-        '​homePhone'​ => '​homephone',​ +
-        '​cellPhone'​ => '​mobile',​ +
-        '​notes'​ => '​description',​ +
- +
-        // Evolution interopt attributes: (those that do not require the +
-        // evolution.schema) +
-        '​office'​ => '​roomNumber',​ +
-        '​department'​ => '​ou',​ +
-        '​nickname'​ => '​displayName',​ +
-        '​website'​ => '​labeledURI',​ +
- +
-        // These are not stored on the LDAP server. +
-        '​pgpPublicKey'​ => '​object_pgppublickey',​ +
-        '​smimePublicKey'​ => '​object_smimepublickey',​ +
- +
-        // From rfc2739.schema:​ +
-        // '​freebusyUrl'​ => '​calFBURL',​ +
-    ), +
-    '​search'​ => array( +
-        '​name',​ +
-        '​email',​ +
-        '​businessCategory',​ +
-        '​title',​ +
-        '​homePhone',​ +
-        '​workPhone',​ +
-        '​cellPhone',​ +
-        '​homeAddress'​ +
-    ), +
-    '​strict'​ => array( +
-        '​dn',​ '​uid'​ +
-    ), +
-    '​approximate'​ => array( +
-        '​cn',​ +
-    ), +
-    '​export'​ => true, +
-    '​browse'​ => true, +
-)+
- +
-/** +
- * A local address book on a IMAP or Kolab server. This implements a private +
- * per-user address book. Sharing of this source with other users is +
- * accomplished by IMAP ACLs and by setting '​use_shares'​ => true. +
- */ +
-$cfgSources['​kolab'​] = array( +
-    // DISABLED by default +
-    '​disabled'​ => true, +
-    '​title'​ => _("​Shared Address Books"​),​ +
-    '​type'​ => '​kolab',​ +
-    '​params'​ => array( +
-    ), +
-    '​map'​ => array( +
-        '​__key'​ => '​__key',​ +
-        '​__uid'​ => '​uid',​ +
-        '​__type'​ => '​__type',​ +
-        '​__members'​ => '​__members',​ +
-        '​__internaltags'​ => '​categories',​ +
-        /* Personal */ +
-        '​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('​lastname',​ '​firstname'​),​ +
-                    '​format'​ => '%s, %s' +
-                ), +
-                array( +
-                    '​fields'​ => array('​firstname',​ '​lastname'​),​ +
-                    '​format'​ => '%s %s' +
-                ) +
-            ), +
-            '​attribute'​ => '​full-name',​ +
-        ), +
-        '​firstname'​ => '​given-name',​ +
-        '​lastname'​ => '​last-name',​ +
-        '​middlenames'​ => '​middle-names',​ +
-        '​namePrefix'​ => '​prefix',​ +
-        '​nameSuffix'​ => '​suffix',​ +
-        // 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'​),​ +
-        '​initials' ​         => '​initials',​ +
-        '​nickname' ​         => '​nick-name',​ +
-        '​photo' ​            => '​photo',​ +
-        '​phototype' ​        => '​phototype',​ +
-        '​gender' ​           => '​gender',​ +
-        '​birthday' ​         => '​birthday',​ +
-        '​spouse' ​           => '​spouse-name',​ +
-        '​anniversary' ​      => '​anniversary',​ +
-        '​children' ​         => '​children',​ +
-        /* Location */ +
-        '​workStreet' ​       => '​addr-business-street',​ +
-        '​workCity' ​         => '​addr-business-locality',​ +
-        '​workProvince' ​     => '​addr-business-region',​ +
-        '​workPostalCode' ​   => '​addr-business-postal-code',​ +
-        '​workCountryFree' ​  => '​addr-business-country',​ +
-        '​homeStreet' ​       => '​addr-home-street',​ +
-        '​homeCity' ​         => '​addr-home-locality',​ +
-        '​homeProvince' ​     => '​addr-home-region',​ +
-        '​homePostalCode' ​   => '​addr-home-postal-code',​ +
-        '​homeCountryFree' ​  => '​addr-home-country',​ +
-        /* Communications */ +
-        '​emails' ​           => '​emails',​ +
-        '​homePhone' ​        => '​phone-home1',​ +
-        '​workPhone' ​        => '​phone-business1',​ +
-        '​cellPhone' ​        => '​phone-mobile',​ +
-        '​fax' ​              => '​phone-businessfax',​ +
-        '​imaddress' ​        => '​im-address',​ +
-        /* Organization */ +
-        '​title' ​            => '​job-title',​ +
-        '​role' ​             => '​profession',​ +
-        '​company' ​          => '​organization',​ +
-        '​department' ​       => '​department',​ +
-        '​office' ​           => '​office-location',​ +
-        '​manager' ​          => '​manager-name',​ +
-        '​assistant' ​        => '​assistant',​ +
-        /* Other */ +
-        '​notes' ​            => '​body',​ +
-        '​website' ​          => '​web-page',​ +
-        '​freebusyUrl' ​      => '​free-busy-url',​ +
-        '​language' ​         => '​language',​ +
-        '​latitude' ​         => '​latitude',​ +
-        '​longitude' ​        => '​longitude',​ +
-        /* Invisible */ +
-        '​pgpPublicKey' ​     => '​pgp-publickey',​ +
-    ), +
-    '​tabs'​ => array( +
-        _("​Personal"​) => array('​firstname',​ '​lastname',​ '​middlenames',​ +
-                               '​namePrefix',​ '​nameSuffix',​ '​name',​ '​initials',​ +
-                               '​nickname',​ '​gender',​ '​birthday',​ '​spouse',​ +
-                               '​anniversary',​ '​children',​ '​photo'​),​ +
-        _("​Location"​) => array('​workStreet',​ '​workCity',​ '​workProvince',​ +
-                               '​workPostalCode',​ '​workCountryFree',​ +
-                               '​homeStreet',​ '​homeCity',​ '​homeProvince',​ +
-                               '​homePostalCode',​ '​homeCountryFree'​),​ +
-        _("​Communications"​) => array('​emails',​ '​homePhone',​ '​workPhone',​ +
-                                     '​cellPhone',​ '​fax',​ '​imaddress'​),​ +
-        _("​Organization"​) => array('​title',​ '​role',​ '​company',​ '​department',​ +
-                                   '​office',​ '​manager',​ '​assistant'​),​ +
-        _("​Other"​) => array('​notes',​ '​website',​ '​freebusyUrl',​ +
-                            '​language',​ '​latitude',​ '​longitude'​),​ +
-    ), +
-    '​search'​ => array( +
-        '​name',​ +
-        '​emails'​ +
-    ), +
-    '​strict'​ => array( +
-        '​uid',​ +
-    ), +
-    '​export'​ => true, +
-    '​browse'​ => true, +
-    '​use_shares'​ => true, +
-    '​all_shares'​ => true, +
-    '​list_name_field'​ => '​lastname',​ +
-); +
- +
-/** +
- * A preferences-based address book. This will always be private. You can add +
- * any attributes you like to the map and it will just work; you can also +
- * create multiple prefs-based address books by changing the '​name'​ parameter. +
- * This is best for address books that are expected to remain small; it's not +
- * the most efficient, but it can't be beat for getting up and running +
- * quickly, especially if you already have Horde preferences working. Note +
- * that it is not searchable, though - searches will simply return the whole +
- * address book. +
- */ +
-$cfgSources['​prefs'​] = array( +
-    // Disabled by default +
-    '​disabled'​ => true, +
-    '​title'​ => _("​Private Address Book"​),​ +
-    '​type'​ => '​prefs',​ +
-    '​params'​ => array( +
-        '​name'​ => '​prefs',​ +
-        '​charset'​ => '​UTF-8'​ +
-    ), +
-    '​map'​ => array( +
-        '​__key'​ => '​id',​ +
-        '​__type'​ => '​_type',​ +
-        '​__members'​ => '​_members',​ +
-        '​__uid'​ => '​uid',​ +
-        '​name'​ => '​name',​ +
-        '​email'​ => '​mail',​ +
-        '​alias'​ => '​alias'​ +
-    ), +
-    '​search'​ => array( +
-        '​name',​ +
-        '​email',​ +
-        '​alias'​ +
-    ), +
-    '​strict'​ => array( +
-        '​id',​ +
-        '​_type',​ +
-        '​uid'​ +
-    ), +
-    '​export'​ => true, +
-    '​browse'​ => true, +
-); +
- +
-/** +
- * An address book based on message recipients. This will always be private and +
- * read-only. The address book content is provided by the +
- * contacts/​favouriteRecipients API method which should be implemented by a +
- * mail client that collects the most regular message recipients, like IMP +
- * 4.2. +
- */ +
-$cfgSources['​favourites'​] = array( +
-    ​// ENABLED by default +
-    // Django : 2014-09-12 Adressbuch (Favoriten) deaktiviert +
-    // default: '​disabled'​ => false, +
-    '​disabled'​ => true, +
-    // Django : 2014-09-12 Adressbuch personalisiert +
-    // default: '​title'​ => _("​Favourite Recipients"​),​ +
-    '​title'​ => _("​pers. Adressbuch (Favoriten)"​),​ +
-    '​type'​ => '​favourites',​ +
-    '​params'​ => array( +
-        '​limit'​ => 10 +
-    ), +
-    '​map'​ => array( +
-        '​__key'​ => '​email',​ +
-        '​name'​ => '​email',​ +
-        '​email'​ => '​email'​ +
-    ), +
-    '​search'​ => array( +
-        '​email'​ +
-    ), +
-    '​strict'​ => array( +
-        '​id',​ +
-    ), +
-    '​export'​ => true, +
-    '​browse'​ => true, +
-); +
- +
-/** +
- * A driver to show a user's Facebook friends as a turba address book. Some +
- * data (like email) is not readily available via the API, but other data, like +
- * birthdays (which will show up via the listTimeObjects API) may still be +
- * useful to some +
- */ +
-if (!empty($GLOBALS['conf']['​facebook'​]['​id'​])) { +
-    $cfgSources['​facebook'​] = array( +
-        // Disabled if no provisioning with the Facebook API. +
-        ​'​disabled' => !$GLOBALS['​injector']->​getInstance('​Horde_Service_Facebook'​)->​auth->​getSessionKey(),​ +
-        '​title' ​=> _("​Facebook Friends"​),​ +
-        '​type'​ => '​facebook',​ +
-        '​params'​ => array( +
-            '​limit'​ => 10 +
-        ), +
-        '​map'​ => array( +
-            '​__key'​ => '​uid',​ +
-            '​name'​ => '​name',​ +
-            '​lastname'​ => '​last_name',​ +
-            '​firstname'​ => '​first_name',​ +
-            '​middlenames'​ => '​middle_name',​ +
-            // '​email'​ => '​email',​ +
-            '​birthday'​ => '​birthday_date',​ +
-            '​homeCity'​ => '​current_location.city',​ +
-            '​homeProvince'​ => '​current_location.state',​ +
-            '​homePostalCode'​ => '​current_location.zip',​ +
-            '​homeCountry'​ => '​current_location.country',​ +
-            '​homeAddress'​ => array('​fields'​ => array('​homeCity',​ +
-                                                     '​homeProvince',​ +
-                                                     '​homePostalCode'​),​ +
-                                   '​format'​ => "%s, %s %s"​),​ +
-            '​notes'​ => '​about_me',​ +
-            // '​website'​ => '​website',​ +
-        ), +
-        '​search'​ => array( +
-            '​name',​ +
-            '​email',​ +
-        ), +
-        '​export'​ => true+
-        '​browse'​ => true, +
-    )+
-+
- +
-/** +
- * This source creates an address book for each group the current user is a +
- * member in.  The address book will always be read only, and the group members +
- * must have an email address entered in their default identity. ​ No email +
- * address will result in that member not being included in the address book. +
- */ +
-//​$grpSource = array( +
-//    '​title'​ => _("​Group"​),​ +
-//    '​type'​ => '​group',​ +
-//    '​params'​ => array( +
-//       '​name'​ => ''​ +
-//    ), +
-//    '​map'​ => array( +
-//        '​__key'​ => '​email',​ +
-//        '​name'​ => '​name',​ +
-//        '​email'​ => '​email'​ +
-//    ), +
-//    '​search'​ => array( +
-//        '​name',​ +
-//        '​email'​ +
-//    ), +
-//    '​export'​ => true, +
-//    '​browse'​ => true, +
-//); +
- +
-//foreach ($GLOBALS['​injector'​]->​getInstance('​Horde_Group'​)->​listGroups($GLOBALS['​registry'​]->​getAuth()) as $_group_id => $_group_name) { +
-//    ​$cfgSources['​group_' ​. $_group_id] = $grpSource;​ +
-//    $cfgSources['​group_'​ . $_group_id]['​params'​] = array('​gid'​ => $_group_id);​ +
-//    $cfgSources['​group_'​ . $_group_id]['​title'​] = $_group_name;​ +
-//} +
- +
-/** +
- * IMSP based address book. +
- * +
- * Communicates with an IMSP backend server. +
- * +
- * Notes: +
- * You should configure the user's "​main"​ address book here. The name of the +
- * address book is set in the '​name'​ element of the params array. It should +
- * be configured to be the same as the IMSP server username. Any other +
- * address books the user has access to will automatically be configured at +
- * runtime. +
- * +
- * In the params array, accepted values for auth_method are '​cram_md5',​ +
- * '​imtest',​ and '​plaintext'​ - these must match a IMSP_Auth_ driver. If you +
- * are using the imtest driver for Cyrus, please read the +
- * framework/​Net_IMSP/​Auth/​imtest.php file for more configuration information. +
- * +
- * Groups in other IMSP-aware applications are just entries with multiple +
- * email addresses in the email field and a '​group'​ field set to flag the +
- * entry as a group. (The Cyrusoft applications,​ Mulberry and Silkymail both +
- * use a field named '​group'​ set to equal '​group'​ to signify this). A +
- * Turba_Object_Group is basically a List of existing Turba_Objects. The IMSP +
- * driver will map between these two structures when reading and writing +
- * groups. +
- * The only caveat is that IMSP groups that contain email addresses which do +
- * not have a cooresponding contact entry will be ignored. The group_id_field +
- * should be set to the IMSP field that flags the entry as a '​group'​ entry and +
- * the group_id_value should be set to the value given to that field. +
- * +
- * By default, the username and password that were used to login to Horde is +
- * used to login to the IMSP server. If these credentials are different,​ +
- * there is a user preference in Horde to allow another username / password to +
- * be entered. The alternate credentials are always used if present. +
- * +
- * In the map array, since IMSP uses the '​name'​ attribute as a key, this is +
- * what __key is mapped to ... and a dynamic field '​fullname'​ is added and +
- * mapped to the horde '​name'​ field. This is populated with the IMSP '​name'​ +
- * field when the object is read from the server. +
- * +
- * If you wish to keep track of ownership of individual contacts, set +
- * '​contact_ownership'​ = true. Note that entries created using other clients +
- * will not be created this way and will therefore have no '​owner'​. Set +
- * '​contact_ownership'​ = false and the __owner field will be automatically +
- * populated with the current username. +
- * +
- * To integrate with Horde_Share,​ set use_shares to true and uncomment the +
- * IMSP Horde_Share hooks in horde/​config/​hooks.php. +
- */ +
-// Check that IMSP is configured in Horde but fall through if there is no +
-// configuration at all. +
-if (!empty($GLOBALS['​conf'​]['​imsp'​]['​enabled'​])) { +
-    // First, get the user name to login to IMSP server with. +
-    $_imsp_auth_user = $GLOBALS['​prefs'​]->​getValue('​imsp_auth_user'​);​ +
-    $_imsp_auth_pass = $GLOBALS['​prefs'​]->​getValue('​imsp_auth_pass'​);​ +
-    if (!strlen($_imsp_auth_user)) { +
-        $_imsp_auth_user = $GLOBALS['​registry'​]->​getAuth('​bare'​);​ +
-        $_imsp_auth_pass = $GLOBALS['​registry'​]->​getAuthCredential('​password'​);​ +
-    } +
-    $cfgSources['​imsp'​] = array( +
-        // ENABLED by default +
-        '​disabled'​ => false, +
-        '​title'​ => _("IMSP"​),​ +
-        '​type'​ => '​imsp',​ +
-        '​params'​ => array( +
-            '​server' ​ => $GLOBALS['​conf'​]['​imsp'​]['​server'​],​ +
-            '​port' ​   => $GLOBALS['​conf'​]['​imsp'​]['​port'​],​ +
-            '​auth_method'​ => $GLOBALS['​conf'​]['​imsp'​]['​auth_method'​],​ +
-            // socket, command, and auth_mechanism are for imtest driver. +
-            '​socket' ​ => isset($GLOBALS['​conf'​]['​imsp'​]['​socket'​]+
-                         ​$GLOBALS['​conf'​]['​imsp'​]['​socket'​] . $_imsp_auth_user . '​.sck'​ : +
-                         '',​ +
-            '​command'​ => isset($GLOBALS['​conf'​]['​imsp'​]['​command'​]) ? +
-                         ​$GLOBALS['​conf'​]['​imsp'​]['​command'​] : ''​ , +
-            '​auth_mechanism'​ => isset($GLOBALS['​conf'​]['​imsp'​]['​auth_mechanism'​]) ? +
-                                $GLOBALS['​conf'​]['​imsp'​]['​auth_mechanism'​] : '',​ +
-            '​username'​ => $_imsp_auth_user,​ +
-            '​password'​ => $_imsp_auth_pass,​ +
-            '​name'​ => $_imsp_auth_user,​ +
-            '​group_id_field'​ => '​group',​ +
-            '​group_id_value'​ => '​group',​ +
-            '​contact_ownership'​ => false, +
-            // Dynamically generated acl rights for current user. +
-            '​my_rights'​ => '',​ +
-            ), +
-        '​map'​ => array( +
-            '​__key'​ => '​name',​ +
-            '​__type'​ => '​__type',​ +
-            '​__members'​ => '​__members',​ +
-            '​__owner'​ => '​__owner',​ +
-            '​__uid'​ => '​__uid',​ +
-            '​name'​ => '​fullname',​ +
-            '​email'​ => '​email',​ +
-            '​alias'​ => '​alias',​ +
-            '​company'​ => '​company',​ +
-            '​notes'​ => '​notes',​ +
-            '​workPhone'​ => '​phone-work',​ +
-            '​fax'​ => '​fax',​ +
-            '​homePhone'​ => '​phone-home',​ +
-            '​cellPhone'​ => '​cellphone',​ +
-            '​freebusyUrl'​ => '​freebusyUrl'​ +
-            ), +
-        '​search'​ => array( +
-            '​name',​ +
-            '​email',​ +
-            '​alias',​ +
-            '​company',​ +
-            '​homePhone'​ +
-            ), +
-        '​strict'​ => array('​__uid'​),​ +
-        '​export'​ => true, +
-        '​browse'​ => true, +
-        '​use_shares'​ => false, +
-        ​); +
- +
-    /** +
-     * Get any other address books this user might be privy to. +
-     * The values for attributes such as '​export'​ and '​browse'​ for books +
-     * that are added below will be the same as the values set in the default +
-     * book above. Any entries defined explicitly in cfgSources[] +
-     * will override any entries gathered dynamically below. +
-     */ +
-     if (empty($cfgSources['​imsp'​]['​use_shares'​]) && !empty($cfgSources['​imsp'​]['​enabled'​])) { +
-         try { +
-            $result = Horde_Core_Imsp_Utils::​getAllBooks($cfgSources['​imsp'​]);​ +
-            $resultCount = count($result);​ +
-            for ($i = 0; $i < $resultCount;​ ++$i) { +
-                // Make sure we didn't define this source explicitly,​ +
-                // but set the acls from the server regardless. +
-                $dup = false; +
-                foreach ($cfgSources as $key => $thisSource) { +
-                    if (($thisSource['​type'​] == '​imsp'​) &&​ +
-                        ($thisSource['​params'​]['​name'​] == $result[$i]['​params'​]['​name'​])) { +
- +
-                        $dup = true; +
-                        $acl = $result[$i]['​params'​]['​my_rights'​];​ +
-                        $cfgSources[$key]['​params'​]['​my_rights'​] = $acl; +
-                        break; +
-                    } +
-                } +
-                if (!$dup) { +
-                    $cfgSources[$result[$i]['​params'​]['​name'​]] = $result[$i];​ +
-                } +
-            } +
-        } catch (Horde_Imsp_Exception $e) { +
-            $GLOBALS['​notification'​]->​push($e->​getMessage());​ +
-        } +
-     } +
-+
-/* End IMSP sources. */+
 </​file>​ </​file>​
  
Zeile 1526: Zeile 731:
   * **[[http://​dokuwiki.nausch.org/​doku.php/​|Zurück zur Startseite]]**   * **[[http://​dokuwiki.nausch.org/​doku.php/​|Zurück zur Startseite]]**
  
-~~DISCUSSION~~ 
  
  • centos/mail_c7/horde_5.txt
  • Zuletzt geändert: 20.04.2018 10:46.
  • (Externe Bearbeitung)