|
|
|
@ -1,5 +1,4 @@ |
|
|
|
|
<?php |
|
|
|
|
|
|
|
|
|
/* For licensing terms, see /license.txt */ |
|
|
|
|
/** |
|
|
|
|
* Include file with functions for the announcements module. |
|
|
|
@ -39,11 +38,11 @@ class AnnouncementManager |
|
|
|
|
* @param string $course_code |
|
|
|
|
* @return mixed |
|
|
|
|
*/ |
|
|
|
|
public static function parse_content($content, $course_code) |
|
|
|
|
public static function parse_content($userId, $content, $course_code) |
|
|
|
|
{ |
|
|
|
|
$reader_info = api_get_user_info(api_get_user_id()); |
|
|
|
|
$course_info = api_get_course_info($course_code); |
|
|
|
|
$teacher_list = CourseManager::get_teacher_list_from_course_code($course_info['code']); |
|
|
|
|
$readerInfo = api_get_user_info($userId); |
|
|
|
|
$courseInfo = api_get_course_info($course_code); |
|
|
|
|
$teacher_list = CourseManager::get_teacher_list_from_course_code($courseInfo['code']); |
|
|
|
|
|
|
|
|
|
$teacher_name = ''; |
|
|
|
|
if (!empty($teacher_list)) { |
|
|
|
@ -53,51 +52,17 @@ class AnnouncementManager |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$course_link = api_get_course_url(); |
|
|
|
|
|
|
|
|
|
$data['user_name'] = $reader_info['username']; |
|
|
|
|
$data['user_firstname'] = $reader_info['firstname']; |
|
|
|
|
$data['user_lastname'] = $reader_info['lastname']; |
|
|
|
|
$courseLink = api_get_course_url(); |
|
|
|
|
$data['user_name'] = $readerInfo['username']; |
|
|
|
|
$data['user_firstname'] = $readerInfo['firstname']; |
|
|
|
|
$data['user_lastname'] = $readerInfo['lastname']; |
|
|
|
|
$data['teacher_name'] = $teacher_name; |
|
|
|
|
$data['teacher_email'] = $teacher_email; |
|
|
|
|
$data['course_title'] = $course_info['name']; |
|
|
|
|
$data['course_link'] = Display::url($course_link, $course_link); |
|
|
|
|
|
|
|
|
|
$content = str_replace(self::get_tags(), $data, $content); |
|
|
|
|
|
|
|
|
|
return $content; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* parse announcement content when sending an email. It parses only teacher data |
|
|
|
|
* @author yoselyn castillo |
|
|
|
|
* @param string content |
|
|
|
|
* @param string course code |
|
|
|
|
* @return string with the parsed content |
|
|
|
|
*/ |
|
|
|
|
public static function parseEmailContent($content, $courseCode) |
|
|
|
|
{ |
|
|
|
|
$readerInfo = api_get_user_info(api_get_user_id()); |
|
|
|
|
$courseInfo = api_get_course_info($courseCode); |
|
|
|
|
$teacherList = CourseManager::get_teacher_list_from_course_code($courseInfo['code']); |
|
|
|
|
|
|
|
|
|
$teacherName = ''; |
|
|
|
|
if (!empty($teacherList)) { |
|
|
|
|
foreach ($teacherList as $teacherData) { |
|
|
|
|
$teacherName = api_get_person_name($teacherData['firstname'], $teacherData['lastname']); |
|
|
|
|
$teacherEmail = $teacherData['email']; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$data['user_name'] = '((user_name))'; |
|
|
|
|
$data['user_firstname'] = '((user_firstname))'; |
|
|
|
|
$data['user_lastname'] = '((user_lastname))'; |
|
|
|
|
$data['teacher_name'] = $teacherName; |
|
|
|
|
$data['teacher_email'] = $teacherEmail; |
|
|
|
|
$data['course_title'] = $courseInfo['name']; |
|
|
|
|
$data['course_link'] = Display::url($course_link, $course_link); |
|
|
|
|
$data['course_link'] = Display::url($courseLink, $courseLink); |
|
|
|
|
|
|
|
|
|
$content = str_replace(self::get_tags(), $data, $content); |
|
|
|
|
|
|
|
|
|
return $content; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -172,25 +137,27 @@ class AnnouncementManager |
|
|
|
|
public static function delete_all_announcements($_course) |
|
|
|
|
{ |
|
|
|
|
$announcements = self::get_all_annoucement_by_course($_course, api_get_session_id()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach ($announcements as $annon) { |
|
|
|
|
api_item_property_update($_course, TOOL_ANNOUNCEMENT, $annon['id'], 'delete', api_get_user_id()); |
|
|
|
|
if (!empty($announcements)) { |
|
|
|
|
foreach ($announcements as $annon) { |
|
|
|
|
api_item_property_update($_course, TOOL_ANNOUNCEMENT, $annon['id'], 'delete', api_get_user_id()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Displays one specific announcement |
|
|
|
|
* @param $announcement_id, the id of the announcement you want to display |
|
|
|
|
* @param int $announcement_id, the id of the announcement you want to display |
|
|
|
|
*/ |
|
|
|
|
public static function display_announcement($announcement_id) |
|
|
|
|
{ |
|
|
|
|
if ($announcement_id != strval(intval($announcement_id))) { |
|
|
|
|
return false; |
|
|
|
|
} // potencial sql injection |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
global $charset; |
|
|
|
|
$tbl_announcement = Database::get_course_table(TABLE_ANNOUNCEMENT); |
|
|
|
|
$tbl_item_property = Database::get_course_table(TABLE_ITEM_PROPERTY); |
|
|
|
|
|
|
|
|
|
$course_id = api_get_course_int_id(); |
|
|
|
|
|
|
|
|
|
if (api_is_allowed_to_edit(false, true) || (api_get_course_setting('allow_user_edit_announcement') && !api_is_anonymous())) { |
|
|
|
@ -263,7 +230,7 @@ class AnnouncementManager |
|
|
|
|
echo "<tr><th style='text-align:right'>$modify_icons</th></tr>"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$content = self::parse_content($content, api_get_course_id()); |
|
|
|
|
$content = self::parse_content($result['to_user_id'], $content, api_get_course_id()); |
|
|
|
|
|
|
|
|
|
echo "<tr><td>$content</td></tr>"; |
|
|
|
|
|
|
|
|
@ -275,11 +242,8 @@ class AnnouncementManager |
|
|
|
|
$sent_to_icon = Display::return_icon('group.gif', get_lang('AnnounceSentToUserSelection')); |
|
|
|
|
} |
|
|
|
|
$sent_to = self::sent_to('announcement', $announcement_id); |
|
|
|
|
|
|
|
|
|
$sent_to_form = self::sent_to_form($sent_to); |
|
|
|
|
|
|
|
|
|
echo Display::tag('td', get_lang('SentTo') . ' : ' . $sent_to_form, array('class' => 'announcements_datum')); |
|
|
|
|
|
|
|
|
|
$attachment_list = self::get_attachment($announcement_id); |
|
|
|
|
|
|
|
|
|
if (count($attachment_list) > 0) { |
|
|
|
@ -302,6 +266,9 @@ class AnnouncementManager |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @return int |
|
|
|
|
*/ |
|
|
|
|
public static function get_last_announcement_order() |
|
|
|
|
{ |
|
|
|
|
$tbl_announcement = Database::get_course_table(TABLE_ANNOUNCEMENT); |
|
|
|
@ -389,15 +356,20 @@ class AnnouncementManager |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
STORE ANNOUNCEMENT GROUP ITEM |
|
|
|
|
/** |
|
|
|
|
* @param $emailTitle |
|
|
|
|
* @param $newContent |
|
|
|
|
* @param $to |
|
|
|
|
* @param $to_users |
|
|
|
|
* @param array $file |
|
|
|
|
* @param string $file_comment |
|
|
|
|
* @return bool|int |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
public static function add_group_announcement($emailTitle, $newContent, $to, $to_users, $file = array(), $file_comment = '') |
|
|
|
|
{ |
|
|
|
|
global $_course; |
|
|
|
|
|
|
|
|
|
// database definitions |
|
|
|
|
// Database definitions |
|
|
|
|
$tbl_announcement = Database::get_course_table(TABLE_ANNOUNCEMENT); |
|
|
|
|
|
|
|
|
|
$emailTitle = Database::escape_string($emailTitle); |
|
|
|
@ -448,10 +420,6 @@ class AnnouncementManager |
|
|
|
|
return $last_id; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
EDIT ANNOUNCEMENT |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* This function stores the announcement item in the announcement table |
|
|
|
|
* and updates the item_property table |
|
|
|
@ -462,7 +430,6 @@ class AnnouncementManager |
|
|
|
|
* @param array users that will receive the announcement |
|
|
|
|
* @param mixed attachment |
|
|
|
|
* @param string file comment |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
public static function edit_announcement($id, $emailTitle, $newContent, $to, $file = array(), $file_comment = '') |
|
|
|
|
{ |
|
|
|
@ -478,7 +445,7 @@ class AnnouncementManager |
|
|
|
|
|
|
|
|
|
// store the modifications in the table announcement |
|
|
|
|
$sql = "UPDATE $tbl_announcement SET content = '$newContent', title = '$emailTitle' WHERE c_id = $course_id AND id='$id'"; |
|
|
|
|
$result = Database::query($sql); |
|
|
|
|
Database::query($sql); |
|
|
|
|
|
|
|
|
|
// save attachment file |
|
|
|
|
$row_attach = self::get_attachment($id); |
|
|
|
@ -494,7 +461,7 @@ class AnnouncementManager |
|
|
|
|
|
|
|
|
|
// we remove everything from item_property for this |
|
|
|
|
$sql_delete = "DELETE FROM $tbl_item_property WHERE c_id = $course_id AND ref='$id' AND tool='announcement'"; |
|
|
|
|
$result = Database::query($sql_delete); |
|
|
|
|
Database::query($sql_delete); |
|
|
|
|
|
|
|
|
|
// store in item_property (first the groups, then the users |
|
|
|
|
|
|
|
|
@ -521,10 +488,10 @@ class AnnouncementManager |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
MAIL FUNCTIONS |
|
|
|
|
/** |
|
|
|
|
* @param int $insert_id |
|
|
|
|
* @return bool |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
public static function update_mail_sent($insert_id) |
|
|
|
|
{ |
|
|
|
|
$tbl_announcement = Database::get_course_table(TABLE_ANNOUNCEMENT); |
|
|
|
@ -563,7 +530,10 @@ class AnnouncementManager |
|
|
|
|
toolitemproperties.c_id = $course_id AND |
|
|
|
|
announcement.id = toolitemproperties.ref AND |
|
|
|
|
toolitemproperties.tool='announcement' AND |
|
|
|
|
(toolitemproperties.insert_user_id='$user_id' AND (toolitemproperties.to_group_id='0' OR toolitemproperties.to_group_id is null)) |
|
|
|
|
( |
|
|
|
|
toolitemproperties.insert_user_id='$user_id' AND |
|
|
|
|
(toolitemproperties.to_group_id='0' OR toolitemproperties.to_group_id is null) |
|
|
|
|
) |
|
|
|
|
AND toolitemproperties.visibility='1' |
|
|
|
|
AND announcement.session_id = 0 |
|
|
|
|
ORDER BY display_order DESC"; |
|
|
|
@ -587,12 +557,9 @@ class AnnouncementManager |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
SHOW_TO_FORM |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* this function shows the form for sending a message to a specific group or user. |
|
|
|
|
* This function shows the form for sending a message to a specific group or user. |
|
|
|
|
* @param $to_already_selected |
|
|
|
|
*/ |
|
|
|
|
public static function show_to_form($to_already_selected) |
|
|
|
|
{ |
|
|
|
@ -661,10 +628,6 @@ class AnnouncementManager |
|
|
|
|
echo "</table>"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
CONSTRUCT_NOT_SELECT_SELECT_FORM |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* this function shows the form for sending a message to a specific group or user. |
|
|
|
|
*/ |
|
|
|
@ -702,10 +665,6 @@ class AnnouncementManager |
|
|
|
|
echo "</select>"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
CONSTRUCT_SELECTED_SELECT_FORM |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* this function shows the form for sending a message to a specific group or user. |
|
|
|
|
*/ |
|
|
|
@ -832,11 +791,6 @@ class AnnouncementManager |
|
|
|
|
return $new_group_list; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
* |
|
|
|
|
LOAD_EDIT_USERS |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* This tools loads all the users and all the groups who have received |
|
|
|
|
* a specific item (in this case an announcement item) |
|
|
|
@ -869,10 +823,6 @@ class AnnouncementManager |
|
|
|
|
return $to; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
USER_GROUP_FILTER_JAVASCRIPT |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* returns the javascript for setting a filter |
|
|
|
|
* this goes into the $htmlHeadXtra[] array |
|
|
|
@ -890,10 +840,6 @@ class AnnouncementManager |
|
|
|
|
</script>"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
TO_JAVASCRIPT |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* returns all the javascript that is required for easily |
|
|
|
|
* setting the target people/groups |
|
|
|
@ -918,10 +864,6 @@ class AnnouncementManager |
|
|
|
|
return $result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
SENT_TO_FORM |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* constructs the form to display all the groups and users the message has been sent to |
|
|
|
|
* input: $sent_to_array is a 2 dimensional array containing the groups and the users |
|
|
|
@ -992,10 +934,6 @@ class AnnouncementManager |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
SEPARATE_USERS_GROUPS |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* This function separates the users from the groups |
|
|
|
|
* users have a value USER:XXX (with XXX the dokeos id |
|
|
|
@ -1022,10 +960,6 @@ class AnnouncementManager |
|
|
|
|
return $send_to; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
SENT_TO() |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns all the users and all the groups a specific announcement item |
|
|
|
|
* has been sent to |
|
|
|
@ -1069,8 +1003,6 @@ class AnnouncementManager |
|
|
|
|
return $sent_to; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* ATTACHMENT FUNCTIONS */ |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Show a list with all the attachments according to the post's id |
|
|
|
|
* @param int announcement id |
|
|
|
@ -1202,7 +1134,7 @@ class AnnouncementManager |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* @param $id |
|
|
|
|
* @param int $id |
|
|
|
|
*/ |
|
|
|
|
public static function send_email($id) |
|
|
|
|
{ |
|
|
|
|