Procházet zdrojové kódy

Adding addAnnouncementToAllUsersInSessions option see BT#7217

Julio Montoya před 11 roky
rodič
revize
24565f3c1d

+ 56 - 3
main/announcements/announcements.inc.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
+                        );
+                    }
+                }
+            }
+        }
+
     }
 
     /*

+ 9 - 4
main/announcements/announcements.php

@@ -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>