/** * create a new group in sync backend * * @param Tinebase_Model_Group $_group * * @return Tinebase_Model_Group */ public function addGroupInSyncBackend(Tinebase_Model_Group $_group) { if ($this->_isReadOnlyBackend) { return; } $dn = $this->_generateDn($_group); $objectClass = array('top', 'posixGroup'); $gidNumber = $this->_generateGidNumber(); $ldapData = array('objectclass' => $objectClass, 'gidnumber' => $gidNumber, 'cn' => $_group->name, 'description' => $_group->description); if (isset($this->_options['useRfc2307bis']) && $this->_options['useRfc2307bis'] == true) { $ldapData['objectclass'][] = 'groupOfNames'; // the member attribute can not be emtpy, seems to be common praxis // to set the member attribute to the group dn itself for empty groups $ldapData['member'] = $dn; } foreach ($this->_plugins as $plugin) { $plugin->inspectAddGroup($_group, $ldapData); } if (Tinebase_Core::isLogLevel(Zend_Log::DEBUG)) { Tinebase_Core::getLogger()->debug(__METHOD__ . '::' . __LINE__ . ' $dn: ' . $dn); } if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' $ldapData: ' . print_r($ldapData, true)); } $this->_ldap->add($dn, $ldapData); $groupId = $this->_ldap->getEntry($dn, array($this->_groupUUIDAttribute)); $groupId = $groupId[$this->_groupUUIDAttribute][0]; $group = $this->getGroupByIdFromSyncBackend($groupId); return $group; }
/** * add an user * * @param Tinebase_Model_FullUser $user * @return Tinebase_Model_FullUser|null */ public function addUserToSyncBackend(Tinebase_Model_FullUser $user) { if ($this->_isReadOnlyBackend) { return null; } $ldapData = $this->_user2ldap($user); $ldapData['uidnumber'] = $this->_generateUidNumber(); $ldapData['objectclass'] = $this->_requiredObjectClass; foreach ($this->_ldapPlugins as $plugin) { $plugin->inspectAddUser($user, $ldapData); } $dn = $this->_generateDn($user); if (Tinebase_Core::isLogLevel(Zend_Log::TRACE)) { Tinebase_Core::getLogger()->trace(__METHOD__ . '::' . __LINE__ . ' ldapData: ' . print_r($ldapData, true)); } $this->_ldap->add($dn, $ldapData); $userId = $this->_ldap->getEntry($dn, array($this->_userUUIDAttribute)); $userId = $userId[$this->_userUUIDAttribute][0]; $user = $this->getUserByPropertyFromSyncBackend('accountId', $userId, 'Tinebase_Model_FullUser'); return $user; }