All Data Structures Functions Variables Pages
ConversationsUtil.php
1 <?php
2  /*********************************************************************************
3  * Zurmo is a customer relationship management program developed by
4  * Zurmo, Inc. Copyright (C) 2017 Zurmo Inc.
5  *
6  * Zurmo is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU Affero General Public License version 3 as published by the
8  * Free Software Foundation with the addition of the following permission added
9  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
10  * IN WHICH THE COPYRIGHT IS OWNED BY ZURMO, ZURMO DISCLAIMS THE WARRANTY
11  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
12  *
13  * Zurmo is distributed in the hope that it will be useful, but WITHOUT
14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15  * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Affero General Public License along with
19  * this program; if not, see http://www.gnu.org/licenses or write to the Free
20  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA.
22  *
23  * You can contact Zurmo, Inc. with a mailing address at 27 North Wacker Drive
24  * Suite 370 Chicago, IL 60606. or at email address contact@zurmo.com.
25  *
26  * The interactive user interfaces in original and modified versions
27  * of this program must display Appropriate Legal Notices, as required under
28  * Section 5 of the GNU Affero General Public License version 3.
29  *
30  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
31  * these Appropriate Legal Notices must retain the display of the Zurmo
32  * logo and Zurmo copyright notice. If the display of the logo is not reasonably
33  * feasible for technical reasons, the Appropriate Legal Notices must display the words
34  * "Copyright Zurmo Inc. 2017. All rights reserved".
35  ********************************************************************************/
36 
41  {
48  public static function renderSubjectAndLatestForDisplayView(Conversation $conversation)
49  {
50  $url = Yii::app()->createUrl('/conversations/default/details', array('id' => $conversation->id));
51  $content = $conversation->subject;
52  $details = ZurmoHtml::tag('span', array('class' => 'list-item-details'),
53  DateTimeUtil::getTimeSinceDisplayContent($conversation->latestDateTime));
54  $link = ZurmoHtml::link($content, $url);
55  return $link . $details;
56  }
57 
63  {
64  return Conversation::getUnreadCountByUser(Yii::app()->user->userModel);
65  }
66 
74  public static function markUserHasReadLatest(Conversation $conversation, User $user, $hasReadLatest = true)
75  {
76  assert('$conversation->id > 0');
77  assert('$user->id > 0');
78  assert('is_bool($hasReadLatest)');
79  $save = false;
80  if ($user->getClassId('Item') == $conversation->owner->getClassId('Item'))
81  {
82  if ($conversation->ownerHasReadLatest != $hasReadLatest)
83  {
84  $conversation->ownerHasReadLatest = $hasReadLatest;
85  $save = true;
86  }
87  }
88  else
89  {
90  foreach ($conversation->conversationParticipants as $position => $participant)
91  {
92  if ($participant->person->getClassId('Item') == $user->getClassId('Item') && $participant->hasReadLatest != $hasReadLatest)
93  {
94  $conversation->conversationParticipants[$position]->hasReadLatest = $hasReadLatest;
95  $save = true;
96  }
97  }
98  }
99  if ($save)
100  {
101  $conversation->save();
102  }
103  }
104 
110  public static function hasUserReadConversationLatest(Conversation $conversation, User $user)
111  {
112  assert('$conversation->id > 0');
113  assert('$user->id > 0');
114  if ($user->isSame($conversation->owner))
115  {
116  return $conversation->ownerHasReadLatest;
117  }
118  else
119  {
120  foreach ($conversation->conversationParticipants as $position => $participant)
121  {
122  if ($participant->person->getClassId('Item') == $user->getClassId('Item'))
123  {
124  return $participant->hasReadLatest;
125  }
126  }
127  }
128  return false;
129  }
130 
135  public static function resolvePeopleOnConversation(Conversation $conversation)
136  {
138  $people[] = $conversation->owner;
139  return $people;
140  }
141 
149  public static function resolvePeopleToSendNotificationToOnNewComment(Conversation $conversation, User $user)
150  {
151  $peopleToSendNotification = array();
152  $peopleOnConversation = self::resolvePeopleOnConversation($conversation);
153  foreach ($peopleOnConversation as $people)
154  {
155  if (!$people->isSame($user))
156  {
157  $peopleToSendNotification[] = $people;
158  }
159  }
160  return $peopleToSendNotification;
161  }
162  }
163 ?>
static markUserHasReadLatest(Conversation $conversation, User $user, $hasReadLatest=true)
Definition: User.php:37
getClassId($modelClassName)
static resolvePeopleOnConversation(Conversation $conversation)
static getTimeSinceDisplayContent($dateTime, $durationDisplayFormat=false)
static getUnreadCountTabMenuContentForCurrentUser()
static getConversationParticipants(Conversation $conversation)
static resolvePeopleToSendNotificationToOnNewComment(Conversation $conversation, User $user)
static getUnreadCountByUser(User $user)
static renderSubjectAndLatestForDisplayView(Conversation $conversation)
isSame(RedBeanModel $model)
static hasUserReadConversationLatest(Conversation $conversation, User $user)
Generated on Sat Mar 28 2020 07:10:40