/** * 保存用户组设置 * * @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()); } } }
/** * 删除当前管理员 * * @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; }