Copyright 2008-2016 Horde LLC (http://www.horde.org/) See the enclosed file COPYING for license information (LGPL). If you did not receive this file, see http://www.horde.org/licenses/lgpl21.
Автор: Gunnar Wrobel (wrobel@pardus.de)
Наследование: extends Horde_Kolab_Server_Object_Groupofnames
Пример #1
0
 /**
  * List all objects of a specific type.
  *
  * @param string $type   The type of the objects to be listed
  * @param array  $params Additional parameters.
  *
  * @return array An array of Kolab objects.
  *
  * @throws Horde_Kolab_Server_Exception
  *
  * @todo Sorting
  */
 public function listObjects($type, $params = null)
 {
     $result = Horde_Kolab_Server_Object::loadClass($type);
     $vars = get_class_vars($type);
     $criteria = call_user_func(array($type, 'getFilter'));
     $filter = $this->searchQuery($criteria);
     $sort = $vars['sort_by'];
     if (isset($params['sort'])) {
         $sort = $params['sort'];
     }
     $options = array('scope' => 'sub');
     if (isset($params['attributes'])) {
         $options['attributes'] = $params['attributes'];
     } else {
         $options['attributes'] = $this->getAttributes($type);
     }
     $data = $this->search($filter, $options, $base);
     if (empty($data)) {
         return array();
     }
     if ($sort) {
         /* @todo: sorting */
         /* $data = $result->as_sorted_struct(); */
         /*$this->sort($result, $sort); */
     }
     if (isset($params['from'])) {
         $from = $params['from'];
     } else {
         $from = -1;
     }
     if (isset($params['to'])) {
         $sort = $params['to'];
     } else {
         $to = -1;
     }
     if (!empty($vars['required_group'])) {
         $required_group = new Horde_Kolab_Server_Object_Kolabgroupofnames($this, null, $vars['required_group']);
     }
     $objects = array();
     foreach ($data as $uid => $entry) {
         if (!empty($vars['required_group'])) {
             if (!$required_group->exists() || !$required_group->isMember($uid)) {
                 continue;
             }
         }
         $objects[$uid] =& Horde_Kolab_Server_Object::factory($type, $uid, $this, $entry);
     }
     return $objects;
 }
Пример #2
0
 /**
  * Saves object information.
  *
  * @param array $info The information about the object.
  *
  * @return boolean|PEAR_Error True on success.
  */
 public function save(array $info)
 {
     $admin_group = new Horde_Kolab_Server_Object_Kolabgroupofnames($this->server, null, $this->required_group);
     $save_result = parent::save($info);
     if (!$admin_group->exists()) {
         $data = array_merge($this->required_group, array(Horde_Kolab_Server_Object_Kolabgroupofnames::ATTRIBUTE_MEMBER => array($this->uid)));
     } else {
         $result = $admin_group->isMember($this->uid);
         if ($result === false) {
             $members = $admin_group->getMembers();
             $members[] = $this->uid;
             $data = array(Horde_Kolab_Server_Object_Kolabgroupofnames::ATTRIBUTE_MEMBER => $members);
         } else {
             $data = null;
         }
     }
     if (!empty($data)) {
         return $admin_group->save($data);
     }
     return $save_result;
 }