public function actionDetails($id)
 {
     $mission = static::getModelAndCatchNotFoundAndDisplayError('Mission', intval($id));
     ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($mission);
     AuditEvent::logAuditEvent('ZurmoModule', ZurmoModule::AUDIT_EVENT_ITEM_VIEWED, array(strval($mission), 'MissionsModule'), $mission);
     MissionsUtil::markUserHasReadLatest($mission, Yii::app()->user->userModel);
     $detailsView = new MissionDetailsView($this->getId(), $this->getModule()->getId(), $mission);
     $missionsMashableInboxUrl = Yii::app()->createUrl('mashableInbox/default/list', array('modelClassName' => 'Mission'));
     $breadCrumbLinks = array(Zurmo::t('MissionsModule', 'Missions') => $missionsMashableInboxUrl, StringUtil::getChoppedStringContent(strval($mission), 25));
     $view = new MissionsPageView(ZurmoDefaultViewUtil::makeViewWithBreadcrumbsForCurrentUser($this, $detailsView, $breadCrumbLinks, 'MissionBreadCrumbView'));
     echo $view->render();
 }
 public function testMissionReadUnreadStatus()
 {
     $steven = User::getByUsername('steven');
     $sally = User::getByUsername('sally');
     $mary = User::getByUsername('mary');
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $mission = new Mission();
     $mission->owner = $steven;
     $mission->description = 'My test mission description';
     $mission->status = Mission::STATUS_AVAILABLE;
     $this->assertTrue($mission->save());
     $missionId = $mission->id;
     $explicitReadWriteModelPermissions = new ExplicitReadWriteModelPermissions();
     $explicitReadWriteModelPermissions->addReadWritePermitable(Group::getByName(Group::EVERYONE_GROUP_NAME));
     ExplicitReadWriteModelPermissionsUtil::resolveExplicitReadWriteModelPermissions($mission, $explicitReadWriteModelPermissions);
     $mission = Mission::getById($missionId);
     //Confirm users have mission marked as unread but not owner
     $this->assertTrue(MissionsUtil::hasUserReadMissionLatest($mission, $steven));
     $this->assertFalse(MissionsUtil::hasUserReadMissionLatest($mission, $super));
     $this->assertFalse(MissionsUtil::hasUserReadMissionLatest($mission, $sally));
     $this->assertFalse(MissionsUtil::hasUserReadMissionLatest($mission, $mary));
     //Super reads the mission
     $this->setGetArray(array('id' => $missionId));
     $this->runControllerWithNoExceptionsAndGetContent('missions/default/details');
     $mission = Mission::getById($missionId);
     $this->assertTrue(MissionsUtil::hasUserReadMissionLatest($mission, $steven));
     $this->assertTrue(MissionsUtil::hasUserReadMissionLatest($mission, $super));
     $this->assertFalse(MissionsUtil::hasUserReadMissionLatest($mission, $sally));
     $this->assertFalse(MissionsUtil::hasUserReadMissionLatest($mission, $mary));
     //Mary marks mission as read and post a comment
     $this->logoutCurrentUserLoginNewUserAndGetByUsername('mary');
     MissionsUtil::markUserHasReadLatest($mission, $mary);
     $this->setGetArray(array('relatedModelId' => $missionId, 'relatedModelClassName' => 'Mission', 'relatedModelRelationName' => 'comments', 'redirectUrl' => 'someRedirect'));
     $this->setPostArray(array('Comment' => array('description' => 'Mary\'s new comment')));
     $this->runControllerWithRedirectExceptionAndGetContent('comments/default/inlineCreateSave');
     $mission = Mission::getById($missionId);
     $this->assertFalse(MissionsUtil::hasUserReadMissionLatest($mission, $steven));
     $this->assertFalse(MissionsUtil::hasUserReadMissionLatest($mission, $super));
     $this->assertFalse(MissionsUtil::hasUserReadMissionLatest($mission, $sally));
     $this->assertTrue(MissionsUtil::hasUserReadMissionLatest($mission, $mary));
     //Sally reads and takes the mission
     $this->logoutCurrentUserLoginNewUserAndGetByUsername('sally');
     $this->setGetArray(array('id' => $missionId));
     $this->resetPostArray();
     $this->runControllerWithNoExceptionsAndGetContent('missions/default/details');
     $mission = Mission::getById($missionId);
     $this->assertFalse(MissionsUtil::hasUserReadMissionLatest($mission, $steven));
     $this->assertFalse(MissionsUtil::hasUserReadMissionLatest($mission, $super));
     $this->assertTrue(MissionsUtil::hasUserReadMissionLatest($mission, $sally));
     $this->assertTrue(MissionsUtil::hasUserReadMissionLatest($mission, $mary));
     $this->setGetArray(array('status' => Mission::STATUS_TAKEN, 'id' => $missionId));
     $this->runControllerWithNoExceptionsAndGetContent('missions/default/ajaxChangeStatus');
     //Every user other than owner and takenby are marked as read latest
     $mission = Mission::getById($missionId);
     $this->assertFalse(MissionsUtil::hasUserReadMissionLatest($mission, $steven));
     $this->assertTrue(MissionsUtil::hasUserReadMissionLatest($mission, $super));
     $this->assertTrue(MissionsUtil::hasUserReadMissionLatest($mission, $sally));
     $this->assertTrue(MissionsUtil::hasUserReadMissionLatest($mission, $mary));
 }
Exemple #3
0
 public function testMarkUserHasReadLatestAndMarkHasUserUnreadLatest()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     $steven = User::getByUsername('steven');
     $missions = Mission::getAll();
     $mission = $missions[0];
     $this->assertTrue($mission->save());
     $this->assertEquals(1, MissionsUtil::hasUserReadMissionLatest($mission, $super));
     $this->assertEquals(0, MissionsUtil::hasUserReadMissionLatest($mission, $steven));
     MissionsUtil::markUserHasUnreadLatest($mission, Yii::app()->user->userModel);
     $missions = Mission::getAll();
     $mission = $missions[0];
     $this->assertEquals(0, MissionsUtil::hasUserReadMissionLatest($mission, $super));
     $this->assertEquals(0, MissionsUtil::hasUserReadMissionLatest($mission, $steven));
     MissionsUtil::markUserHasReadLatest($mission, Yii::app()->user->userModel);
     $missions = Mission::getAll();
     $mission = $missions[0];
     $this->assertEquals(1, MissionsUtil::hasUserReadMissionLatest($mission, $super));
     $this->assertEquals(0, MissionsUtil::hasUserReadMissionLatest($mission, $steven));
     Yii::app()->user->userModel = User::getByUsername('steven');
     MissionsUtil::markUserHasReadLatest($mission, Yii::app()->user->userModel);
     $missions = Mission::getAll();
     $mission = $missions[0];
     $this->assertEquals(1, MissionsUtil::hasUserReadMissionLatest($mission, $super));
     $this->assertEquals(1, MissionsUtil::hasUserReadMissionLatest($mission, $steven));
     MissionsUtil::markUserHasUnreadLatest($mission, Yii::app()->user->userModel);
     $missions = Mission::getAll();
     $mission = $missions[0];
     $this->assertEquals(1, MissionsUtil::hasUserReadMissionLatest($mission, $super));
     $this->assertEquals(0, MissionsUtil::hasUserReadMissionLatest($mission, $steven));
 }