• 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);
    
  • 相关阅读:
    python函数收集不确定数量的值
    PHP比较数组、对象是否为空
    PHP实现斐波那契数列
    Python之复制列表
    1004. 最大连续1的个数 III(滑动窗口)
    276. 栅栏涂色(动态规划)
    376. 摆动序列
    148. 排序链表
    143. 重排链表
    1530. 好叶子节点对的数量
  • 原文地址:https://www.cnblogs.com/easy1996/p/8856879.html
Copyright © 2020-2023  润新知