The delete order of group and member information needs to be reversed so that group object is deleted after the member object. The delete functions always return true, independent of actual success.
In ./kernel/member.php the deleteGroup and deleteUser functions currently are:
/** * delete a group * * @param object $group reference to the group to delete * @return bool FALSE if failed */ function deleteGroup(&$group) { $this->_gHandler->delete($group); $this->_mHandler->deleteAll(new Criteria('groupid', $group->getVar('groupid'))); return true; } /** * delete a user * * @param object $user reference to the user to delete * @return bool FALSE if failed */ function deleteUser(&$user) { $this->_uHandler->delete($user); $this->_mHandler->deleteAll(new Criteria('uid', $user->getVar('uid'))); return true; }
But the code should be something like:
/** * delete a group * * @param object $group reference to the group to delete * @return bool FALSE if failed */ function deleteGroup(&$group) { $s1 = $this->_mHandler->deleteAll(new Criteria('groupid', $group->getVar('groupid'))); $s2 = $this->_gHandler->delete($group); return ($s1 && $s2) ? true : false; } /** * delete a user * * @param object $user reference to the user to delete * @return bool FALSE if failed */ function deleteUser(&$user) { $s1 = $this->_mHandler->deleteAll(new Criteria('uid', $user->getVar('uid'))); $s2 = $this->_uHandler->delete($user); return ($s1 && $s2) ? true : false; }
Incorporated changes as suggested.