public function actionEditUserMembership($id) { $group = Group::getById(intval($id)); $title = Zurmo::t('ZurmoModule', 'User Membership'); $breadCrumbLinks = array(strval($group) => array('group/' . static::resolveBreadCrumbActionByGroup($group), 'id' => $id), $title); $membershipForm = GroupUserMembershipFormUtil::makeFormFromGroup($group); $postVariableName = get_class($membershipForm); if (isset($_POST[$postVariableName])) { $castedPostData = GroupUserMembershipFormUtil::typeCastPostData($_POST[$postVariableName]); GroupUserMembershipFormUtil::setFormFromCastedPost($membershipForm, $castedPostData); if (null != ($message = GroupUserMembershipFormUtil::validateMembershipChange($membershipForm, $group))) { Yii::app()->user->setFlash('notification', $message); } elseif (!$group->canModifyMemberships()) { throw new SecurityException(); } elseif (GroupUserMembershipFormUtil::setMembershipFromForm($membershipForm, $group)) { $this->clearCaches(); Yii::app()->user->setFlash('notification', Zurmo::t('ZurmoModule', 'User Membership Saved Successfully.')); $action = $this->resolveActionToGoToAfterSave($group); $this->redirect(array($this->getId() . '/' . $action, 'id' => $group->id)); Yii::app()->end(0, false); } } $titleBarAndEditView = new GroupActionBarAndUserMembershipEditView($this->getId(), $this->getModule()->getId(), $membershipForm, $group, $this->getModule()->getPluralCamelCasedName()); $view = new GroupsPageView(ZurmoDefaultAdminViewUtil::makeViewWithBreadcrumbsForCurrentUser($this, $titleBarAndEditView, $breadCrumbLinks, 'GroupBreadCrumbView')); echo $view->render(); }
public function testValidateMembershipChange() { $bill = User::getByUsername('billy'); $jim = User::getByUsername('jimmy'); $fakePostData = array('userMembershipData' => array(0 => $bill->id), 'userNonMembershipData' => array(0 => $jim->id)); $form = new GroupUserMembershipForm(); $this->assertEmpty($form->userMembershipData); $this->assertEmpty($form->userNonMembershipData); $bill->setIsSystemUser(); $bill->firstName = 'Billy'; $bill->lastName = 'Billium'; $bill->save(); $group = Group::getByName(Group::SUPER_ADMINISTRATORS_GROUP_NAME); $content = GroupUserMembershipFormUtil::validateMembershipChange($form, $group); $this->assertTrue(strpos($content, 'There must be at') === 0); $group->users->add($bill); $this->assertTrue($group->save()); $form = GroupUserMembershipFormUtil::setFormFromCastedPost($form, $fakePostData); $content = GroupUserMembershipFormUtil::validateMembershipChange($form, $group); $this->assertTrue(strpos($content, 'You cannot remove') === false); //Now add jimmy as a super user. $group->users->add($jim); $this->assertTrue($group->save()); $fakePostData = array('userMembershipData' => array(0 => $bill->id, 1 => $jim->id)); $form = GroupUserMembershipFormUtil::setFormFromCastedPost($form, $fakePostData); //Now try to remove bill, it should pass ok validation because it won't really let you when it sets to form unset($form->userMembershipData[$bill->id]); $content = GroupUserMembershipFormUtil::validateMembershipChange($form, $group); $this->assertTrue(strpos($content, 'You cannot remove') === false); }