Пример #1
0
/**
 * Удалить группу (группы)
 *
 * @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;
}
Пример #2
0
function GroupList()
{
    global $db, $ROOT_FOLDER;
    global $Email;
    global $srchPat;
    global $systemTableID, $systemMessageID, $systemTableName, $ADMIN_TEMPLATE;
    $Result = $db->get_results("select PermissionGroup_ID, PermissionGroup_Name from PermissionGroup ", ARRAY_N);
    ?>
        <form method=post action=group.php>
            <table border=0 cellpadding=0 cellspacing=0 width=100%>
                <tr>
                    <td>
                        <table class='nc-table nc--striped nc--small' width='100%'>
                            <tr>
                                <th>ID</th>
                                <th width='80%'><?php 
    echo CONTROL_USER_GROUP;
    ?>
</th>
                                <th class='nc-text-center'><?php 
    echo CONTROL_USER_RIGHTS;
    ?>
</th>
                                <th class='nc-text-center'><i class='nc-icon nc--remove' title='<?php 
    echo CONTROL_CONTENT_CATALOUGE_FUNCS_SHOWCATALOGUELIST_DELETE;
    ?>
'></i></th>
                            </tr>
                            <?php 
    foreach ($Result as $Array) {
        print "\n                    <tr>\n                        <td>" . $Array[0] . "</td>\n                        <td><a href=\"group.php?phase=3&PermissionGroupID=" . $Array[0] . "\">" . $Array[1] . "</a></td>\n                        <td align=center><a href=\"group.php?phase=8&PermissionGroupID=" . $Array[0] . "\"><i class='nc-icon nc--settings nc--hovered' title='" . CONTROL_USER_CHANGERIGHTS . "'></i></a></td>";
        // можно или нет удалть группу
        $confirmGroupDelete = true;
        $users = nc_usergroup_get_users_from_group($Array[0]);
        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))) {
                $confirmGroupDelete = false;
            }
        }
        if ($confirmGroupDelete) {
            print "\n                        <td align=center>" . nc_admin_checkbox_simple("Delete" . $Array[0], $Array[0]) . "</td>";
        } else {
            print "\n                        <td align=center></td>";
        }
        print "\n                    </tr>";
    }
    ?>
                        </table>
                    </td>
                </tr>
            </table><br>
            <?php 
    global $UI_CONFIG;
    $UI_CONFIG->actionButtons[] = array("id" => "submit", "caption" => NETCAT_ADMIN_DELETE_SELECTED, "action" => "nc_print_custom_modal_callback(function(){mainView.submitIframeForm();})", "red_border" => true);
    $UI_CONFIG->actionButtons[] = array("id" => "adduser", "caption" => CONTROL_USER_ADDNEWGROUP, "align" => "left", "location" => "usergroup.add()");
    ?>
            <input type='hidden' name=phase VALUE=2>
            <input type='submit' class='hidden'>
        </form>
        <?php 
}