/** * Удалить группу (группы) * * @param mixed (int or array) PermissionGroup ID * @return array массив с удаленныи группами */ function nc_usergroup_delete($PermissionGroupID) { global $db; $ret = array(); // возвращаемое значение if (!$PermissionGroupID) { return 0; } // если массиив - то каждую группу удаляем по отдельности if (is_array($PermissionGroupID) && !empty($PermissionGroupID)) { foreach ($PermissionGroupID as $grpID) { $tmp = nc_usergroup_delete($grpID); // если удаление произошло - запишем номер удаленной группы в результат if (!empty($tmp)) { $ret[] = $tmp[0]; } } } else { // сообственно, удалить группу // получим всех пользователей группы $users = nc_usergroup_get_users_from_group($PermissionGroupID); // нельзя удалить группу, если есть пользователь, который состоит только в этой группе if (!empty($users)) { $query = "SELECT COUNT(`ID`) FROM `User_Group` WHERE `User_ID` IN (" . join(',', $users) . ") GROUP BY `User_ID`"; // есть пользователь, который состоит только в этой группе - удалить нельзя if (in_array(1, $db->get_col($query))) { return 0; } } // удаление группы foreach ((array) $users as $user_id) { nc_usergroup_remove_from_group($user_id, $PermissionGroupID); } // удаление из таблицы-связки $db->query("DELETE FROM `User_Group` WHERE `PermissionGroup_ID` = '" . intval($PermissionGroupID) . "'"); // удаление из таблицы с группами $db->rows_affected = 0; $db->query("DELETE FROM `PermissionGroup` WHERE `PermissionGroup_ID` = '" . intval($PermissionGroupID) . "'"); if ($db->rows_affected) { $ret[0] = $PermissionGroupID; } } return $ret; }
/** * Удалить группы с прорисовкой дерева * */ function DeleteGroups() { global $db, $UI_CONFIG; $deletedGroup = array(); // удаленные группы $grp = array(); // группы, которые хотят удалить // соберем в массив все группы while (list($key, $val) = each($_POST)) { if (substr($key, 0, 6) == "Delete") { $grp[] = $val; } } // если групп нет - ошибка if (empty($grp)) { nc_print_status(CONTROL_USER_FUNCS_ERR_CANTREMGROUP, 'error', $Array); exit; } // сообственно, удаление $deletedGroup = nc_usergroup_delete($grp); // перерисовка дерева if (!empty($deletedGroup)) { foreach ($deletedGroup as $v) { $UI_CONFIG->treeChanges['deleteNode'][] = "usergroup-" . $v; } } }