admin.permission.php

来自「php 开发的内容管理系统」· PHP 代码 · 共 262 行

PHP
262
字号
<?php
// $Id: admin.permission.php,v 1.1.1.1 2005/11/10 19:51:03 phppp 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.                                      //
//                                                                          //
// You may not change or alter any portion of this comment or credits       //
// of supporting developers from this source code or any supporting         //
// source code which is considered copyrighted (c) material of the          //
// original comment or credit authors.                                      //
//                                                                          //
// This program is distributed in the hope that it will be useful,          //
// but WITHOUT ANY WARRANTY; without even the implied warranty of           //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
// GNU General Public License for more details.                             //
//                                                                          //
// You should have received a copy of the GNU General Public License        //
// along with this program; if not, write to the Free Software              //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
// ------------------------------------------------------------------------ //
// Author: phppp (D.J., infomax@gmail.com)                                  //
// URL: http://xoopsforge.com, http://xoops.org.cn                          //
// Project: Article Project                                                 //
// ------------------------------------------------------------------------ //
include('header.php');
require_once(XOOPS_ROOT_PATH."/class/xoopsform/grouppermform.php");
require_once(XOOPS_ROOT_PATH."/modules/".$GLOBALS["artdirname"]."/class/permission.php");
include_once XOOPS_ROOT_PATH."/modules/".$GLOBALS["artdirname"]."/class/xoopsformloader.php";

xoops_cp_header();
require XOOPS_ROOT_PATH."/modules/".$xoopsModule->getVar("dirname")."/include/vars.php";
loadModuleAdminMenu(4);


function display_action_form($action = "")
{
	$action_options =array(
				"no"		=> _SELECT, 
				"template"	=> art_constant("AM_PERMISSION_TEMPLATE"), 
				"apply"		=> art_constant("AM_PERMISSION_TEMPLATE_APPLY"),
				"default"	=> art_constant("AM_PERMISSION_SETBYGROUP")
				);
	$actionform = new XoopsSimpleForm(art_constant("AM_PERMISSION_ACTION"), 'actionform', 'admin.permission.php', "GET");
	$action_select = new XoopsFormSelect("", 'action', $action);
	$action_select->setExtra('onchange="document.forms.actionform.submit()"');
	$action_select->addOptionArray($action_options);
	$actionform->addElement($action_select);
	$actionform->display();
}

