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:  * Representation of a group.
  4:  *
  5:  * PHP version 5
  6:  *
  7:  * @category Kolab
  8:  * @package  Kolab_Server
  9:  * @author   Gunnar Wrobel <wrobel@pardus.de>
 10:  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
 11:  * @link     http://pear.horde.org/index.php?package=Kolab_Server
 12:  */
 13: 
 14: /**
 15:  * This class provides methods to deal with groups.
 16:  *
 17:  * Copyright 2008-2012 Horde LLC (http://www.horde.org/)
 18:  *
 19:  * See the enclosed file COPYING for license information (LGPL). If you
 20:  * did not receive this file, see http://www.horde.org/licenses/lgpl21.
 21:  *
 22:  * @category Kolab
 23:  * @package  Kolab_Server
 24:  * @author   Gunnar Wrobel <wrobel@pardus.de>
 25:  * @license  http://www.horde.org/licenses/lgpl21 LGPL 2.1
 26:  * @link     http://pear.horde.org/index.php?package=Kolab_Server
 27:  */
 28: class Horde_Kolab_Server_Object_Groupofnames extends Horde_Kolab_Server_Object_Top
 29: {
 30:     /** The specific object class of this object type */
 31:     const OBJECTCLASS_GROUPOFNAMES = 'groupOfNames';
 32: 
 33:     /** Define attributes specific to this object type */
 34: 
 35:     /** The common name */
 36:     const ATTRIBUTE_CN     = 'cn';
 37: 
 38:     /** The members of this group */
 39:     const ATTRIBUTE_MEMBER = 'member';
 40: 
 41:     /**
 42:      * A structure to initialize the attribute structure for this class.
 43:      *
 44:      * @var array
 45:      */
 46:     static public $init_attributes = array(
 47:         'required' => array(
 48:             self::ATTRIBUTE_CN,
 49:             self::ATTRIBUTE_MEMBER,
 50:         ),
 51:         'defined' => array(
 52:             self::ATTRIBUTE_CN,
 53:             self::ATTRIBUTE_MEMBER,
 54:         ),
 55:         'object_classes' => array(
 56:             self::OBJECTCLASS_GROUPOFNAMES,
 57:         ),
 58:     );
 59: 
 60:     /**
 61:      * Return the filter string to retrieve this object type.
 62:      *
 63:      * @static
 64:      *
 65:      * @return string The filter to retrieve this object type from the server
 66:      *                database.
 67:      */
 68:     public static function getFilter()
 69:     {
 70:         return '(' . self::ATTRIBUTE_OC . '=' . self::OBJECTCLASS_GROUPOFNAMES . ')';
 71:     }
 72: 
 73:     /**
 74:      * Generates an ID for the given information.
 75:      *
 76:      * @param array &$info The data of the object.
 77:      *
 78:      * @static
 79:      *
 80:      * @return string|PEAR_Error The ID.
 81:      */
 82:     public function generateId(array &$info)
 83:     {
 84:         $id = $info[self::ATTRIBUTE_CN];
 85:         if (is_array($id)) {
 86:             $id = $id[0];
 87:         }
 88:         return trim(self::ATTRIBUTE_CN . '=' . $id, " \t\n\r\0\x0B,");
 89:     }
 90: 
 91:     /**
 92:      * Retrieve the member list for this group.
 93:      *
 94:      * @return array|PEAR_Error The list of members in this group.
 95:      */
 96:     public function getMembers()
 97:     {
 98:         return $this->get(self::ATTRIBUTE_MEMBER, false);
 99:     }
100: 
101:     /**
102:      * Add a member to this group.
103:      *
104:      * @param string $member The UID of the member to add.
105:      *
106:      * @return array|PEAR_Error True if successful.
107:      */
108:     public function addMember($member)
109:     {
110:         if (!in_array($member, $this->getMembers())) {
111:             $this->_cache[self::ATTRIBUTE_MEMBER][] = $member;
112:         } else {
113:             throw new Horde_Kolab_Server_Exception("The UID %s is already a member of the group %s!",
114:                                                    $member, $this->_uid);
115:         }
116:         return $this->save($this->_cache);
117:     }
118: 
119:     /**
120:      * Delete a member from this group.
121:      *
122:      * @param string $member The UID of the member to delete.
123:      *
124:      * @return array|PEAR_Error True if successful.
125:      */
126:     public function deleteMember($member)
127:     {
128:         $members = $this->getMembers();
129:         if (in_array($member, $members)) {
130:             //@todo: As the member attribute is required we may not remove the last member
131:             $this->_cache[self::ATTRIBUTE_MEMBER] =
132:                 array_diff($this->_cache[self::ATTRIBUTE_MEMBER],
133:                            array($member));
134:         } else {
135:             throw new Horde_Kolab_Server_Exception("The UID %s is no member of the group %s!",
136:                                                    $member, $this->_uid);
137: 
138:         }
139:         return $this->save($this->_cache);
140:     }
141: 
142:     /**
143:      * Is the specified UID member of this group?
144:      *
145:      * @param string $member The UID of the member to check.
146:      *
147:      * @return boolean|PEAR_Error True if the UID is a member of the group,
148:      *                            false otherwise.
149:      */
150:     public function isMember($member)
151:     {
152:         $members = $this->getMembers();
153:         if (!is_array($members)) {
154:             return $member == $members;
155:         }
156:         if (!in_array($member, $members)) {
157:             return false;
158:         } else {
159:             return true;
160:         }
161:     }
162: }
163: 
API documentation generated by ApiGen