Couse Announcement: Fix send to all user in session and requested changes

pull/3928/head
Tony ID 4 years ago
parent 4355c0d5ec
commit f181a555f7
  1. 57
      main/announcements/announcements.php
  2. 18
      main/cron/course_announcement.php

@ -625,7 +625,6 @@ switch ($action) {
if (empty($sessionId)) {
if ($announcementScheduledByDate) {
$extraField = new ExtraField('course_announcement');
$extraFieldValue = new ExtraFieldValue('course_announcement');
$extra = $extraField->addElements(
$form,
@ -769,8 +768,27 @@ switch ($action) {
// Send mail
$messageSentTo = [];
if (isset($_POST['email_ann']) && empty($_POST['onlyThoseMails'])) {
if ($data['extra_send_notification_at_a_specific_date']['extra_send_notification_at_a_specific_date'] == 0) {
if ($announcementScheduledByDate) {
if (isset($_POST['email_ann']) && empty($_POST['onlyThoseMails'])) {
if ($data['extra_send_notification_at_a_specific_date']['extra_send_notification_at_a_specific_date'] == 0) {
$messageSentTo = AnnouncementManager::sendEmail(
api_get_course_info(),
api_get_session_id(),
$id,
$sendToUsersInSession,
isset($data['send_to_hrm_users'])
);
} else {
$extraFieldValue = new ExtraFieldValue('course_announcement');
$extraFieldValue->saveFieldValues($data);
}
} else {
$extraFieldValue = new ExtraFieldValue('course_announcement');
$extraFieldValue->deleteValuesByItem($id);
}
} else {
if (isset($_POST['email_ann']) && empty($_POST['onlyThoseMails'])) {
$messageSentTo = AnnouncementManager::sendEmail(
api_get_course_info(),
api_get_session_id(),
@ -778,13 +796,7 @@ switch ($action) {
$sendToUsersInSession,
isset($data['send_to_hrm_users'])
);
} else {
$extraFieldValue = new ExtraFieldValue('course_announcement');
$extraFieldValue->saveFieldValues($data);
}
} else {
$extraFieldValue = new ExtraFieldValue('course_announcement');
$extraFieldValue->deleteValuesByItem($id);
}
if ($sendMeCopy && !in_array(api_get_user_id(), $messageSentTo)) {
@ -842,19 +854,32 @@ switch ($action) {
// Send mail
$messageSentTo = [];
if (isset($data['email_ann']) && $data['email_ann']) {
if ($data['extra_send_notification_at_a_specific_date']['extra_send_notification_at_a_specific_date'] == 0) {
if ($announcementScheduledByDate) {
if (isset($data['email_ann']) && $data['email_ann']) {
if ($data['extra_send_notification_at_a_specific_date']['extra_send_notification_at_a_specific_date'] == 0) {
$messageSentTo = AnnouncementManager::sendEmail(
api_get_course_info(),
api_get_session_id(),
$insert_id,
$sendToUsersInSession,
isset($data['send_to_hrm_users'])
);
} else {
$extraFieldValues = new ExtraFieldValue('course_announcement');
$data['item_id'] = $insert_id;
$extraFieldValues->saveFieldValues($data);
}
}
} else {
if (isset($data['email_ann']) && $data['email_ann']) {
$messageSentTo = AnnouncementManager::sendEmail(
api_get_course_info(),
0,
api_get_session_id(),
$insert_id,
$sendToUsersInSession,
isset($data['send_to_hrm_users'])
);
} else {
$extraFieldValues = new ExtraFieldValue('course_announcement');
$data['item_id'] = $insert_id;
$extraFieldValues->saveFieldValues($data);
}
}

@ -41,7 +41,6 @@ foreach ($result as $announcement) {
$dateToSend = $extraFieldValue->get_values_by_handler_and_field_variable($announcement->getId(), 'date_to_send_notification');
if ($today >= $dateToSend['value']) {
$courseInfo = api_get_course_info_by_id($announcement->getCId());
$query = "SELECT ip FROM ChamiloCourseBundle:CItemProperty ip
WHERE ip.ref = :announcementId AND ip.course = :courseId
@ -49,11 +48,22 @@ foreach ($result as $announcement) {
$sql = Database::getManager()->createQuery($query);
$itemProperty = $sql->execute(['announcementId' => $announcement->getId(), 'courseId' => $announcement->getCId()]);
$sessionName = $itemProperty[0]->getSession();
$courseInfo = api_get_course_info_by_id($announcement->getCId());
$sessionId = (int) SessionManager::get_session_by_name($sessionName)['id'];
$senderId = $itemProperty[0]->getInsertUser()->getId();
$sendToUsersInSession = (bool) $extraFieldValue->get_values_by_handler_and_field_variable($announcement->getId(), 'send_to_users_in_session');
$sendToUsersInSession = (int) $extraFieldValue->get_values_by_handler_and_field_variable($announcement->getId(), 'send_to_users_in_session')['value'];
$email = new AnnouncementEmail($courseInfo, 0, $announcement->getId());
$sendTo = $email->send($sendToUsersInSession, false, $senderId);
$messageSentTo = AnnouncementManager::sendEmail(
$courseInfo,
$sessionId,
$announcement->getId(),
$sendToUsersInSession,
false,
null,
$senderId
);
}
}
}

Loading…
Cancel
Save