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)); }
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)); }