/** * 删除当前角色及下级角色的所有当前用户 * @param number $user_id * @param number $role_id */ public function deleteUserFromRole($user_id, $role_id) { $role = new Admin_Model_Role(); // 检查当前角色是否存在下级角色 $r = $role->fetchAll("parentid = " . $role_id); // 当前角色拥有下级角色 if ($r->count() > 0) { $data = $r->toArray(); foreach ($data as $d) { // 从下级角色中清除当前用户 $this->deleteUserFromRole($user_id, $d['id']); } } // 从当前角色清除用户 $this->delete("role_id = " . $role_id . " and user_id = " . $user_id); }
public function editAction() { // 返回值数组 $result = array('success' => true, 'info' => '编辑成功'); $request = $this->getRequest()->getParams(); $now = date('Y-m-d H:i:s'); $user_session = new Zend_Session_Namespace('user'); $user = $user_session->user_info['user_id']; $json = json_decode($request['json']); $updated = $json->updated; $inserted = $json->inserted; $deleted = $json->deleted; $role = new Admin_Model_Role(); $member = new Admin_Model_Member(); if (count($updated) > 0) { foreach ($updated as $val) { if ($role->fetchAll("id != " . $val->id . " and name = '" . $val->name . "'")->count() > 0) { $result['result'] = false; $result['info'] = '角色:' . $val->name . ' 重名'; echo Zend_Json::encode($result); exit; } else { $data = array('parentid' => $val->parentId, 'name' => $val->name, 'description' => $val->description, 'remark' => $val->remark, 'active' => $val->active, 'update_time' => $now, 'update_user' => $user); $where = "id = " . $val->id; try { $role->update($data, $where); } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } } } if (count($inserted) > 0) { foreach ($inserted as $val) { if ($role->fetchAll("name = '" . $val->name . "'")->count() > 0) { $result['result'] = false; $result['info'] = '角色:' . $val->name . ' 重名'; echo Zend_Json::encode($result); exit; } else { $data = array('parentid' => $val->parentId, 'name' => $val->name, 'description' => $val->description, 'remark' => $val->remark, 'active' => $val->active, 'create_time' => $now, 'create_user' => $user, 'update_time' => $now, 'update_user' => $user); try { $role_id = $role->insert($data); // 自动添加系统管理员到新角色中 $adminIds = $member->getUserids("系统管理员"); foreach ($adminIds as $admin) { if ($member->fetchAll("user_id = " . $admin . " and role_id = " . $role_id)->count() == 0) { try { $member->insert(array('user_id' => $admin, 'role_id' => $role_id)); } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } } } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } } } if (count($deleted) > 0) { foreach ($deleted as $val) { $adminIds = $member->getMemberWithNoManager($val->id); if (count($adminIds) == 0) { try { $role->deleteRoleTreeData($val->id); } catch (Exception $e) { $result['result'] = false; $result['info'] = $e->getMessage(); echo Zend_Json::encode($result); exit; } } else { $result['result'] = false; $result['info'] = '角色ID ' . $val->id . '有管理员以外的其它成员,请先删除其它成员'; echo Zend_Json::encode($result); exit; } } } echo Zend_Json::encode($result); exit; }