Portfolio: Add email_alert_teachers_student_new_comment to send notifications to teachers and the author when commenting - refs BT#18201
parent
4e97921354
commit
95923072a8
@ -0,0 +1,102 @@ |
||||
<?php |
||||
|
||||
/* For licensing terms, see /license.txt */ |
||||
|
||||
use Chamilo\CoreBundle\Entity\Course as CourseEntity; |
||||
use Chamilo\CoreBundle\Entity\PortfolioComment; |
||||
use Chamilo\CoreBundle\Entity\Session as SessionEntity; |
||||
|
||||
class PortfolioNotifier |
||||
{ |
||||
public static function notifyTeachersAndAuthor(PortfolioComment $comment) |
||||
{ |
||||
$item = $comment->getItem(); |
||||
$course = $item->getCourse(); |
||||
$session = $item->getSession(); |
||||
|
||||
$messageSubject = sprintf( |
||||
get_lang('PortfolioAlertNewCommentSubject'), |
||||
$item->getTitle(true) |
||||
); |
||||
$userIdListToSend = []; |
||||
$userIdListToSend[] = $comment->getItem()->getUser()->getId(); |
||||
|
||||
$cidreq = api_get_cidreq_params( |
||||
$course ? $course->getCode() : '', |
||||
$session ? $session->getId() : 0 |
||||
); |
||||
$commentUrl = api_get_path(WEB_CODE_PATH).'portfolio/index.php?' |
||||
.($course ? $cidreq.'&' : '') |
||||
.http_build_query(['action' => 'view', 'id' => $item->getId()])."#comment-{$comment->getId()}"; |
||||
|
||||
if ($course) { |
||||
$courseInfo = api_get_course_info($course->getCode()); |
||||
|
||||
if (1 !== (int) api_get_course_setting('email_alert_teachers_student_new_comment', $courseInfo)) { |
||||
return; |
||||
} |
||||
|
||||
$courseTitle = self::getCourseTitle($course, $session); |
||||
$userIdListToSend = array_merge( |
||||
$userIdListToSend, |
||||
self::getTeacherList($course, $session) |
||||
); |
||||
|
||||
$messageContent = sprintf( |
||||
get_lang('CoursePortfolioAlertNewCommentContent'), |
||||
$item->getTitle(), |
||||
$courseTitle, |
||||
$commentUrl |
||||
); |
||||
} else { |
||||
$messageContent = sprintf( |
||||
get_lang('PortfolioAlertNewCommentContent'), |
||||
$item->getTitle(), |
||||
$commentUrl |
||||
); |
||||
} |
||||
|
||||
$messageContent .= '<br><br><figure>' |
||||
.'<blockquote>'.$comment->getExcerpt().'</blockquote>' |
||||
.'<figcaption>'.$comment->getAuthor()->getCompleteName().'</figcaption>' |
||||
.'</figure>'; |
||||
|
||||
foreach ($userIdListToSend as $userIdToSend) { |
||||
MessageManager::send_message_simple( |
||||
$userIdToSend, |
||||
$messageSubject, |
||||
$messageContent, |
||||
0, |
||||
false, |
||||
false, |
||||
[], |
||||
false |
||||
); |
||||
} |
||||
} |
||||
|
||||
private static function getCourseTitle(CourseEntity $course, ?SessionEntity $session = null): string |
||||
{ |
||||
if ($session) { |
||||
return "{$course->getTitle()} ({$session->getName()})"; |
||||
} |
||||
|
||||
return $course->getTitle(); |
||||
} |
||||
|
||||
private static function getTeacherList(CourseEntity $course, ?SessionEntity $session = null): array |
||||
{ |
||||
if ($session) { |
||||
$teachers = SessionManager::getCoachesByCourseSession( |
||||
$session->getId(), |
||||
$course->getId() |
||||
); |
||||
|
||||
return array_values($teachers); |
||||
} |
||||
|
||||
$teachers = CourseManager::get_teacher_list_from_course_code($course->getCode()); |
||||
|
||||
return array_keys($teachers); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue