Feature #272 - Mailing: Corrections for the announcement tool. Still there are bugs, they should be fixed later.

skala
Ivan Tcholakov 15 years ago
parent c088a21b36
commit 5abff4192c
  1. 108
      main/announcements/announcements.inc.php
  2. 4
      main/announcements/announcements.php

@ -125,9 +125,9 @@ function show_to_form($to_already_selected)
"\n\t\t<input type=\"button\"",
"onClick=\"javascript: move(this.form.elements[3],this.form.elements[0])\" ",
"value=\" << \">";*/
?>
<button class="arrowr" type="button" onClick="javascript: move(this.form.elements[0], this.form.elements[3])" onClick="javascript: move(this.form.elements[0], this.form.elements[3])"></button>
<button class="arrowr" type="button" onClick="javascript: move(this.form.elements[0], this.form.elements[3])" onClick="javascript: move(this.form.elements[0], this.form.elements[3])"></button>
<br /> <br />
<button class="arrowl" type="button" onClick="javascript: move(this.form.elements[3], this.form.elements[0])" onClick="javascript: move(this.form.elements[3], this.form.elements[0])"></button>
<?php
@ -294,12 +294,12 @@ function show_to_form_group($group_id)
"\n\t\t<input type=\"button\"",
"onClick=\"move(this.form.elements[4],this.form.elements[1])\" ",
"value=\" << \">";*/
?>
<button class="arrowr" type="button" onClick="javascript: move(this.form.elements[1], this.form.elements[4])" onClick="javascript: move(this.form.elements[1], this.form.elements[4])"></button>
<button class="arrowr" type="button" onClick="javascript: move(this.form.elements[1], this.form.elements[4])" onClick="javascript: move(this.form.elements[1], this.form.elements[4])"></button>
<br /> <br />
<button class="arrowl" type="button" onClick="javascript: move(this.form.elements[4], this.form.elements[1])" onClick="javascript: move(this.form.elements[4], this.form.elements[1])"></button>
<?php
<?php
echo "\t\t</td>\n";
echo "\n\t\t<td>\n";
@ -542,8 +542,8 @@ function to_javascript()
cbList[i].selected = !(cbList[i].selected)
}
}
function plus_attachment() {
if (document.getElementById('options').style.display == 'none') {
document.getElementById('options').style.display = 'block';
@ -553,10 +553,10 @@ function plus_attachment() {
document.getElementById('plus').innerHTML='&nbsp;<img style=\"vertical-align:middle;\" src=\"../img/div_show.gif\" alt=\"\" />&nbsp;".get_lang('AddAnAttachment')."';
}
}
// End -->
</script>";
}
@ -692,7 +692,7 @@ function separate_users_groups($to)
* has been sent to
* @param string The tool (announcement, agenda, ...)
* @param int ID of the element of the corresponding type
* @return array Array of users and groups to whom the element has been sent
* @return array Array of users and groups to whom the element has been sent
*/
function sent_to($tool, $id)
{
@ -767,7 +767,7 @@ function change_visibility_announcement($tool,$id)
$sql_visibility="UPDATE $tbl_item_property SET visibility='1' WHERE tool='$tool' AND ref='$id'";
}
$result=Database::query($sql_visibility,__FILE__,__LINE__);
if ($result === false) {
if ($result === false) {
return false;
}
return true;
@ -778,10 +778,10 @@ function change_visibility_announcement($tool,$id)
* @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 Array of users and groups to send the announcement to
* @param array uploaded file $_FILES
* @param string Comment describing the attachment
* @return int false on failure, ID of the announcement on success
* @return int false on failure, ID of the announcement on success
*/
function store_advalvas_item($emailTitle, $newContent, $order, $to, $file = array(), $file_comment='') {
@ -796,20 +796,20 @@ function store_advalvas_item($emailTitle, $newContent, $order, $to, $file = arra
$emailTitle = Database::escape_string($emailTitle);
$newContent = Database::escape_string($newContent);
$order = intval($order);
// store in the table announcement
$sql = "INSERT INTO $tbl_announcement SET content = '$newContent', title = '$emailTitle', end_date = NOW(), display_order ='$order', session_id=".intval($_SESSION['id_session']);
$result = Database::query($sql,__FILE__,__LINE__);
if ($result === false) {
return false;
}
//store the attach file
$last_id = Database::insert_id();
if (!empty($file)) {
$save_attachment = add_announcement_attachment_file($last_id, $file_comment, $_FILES['user_upload']);
}
// store in item_property (first the groups, then the users
if (!is_null($to)) // !is_null($to): when no user is selected we send it to everyone
{
@ -845,30 +845,30 @@ function store_advalvas_group_item($emailTitle,$newContent, $order, $to, $to_use
global $_course;
global $nameTools;
global $_user;
// database definitions
$tbl_announcement = Database::get_course_table(TABLE_ANNOUNCEMENT);
$tbl_item_property = Database::get_course_table(TABLE_ITEM_PROPERTY);
$newContent=stripslashes($newContent);
$emailTitle = Database::escape_string($emailTitle);
$newContent = Database::escape_string($newContent);
$order = intval($order);
// store in the table announcement
$sql = "INSERT INTO $tbl_announcement SET content = '$newContent', title = '$emailTitle', end_date = NOW(), display_order ='$order', session_id=".intval($_SESSION['id_session']);
$result = Database::query($sql,__FILE__,__LINE__) or die (mysql_error());
if ($result === false) {
return false;
}
//store the attach file
$last_id = Database::insert_id();
if (empty($file)) {
$save_attachment = add_announcement_attachment_file($last_id, $file_comment, $file);
$save_attachment = add_announcement_attachment_file($last_id, $file_comment, $file);
}
// store in item_property (first the groups, then the users
if (!isset($to_users)) // !isset($to): when no user is selected we send it to everyone
{
@ -920,27 +920,27 @@ function edit_advalvas_item($id,$emailTitle,$newContent,$to,$file = array(), $fi
$emailTitle = Database::escape_string(Security::remove_XSS($emailTitle));
$newContent = Database::escape_string(Security::remove_XSS($newContent,COURSEMANAGERLOWSECURITY));
$order = intval($order);
// store the modifications in the table announcement
$sql = "UPDATE $tbl_announcement SET content='$newContent', title = '$emailTitle' WHERE id='$id'";
$result = Database::query($sql,__FILE__,__LINE__) or die (mysql_error());
// save attachment file
// save attachment file
$row_attach = get_attachment($id);
$id_attach = intval($row_attach['id']);
if (!empty($file)) {
if (empty($id_attach)) {
add_announcement_attachment_file($id,$file_comment,$file);
} else {
edit_announcement_attachment_file($id_attach,$file,$file_comment);
}
}
}
// we remove everything from item_property for this
$sql_delete="DELETE FROM $tbl_item_property WHERE ref='$id' AND tool='announcement'";
$result = Database::query($sql_delete,__FILE__,__LINE__) or die (mysql_error());
// store in item_property (first the groups, then the users
if (!is_null($to)) // !is_null($to): when no user is selected we send it to everyone
{
@ -981,29 +981,19 @@ function edit_advalvas_item($id,$emailTitle,$newContent,$to,$file = array(), $fi
*/
function send_announcement_email($user_list, $course_code, $_course, $mail_title, $mail_content)
{
global $charset;
global $_user;
foreach ($user_list as $this_user) {
/* Header : Bericht van uw lesgever - GES ($course_code) - Morgen geen les! ($mail_title)
Body : John Doe (prenom + nom) <john_doe@hotmail.com> (email)
Morgen geen les! ($mail_title)
Morgen is er geen les, de les wordt geschrapt wegens vergadering (newContent)
*/
$mail_subject = get_lang('professorMessage').' - '.$_course['official_code'].' - '.$mail_title;
$mail_body = '['.$_course['official_code'].'] - ['.$_course['name']."]\n";
$mail_body .= api_get_person_name($this_user['firstname'], $this_user['lastname'], null, PERSON_NAME_EMAIL_ADDRESS).' <'.$this_user["email"]."> \n\n".stripslashes($mail_title)."\n\n".trim(stripslashes(api_html_entity_decode(strip_tags(str_replace(array('<p>','</p>','<br />'),array('',"\n","\n"),$mail_content)), ENT_QUOTES, $charset)))." \n\n-- \n";
$mail_body .= api_get_person_name($this_user['firstname'], $this_user['lastname'], null, PERSON_NAME_EMAIL_ADDRESS).' <'.$this_user["email"]."> \n\n".stripslashes($mail_title)."\n\n".trim(stripslashes(api_html_entity_decode(strip_tags(str_replace(array('<p>','</p>','<br />'),array('',"\n","\n"),$mail_content)), ENT_QUOTES, api_get_system_encoding())))." \n\n-- \n";
$mail_body .= api_get_person_name($_user['firstName'], $_user['lastName'], null, PERSON_NAME_EMAIL_ADDRESS).' ';
$mail_body .= '<'.$_user['mail'].">\n";
$mail_body .= $_course['official_code'].' '.$_course['name'];
//set the charset and use it for the encoding of the email - small fix, not really clean (should check the content encoding origin first)
//here we use the encoding used for the webpage where the text is encoded (ISO-8859-1 in this case)
if(empty($charset)){$charset='ISO-8859-1';}
$encoding = 'Content-Type: text/plain; charset='. $charset;
$newmail = api_mail(api_get_person_name($this_user['firstname'], $this_user['lastname'], null, PERSON_NAME_EMAIL_ADDRESS), $this_user['email'], $mail_subject, $mail_body, api_get_person_name($_SESSION['_user']['firstName'], $_SESSION['_user']['lastName'], null, PERSON_NAME_EMAIL_ADDRESS), $_SESSION['_user']['mail'], $encoding);
api_mail(api_get_person_name($this_user['firstname'], $this_user['lastname'], null, PERSON_NAME_EMAIL_ADDRESS), $this_user['email'], $mail_subject, $mail_body, api_get_person_name($_SESSION['_user']['firstName'], $_SESSION['_user']['lastName'], null, PERSON_NAME_EMAIL_ADDRESS), $_SESSION['_user']['mail']);
}
}
@ -1033,7 +1023,7 @@ function get_all_annoucement_by_user_course($course_db, $user_id)
$tbl_item_property = Database::get_course_table(TABLE_ITEM_PROPERTY, $course_db);
if (!empty($user_id) && is_numeric($user_id)) {
$user_id = intval($user_id);
$sql="SELECT DISTINCT announcement.title, announcement.content
$sql="SELECT DISTINCT announcement.title, announcement.content
FROM $tbl_announcement announcement, $tbl_item_property toolitemproperties
WHERE announcement.id = toolitemproperties.ref
AND toolitemproperties.tool='announcement'
@ -1059,8 +1049,8 @@ function get_all_annoucement_by_user_course($course_db, $user_id)
$result['content'] = $content;
$result['count'] = $i;
return $result;
}
return false;
}
return false;
}
return false;
}
@ -1078,9 +1068,9 @@ function get_all_annoucement_by_user_course($course_db, $user_id)
* @author Arthur Portugal
* @version November 2009, dokeos 1.8.6.2
*/
function get_attachment($announcement_id) {
$tbl_announcement_attachment = Database::get_course_table(TABLE_ANNOUNCEMENT_ATTACHMENT);
$announcement_id=Database::escape_string($announcement_id);
$row=array();
@ -1101,17 +1091,17 @@ function get_attachment($announcement_id) {
*/
function add_announcement_attachment_file($announcement_id, $file_comment, $file) {
global $_course;
$tbl_announcement_attachment = Database::get_course_table(TABLE_ANNOUNCEMENT_ATTACHMENT);
$return = 0;
$announcement_id = intval($announcement_id);
if (is_array($file) && $file['error'] == 0 ) {
$courseDir = $_course['path'].'/upload/announcements';
$courseDir = $_course['path'].'/upload/announcements'; // TODO: This path is obsolete. The new document repository scheme should be kept in mind here.
$sys_course_path = api_get_path(SYS_COURSE_PATH);
$updir = $sys_course_path.$courseDir;
// Try to add an extension to the file if it hasn't one
$new_file_name = add_ext_on_mime(stripslashes($file['name']), $file['type']);
// user's file name
@ -1142,15 +1132,15 @@ function add_announcement_attachment_file($announcement_id, $file_comment, $file
* @param int attach id
* @param array uploaded file $_FILES
* @param string file comment
* @return int
* @return int
*/
function edit_announcement_attachment_file($id_attach, $file, $file_comment) {
global $_course;
$tbl_announcement_attachment = Database::get_course_table(TABLE_ANNOUNCEMENT_ATTACHMENT);
$return = 0;
if (is_array($file) && $file['error'] == 0 ) {
$courseDir = $_course['path'].'/upload/announcements';
if (is_array($file) && $file['error'] == 0 ) {
$courseDir = $_course['path'].'/upload/announcements'; // TODO: This path is obsolete. The new document repository scheme should be kept in mind here.
$sys_course_path = api_get_path(SYS_COURSE_PATH);
$updir = $sys_course_path.$courseDir;
@ -1158,7 +1148,7 @@ function edit_announcement_attachment_file($id_attach, $file, $file_comment) {
$new_file_name = add_ext_on_mime(stripslashes($file['name']), $file['type']);
// user's file name
$file_name =$file ['name'];
if (!filter_extension($new_file_name)) {
$return -1;
Display :: display_error_message(get_lang('UplUnableToSaveFileFilteredExtension'));
@ -1193,8 +1183,8 @@ function delete_announcement_attachment_file($id) {
global $_course;
$tbl_announcement_attachment = Database::get_course_table(TABLE_ANNOUNCEMENT_ATTACHMENT);
$id=Database::escape_string($id);
$sql="DELETE FROM $tbl_announcement_attachment WHERE id = $id";
$id=Database::escape_string($id);
$sql="DELETE FROM $tbl_announcement_attachment WHERE id = $id";
$result=Database::query($sql, __FILE__,__LINE__);
// update item_property
//api_item_property_update($_course, 'announcement_attachment', $id,'AnnouncementAttachmentDeleted', api_get_user_id());

@ -588,7 +588,7 @@ if (api_is_allowed_to_edit(false,true) OR (api_get_course_setting('allow_user_ed
$sender_name = api_get_person_name($_SESSION['_user']['lastName'], $_SESSION['_user']['firstName'], null, PERSON_NAME_EMAIL_ADDRESS);
$email = $_SESSION['_user']['mail'];
$headers="From:$sender_name\r\nReply-to: $email\r\nContent-type: text/html; charset=iso-8859-15";
$headers="From:$sender_name\r\nReply-to: $email";
//@mail($to,$subject,$message,$headers);
//api_send_mail($to,$subject,$message,$headers);
api_mail('',$to,$subject,$message,$sender_name,$email,$headers);
@ -703,7 +703,7 @@ if (api_is_allowed_to_edit(false,true) OR (api_get_course_setting('allow_user_ed
$message=stripslashes($newContentsix);
$sender_name = api_get_person_name($_SESSION['_user']['lastName'], $_SESSION['_user']['firstName'], null, PERSON_NAME_EMAIL_ADDRESS);
$email = $_SESSION['_user']['mail'];
$headers="From:$sender_name\r\nReply-to: $email\r\nContent-type: text/html; charset=iso-8859-15";
$headers="From:$sender_name\r\nReply-to: $email";
//@mail($myrow["email"],stripslashes($emailTitle),$message,$headers);
api_mail('',$myrow["email"],stripslashes($emailTitle),$message,$sender_name,$email);
} else {

Loading…
Cancel
Save