public function actionDetails($id) { $conversation = static::getModelAndCatchNotFoundAndDisplayError('Conversation', intval($id)); ControllerSecurityUtil::resolveAccessCanCurrentUserReadModel($conversation); AuditEvent::logAuditEvent('ZurmoModule', ZurmoModule::AUDIT_EVENT_ITEM_VIEWED, array(strval($conversation), 'ConversationsModule'), $conversation); ConversationsUtil::markUserHasReadLatest($conversation, Yii::app()->user->userModel); $detailsView = new ConversationDetailsView($this->getId(), $this->getModule()->getId(), $conversation); $conversationsMashableInboxUrl = Yii::app()->createUrl('mashableInbox/default/list', array('modelClassName' => 'Conversation')); $breadcrumbLinks = array(Zurmo::t('ConversationsModule', 'Conversations') => $conversationsMashableInboxUrl, StringUtil::getChoppedStringContent(strval($conversation), 25)); $view = new ConversationsPageView(ZurmoDefaultViewUtil::makeViewWithBreadcrumbsForCurrentUser($this, $detailsView, $breadcrumbLinks, 'ConversationBreadCrumbView')); echo $view->render(); }
public function resolveMarkUnread($modelId) { assert('$modelId > 0'); $modelClassName = $this->getModelClassName(); $model = $modelClassName::getById($modelId); ConversationsUtil::markUserHasReadLatest($model, Yii::app()->user->userModel, false); }
public function testMarkUserHasReadLatest() { $super = User::getByUsername('super'); $steven = UserTestHelper::createBasicUser('steven'); $conversation = new Conversation(); $conversation->owner = $super; $conversation->subject = 'My test subject'; $conversation->description = 'My test description'; $this->assertTrue($conversation->save()); $explicitReadWriteModelPermissions = ExplicitReadWriteModelPermissionsUtil::makeBySecurableItem($conversation); $postData = array(); $postData['itemIds'] = $steven->getClassId('Item'); ConversationParticipantsUtil::resolveConversationHasManyParticipantsFromPost($conversation, $postData, $explicitReadWriteModelPermissions); $this->assertTrue($conversation->save()); $success = ExplicitReadWriteModelPermissionsUtil::resolveExplicitReadWriteModelPermissions($conversation, $explicitReadWriteModelPermissions); $this->assertTrue($success); $id = $conversation->id; $conversation->forget(); unset($conversation); $conversation = Conversation::getById($id); $this->assertEquals(1, $conversation->ownerHasReadLatest); $this->assertEquals(0, $conversation->conversationParticipants->offsetGet(0)->hasReadLatest); //After running for super, nothing will change. ConversationsUtil::markUserHasReadLatest($conversation, $super); $id = $conversation->id; $conversation->forget(); unset($conversation); $conversation = Conversation::getById($id); $this->assertEquals(1, $conversation->ownerHasReadLatest); $this->assertEquals(0, $conversation->conversationParticipants->offsetGet(0)->hasReadLatest); //After running for steven, it will show read for him. ConversationsUtil::markUserHasReadLatest($conversation, $steven); $id = $conversation->id; $conversation->forget(); unset($conversation); $conversation = Conversation::getById($id); $this->assertEquals(1, $conversation->ownerHasReadLatest); $this->assertEquals(1, $conversation->conversationParticipants->offsetGet(0)->hasReadLatest); $conversation->ownerHasReadLatest = false; $this->assertTrue($conversation->save()); $id = $conversation->id; $conversation->forget(); unset($conversation); $conversation = Conversation::getById($id); $this->assertEquals(0, $conversation->ownerHasReadLatest); $this->assertEquals(1, $conversation->conversationParticipants->offsetGet(0)->hasReadLatest); //Now try for Steven, nothing changes ConversationsUtil::markUserHasReadLatest($conversation, $steven); $id = $conversation->id; $conversation->forget(); unset($conversation); $conversation = Conversation::getById($id); $this->assertEquals(0, $conversation->ownerHasReadLatest); $this->assertEquals(1, $conversation->conversationParticipants->offsetGet(0)->hasReadLatest); //Now try for super, should change ConversationsUtil::markUserHasReadLatest($conversation, $super); $id = $conversation->id; $conversation->forget(); unset($conversation); $conversation = Conversation::getById($id); $this->assertEquals(1, $conversation->ownerHasReadLatest); $this->assertEquals(1, $conversation->conversationParticipants->offsetGet(0)->hasReadLatest); }