Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
centos:mail_c7:horde_5 [20.09.2014 21:54. ] – [Links] djangocentos:mail_c7:horde_5 [04.05.2015 16:59. ] – [MySQL-Datenbankbackendserver] django
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>
  
  • centos/mail_c7/horde_5.txt
  • Zuletzt geändert: 20.04.2018 10:46.
  • von 127.0.0.1