/** * Deletes a group from the database * * * @access public * @param integer id of deleted group * @param boolean recursive delete of all subgroups * @return mixed boolean or DB Error object */ function removeGroup($group_id, $recursive = false) { // Recursive delete groups if ($recursive) { // Get all subgroups $query = 'SELECT subgroup_id FROM ' . $this->prefix . 'group_subgroups WHERE group_id = ' . (int) $group_id; $result = $this->dbc->getCol($query); if (DB::isError($result)) { return $result; } // Recursive removeGroup() call for every subgroup foreach ($result as $subgroup_id) { $res = $this->removeGroup($subgroup_id, true); if (DB::isError($res)) { return $res; } } } parent::removegroup($group_id); // Delete Subgroup assignments $query = 'DELETE FROM ' . $this->prefix . 'group_subgroups WHERE group_id = ' . (int) $group_id . ' OR subgroup_id = ' . (int) $group_id; $result = $this->dbc->query($query); if (DB::isError($result)) { return $result; } // sets owner_group_id to null $query = 'UPDATE ' . $this->prefix . 'groups SET owner_group_id = NULL WHERE owner_group_id = ' . $group_id; $result = $this->dbc->query($query); if (DB::isError($result)) { return $result; } return true; }