groups_adm.inc
来自「eGroupWare is a multi-user, web-based gr」· INC 代码 · 共 123 行
INC
123 行
<?php/**************************************************************************** copyright : (C) 2001-2003 Advanced Internet Designs Inc.* email : forum@prohost.org* $Id: groups_adm.inc,v 1.2 2003/12/18 15:46:40 iliaa Exp $** This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or * (at your option) any later version.***************************************************************************/function group_add($res_id, $name, $add_gl=0, $perm=0, $permi=2147483647, $inherit_id=2){ $tbl =& $GLOBALS['DBHOST_TBL_PREFIX']; $gid = db_qid("INSERT INTO ".$tbl."groups (name, inherit_id, groups_opt, groups_opti, forum_id) VALUES ('".addslashes($name)."', ".$inherit_id.", ".$perm.", ".$permi.", ".($add_gl == 2 ? $res_id : 0).")"); $rid = db_qid("INSERT INTO ".$tbl."group_resources (group_id, resource_id) VALUES (".$gid.", ".$res_id.")"); if ($add_gl) { $reg = q_singleval("SELECT groups_opt FROM ".$tbl."groups WHERE id=2") | 65536; $ano = q_singleval("SELECT groups_opt FROM ".$tbl."groups WHERE id=1") | 65536; q("INSERT INTO ".$tbl."group_members (group_id, user_id, group_members_opt) VALUES(".$gid.", 2147483647, ".$reg.")"); q("INSERT INTO ".$tbl."group_members (group_id, user_id, group_members_opt) VALUES(".$gid.", 0, ".$ano.")"); } return $gid;}function group_sync($id, $name, $inherit, $perm, $permi){ $name = is_null($name) ? '' : "name='".addslashes($name)."', "; if (!$inherit) { $permi = 0; } q('UPDATE '.$GLOBALS['DBHOST_TBL_PREFIX'].'groups SET '.$name.' inherit_id='.$inherit.', groups_opt='.$perm.', groups_opti='.$permi.' WHERE id='.$id);}function rebuild_group_ih($gid, $perm, $perma){ $tbl =& $GLOBALS['DBHOST_TBL_PREFIX']; if (isset($GLOBALS['hdr'])) { $hdr =& $GLOBALS['hdr']; } else { $hdr = group_perm_array(); } if ($perm === null) { $perma = $perm = q_singleval("SELECT groups_opt FROM ".$tbl."groups WHERE id=".$gid); } $gl = array($gid=>0); while (list($gid, $v) = each($gl)) { if ($v) continue; /* prevents circular references */ /* select all groups that inherit permissions from current group */ $r = q("SELECT id, groups_opt, groups_opti FROM ".$tbl."groups WHERE inherit_id=".$gid." AND (groups_opti & ".$perm.") > 0"); while ($o = db_rowarr($r)) { foreach ($hdr as $p) { if ($o[2] & $p[0]) { if ($perma & $p[0]) { $o[1] |= $p[0]; } else { $o[1] &= ~$p[0]; } } } q("UPDATE ".$tbl."groups SET groups_opt=".$o[1]." WHERE id=".$o[0]); if (empty($gl[$o[0]])) { $gl[$o[0]] = 0; } } $gl[$gid] = 1; }}function group_delete($id){ if ($id < 3) { return; } $tbl =& $GLOBALS['DBHOST_TBL_PREFIX']; q('DELETE FROM '.$tbl.'group_resources WHERE group_id='.$id); /* rebuild group manager cache for managers of the removed group */ $r = q("SELECT user_id FROM ".$tbl."group_members WHERE group_id=".$id." AND group_members_opt>=131072 AND (group_members_opt & 131072) > 0"); while ($o = db_rowarr($r)) { rebuild_group_ldr_cache($o[0]); } q('DELETE FROM '.$tbl.'group_members WHERE group_id='.$id); q('UPDATE '.$tbl.'groups SET groups_opti=0, inherit_id=0 WHERE inherit_id='.$id); /* deal with inheritence */ if (!function_exists('grp_rebuild_cache')) { fud_use('groups.inc'); } grp_rebuild_cache(); q('DELETE FROM '.$tbl.'groups WHERE id='.$id);}function rebuild_group_ldr_cache($id){ $tbl =& $GLOBALS['DBHOST_TBL_PREFIX']; $c = uq('SELECT group_id FROM '.$tbl.'group_members WHERE user_id='.$id.' AND group_members_opt>=131072 AND (group_members_opt & 131072) > 0'); while ($r = db_rowarr($c)) { $g[] = $r[0]; } if (isset($g)) { q('UPDATE '.$tbl.'users SET group_leader_list='.strnull(addslashes(@serialize($g))).' WHERE id='.$id); } else { q('UPDATE '.$tbl.'users SET group_leader_list=NULL WHERE id='.$id); }}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?