Merge pull request #4123 from AngelFQC/BT19392

Agenda: Fix update reminders in course event - refs BT#19392
pull/4127/head
Angel Fernando Quiroz Campos 4 years ago committed by GitHub
commit 6b51f1a33b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      main/calendar/agenda.php
  2. 56
      main/cron/agenda_reminders.php
  3. 21
      main/inc/lib/agenda.lib.php

@ -272,7 +272,7 @@ if ($allowToEdit) {
$endDate = $values['date_range_end'];
$sendAttachment = isset($_FILES) && !empty($_FILES);
$attachmentList = $sendAttachment ? $_FILES : null;
$attachmentList = $sendAttachment ? $_FILES : [];
$attachmentCommentList = $values['legend'] ?? '';
$comment = $values['comment'] ?? '';
$notificationCount = $_REQUEST['notification_count'] ?? [];

@ -25,10 +25,16 @@ $remindersRepo = $em->getRepository('ChamiloCoreBundle:AgendaReminder');
$reminders = $remindersRepo->findBySent(false);
$firstAdmin = current(UserManager::get_all_administrators());
foreach ($reminders as $reminder) {
if ('personal' === $reminder->getType()) {
$event = $em->find('ChamiloCoreBundle:PersonalAgenda', $reminder->getEventId());
if (null === $event) {
continue;
}
$notificationDate = clone $event->getDate();
$notificationDate->sub($reminder->getDateInterval());
@ -37,19 +43,19 @@ foreach ($reminders as $reminder) {
}
$eventDetails = [];
$eventDetails[] = '<strong>'.$event->getTitle().'</strong>';
$eventDetails[] = '<p><strong>'.$event->getTitle().'</strong></p>';
if ($event->getAllDay()) {
$eventDetails[] = get_lang('AllDay');
$eventDetails[] = '<p class="small">'.get_lang('AllDay').'</p>';
} else {
$eventDetails[] = sprintf(
get_lang('FromDateX'),
'<p class="small">'.get_lang('FromDateX').'</p>',
api_get_local_time($event->getDate(), null, null, false, true, true)
);
if (!empty($event->getEnddate())) {
$eventDetails[] = sprintf(
get_lang('UntilDateX'),
'<p class="small">'.get_lang('UntilDateX').'</p>',
api_get_local_time($event->getEnddate(), null, null, false, true, true)
);
}
@ -60,7 +66,7 @@ foreach ($reminders as $reminder) {
}
$messageSubject = sprintf(get_lang('ReminderXEvent'), $event->getTitle());
$messageContent = implode('<br />', $eventDetails);
$messageContent = implode(PHP_EOL, $eventDetails);
MessageManager::send_message_simple(
$event->getUser(),
@ -86,6 +92,11 @@ foreach ($reminders as $reminder) {
if ('course' === $reminder->getType()) {
$event = $em->find('ChamiloCourseBundle:CCalendarEvent', $reminder->getEventId());
if (null === $event) {
continue;
}
$agenda = new Agenda('course');
$notificationDate = clone $event->getStartDate();
@ -96,19 +107,19 @@ foreach ($reminders as $reminder) {
}
$eventDetails = [];
$eventDetails[] = '<strong>'.$event->getTitle().'</strong>';
$eventDetails[] = '<p><strong>'.$event->getTitle().'</strong></p>';
if ($event->getAllDay()) {
$eventDetails[] = get_lang('AllDay');
$eventDetails[] = '<p class="small">'.get_lang('AllDay').'</p>';
} else {
$eventDetails[] = sprintf(
get_lang('FromDateX'),
'<p class="small">'.get_lang('FromDateX').'</p>',
api_get_local_time($event->getStartDate(), null, null, false, true, true)
);
if (!empty($event->getEndDate())) {
$eventDetails[] = sprintf(
get_lang('UntilDateX'),
'<p class="small">'.get_lang('UntilDateX').'</p>',
api_get_local_time($event->getEndDate(), null, null, false, true, true)
);
}
@ -118,8 +129,12 @@ foreach ($reminders as $reminder) {
$eventDetails[] = $event->getContent();
}
if (!empty($event->getComment())) {
$eventDetails[] = '<p class="small">'.$event->getComment().'</p>';
}
$messageSubject = sprintf(get_lang('ReminderXEvent'), $event->getTitle());
$messageContent = implode('<br />', $eventDetails);
$messageContent = implode(PHP_EOL, $eventDetails);
$courseInfo = api_get_course_info_by_id($event->getCId());
@ -139,19 +154,34 @@ foreach ($reminders as $reminder) {
}
foreach ($userIdList as $userId) {
MessageManager::send_message_simple($userId, $messageSubject, $messageContent);
MessageManager::send_message_simple(
$userId,
$messageSubject,
$messageContent,
$firstAdmin['user_id']
);
}
} else {
foreach ($sendTo['groups'] as $groupId) {
$groupUserList = GroupManager::get_users($groupId, false, null, null, false, $event->getSessionId());
foreach ($groupUserList as $groupUserId) {
MessageManager::send_message_simple($groupUserId, $messageSubject, $messageContent);
MessageManager::send_message_simple(
$groupUserId,
$messageSubject,
$messageContent,
$firstAdmin['user_id']
);
}
}
foreach ($sendTo['users'] as $userId) {
MessageManager::send_message_simple($userId, $messageSubject, $messageContent);
MessageManager::send_message_simple(
$userId,
$messageSubject,
$messageContent,
$firstAdmin['user_id']
);
}
}
}

@ -924,7 +924,10 @@ class Agenda
return false;
}
if ($this->getIsAllowedToEdit()) {
if (!$this->getIsAllowedToEdit()) {
return false;
}
$attributes = [
'title' => $title,
'start_date' => $start,
@ -1137,6 +1140,10 @@ class Agenda
if (isset($attachmentArray) && !empty($attachmentArray)) {
$counter = 0;
foreach ($attachmentArray as $attachmentItem) {
if (empty($attachmentItems['id'])) {
continue;
}
$this->updateAttachment(
$attachmentItem['id'],
$id,
@ -1147,11 +1154,6 @@ class Agenda
$counter++;
}
}
return true;
} else {
return false;
}
break;
case 'admin':
case 'platform':
@ -1176,6 +1178,8 @@ class Agenda
}
$this->editReminders($id, $remindersList);
return true;
}
/**
@ -1473,7 +1477,10 @@ class Agenda
$id = str_replace(['personal_', 'course_', 'session_'], '', $eventInfo['id']);
$eventInfo['reminders'] = $this->parseEventReminders(
$this->getEventReminders($id, $eventInfo['type'])
$this->getEventReminders(
$id,
'session' === $eventInfo['type'] ? 'course' : $eventInfo['type']
)
);
return $eventInfo;

Loading…
Cancel
Save