Exemplo n.º 1
0
 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);
 }