Adding addAnnouncementToAllUsersInSessions option see BT#7217

1.9.x
Julio Montoya 11 years ago
parent 61e3076ff9
commit 24565f3c1d
  1. 59
      main/announcements/announcements.inc.php
  2. 13
      main/announcements/announcements.php

@ -268,7 +268,7 @@ class AnnouncementManager {
* @param string Comment describing the attachment
* @return int false on failure, ID of the announcement on success
*/
public static function add_announcement($emailTitle, $newContent, $sent_to, $file = array(), $file_comment = null, $end_date = null) {
public static function add_announcement($emailTitle, $newContent, $sent_to, $file = array(), $file_comment = null, $end_date = null, $sendToUsersInSession = false) {
global $_course;
$tbl_announcement = Database::get_course_table(TABLE_ANNOUNCEMENT);
@ -325,6 +325,11 @@ class AnnouncementManager {
// the message is sent to everyone, so we set the group to 0
api_item_property_update($_course, TOOL_ANNOUNCEMENT, $last_id, "AnnouncementAdded", api_get_user_id(), '0');
}
if ($sendToUsersInSession) {
self::addAnnouncementToAllUsersInSessions($last_id);
}
return $last_id;
}
}
@ -333,7 +338,7 @@ class AnnouncementManager {
STORE ANNOUNCEMENT GROUP ITEM
*/
public static function add_group_announcement($emailTitle, $newContent, $to, $to_users, $file = array(), $file_comment = '') {
public static function add_group_announcement($emailTitle, $newContent, $to, $to_users, $file = array(), $file_comment = '', $sendToUsersInSession = false) {
global $_course;
// database definitions
@ -384,6 +389,11 @@ class AnnouncementManager {
}
}
}
if ($sendToUsersInSession) {
self::addAnnouncementToAllUsersInSessions($last_id);
}
return $last_id;
}
@ -403,7 +413,7 @@ class AnnouncementManager {
* @param string file comment
*
*/
public static function edit_announcement($id, $emailTitle, $newContent, $to, $file = array(), $file_comment = '') {
public static function edit_announcement($id, $emailTitle, $newContent, $to, $file = array(), $file_comment = '', $sendToUsersInSession = false) {
global $_course;
$course_id = api_get_course_int_id();
@ -434,6 +444,11 @@ class AnnouncementManager {
$sql_delete = "DELETE FROM $tbl_item_property WHERE c_id = $course_id AND ref='$id' AND tool='announcement'";
$result = Database::query($sql_delete);
if ($sendToUsersInSession) {
self::addAnnouncementToAllUsersInSessions($id);
}
// store in item_property (first the groups, then the users
if (!is_null($to)) {
@ -457,6 +472,44 @@ class AnnouncementManager {
// the message is sent to everyone, so we set the group to 0
api_item_property_update($_course, TOOL_ANNOUNCEMENT, $id, "AnnouncementUpdated", api_get_user_id(), '0');
}
}
/**
* @param int $announcementId
*/
public static function addAnnouncementToAllUsersInSessions($announcementId)
{
$courseCode = api_get_course_id();
$_course = api_get_course_info();
$sessionList = SessionManager::get_session_by_course(api_get_course_id());
if (!empty($sessionList)) {
foreach ($sessionList as $sessionInfo) {
$sessionId = $sessionInfo['id'];
$userList = CourseManager::get_user_list_from_course_code($courseCode, $sessionId);
if (!empty($userList)) {
foreach ($userList as $user) {
api_item_property_update(
$_course,
TOOL_ANNOUNCEMENT,
$announcementId,
"AnnouncementUpdated",
api_get_user_id(),
0,
$user['user_id'],
0,
0,
$sessionId
);
}
}
}
}
}
/*

@ -355,13 +355,14 @@ if (api_is_allowed_to_edit(false,true) OR (api_get_course_setting('allow_user_ed
$error_message = get_lang('TitleIsRequired');
$content_to_modify = $newContent;
} else if ($submitAnnouncement) {
$sendToUsersInSession = isset($_POST['send_to_users_in_session']) ? true : false;
if (isset($id) && $id) {
// there is an Id => the announcement already exists => update mode
if ($ctok == $_POST['sec_token']) {
$file_comment = $_POST['file_comment'];
$file = $_FILES['user_upload'];
AnnouncementManager::edit_announcement($id, $emailTitle, $newContent, $_POST['selectedform'], $file, $file_comment);
AnnouncementManager::edit_announcement($id, $emailTitle, $newContent, $_POST['selectedform'], $file, $file_comment, $sendToUsersInSession);
/* MAIL FUNCTION */
if ($_POST['email_ann'] && empty($_POST['onlyThoseMails'])) {
@ -375,9 +376,9 @@ if (api_is_allowed_to_edit(false,true) OR (api_get_course_setting('allow_user_ed
$file = $_FILES['user_upload'];
$file_comment = $_POST['file_comment'];
if (!empty($group_id)) {
$insert_id = AnnouncementManager::add_group_announcement($safe_emailTitle, $safe_newContent, array('GROUP:'.$group_id), $_POST['selectedform'], $file, $file_comment);
$insert_id = AnnouncementManager::add_group_announcement($safe_emailTitle, $safe_newContent, array('GROUP:'.$group_id), $_POST['selectedform'], $file, $file_comment, $sendToUsersInSession);
} else {
$insert_id = AnnouncementManager::add_announcement($safe_emailTitle, $safe_newContent, $_POST['selectedform'], $file, $file_comment);
$insert_id = AnnouncementManager::add_announcement($safe_emailTitle, $safe_newContent, $_POST['selectedform'], $file, $file_comment, $sendToUsersInSession);
}
//store_resources($_SESSION['source_type'],$insert_id);
$_SESSION['select_groupusers']="hide";
@ -646,6 +647,10 @@ if ($display_form) {
echo ' </div>
</div>';
echo '<div class="control-group"><div class="controls">';
echo '<label class="checkbox" ><input name="send_to_users_in_session" type="checkbox" />'.get_lang('SendToUsersInSessions').'</label>';
echo '</div></div>';
if (!isset($announcement_to_modify) ) $announcement_to_modify ='';
($email_ann=='1')?$checked='checked':$checked='';
@ -711,7 +716,7 @@ if ($display_form) {
echo $oFCKeditor->CreateHtml();
echo '</div></div>';
//File attachment
//File attachment
echo ' <div class="control-group">
<div class="controls">
<a href="javascript://" onclick="return plus_attachment();"><span id="plus"><img style="vertical-align:middle;" src="../img/div_show.gif" alt="" />&nbsp;'.get_lang('AddAnAttachment').'</span></a>

Loading…
Cancel
Save