/** * @covers getTaskSubscribers */ public function testGetTaskSubscribers() { $user = User::getByUsername('steven'); $tasks = Task::getByName('MyTest'); $task = $tasks[0]; $subscribers = TasksUtil::getTaskSubscribers($task); $found = false; foreach ($subscribers as $subscriber) { if ($subscriber->id == $user->id) { $found = true; } } $this->assertTrue($found); }
/** * Gets notification subscribers * @param Task $task * @param $action * @param User $relatedUser * @return array */ public static function resolvePeopleToSendNotification(Task $task, $action, User $relatedUser = null) { assert('is_string($action)'); $peopleToSendNotification = array(); if ($action == self::TASK_NEW || $action == self::TASK_OWNER_CHANGE || $action == self::TASK_STATUS_BECOMES_REJECTED) { $peopleToSendNotification[] = $task->owner; } elseif ($action == self::TASK_STATUS_BECOMES_AWAITING_ACCEPTANCE) { $peopleToSendNotification[] = $task->requestedByUser; } elseif ($action == self::TASK_STATUS_BECOMES_COMPLETED || $action == self::TASK_NEW_COMMENT) { $peopleToSendNotification = TasksUtil::getTaskSubscribers($task); if ($action == self::TASK_NEW_COMMENT && $relatedUser != null) { foreach ($peopleToSendNotification as $key => $person) { if ($person->getClassId('Item') == $relatedUser->getClassId('Item')) { unset($peopleToSendNotification[$key]); } } } if ($action == self::TASK_STATUS_BECOMES_COMPLETED && Yii::app()->user->userModel->id == $task->owner->id) { foreach ($peopleToSendNotification as $key => $person) { if ($person->getClassId('Item') == $task->owner->getClassId('Item')) { unset($peopleToSendNotification[$key]); } } } } return $peopleToSendNotification; }
/** * Resolve and render task card details subscribers content * @param Task $task * @return type */ public static function resolveAndRenderTaskCardDetailsSubscribersContent(Task $task) { $content = null; $subscribedUsers = TasksUtil::getTaskSubscribers($task); foreach ($subscribedUsers as $user) { if ($user->isSame($task->owner)) { $content .= TasksUtil::renderSubscriberImageAndLinkContent($user, 20, 'task-owner'); break; } } //To take care of the case of duplicates $addedSubscribers = array(); foreach ($subscribedUsers as $user) { if (!$user->isSame($task->owner)) { if (!in_array($user->id, $addedSubscribers)) { $content .= TasksUtil::renderSubscriberImageAndLinkContent($user, 20); $addedSubscribers[] = $user->id; } } } return $content; }