Overview

Packages

  • Kolab
    • Server

Classes

  • Horde_Kolab_Server_Composite
  • Horde_Kolab_Server_Connection_File
  • Horde_Kolab_Server_Connection_Mock
  • Horde_Kolab_Server_Connection_Mock_Ldap
  • Horde_Kolab_Server_Connection_Mock_Search
  • Horde_Kolab_Server_Connection_Simpleldap
  • Horde_Kolab_Server_Connection_Splittedldap
  • Horde_Kolab_Server_Decorator_Clean
  • Horde_Kolab_Server_Decorator_Count
  • Horde_Kolab_Server_Decorator_Log
  • Horde_Kolab_Server_Decorator_Map
  • Horde_Kolab_Server_Exception
  • Horde_Kolab_Server_Exception_Bindfailed
  • Horde_Kolab_Server_Exception_Novalue
  • Horde_Kolab_Server_Factory
  • Horde_Kolab_Server_Ldap
  • Horde_Kolab_Server_Ldap_Changes
  • Horde_Kolab_Server_Ldap_Filtered
  • Horde_Kolab_Server_Ldap_Standard
  • Horde_Kolab_Server_List_Base
  • Horde_Kolab_Server_Object_Attribute_Base
  • Horde_Kolab_Server_Object_Attribute_Createtimestamp
  • Horde_Kolab_Server_Object_Attribute_Createtimestampdate
  • Horde_Kolab_Server_Object_Attribute_Decorator
  • Horde_Kolab_Server_Object_Attribute_Default
  • Horde_Kolab_Server_Object_Attribute_Empty
  • Horde_Kolab_Server_Object_Attribute_External
  • Horde_Kolab_Server_Object_Attribute_Field
  • Horde_Kolab_Server_Object_Attribute_Firstnamelastname
  • Horde_Kolab_Server_Object_Attribute_Guid
  • Horde_Kolab_Server_Object_Attribute_Id
  • Horde_Kolab_Server_Object_Attribute_Internal
  • Horde_Kolab_Server_Object_Attribute_Locked
  • Horde_Kolab_Server_Object_Attribute_Modifytimestamp
  • Horde_Kolab_Server_Object_Attribute_Modifytimestampdate
  • Horde_Kolab_Server_Object_Attribute_Objectclass
  • Horde_Kolab_Server_Object_Attribute_Openldapaci
  • Horde_Kolab_Server_Object_Attribute_Required
  • Horde_Kolab_Server_Object_Attribute_Single
  • Horde_Kolab_Server_Object_Attribute_Value
  • Horde_Kolab_Server_Object_Attribute_Writelock
  • Horde_Kolab_Server_Object_Base
  • Horde_Kolab_Server_Object_Factory
  • Horde_Kolab_Server_Object_Groupofnames
  • Horde_Kolab_Server_Object_Hash
  • Horde_Kolab_Server_Object_Inetorgperson
  • Horde_Kolab_Server_Object_Kolab
  • Horde_Kolab_Server_Object_Kolab_Address
  • Horde_Kolab_Server_Object_Kolab_Administrator
  • Horde_Kolab_Server_Object_Kolab_Adminrole
  • Horde_Kolab_Server_Object_Kolab_Distlist
  • Horde_Kolab_Server_Object_Kolab_Domainmaintainer
  • Horde_Kolab_Server_Object_Kolab_Maintainer
  • Horde_Kolab_Server_Object_Kolab_User
  • Horde_Kolab_Server_Object_Kolabgermanbankarrangement
  • Horde_Kolab_Server_Object_Kolabgroupofnames
  • Horde_Kolab_Server_Object_Kolabinetorgperson
  • Horde_Kolab_Server_Object_Kolabpop3account
  • Horde_Kolab_Server_Object_Kolabsharedfolder
  • Horde_Kolab_Server_Object_Mcached
  • Horde_Kolab_Server_Object_Organizationalperson
  • Horde_Kolab_Server_Object_Person
  • Horde_Kolab_Server_Object_Top
  • Horde_Kolab_Server_Objects_Base
  • Horde_Kolab_Server_Query_Element_And
  • Horde_Kolab_Server_Query_Element_Approx
  • Horde_Kolab_Server_Query_Element_Begins
  • Horde_Kolab_Server_Query_Element_Contains
  • Horde_Kolab_Server_Query_Element_Ends
  • Horde_Kolab_Server_Query_Element_Equals
  • Horde_Kolab_Server_Query_Element_Greater
  • Horde_Kolab_Server_Query_Element_Group
  • Horde_Kolab_Server_Query_Element_Less
  • Horde_Kolab_Server_Query_Element_Mapped
  • Horde_Kolab_Server_Query_Element_Not
  • Horde_Kolab_Server_Query_Element_Or
  • Horde_Kolab_Server_Query_Element_Single
  • Horde_Kolab_Server_Query_Ldap
  • Horde_Kolab_Server_Result_Ldap
  • Horde_Kolab_Server_Schema_Base
  • Horde_Kolab_Server_Schema_Decorator_Cache
  • Horde_Kolab_Server_Search_Base
  • Horde_Kolab_Server_Search_Operation_Addressesforuidormail
  • Horde_Kolab_Server_Search_Operation_Attributes
  • Horde_Kolab_Server_Search_Operation_Base
  • Horde_Kolab_Server_Search_Operation_Children
  • Horde_Kolab_Server_Search_Operation_Constraint_Single
  • Horde_Kolab_Server_Search_Operation_Constraint_Strict
  • Horde_Kolab_Server_Search_Operation_Groupsformember
  • Horde_Kolab_Server_Search_Operation_Guid
  • Horde_Kolab_Server_Search_Operation_Guidforalias
  • Horde_Kolab_Server_Search_Operation_Guidforcn
  • Horde_Kolab_Server_Search_Operation_Guidforkolabusers
  • Horde_Kolab_Server_Search_Operation_Guidformail
  • Horde_Kolab_Server_Search_Operation_Guidformailoralias
  • Horde_Kolab_Server_Search_Operation_Guidforuid
  • Horde_Kolab_Server_Search_Operation_Guidforuidormail
  • Horde_Kolab_Server_Search_Operation_Guidforuidormailoralias
  • Horde_Kolab_Server_Search_Operation_Mailforuidormail
  • Horde_Kolab_Server_Search_Operation_Restrictgroups
  • Horde_Kolab_Server_Search_Operation_Restrictkolab
  • Horde_Kolab_Server_Structure_Attribute_Double
  • Horde_Kolab_Server_Structure_Attribute_Value
  • Horde_Kolab_Server_Structure_Base
  • Horde_Kolab_Server_Structure_Kolab
  • Horde_Kolab_Server_Structure_Ldap

