Пример #1
0
 /**
  * 保存用户组设置
  *
  * @param ORM_Admin_Member_Data $member
  * @param boolean $is_add
  */
 protected function save_member_group_perm(ORM_Admin_Member_Data $member, $is_add)
 {
     $orm_group = new ORM_Admin_MemberGroup_Finder();
     if ($this->change_to_super_admin) {
         # 超管不需要设置组,将提升为超管的用户的组给清理掉
         $orm_group->db()->where('admin_id', $member->id)->delete($orm_group->ids_tablename());
     } else {
         # 新组
         $new_groups = $_POST['group_ids'] ? (array) $_POST['group_ids'] : array();
         asort($new_groups);
         if ($is_add) {
             # 新创建的用户
             # 添加的权限
             $new_diff_group = $new_groups;
             # 删除掉的权限
             $del_diff_group = array();
         } else {
             # 旧组
             $old_groups = $member->groups()->ids();
             asort($old_groups);
             # 添加的权限
             $new_diff_group = array_diff($new_groups, $old_groups);
             # 删除掉的权限
             $del_diff_group = array_diff($old_groups, $new_groups);
             # 相同的组
             $same_group = array_intersect($old_groups, $new_groups);
             if ($same_group) {
                 # 更新
                 foreach ($same_group as $group_id) {
                     $where = array('admin_id' => $member->id, 'group_id' => $group_id);
                     $data = array('admin_id' => $member->id, 'group_id' => $group_id, 'view_users' => $_POST['manage_groups']['g' . $group_id]['view_users'] ? 1 : 0, 'edit_users' => $_POST['manage_groups']['g' . $group_id]['edit_users'] ? 1 : 0, 'edit_users_password' => $_POST['manage_groups']['g' . $group_id]['edit_users_password'] ? 1 : 0, 'add_user' => $_POST['manage_groups']['g' . $group_id]['add_user'] ? 1 : 0, 'del_user' => $_POST['manage_groups']['g' . $group_id]['del_user'] ? 1 : 0, 'remove_user' => $_POST['manage_groups']['g' . $group_id]['remove_user'] ? 1 : 0, 'shield_user' => $_POST['manage_groups']['g' . $group_id]['shield_user'] ? 1 : 0, 'liftshield_user' => $_POST['manage_groups']['g' . $group_id]['liftshield_user'] ? 1 : 0, 'edit_group' => $_POST['manage_groups']['g' . $group_id]['edit_group'] ? 1 : 0);
                     $orm_group->db()->update($orm_group->ids_tablename(), $data, $where);
                 }
             }
         }
         if ($new_diff_group) {
             foreach ($new_diff_group as $group_id) {
                 $data = array('admin_id' => $member->id, 'group_id' => $group_id, 'view_users' => $_POST['manage_groups']['g' . $group_id]['view_users'] ? 1 : 0, 'edit_users' => $_POST['manage_groups']['g' . $group_id]['edit_users'] ? 1 : 0, 'edit_users_password' => $_POST['manage_groups']['g' . $group_id]['edit_users_password'] ? 1 : 0, 'add_user' => $_POST['manage_groups']['g' . $group_id]['add_user'] ? 1 : 0, 'del_user' => $_POST['manage_groups']['g' . $group_id]['del_user'] ? 1 : 0, 'remove_user' => $_POST['manage_groups']['g' . $group_id]['remove_user'] ? 1 : 0, 'shield_user' => $_POST['manage_groups']['g' . $group_id]['shield_user'] ? 1 : 0, 'liftshield_user' => $_POST['manage_groups']['g' . $group_id]['liftshield_user'] ? 1 : 0, 'edit_group' => $_POST['manage_groups']['g' . $group_id]['edit_group'] ? 1 : 0);
                 $orm_group->db()->values($data);
             }
             $orm_group->db()->columns(array_keys($data))->insert($orm_group->ids_tablename());
         }
         if ($del_diff_group) {
             $orm_group->db()->where('admin_id', $member->id)->in('group_id', $del_diff_group)->delete($orm_group->ids_tablename());
         }
     }
 }
Пример #2
0
 /**
  * 删除当前管理员
  *
  * @see OOP_ORM_Data::delete()
  * @return integer 操作行数
  * @throws Exception
  */
 public function delete()
 {
     $id = $this->id;
     $rs = parent::delete();
     if ($rs) {
         # 删除管理员对应的用户组设置
         $orm_group = new ORM_Admin_MemberGroup_Finder();
         $orm_group->db()->where('admin_id', $id)->delete($orm_group->ids_tablename());
     }
     return $rs;
 }