Browse Source

fix #1269 修正数据权限过滤功能

magicblack 2 months ago
parent
commit
ecbea478f8
2 changed files with 23 additions and 8 deletions
  1. 9 5
      application/common.php
  2. 14 3
      application/common/model/User.php

+ 9 - 5
application/common.php

@@ -2865,16 +2865,20 @@ function mac_data_count($tid=0,$range='all',$flag='vod')
     return intval($data[$key]);
 }
 
-function mac_get_popedom_filter($group_type,$type_list=[])
+function mac_get_popedom_filter($group_type_list, $type_list = [])
 {
-    if(empty($type_list)){
+    if (empty($type_list)) {
         $type_list = model('Type')->getCache('type_list');
     }
     $type_keys = array_keys($type_list);
-    $group_type = trim($group_type,',');
-    $group_keys = explode(',',$group_type);
+    $group_type_list = array_map('trim', explode(',', trim($group_type_list, ',')));
+    $group_keys = [];
+    foreach ($group_type_list as $group_type) {
+        $group_keys = array_merge($group_keys, explode(',', $group_type));
+    }
+    $group_keys = get_array_unique_id_list($group_keys);
     $cha_keys = array_diff($type_keys, $group_keys);
-    return implode(',',$cha_keys);
+    return implode(',', $cha_keys);
 }
 
 function reset_html_filename($htmlfile)

+ 14 - 3
application/common/model/User.php

@@ -52,7 +52,7 @@ class User extends Base
         //用户组
         $group_list = model('Group')->getCache('group_list');
         $group_ids = explode(',', $info['group_id']);
-        $info['group'] = [];
+        $info['group'] = $group_list[$group_ids[0]];
         foreach($group_ids as $gid){
             if(isset($group_list[$gid])){
                 $info['group'][] = $group_list[$gid];
@@ -464,13 +464,24 @@ class User extends Base
 
         $group_list = model('Group')->getCache('group_list');
         $group_ids = explode(',', $info['group_id']);
-        $info['group'] = [];
+        $user_groups = [];
+        $user_group_types = [];
         foreach($group_ids as $gid){
             if(isset($group_list[$gid])){
-                $info['group'][] = $group_list[$gid];
+                $user_groups[] = $group_list[$gid];
+                if (!empty($group_list[$gid]['group_type'])) {
+                    $user_group_types = array_merge($user_group_types, explode(',', $group_list[$gid]['group_type']));
+                }
             }
         }
 
+        if (!empty($user_groups)) {
+            $info['group'] = $user_groups[0];
+            $info['group']['group_type'] = implode(',', array_unique(array_filter($user_group_types)));
+        } else {
+            $info['group'] = $group_list[1];
+        }
+
         //会员截止日期
         if ($info['group_id'] > 2 && $info['user_end_time'] < time()) {
             //用户组