⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 permission.php

📁 在综合英文版XOOPS 2.09, 2.091, 2.092 的基础上正式发布XOOPS 2.09中文版 XOOPS 2.09x 版主要是PHP5升级、bug修正和安全补正: 1 全面兼容PHP 5.
💻 PHP
字号:
<?php 
// $Id: permission.php,v 1.1.1.18 2004/10/10 00:37:07 phppp Exp $
// ------------------------------------------------------------------------ //
// XOOPS - PHP Content Management System                      //
// Copyright (c) 2000 XOOPS.org                           //
// <http://www.xoops.org/>                             //
// ------------------------------------------------------------------------ //
// 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: Kazumi Ono (AKA onokazu)                                          //
// URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
// Project: The XOOPS Project                                                //
// ------------------------------------------------------------------------- //
if (!defined('FORUM_PERM_ITEMS')) define('FORUM_PERM_ITEMS', 'post,view,reply,edit,delete,addpoll,vote,attach,noapprove');

class NewbbPermissionHandler extends XoopsObjectHandler {
    /**
     * Saves permissions for the selected category
     * 
     *   saveCategory_Permissions()
     * 
     * @param array $groups : group with granted permission
     * @param integer $categoryID : categoryID on which we are setting permissions for Categories and Forums
     * @param string $perm_name : name of the permission
     * @return boolean : TRUE if the no errors occured
     */

    function saveCategory_Permissions($groups, $categoryID, $perm_name)
    {
        global $xoopsModule;

        if (!is_object($xoopsModule)) {
            $module_handler = &xoops_gethandler('module');
            $xoopsModule = &$module_handler->getByDirname('newbb');
        } 

        $result = true;
        $module_id = $xoopsModule->getVar('mid') ;
        $gperm_handler = &xoops_gethandler('groupperm'); 
        // First, if the permissions are already there, delete them
        $gperm_handler->deleteByModule($module_id, $perm_name, $categoryID); 
        // Save the new permissions
        if (count($groups) > 0) {
            foreach ($groups as $group_id) {
                $gperm_handler->addRight($perm_name, $categoryID, $group_id, $module_id);
            } 
        } 
        return $result;
    } 

    /*
	* Returns permissions for a certain type
	*
	* @param string $type "global", "forum" or "topic" (should perhaps have "post" as well - but I don't know)
	* @param int $id id of the item (forum, topic or possibly post) to get permissions for
	*
	* @return array
	*/
    function getPermissions($type = "global", $id = null)
    {
        global $xoopsUser;
        static $permissions;

        $module_handler = &xoops_gethandler('module');
        $xoopsNewBB = &$module_handler->getByDirname('newbb');

        if (!isset($permissions[$type]) || ($id != null && !isset($permissions[$type][$id]))) {
            // Get group permissions handler
            $gperm_handler = &xoops_gethandler('groupperm'); 
            // Get user's groups
            $groups = is_object($xoopsUser) ? $xoopsUser->getGroups() : array(XOOPS_GROUP_ANONYMOUS); 
            // Create string of groupid's separated by commas, inserted in a set of brackets
            if (count($groups) < 1) return false;
            $groupstring = "(" . implode(',', $groups) . ")"; 
            // Create criteria for getting only the permissions regarding this module and this user's groups
            $criteria = new CriteriaCompo(new Criteria('gperm_modid', $xoopsNewBB->getVar('mid')));
            $criteria->add(new Criteria('gperm_groupid', $groupstring, 'IN'));
            if ($id != null) {
                if (is_array($id)) {
                    $counter = 0;
                    $idstring = "(" . implode(',', $id) . ")";
                    $criteria->add(new Criteria('gperm_itemid', $idstring, 'IN'));
                } else {
                    $criteria->add(new Criteria('gperm_itemid', intval($id)));
                } 
            } 

            switch ($type) {
                case "topic":
                    $items = explode(',', FORUM_PERM_ITEMS);
                    $full_items = array();
                    foreach($items as $item) {
                        $full_items[] = "'forum_can_" . $item . "'";
                    } 
                    $gperm_names = implode(',', $full_items);
                    break;

                case "forum":
                    $gperm_names = "'global_forum_access'";
                    break;

                case "global":
                    $gperm_names = "'forum_cat_access'";
                    break;
            } 
            // Add criteria for gpermnames
            $criteria->add(new Criteria('gperm_name', "(" . $gperm_names . ")", 'IN')); 
            // Get all permission objects in this module and for this user's groups
            $userpermissions = &$gperm_handler->getObjects($criteria, true); 
            // Set the granted permissions to 1
            foreach ($userpermissions as $gperm_id => $gperm) {
                $permissions[$type][$gperm->getVar('gperm_itemid')][$gperm->getVar('gperm_name')] = 1;
            } 
        } 
        // Return the permission array
        return isset($permissions[$type]) ? $permissions[$type] : array();
    } 

    function permission_table($permission_set, $forum = 0, $topic_locked = false, $isadmin = false)
    {
        global $xoopsUser;

        if (is_object($forum)) $forumid = $forum->getVar('forum_id');
        else $forumid = $forum;

        $perm_items = explode(',', FORUM_PERM_ITEMS);
        $perm = "<table><tr><td align='left'><small>";
        foreach($perm_items as $item) {
            if ($isadmin ||
                (isset($permission_set[$forumid]['forum_can_' . $item]) && !$topic_locked)
                    ) {
                $perm .= constant('_MD_CAN_' . strtoupper($item));
            } else {
                $perm .= constant('_MD_CANNOT_' . strtoupper($item));
            } 
        } 
        $perm .= "</small></td></tr></table>";

        return $perm;
    } 
} 

?>

⌨️ 快捷键说明

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