Interfaces

  • Horde_Kolab_Server_Connection_Interface
  • Horde_Kolab_Server_Interface
  • Horde_Kolab_Server_List_Interface
  • Horde_Kolab_Server_Object_Attribute_Interface
  • Horde_Kolab_Server_Object_Interface
  • Horde_Kolab_Server_Object_Searches
  • Horde_Kolab_Server_Objects_Interface
  • Horde_Kolab_Server_Query_Element_Interface
  • Horde_Kolab_Server_Query_Interface
  • Horde_Kolab_Server_Result_Interface
  • Horde_Kolab_Server_Schema_Interface
  • Horde_Kolab_Server_Search_Interface
  • Horde_Kolab_Server_Search_Operation_Interface
  • Horde_Kolab_Server_Structure_Attribute_Interface
  • Horde_Kolab_Server_Structure_Interface
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Handles search operations provided by the objects registered to the
  4:  * server structure.
  5:  *
  6:  * PHP version 5
  7:  *
  8:  * @category Kolab
  9:  * @package  Kolab_Server
 10:  * @author   Gunnar Wrobel <wrobel@pardus.de>
 11:  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
 12:  * @link     http://pear.horde.org/index.php?package=Kolab_Server
 13:  */
 14: 
 15: /**
 16:  * Handles search operations provided by the objects registered to the
 17:  * server structure.
 18:  *
 19:  * Copyright 2008-2012 Horde LLC (http://www.horde.org/)
 20:  *
 21:  * See the enclosed file COPYING for license information (LGPL). If you
 22:  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
 23:  *
 24:  * @category Kolab
 25:  * @package  Kolab_Server
 26:  * @author   Gunnar Wrobel <wrobel@pardus.de>
 27:  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
 28:  * @link     http://pear.horde.org/index.php?package=Kolab_Server
 29:  */
 30: class Horde_Kolab_Server_Search_Base
 31: implements Horde_Kolab_Server_Search_Interface
 32: {
 33:     /**
 34:      * A link to the composite server handler.
 35:      *
 36:      * @var Horde_Kolab_Server_Composite
 37:      */
 38:     private $_composite;
 39: 
 40:     /**
 41:      * The search methods offered by the object defined for this server.
 42:      *
 43:      * @var array
 44:      */
 45:     private $_searches;
 46: 
 47:     /**
 48:      * Set the composite server reference for this object.
 49:      *
 50:      * @param Horde_Kolab_Server_Composite $composite A link to the composite
 51:      *                                                server handler.
 52:      *
 53:      * @return NULL
 54:      */
 55:     public function setComposite(
 56:         Horde_Kolab_Server_Composite $composite
 57:     ) {
 58:         $this->_composite = $composite;
 59:         $this->_searches = $this->_getSearchOperations();
 60:     }
 61: 
 62:     /**
 63:      * Returns the set of search operations supported by this server type.
 64:      *
 65:      * @return array An array of supported search operations.
 66:      */
 67:     private function _getSearchOperations()
 68:     {
 69:         $server_searches = array();
 70:         foreach ($this->_composite->structure->getSearchOperations() as $search_class) {
 71:             if (!class_exists($search_class)) {
 72:                 throw new Horde_Kolab_Server_Exception(
 73:                     sprintf(
 74:                         "%s::getSearchOperations specified non-existing class \"%s\"!",
 75:                         get_class($this->_composite->structure),
 76:                         $search_class
 77:                     )
 78:                 );
 79:             }
 80:             $methods = get_class_methods($search_class);
 81:             unset($methods['getComposite']);
 82:             unset($methods['__construct']);
 83:             foreach ($methods as $method) {
 84:                 $server_searches[$method] = array('class' => $search_class);
 85:             }
 86:         }
 87:         return $server_searches;
 88:     }
 89: 
 90:     /**
 91:      * Returns the set of search operations supported by this server type.
 92:      *
 93:      * @return array An array of supported search operations.
 94:      */
 95:     public function getSearchOperations()
 96:     {
 97:         return $this->_searches;
 98:     }
 99: 
100:     /**
101:      * Capture undefined calls and assume they refer to a search operation.
102:      *
103:      * @param string $method The name of the called method.
104:      * @param array  $args   Arguments of the call.
105:      *
106:      * @return NULL.
107:      *
108:      * @throws Horde_Kolab_Server_Exception
109:      */
110:     public function __call($method, $args)
111:     {
112:         if (in_array($method, array_keys($this->_searches))) {
113:             $class = $this->_searches[$method]['class'];
114:             $search = new $class($this->_composite->structure);
115:             return call_user_func_array(array($search, $method), $args);
116:         }
117:         throw new Horde_Kolab_Server_Exception(
118:             sprintf(
119:                 "The server type \"%s\" with structure \"%s\" does not support"
120:                 . " method \"%s\"!",
121:                 get_class($this->_composite->server),
122:                 get_class($this->_composite->structure),
123:                 $method
124:             )
125:         );
126:     }
127: 
128: }
API documentation generated by ApiGen