$action = isset($_REQUEST['action']) ? strtolower($_REQUEST['action']) : "";
switch($action){
	case "template":
		display_action_form($action);
		
        $member_handler =& xoops_gethandler('member');
        $glist =& $member_handler->getGroupList();
        $elements = array();
        $perm_handler = &xoops_getmodulehandler('permission', $GLOBALS["artdirname"]);
        $perm_template = $perm_handler->getTemplate($groupid = 0);
        foreach (array_keys($glist) as $i) {
            $selected = !empty($perm_template[$i])?array_keys($perm_template[$i]):array();
            $ret_ele  = '<tr align="left" valign="top"><td class="head">'.$glist[$i].'</td>';
			$ret_ele .= '<td class="even">';
			$ret_ele .= '<table class="outer"><tr><td class="odd"><table><tr>';
			$ii = 0;
			$option_ids = array();
			foreach ($GLOBALS["perms_category"] as $perm => $content) {
				$ii++;
				if($ii % 5 == 0){
					$ret_ele .= '</tr><tr>';
				}
				$checked = in_array($perm, $selected)?" checked='checked'":"";
				$option_id = $perm.'_'.$i;
				$option_ids[] = $option_id;
				$ret_ele .='<td><input name="perms['.$i.']['.$perm.']" id="'.$option_id.'" onclick="" value="1" type="checkbox"'.$checked.'>'.$content["title"].'<br></td>';
			}
			$ret_ele .= '</tr></table></td><td class="even">';
			$ret_ele .= _ALL.' <input id="checkall['.$i.']" type="checkbox" value="" onclick="var optionids = new Array('.implode(", ", $option_ids).'); xoopsCheckAllElements(optionids, \'checkall['.$i.']\')" />';
			$ret_ele .= '</td></tr></table>';
			$ret_ele .= '</td></tr>';
            $elements[] = $ret_ele;
        } 
        $tray = new XoopsFormElementTray('');
        $tray->addElement(new XoopsFormHidden('action', 'template_save'));
        $tray->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
        $tray->addElement(new XoopsFormButton('', 'reset', _CANCEL, 'reset'));
     	$ret = '<h4>' . art_constant("AM_PERMISSION_TEMPLATE") . '</h4>' . art_constant("AM_PERMISSION_TEMPLATE_DESC") . '<br /><br /><br />';
        $ret .= "<form name='template' id='template' method='post'>\n<table width='100%' class='outer' cellspacing='1'>\n";
        $ret .= implode("\n",$elements);
		$ret .= '<tr align="left" valign="top"><td class="head"></td><td class="even">';
        $ret .= $tray->render();
		$ret .= '</td></tr>';
        $ret .= '</table></form>';
        echo $ret;
        break;	
        
	case "template_save":
        $perm_handler =& xoops_getmodulehandler('permission', $GLOBALS["artdirname"]);
        $res = $perm_handler->setTemplate($_POST['perms'], $groupid = 0);
        if($res){
	    	redirect_header("admin.permission.php?action=template", 2, art_constant("AM_PERMISSION_TEMPLATE_CREATED"));
        }else{
	    	redirect_header("admin.permission.php?action=template", 2, art_constant("AM_PERMISSION_TEMPLATE_ERROR"));
        }
		break;
		
	case "apply":
        $perm_handler =& xoops_getmodulehandler('permission', $GLOBALS["artdirname"]);
	    $perm_template = $perm_handler->getTemplate();
		if($perm_template === null){
	    	redirect_header("admin.permission.php?action=template", 2, art_constant("AM_PERMISSION_TEMPLATE_EMPTY"));
		}
		
		display_action_form($action);
		
		$category_handler =& xoops_getmodulehandler('category', $GLOBALS["artdirname"]);
		$categories =& $category_handler->getTree(0, "submit", "--");
		$cat_options = array();
		foreach($categories as $id=>$cat){
			$cat_options[$id]=$cat["prefix"].$cat["cat_title"];
		}
		
		$fmform = new XoopsThemeForm(art_constant("AM_PERMISSION_TEMPLATE_APPLY"), 'fmform', 'admin.permission.php', "post");
		$fm_select = new XoopsFormSelect(_SELECT, 'categories', null, 10, true);
		$fm_select->addOptionArray($cat_options);
		$fmform->addElement($fm_select);
        $tray = new XoopsFormElementTray('');
        $tray->addElement(new XoopsFormHidden('action', 'apply_save'));
        $tray->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
        $tray->addElement(new XoopsFormButton('', 'reset', _CANCEL, 'reset'));
		$fmform->addElement($tray);
		$fmform->display();
		break;
		
	case "apply_save":
		if(empty($_POST["categories"])) break;
        $perm_handler =& xoops_getmodulehandler('permission', $GLOBALS["artdirname"]);
		foreach($_POST["categories"] as $category){
			if($category < 1) continue;
			$perm_handler->applyTemplate($category, $xoopsModule->getVar('mid'));
		}
		// Since we can not control the permission update, a trick is used here
		$permission_handler =& xoops_getmodulehandler("permission", $GLOBALS["artdirname"]);
		$permission_handler->createPermData();
	    redirect_header("admin.permission.php", 2, art_constant("AM_PERMISSION_TEMPLATE_APPLIED"));
		break;
		
	default:
		echo "<fieldset><legend style='font-weight: bold; color: #900;'>" . art_constant("AM_PERMISSION") . "</legend>";
		echo "<div style='padding: 8px;'>";
		echo art_constant("AM_PERMISSION_DESC"); // "access" of a category is subject to the parent category's access permission
		echo "</div>";
		echo "</fieldset><br />";
		
		display_action_form($action);
		
		$op_options = array("global"=>art_constant("AM_PERMISSION_GLOBAL"));
		$fm_options = array("global"=>array("title"=>art_constant("AM_PERMISSION_GLOBAL"), "item"=>"global", "desc"=>"", "anonymous"=>true));
		foreach($GLOBALS["perms_category"] as $perm => $perm_info){
			$op_options[$perm] = $perm_info['title'];
			$fm_options[$perm] = array("title"=>$perm_info['title'], "item"=>$perm, "desc"=>$perm_info['desc'], "anonymous"=>true);
			if($perm == "moderate") $fm_options[$perm]["anonymous"] = false;
		}
		
		$op_keys = array_keys($op_options);
		$op = isset($_GET['op']) ? strtolower($_GET['op']) : (isset($_COOKIE[$GLOBALS["artdirname"].'_perm_op']) ? strtolower($_COOKIE[$GLOBALS["artdirname"].'_perm_op']):"");
		if(empty($op)){
			$op = $op_keys[0];
			setCookie($GLOBALS["artdirname"].'_perm_op', isset($op_keys[1])?$op_keys[1]:"");
		}elseif(false !== ($key = array_search($op, $op_keys))){
			setCookie($GLOBALS["artdirname"].'_perm_op', isset($op_keys[$key+1])?$op_keys[$key+1]:"");
		}
		
		// Display option form
		$opform = new XoopsSimpleForm('', 'opform', 'admin.permission.php', "get");
		$op_select = new XoopsFormSelect("", 'op', $op);
		$op_select->setExtra('onchange="document.forms.opform.submit()"');
		$op_select->addOptionArray($op_options);
		$opform->addElement($op_select);
		$opform->display();
		
		if($op == "global"){
			$form_perm = new XoopsGroupPermForm(art_constant("AM_PERMISSION_GLOBAL"), $xoopsModule->getVar('mid'), $op, art_constant("AM_PERMISSION_GLOBAL_DESC"), 'admin/admin.permission.php', $fm_options[$op]["anonymous"]);
			foreach ($GLOBALS["perms_global"] as $name=>$perm_info) {
			    $form_perm->addItem($perm_info["id"], $perm_info["title"]);
			}
		}else{
			$category_handler =& xoops_getmodulehandler('category', $GLOBALS["artdirname"]);
			$categories =& $category_handler->getSubCategories();
			$form_perm = new XoopsGroupPermForm($GLOBALS["perms_category"][$op]['title'], $xoopsModule->getVar('mid'), $op, $GLOBALS["perms_category"][$op]['desc'], 'admin/admin.permission.php', $fm_options[$op]["anonymous"]);
			foreach ($categories as $cat_id => $cat) {
			    $form_perm->addItem($cat_id, $cat->getVar('cat_title'), $cat->getVar('cat_pid'));
			}
		}
		$form_perm->display();
		
		// Since we can not control the permission update, a trick is used here
		$permission_handler =& xoops_getmodulehandler("permission", $GLOBALS["artdirname"]);
		$permission_handler->createPermData();
		
		break;
}
/*
echo "<fieldset><legend style='font-weight: bold; color: #900;'>" . art_constant("AM_PERMISSION") . "</legend>";
echo "<div style='padding: 8px;'>";
echo art_constant("AM_PERMISSION_DESC"); // "access" of a category is subject to the parent category's access permission
echo "</div>";
echo "</fieldset><br />";


$mid = $xoopsModule->getVar('mid');

$op_options = array("global"=>art_constant("AM_PERMISSION_GLOBAL"));
$fm_options = array("global"=>array("title"=>art_constant("AM_PERMISSION_GLOBAL"), "item"=>"global", "desc"=>"", "anonymous"=>true));
foreach($GLOBALS["perms_category"] as $perm => $perm_info){
	$op_options[$perm] = $perm_info['title'];
	$fm_options[$perm] = array("title"=>$perm_info['title'], "item"=>$perm, "desc"=>$perm_info['desc'], "anonymous"=>true);
	if($perm == "moderate") $fm_options[$perm]["anonymous"] = false;
}
		
// Get option
$op_keys = array_keys($op_options);
$op = isset($_GET['op']) ? strtolower($_GET['op']) : (isset($_COOKIE[$GLOBALS["artdirname"].'_perm_op']) ? strtolower($_COOKIE[$GLOBALS["artdirname"].'_perm_op']):"");
if(empty($op)){
	$op = $op_keys[0];
	setCookie($GLOBALS["artdirname"].'_perm_op', isset($op_keys[1])?$op_keys[1]:"");
}else{
	for($i=0;$i<count($op_keys);$i++){
		if($op_keys[$i] == $op) break;
	}
	setCookie($GLOBALS["artdirname"].'_perm_op', isset($op_keys[$i+1])?$op_keys[$i+1]:"");
}

// Display option form
$opform = new XoopsSimpleForm('', 'opform', 'admin.permission.php', "get");
$op_select = new XoopsFormSelect("", 'op', $op);
$op_select->setExtra('onchange="document.forms.opform.submit()"');
$op_select->addOptionArray($op_options);
$opform->addElement($op_select);
$opform->display();

if($op=="global"){
	$form_perm = new XoopsGroupPermForm(art_constant("AM_PERMISSION_GLOBAL"), $mid, $op, art_constant("AM_PERMISSION_GLOBAL_DESC"), 'admin/admin.permission.php', $fm_options[$op]["anonymous"]);
	foreach ($GLOBALS["perms_global"] as $name=>$perm_info) {
	    $form_perm->addItem($perm_info["id"], $perm_info["title"]);
	}
}else{
	$category_handler =& xoops_getmodulehandler('category', $GLOBALS["artdirname"]);
	$categories =& $category_handler->getSubCategories();
	$form_perm = new XoopsGroupPermForm($GLOBALS["perms_category"][$op]['title'], $mid, $op, $GLOBALS["perms_category"][$op]['desc'], 'admin/admin.permission.php', $fm_options[$op]["anonymous"]);
	foreach ($categories as $cat_id => $cat) {
	    $form_perm->addItem($cat_id, $cat->getVar('cat_title'), $cat->getVar('cat_pid'));
	}
}
$form_perm->display();
*/

xoops_cp_footer();
?>

⌨️ 快捷键说明

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