groupmgr.php.t

来自「eGroupWare is a multi-user, web-based gr」· T 代码 · 共 252 行

T
252
字号
<?php/**************************************************************************** copyright            : (C) 2001-2003 Advanced Internet Designs Inc.* email                : forum@prohost.org* $Id: groupmgr.php.t,v 1.1.1.1 2003/10/17 21:11:30 ralfbecker 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 draw_tmpl_perm_table($perm, $perms, $names){	$str = '';	foreach ($perms as $k => $v) {		$str .= ($perm & $v[0]) ? '{TEMPLATE: perm_yes}' : '{TEMPLATE: perm_no}';	}	return $str;}/*{PRE_HTML_PHP}*/	if (!_uid) {		std_error('access');	}	$group_id = isset($_POST['group_id']) ? (int)$_POST['group_id'] : (isset($_GET['group_id']) ? (int)$_GET['group_id'] : 0);	if ($group_id && !($usr->users_opt & 1048576) && !q_singleval('SELECT id FROM {SQL_TABLE_PREFIX}group_members WHERE group_id='.$group_id.' AND user_id='._uid.' AND group_members_opt>=131072 AND (group_members_opt & 131072) > 0')) {		std_error('access');	}	$hdr = group_perm_array();	/* fetch all the groups user has access to */	if ($usr->users_opt & 1048576) {		$r = uq('SELECT id, name, forum_id FROM {SQL_TABLE_PREFIX}groups WHERE id>2 ORDER BY name');	} else {		$r = uq('SELECT g.id, g.name, g.forum_id FROM {SQL_TABLE_PREFIX}group_members gm INNER JOIN {SQL_TABLE_PREFIX}groups g ON gm.group_id=g.id WHERE gm.user_id='._uid.' AND group_members_opt>=131072 AND (group_members_opt & 131072) > 0 ORDER BY g.name');	}	/* make a group selection form */	$n = 0;	$vl = $kl = '';	while ($e = db_rowarr($r)) {		$vl .= $e[0] . "\n";	        $kl .= ($e[2] ? '* ' : '') . htmlspecialchars($e[1]) . "\n";		$n++;	}	if (!$n) {		std_error('access');	} else if ($n == 1) {		$group_id = rtrim($vl);		$group_selection = '';	} else {		if (!$group_id) {			$group_id = (int)$vl;		}		$group_selection = tmpl_draw_select_opt(rtrim($vl), rtrim($kl), $group_id, '', '');		$group_selection = '{TEMPLATE: group_selection}';	}/*{POST_HTML_PHP}*/	if (isset($_POST['btn_cancel'])) {		unset($_POST);	}	if (!($grp = db_sab('SELECT * FROM {SQL_TABLE_PREFIX}groups WHERE id='.$group_id))) {		invl_inp_err();	}	/* fetch controlled resources */	if (!$grp->forum_id) {		$group_resources = '{TEMPLATE: group_resources}';		$c = uq('SELECT f.name FROM {SQL_TABLE_PREFIX}group_resources gr INNER JOIN {SQL_TABLE_PREFIX}forum f ON gr.resource_id=f.id WHERE gr.group_id='.$group_id);		while ($r = db_rowarr($c)) {			$group_resources .= '{TEMPLATE: group_resource_ent}';		}	} else {		$fname = q_singleval('SELECT name FROM {SQL_TABLE_PREFIX}forum WHERE id='.$grp->forum_id);		$group_resources = '{TEMPLATE: primary_group_resource}';	}	if ($usr->users_opt & 1048576) {		$maxperms = 2147483647;	} else {		$maxperms = (int) $grp->groups_opt;	}	$indicator = '{TEMPLATE: indicator}';	$login_error = '';	$gr_member = isset($_POST['gr_member']) ? $_POST['gr_member'] : '';	$find_user = $FUD_OPT_1 & (8388608|4194304) ? '{TEMPLATE: grp_find_user}' : '';	$perm = 0;	if (isset($_POST['btn_submit'])) {		foreach ($hdr as $k => $v) {			if (isset($_POST[$k]) && $_POST[$k] & $v[0]) {				$perm |= $v[0];			}		}		/* auto approve members */		$perm |= 65536;		if (empty($_POST['edit'])) {			if (!($usr_id = q_singleval("SELECT id FROM {SQL_TABLE_PREFIX}users WHERE alias='".addslashes(htmlspecialchars($gr_member))."'"))) {				$login_error = '{TEMPLATE: groupmgr_no_user}';			} else if (q_singleval('SELECT id FROM {SQL_TABLE_PREFIX}group_members WHERE group_id='.$group_id.' AND user_id='.$usr_id)) {				$login_error = '{TEMPLATE: groupmgr_already_exists}';			} else {				q('INSERT INTO {SQL_TABLE_PREFIX}group_members (group_members_opt, user_id, group_id) VALUES ('.$perm.', '.$usr_id.', '.$group_id.')');				grp_rebuild_cache(array($usr_id));			}		} else if (($usr_id = q_singleval('SELECT user_id FROM {SQL_TABLE_PREFIX}group_members WHERE group_id='.$group_id.' AND id='.(int)$_POST['edit'])) !== null) {			if (q_singleval("SELECT user_id FROM {SQL_TABLE_PREFIX}group_members WHERE group_id=".$group_id." AND user_id=".$usr_id." AND group_members_opt>=131072 AND (group_members_opt & 131072) > 0")) {				$perm |= 131072;			}			q('UPDATE {SQL_TABLE_PREFIX}group_members SET group_members_opt='.$perm.' WHERE id='.(int)$_POST['edit']);			grp_rebuild_cache(array($usr_id));		}		if (!$login_error) {			unset($_POST);			$gr_member = '';		}	}	if (isset($_GET['del']) && ($del = (int)$_GET['del']) && $group_id) {		$is_gl = q_singleval("SELECT user_id FROM {SQL_TABLE_PREFIX}group_members WHERE group_id=".$group_id." AND user_id=".$del." AND group_members_opt>=131072 AND (group_members_opt & 131072) > 0");		grp_delete_member($group_id, $del);		/* if the user was a group moderator, rebuild moderation cache */		if ($is_gl) {			fud_use('groups_adm.inc', true);			rebuild_group_ldr_cache($del);		}	}	$edit = 0;	if (isset($_GET['edit']) && ($edit = (int)$_GET['edit'])) {		if (!($mbr = db_sab('SELECT gm.*, u.alias FROM {SQL_TABLE_PREFIX}group_members gm LEFT JOIN {SQL_TABLE_PREFIX}users u ON u.id=gm.user_id WHERE gm.group_id='.$group_id.' AND gm.id='.$edit))) {			invl_inp_err();		}		if ($mbr->user_id == 0) {			$gr_member = '{TEMPLATE: group_mgr_anon}';		} else if ($mbr->user_id == '2147483647') {			$gr_member = '{TEMPLATE: group_mgr_reged}';		} else {			$gr_member = $mbr->alias;		}		$perm = $mbr->group_members_opt;	} else if ($group_id > 2 && !isset($_POST['btn_submit']) && ($luser_id = q_singleval('SELECT MAX(id) FROM {SQL_TABLE_PREFIX}group_members WHERE group_id='.$group_id))) {		/* help trick, we fetch the last user added to the group */		if (!($mbr = db_sab('SELECT 1 AS user_id, group_members_opt FROM {SQL_TABLE_PREFIX}group_members WHERE id='.$luser_id))) {			invl_inp_err();		}		$perm = $mbr->group_members_opt;	}	/* anon users cannot vote or rate */	if (isset($mbr) && !$mbr->user_id) {		$maxperms = $maxperms &~ (512|1024);	}	/* no members inside the group */	if (!$perm && !isset($mbr)) {		$perm = $maxperms;	}	/* translated permission names */	$ts_list = array('p_VISIBLE'=>'{TEMPLATE: p_VISIBLE}','p_READ'=>'{TEMPLATE: p_READ}','p_POST'=>'{TEMPLATE: p_POST}','p_REPLY'=>'{TEMPLATE: p_REPLY}','p_EDIT'=>'{TEMPLATE: p_EDIT}','p_DEL'=>'{TEMPLATE: p_DEL}','p_STICKY'=>'{TEMPLATE: p_STICKY}','p_POLL'=>'{TEMPLATE: p_POLL}','p_FILE'=>'{TEMPLATE: p_FILE}','p_VOTE'=>'{TEMPLATE: p_VOTE}','p_RATE'=>'{TEMPLATE: p_RATE}','p_SPLIT'=>'{TEMPLATE: p_SPLIT}','p_LOCK'=>'{TEMPLATE: p_LOCK}','p_MOVE'=>'{TEMPLATE: p_MOVE}','p_SML'=>'{TEMPLATE: p_SML}','p_IMG'=>'{TEMPLATE: p_IMG}','p_SEARCH'=>'{TEMPLATE: p_SEARCH}');	$perm_sel_hdr = $perm_select = $tmp = '';	$i = 0;	foreach ($hdr as $k => $v) {		$selyes = '';		if ($maxperms & $v[0]) {			if ($perm & $v[0]) {				$selyes = ' selected';			}			$perm_select .= '{TEMPLATE: groups_perm_selection}';		} else {			/* only show the permissions the user can modify */			continue;		}		$tmp .= '{TEMPLATE: groups_header_entry}';		if (++$i == '{TEMPLATE: groups_perm_per_row}') {			$perm_sel_hdr .= '{TEMPLATE: groups_header_entry_row}';			$perm_select = $tmp = '';			$i = 0;		}	}	if ($tmp) {		while (++$i < '{TEMPLATE: groups_perm_per_row}' + 1) {			$tmp .= '{TEMPLATE: groups_hdr_sp}';			$perm_select .= '{TEMPLATE: groups_col_sp}';		}		$perm_sel_hdr .= '{TEMPLATE: groups_header_entry_row}';	}	$n_perms = count($hdr);	if (!$edit) {		$member_input = '{TEMPLATE: member_add}';		$submit_button = '{TEMPLATE: submit_button}';	} else {		$submit_button = '{TEMPLATE: update_buttons}';		$member_input = '{TEMPLATE: member_edit}';	}	/* draw list of group members */	$group_members_list = '';	$r = uq('SELECT gm.id AS mmid, gm.*, g.*, u.alias FROM {SQL_TABLE_PREFIX}group_members gm INNER JOIN {SQL_TABLE_PREFIX}groups g ON gm.group_id=g.id LEFT JOIN {SQL_TABLE_PREFIX}users u ON gm.user_id=u.id WHERE gm.group_id='.$group_id.' ORDER BY gm.id');	while ($obj = db_rowobj($r)) {		$perm_table = draw_tmpl_perm_table($obj->group_members_opt, $hdr, $ts_list);		if ($obj->user_id == '0') {			$member_name = '{TEMPLATE: group_mgr_anon}';			$group_members_list .= '{TEMPLATE: group_const_entry}';		} else if ($obj->user_id == '2147483647')  {			$member_name = '{TEMPLATE: group_mgr_reged}';			$group_members_list .= '{TEMPLATE: group_const_entry}';		} else {			$member_name = $obj->alias;			$group_members_list .= '{TEMPLATE: group_member_entry}';		}	}	$group_control_panel = '{TEMPLATE: group_control_panel}';/*{POST_PAGE_PHP_CODE}*/?>{TEMPLATE: GROUP_MANAGER}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?