@ -153,11 +153,17 @@ class AnnouncementManager
/**
* Deletes an announcement
* @param array $_course the course array
* @param int $id the announcement id
* @param int $id the announcement id
*/
public static function delete_announcement($_course, $id)
{
api_item_property_update($_course, TOOL_ANNOUNCEMENT, $id, 'delete', api_get_user_id());
api_item_property_update(
$_course,
TOOL_ANNOUNCEMENT,
$id,
'delete',
api_get_user_id()
);
}
/**
@ -387,13 +393,13 @@ class AnnouncementManager
/**
* Store an announcement in the database (including its attached file if any)
* @param string Announcement title (pure text)
* @param string Content of the announcement (can be HTML)
* @param int Display order in the list of announcements
* @param array Array of users and groups to send the announcement to
* @param array uploaded file $_FILES
* @param string Comment describing the attachment
* @param bool $sendToUsersInSession
* @param string $emailTitle Announcement title (pure text)
* @param string $newContent Content of the announcement (can be HTML)
* @param array $sentTo Array of users and groups to send the announcement to
* @param array $file uploaded file $_FILES
* @param string $file_comment Comment describing the attachment
* @param string $end_date
* @param bool $sendToUsersInSession
* @return int false on failure, ID of the announcement on success
*/
public static function add_announcement(
@ -458,8 +464,11 @@ class AnnouncementManager
} else {
$send_to = CourseManager::separateUsersGroups($sentTo);
$batchSize = 20;
$em = Database::getManager();
// Storing the selected groups
if (is_array($send_to['groups']) & & !empty($send_to['groups'])) {
$counter = 1;
foreach ($send_to['groups'] as $group) {
api_item_property_update(
$_course,
@ -469,11 +478,18 @@ class AnnouncementManager
api_get_user_id(),
$group
);
if (($counter % $batchSize) === 0) {
$em->flush();
$em->clear();
}
$counter++;
}
}
// Storing the selected users
if (is_array($send_to['users'])) {
$counter = 1;
foreach ($send_to['users'] as $user) {
api_item_property_update(
$_course,
@ -484,6 +500,12 @@ class AnnouncementManager
'',
$user
);
if (($counter % $batchSize) === 0) {
$em->flush();
$em->clear();
}
$counter++;
}
}
}
@ -1206,8 +1228,11 @@ class AnnouncementManager
* @param bool $sendToUsersInSession
* @param bool $sendToDrhUsers
*/
public static function send_email($id, $sendToUsersInSession = false, $sendToDrhUsers = false)
{
public static function send_email(
$id,
$sendToUsersInSession = false,
$sendToDrhUsers = false
) {
$email = AnnouncementEmail::create(null, $id);
$email->send($sendToUsersInSession, $sendToDrhUsers);
}
@ -1278,7 +1303,7 @@ class AnnouncementManager
//if (!empty($user_id)) {
if (0) {
if (is_array($group_memberships) & & count($group_memberships) > 0 ) {
if (is_array($group_memberships) & & count($group_memberships) > 0) {
$sql = "SELECT $select
FROM $tbl_announcement announcement, $tbl_item_property ip
WHERE
@ -1325,7 +1350,6 @@ class AnnouncementManager
ORDER BY display_order DESC";
//GROUP BY ip.ref
} else {
// A.3 you are a course admin without any group or user filter
// A.3.a you are a course admin without user or group filter but WITH studentview
// => see all the messages of all the users and groups without editing possibilities
@ -1402,7 +1426,6 @@ class AnnouncementManager
AND ip.visibility='1'
ORDER BY display_order DESC";
} else {
if ($user_id) {
if ($allowUserEditSetting & & !api_is_anonymous()) {
$cond_user_id = " AND (
@ -1426,7 +1449,6 @@ class AnnouncementManager
AND ip.visibility='1'
AND announcement.session_id IN(0, ".$session_id.")
ORDER BY display_order DESC";
} else {
if (($allowUserEditSetting & & !api_is_anonymous())) {
$cond_user_id = " AND (
@ -1691,7 +1713,7 @@ class AnnouncementManager
}
// the user is not identiefied => show only the general announcements
$sql="SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id
$sql = "SELECT announcement.*, ip.visibility, ip.to_group_id, ip.insert_user_id
FROM $tbl_announcement announcement, $tbl_item_property ip
WHERE
announcement.c_id = $course_id AND