Browse Source

[svn r14787] system announcement through email

Patrick Cool 17 years ago
parent
commit
545182c274

+ 2 - 1
documentation/changelog.html

@@ -36,7 +36,8 @@
     <li>in the agenda you can display the X upcoming events (can be configured by the platform admin)</li>
     <li>The course agenda now has a month view like the my agenda</li>
     <li>In the user list of the platform administration you can now quickly see for what courses the user is subscribed by hovering over the courses icon</li>
-    </ul>
+    <li>the platform system announcements can now be sent through email also</li>
+</ul>
 <br />
 <h3>Debugging</h3>
 <ul>

+ 13 - 5
main/admin/system_announcements.php

@@ -1,5 +1,5 @@
 <?php
-// $Id: system_announcements.php 13292 2007-09-27 01:59:07Z yannoo $
+// $Id: system_announcements.php 14787 2008-04-08 14:16:25Z pcool $
 /*
 ==============================================================================
 	Dokeos - elearning and course management software
@@ -44,6 +44,7 @@ include ('../inc/global.inc.php');
 require_once api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php';
 include (api_get_path(LIBRARY_PATH).'system_announcements.lib.php');
 include_once(api_get_path(LIBRARY_PATH).'WCAG/WCAG_rendering.php');
+require_once (api_get_path(LIBRARY_PATH).'mail.lib.inc.php');
 
 // setting the section (for the tabs)
 $this_section=SECTION_PLATFORM_ADMIN;
@@ -186,6 +187,7 @@ if ($action_todo)
 	$form->addElement('checkbox', 'visible_guest', null, get_lang('Guest'));
 	$form->addElement('hidden', 'action');
 	$form->addElement('hidden', 'id');
+	$form->addElement('checkbox', 'send_mail', get_lang('SendMail'));
 	$form->addElement('submit', 'submit', get_lang('Ok'));
 	if (api_get_setting('wcag_anysurfer_public_pages')=='true')
 	{
@@ -218,17 +220,23 @@ if ($action_todo)
 		switch($values['action'])
 		{
 			case 'add':
-				if(SystemAnnouncementManager::add_announcement($values['title'],$values['content'],$values['start'],$values['end'],$values['visible_teacher'],$values['visible_student'],$values['visible_guest'], $values['lang']))
+				if(SystemAnnouncementManager::add_announcement($values['title'],$values['content'],$values['start'],$values['end'],$values['visible_teacher'],$values['visible_student'],$values['visible_guest'], $values['lang'],$values['send_mail']))
+				{
 					Display :: display_normal_message(get_lang('AnnouncementAdded'));
-				else {
+				}
+				else 
+				{
 					$show_announcement_list = false;
 					$form->display();
 				}
 				break;
 			case 'edit':
-				if (SystemAnnouncementManager::update_announcement($values['id'],$values['title'],$values['content'],$values['start'],$values['end'],$values['visible_teacher'],$values['visible_student'],$values['visible_guest'], $values['lang']))
+				if (SystemAnnouncementManager::update_announcement($values['id'],$values['title'],$values['content'],$values['start'],$values['end'],$values['visible_teacher'],$values['visible_student'],$values['visible_guest'], $values['lang'],$values['send_mail']))
+				{
 					Display :: display_normal_message(get_lang('AnnouncementUpdated'));
-				else {
+				}
+				else
+				{
 					$show_announcement_list = false;
 					$form->display();
 				}

+ 40 - 2
main/inc/lib/system_announcements.lib.php

@@ -277,7 +277,7 @@ class SystemAnnouncementManager
 	 * @param string $date_start Start date (YYYY-MM-DD HH:II: SS)
 	 * @param string $date_end End date (YYYY-MM-DD HH:II: SS)
 	 */
