Example #1
0
 /**
  * 根据管理员对象获取所在全部组
  *
  * @param \ORM_Admin_Member_Data $member
  * @return \ORM_Admin_Member_Data
  */
 public function get_all_groups_setting_by_member(\ORM_Admin_Member_Data $member)
 {
     if ($member->is_super_admin) {
         $rsArr = array();
         # 当前用户为超管,直接返回所有组
         foreach ($member->groups() as $group) {
             $rsArr[$group->id] = array('view_users' => 1, 'edit_users' => 1, 'edit_users_password' => 1, 'add_user' => 1, 'del_user' => 1, 'remove_user' => 1, 'shield_user' => 1, 'liftshield_user' => 1, 'edit_group' => 1);
         }
         return $rsArr;
     }
     $all_members = $member->get_group_data();
     $this->db()->from($this->tablename . ' as gp')->select('ids.*')->join($this->ids_tablename . ' as ids')->on('ids.group_id', 'gp.id');
     $ids = array();
     foreach ($all_members as $item) {
         $ids[] = $item->id;
     }
     $rs = $this->db()->in('ids.admin_id', $ids)->get()->as_array();
     $rsArr = array();
     # 将获取的数据整理到数组中
     foreach ($rs as $item) {
         $admin_id = $item['admin_id'];
         $group_id = $item['group_id'];
         unset($item['admin_id']);
         unset($item['group_id']);
         $rsArr[$admin_id][$group_id] = $item;
     }
     foreach ($all_members as $item) {
         $item->set_groups_setting((array) $rsArr[$item->id]);
         if ($item === $member) {
             $all_groups_setting = (array) $rsArr[$item->id];
         }
     }
     return $all_groups_setting;
 }