Example #1
0
 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);
 }