-	function add_announcement($title, $content, $date_start, $date_end, $visible_teacher = 0, $visible_student = 0, $visible_guest = 0, $lang = null)
+	function add_announcement($title, $content, $date_start, $date_end, $visible_teacher = 0, $visible_student = 0, $visible_guest = 0, $lang = null, $send_mail=0)
 	{
 
 		$a_dateS = explode(' ',$date_start);
@@ -314,6 +314,10 @@ class SystemAnnouncementManager
 		$lang = is_null($lang) ? 'NULL' : "'".mysql_real_escape_string($lang)."'";
 		$sql = "INSERT INTO ".$db_table." (title,content,date_start,date_end,visible_teacher,visible_student,visible_guest, lang)
 												VALUES ('".$title."','".$content."','".$start."','".$end."','".$visible_teacher."','".$visible_student."','".$visible_guest."',".$lang.")";
+		if ($send_mail<>'0')
+		{
+			SystemAnnouncementManager::send_system_announcement_by_email($title, $content,$visible_teacher, $visible_student);	
+		}		
 		return api_sql_query($sql,__FILE__,__LINE__);
 	}
 	/**
@@ -324,7 +328,7 @@ class SystemAnnouncementManager
 	 * @param array $date_start: start date of announcement (0 => day ; 1 => month ; 2 => year ; 3 => hour ; 4 => minute)
 	 * @param array $date_end : end date of announcement (0 => day ; 1 => month ; 2 => year ; 3 => hour ; 4 => minute)
 	 */
-	function update_announcement($id, $title, $content, $date_start, $date_end, $visible_teacher = 0, $visible_student = 0, $visible_guest = 0,$lang=null)
+	function update_announcement($id, $title, $content, $date_start, $date_end, $visible_teacher = 0, $visible_student = 0, $visible_guest = 0,$lang=null, $send_mail=0)
 	{
 
 		$a_dateS = explode(' ',$date_start);
@@ -360,6 +364,11 @@ if (!checkdate($date_start[1], $date_start[2], $date_start[0]))
 		$id = intval($id);
 		$sql = "UPDATE ".$db_table." SET lang=$lang,title='".$title."',content='".$content."',date_start='".$start."',date_end='".$end."', ";
 		$sql .= " visible_teacher = '".$visible_teacher."', visible_student = '".$visible_student."', visible_guest = '".$visible_guest."' WHERE id='".$id."'";
+		
+		if ($send_mail<>'0')
+		{
+			SystemAnnouncementManager::send_system_announcement_by_email($title, $content,$visible_teacher, $visible_student);	
+		}
 		return api_sql_query($sql,__FILE__,__LINE__);
 	}
 	/**
@@ -400,5 +409,34 @@ if (!checkdate($date_start[1], $date_start[2], $date_start[0]))
 		$sql = "UPDATE ".$db_table." SET ".$field." = '".$visible."' WHERE id='".$announcement_id."'";
 		return api_sql_query($sql,__FILE__,__LINE__);
 	}
+	
+	function send_system_announcement_by_email($title,$content,$teacher, $student)
+	{
+		global $_user; 
+		global $_setting; 
+		$user_table = Database :: get_main_table(TABLE_MAIN_USER);
+		if ($teacher<>0 AND $student == '0')
+		{
+			$sql = "SELECT * FROM $user_table WHERE email<>'' AND status = '1'";
+		}
+		if ($teacher == '0' AND $student <> '0')
+		{
+			$sql = "SELECT * FROM $user_table WHERE email<>'' AND status = '5'";
+		}
+		if ($teacher<>'0' AND $student <> '0')
+		{
+			$sql = "SELECT * FROM $user_table WHERE email<>''";
+		}
+		if ($teacher == '0' AND $student == '0')
+		{
+			return true;
+		}
+			
+		$result = api_sql_query($sql,__FILE__,__LINE__);
+		while($row = Database::fetch_array($result,'ASSOC'))
+		{
+			api_mail_html($row['firstname'].' '.$row['lastname'], $row['email'], $title, $content, $_user['firstName'].' '.$_user['lastName'], api_get_setting('emailAdministrator'), api_get_setting('emailAdministrator'));
+		}
+	}
 }
 ?>