easier reoval of extension

This commit is contained in:
Roland Gruber 2009-12-18 21:02:06 +00:00
parent 31244e76fe
commit d5dd44ab6b
2 changed files with 8 additions and 75 deletions

View File

@ -3,7 +3,7 @@
$Id$ $Id$
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
Copyright (C) 2008 Roland Gruber Copyright (C) 2008 - 2009 Roland Gruber
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -120,12 +120,8 @@ class phpGroupwareGroup extends baseModule {
$this->attributes['objectClass'][] = 'phpgwGroup'; $this->attributes['objectClass'][] = 'phpgwGroup';
} }
elseif (isset($_POST['form_subpage_phpGroupwareGroup_attributes_remObjectClass'])) { elseif (isset($_POST['form_subpage_phpGroupwareGroup_attributes_remObjectClass'])) {
for ($i = 0; $i < sizeof($this->attributes['objectClass']); $i++) { $this->attributes['objectClass'] = array_delete(array('phpgwGroup'), $this->attributes['objectClass']);
if ($this->attributes['objectClass'][$i] == 'phpgwGroup') { if (isset($this->attributes['phpgwGroupID'])) unset($this->attributes['phpgwGroupID']);
unset($this->attributes['objectClass'][$i]);
break;
}
}
} }
return array(); return array();
} }
@ -169,29 +165,6 @@ class phpGroupwareGroup extends baseModule {
return null; return null;
} }
/**
* @see baseModule::postModifyActions()
*
* @param boolean $newAccount
* @param array $attributes LDAP attributes of this entry
*/
public function postModifyActions($newAccount, $attributes) {
// check if extension was removed
if (!$newAccount &&
(in_array('phpgwGroup', $this->orig['objectClass']) && !in_array('phpgwGroup', $this->attributes['objectClass']))) {
$dn = $this->getAccountContainer()->finalDN;
$myattributes = array(
'objectClass' => array('phpgwGroup'),
'phpgwGroupID' => $this->attributes['phpgwGroupID']
);
$success = @ldap_mod_del($_SESSION['ldap']->server(), $dn, $myattributes);
if (!$success) {
StatusMessage('ERROR', sprintf(_('Was unable to remove attribtues from DN: %s.'), $dn), ldap_error($_SESSION['ldap']->server()));
}
}
return;
}
/** /**
* In this function the LDAP account is built up. * In this function the LDAP account is built up.
* *

View File

@ -3,7 +3,7 @@
$Id$ $Id$
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/) This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
Copyright (C) 2008 Roland Gruber Copyright (C) 2008 - 2009 Roland Gruber
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -202,10 +202,10 @@ class phpGroupwareUser extends baseModule implements passwordService {
$this->attributes['phpgwLastPasswordChange'][0] = time(); $this->attributes['phpgwLastPasswordChange'][0] = time();
} }
elseif (isset($_POST['form_subpage_phpGroupwareUser_attributes_remObjectClass'])) { elseif (isset($_POST['form_subpage_phpGroupwareUser_attributes_remObjectClass'])) {
for ($i = 0; $i < sizeof($this->attributes['objectClass']); $i++) { $this->attributes['objectClass'] = array_delete(array('phpgwAccount'), $this->attributes['objectClass']);
if ($this->attributes['objectClass'][$i] == 'phpgwAccount') { for ($i = 0; $i < sizeof($this->meta['attributes']); $i++) {
unset($this->attributes['objectClass'][$i]); if (isset($this->attributes[$this->meta['attributes'][$i]])) {
break; unset($this->attributes[$this->meta['attributes'][$i]]);
} }
} }
} }
@ -309,46 +309,6 @@ class phpGroupwareUser extends baseModule implements passwordService {
return parent::save_attributes(); return parent::save_attributes();
} }
/**
* @see baseModule::postModifyActions()
*
* @param boolean $newAccount
* @param array $attributes LDAP attributes of this entry
*/
public function postModifyActions($newAccount, $attributes) {
// check if extension was removed
if (!$newAccount &&
(in_array('phpgwAccount', $this->orig['objectClass']) && !in_array('phpgwAccount', $this->attributes['objectClass']))) {
$dn = $this->getAccountContainer()->finalDN;
$myattributes = array_merge(array('objectClass'), $this->meta['attributes']);
$sr = @ldap_read($_SESSION['ldap']->server(), $dn, 'objectClass=*', $myattributes);
if (!$sr) {
StatusMessage('ERROR', sprintf(_('Was unable to remove attribtues from DN: %s.'), $dn), ldap_error($_SESSION['ldap']->server()));
return;
}
$entry = ldap_get_entries($_SESSION['ldap']->server(), $sr);
$newAttributes = array();
$newAttributes['objectclass'] = $entry[0]['objectclass'];
unset($newAttributes['objectclass']['count']);
for ($i = 0; $i < sizeof($newAttributes['objectclass']); $i++) {
if ($newAttributes['objectclass'][$i] == 'phpgwAccount') {
unset($newAttributes['objectclass'][$i]);
break;
}
}
for ($i = 0; $i < sizeof($this->meta['attributes']); $i++) {
if (isset($entry[0][strtolower($this->meta['attributes'][$i])])) {
$newAttributes[$this->meta['attributes'][$i]] = array();
}
}
$success = @ldap_mod_replace($_SESSION['ldap']->server(), $dn, $newAttributes);
if (!$success) {
StatusMessage('ERROR', sprintf(_('Was unable to remove attribtues from DN: %s.'), $dn), ldap_error($_SESSION['ldap']->server()));
}
}
return;
}
/** /**
* Returns the PDF entries for this module. * Returns the PDF entries for this module.
* *