示例#1
0
 /**
  * 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;
 }