zoukankan      html  css  js  c++  java
  • DEDECMS 后台系统用户授权目录更改为无限级(默认为二级授权)

    在做一个学校的项目,分类有四级分类,总共一百多个分类,因为每个分类对应不同的老师,用于上传资料作为考核,但是添加系统用户的时候发现DEDECMS只有两级分类,所以修改啦一些代码,目前不知道是否修改完全,暂时来看,四级目录授权功能是可以授权的,下面是修改的代码。

    1.添加/修改系统用户-展示全部分类

    打开dede/sys_admin_user_add.php 和dede/sys_admin_user_edit.php

    在顶部下引入文件,具体啥用不清楚,因为之前也是参考别人的文章,我估计不引用也没关系,但是我没时间测试,先这样吧

    require_once(dirname(__FILE__)."/config.php");
    
    require_once(DEDEADMIN."/inc/inc_catalog_options.php");  // 引入这行代码
    

    修改底部

    $dsql->Execute('op');
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    include DedeInclude('templets/sys_admin_user_add.htm');
    

    替换中间的代码为

    $typeOptions .= GetOptionList(0,$cuserLogin->getUserChannel(),0);
    

      

    2.修改include/typeunit.class.admin.php文件

    找到

     while($row = $this->dsql->GetObject())
                {
                    if($row->reid==0) continue;
                    $topidstr .= ($topidstr=='' ? $row->reid : ','.$row->reid);
                }
    

    在它下面添加以下代码

    /*****************************修改代码,后台管理三级栏目授权开始*******************************/
              // 获取所有顶级栏目id
              $current_id = (string)$admin_catalogs[0];
              $category_arr = [];
              $categorys = explode(',',$admin_catalog);
              foreach ($categorys as $key=>$value) {
                array_push($category_arr,$categorys[$key]);
                $this->dsql->SetQuery("SELECT reid FROM `#@__arctype` WHERE id in($categorys[$key]) group by reid ");
                $this->dsql->Execute();
                if(($reid = $this->dsql->GetObject()->reid) != 0) {
                  // 不是二级分类
                  array_push($category_arr,$reid);
                  // 继续判断是否为二级分类
                  $this->dsql->SetQuery("SELECT reid FROM `#@__arctype` WHERE id in($reid) group by reid ");
                  $this->dsql->Execute();
                  if(($reid = $this->dsql->GetObject()->reid) != 0) {
                    array_push($category_arr,$reid);
                    // 继续判断是否为二级分类
                    $this->dsql->SetQuery("SELECT reid FROM `#@__arctype` WHERE id in($reid) group by reid ");
                    $this->dsql->Execute();
                    if(($reid = $this->dsql->GetObject()->reid) != 0) {
                      array_push($category_arr,$reid);
                      // 继续判断是否为二级分类
                      $this->dsql->SetQuery("SELECT reid FROM `#@__arctype` WHERE id in($reid) group by reid ");
                      $this->dsql->Execute();
                      if(($reid = $this->dsql->GetObject()->reid) != 0) {
                        array_push($category_arr,$reid);
                        // 继续判断是否为二级分类
                        $this->dsql->SetQuery("SELECT reid FROM `#@__arctype` WHERE id in($reid) group by reid ");
                        $this->dsql->Execute();
                      }
                    }
                  }
                }
              }
    

    此处写得有点糟糕,循环,我因为只有四级就先这么简单写

    然后在$admin_catalogs = array_unique($admin_catalogs);后添加一行

    $admin_catalogs = array_unique($category_arr);
    
  • 相关阅读:
    矩阵论基础 3.1初等变换
    最优化理论与方法 9 二次规划
    最优化理论与方法 10 罚函数法
    矩阵论基础 2.5 用Matlab实现矩阵的基本运算
    最优化理论与方法 目录
    UG OPEN API编程基础 12UIStyler对话框
    第十四章 达朗伯原理 1
    矩阵论基础 2.3 方阵的几种运算
    矩阵论基础 3.5 用Matlab求解线性方程组
    测试一下博客的html代码机制
  • 原文地址:https://www.cnblogs.com/easy1996/p/8856879.html
Copyright © 2011-2022 走看看