|
|
|
@ -17,8 +17,7 @@ class AnnouncementEmail |
|
|
|
|
* |
|
|
|
|
* @return AnnouncementEmail |
|
|
|
|
*/ |
|
|
|
|
public static function create($course, $announcement) |
|
|
|
|
{ |
|
|
|
|
public static function create($course, $announcement) { |
|
|
|
|
return new self($course, $announcement); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -26,8 +25,7 @@ class AnnouncementEmail |
|
|
|
|
protected $announcement = null; |
|
|
|
|
public $session_id = null; |
|
|
|
|
|
|
|
|
|
function __construct($course, $announcement) |
|
|
|
|
{ |
|
|
|
|
function __construct($course, $announcement) { |
|
|
|
|
if (empty($course)) { |
|
|
|
|
$course = api_get_course_int_id(); |
|
|
|
|
$course = CourseManager::get_course_information_by_id($course); |
|
|
|
@ -36,9 +34,9 @@ class AnnouncementEmail |
|
|
|
|
} |
|
|
|
|
$this->course = $course; |
|
|
|
|
$this->session_id = api_get_session_id(); |
|
|
|
|
|
|
|
|
|
if (is_numeric($announcement)) { |
|
|
|
|
$announcement = AnnouncementManager::get_by_id($course['real_id'], $announcement); |
|
|
|
|
|
|
|
|
|
if (is_numeric($announcement)) { |
|
|
|
|
$announcement = AnnouncementManager::get_by_id($course['real_id'], $announcement); |
|
|
|
|
} |
|
|
|
|
$this->announcement = $announcement; |
|
|
|
|
} |
|
|
|
@ -49,8 +47,7 @@ class AnnouncementEmail |
|
|
|
|
* @param string $key |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
public function course($key = '') |
|
|
|
|
{ |
|
|
|
|
public function course($key = '') { |
|
|
|
|
$result = $key ? $this->course[$key] : $this->course; |
|
|
|
|
$result = $key == 'id' ? intval($result) : $result; |
|
|
|
|
return $result; |
|
|
|
@ -62,8 +59,7 @@ class AnnouncementEmail |
|
|
|
|
* @param string $key |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
public function announcement($key = '') |
|
|
|
|
{ |
|
|
|
|
public function announcement($key = '') { |
|
|
|
|
$result = $key ? $this->announcement[$key] : $this->announcement; |
|
|
|
|
$result = $key == 'id' ? intval($result) : $result; |
|
|
|
|
return $result; |
|
|
|
@ -75,8 +71,7 @@ class AnnouncementEmail |
|
|
|
|
* |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
public function all_users() |
|
|
|
|
{ |
|
|
|
|
public function all_users() { |
|
|
|
|
$course_code = $this->course('code'); |
|
|
|
|
if (empty($this->session_id)) { |
|
|
|
|
$group_id = api_get_group_id(); |
|
|
|
@ -91,7 +86,7 @@ class AnnouncementEmail |
|
|
|
|
$user_list = $new_user_list; |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$user_list = CourseManager::get_user_list_from_course_code($course_code, $this->session_id); |
|
|
|
|
$user_list = CourseManager::get_user_list_from_course_code($course_code, $this->session_id); |
|
|
|
|
} |
|
|
|
|
return $user_list; |
|
|
|
|
} |
|
|
|
@ -101,8 +96,7 @@ class AnnouncementEmail |
|
|
|
|
* |
|
|
|
|
* @return array Array of users and groups to whom the element has been sent |
|
|
|
|
*/ |
|
|
|
|
public function sent_to_info() |
|
|
|
|
{ |
|
|
|
|
public function sent_to_info() { |
|
|
|
|
$result = array(); |
|
|
|
|
$result['groups'] = array(); |
|
|
|
|
$result['users'] = array(); |
|
|
|
@ -139,30 +133,29 @@ class AnnouncementEmail |
|
|
|
|
* |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
public function sent_to() |
|
|
|
|
{ |
|
|
|
|
public function sent_to() { |
|
|
|
|
$sent_to = $this->sent_to_info(); |
|
|
|
|
$users = $sent_to['users']; |
|
|
|
|
$users = $users ? $users : array(); |
|
|
|
|
$groups = $sent_to['groups']; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($users) { |
|
|
|
|
$users = UserManager::get_user_list_by_ids($users, true); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!empty($groups)) { |
|
|
|
|
$group_users = GroupManager::get_groups_users($groups); |
|
|
|
|
$group_users = UserManager::get_user_list_by_ids($group_users, true); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!empty($group_users)) { |
|
|
|
|
$users = array_merge($users, $group_users); |
|
|
|
|
$users = array_merge($users, $group_users); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (empty($users)) { |
|
|
|
|
$users = self::all_users(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Clean users just in case |
|
|
|
|
$new_list_users = array(); |
|
|
|
|
if (!empty($users)) { |
|
|
|
@ -179,8 +172,7 @@ class AnnouncementEmail |
|
|
|
|
* @param string $key |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
public function sender($key = '') |
|
|
|
|
{ |
|
|
|
|
public function sender($key = '') { |
|
|
|
|
global $_user; |
|
|
|
|
return $key ? $_user[$key] : $_user; |
|
|
|
|
} |
|
|
|
@ -190,9 +182,8 @@ class AnnouncementEmail |
|
|
|
|
* |
|
|
|
|
* @return string |
|
|
|
|
*/ |
|
|
|
|
public function subject() |
|
|
|
|
{ |
|
|
|
|
$result = $this->course('title') . ' - ' . $this->announcement('title'); |
|
|
|
|
public function subject() { |
|
|
|
|
$result = $this->course('title').' - '.$this->announcement('title'); |
|
|
|
|
$result = stripslashes($result); |
|
|
|
|
return $result; |
|
|
|
|
} |
|
|
|
@ -202,8 +193,7 @@ class AnnouncementEmail |
|
|
|
|
* |
|
|
|
|
* @return string |
|
|
|
|
*/ |
|
|
|
|
public function message() |
|
|
|
|
{ |
|
|
|
|
public function message() { |
|
|
|
|
$title = $this->announcement('title'); |
|
|
|
|
$title = stripslashes($title); |
|
|
|
|
|
|
|
|
@ -211,19 +201,19 @@ class AnnouncementEmail |
|
|
|
|
$content = stripslashes($content); |
|
|
|
|
$content = AnnouncementManager::parse_content($content, $this->course('code')); |
|
|
|
|
|
|
|
|
|
$user_email = $this->sender('mail'); |
|
|
|
|
$user_email = $this->sender('mail'); |
|
|
|
|
$course_param = api_get_cidreq(); |
|
|
|
|
$course_name = $this->course('title'); |
|
|
|
|
|
|
|
|
|
$course_name = $this->course('title'); |
|
|
|
|
|
|
|
|
|
$result = "<div>$content</div>"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Adding attachment |
|
|
|
|
$attachment = $this->attachement(); |
|
|
|
|
$attachment = $this->attachement(); |
|
|
|
|
if (!empty($attachment)) { |
|
|
|
|
$result .= '<br />'; |
|
|
|
|
$result .= Display::url($attachment['filename'], api_get_path(WEB_CODE_PATH).'announcements/download.php?file='.basename($attachment['path']).'&'.$course_param).'<br />'; |
|
|
|
|
$result .= '<br />'; |
|
|
|
|
$result .= Display::url($attachment['filename'], api_get_path(WEB_CODE_PATH).'announcements/download.php?file='.basename($attachment['path']).'&'.$course_param).'<br />'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$result .= '<hr />'; |
|
|
|
|
$sender_name = api_get_person_name($this->sender('firstName'), $this->sender('lastName'), PERSON_NAME_EMAIL_ADDRESS); |
|
|
|
|
$result .= '<a href="mailto:'.$user_email.'">'.$sender_name.'</a><br/>'; |
|
|
|
@ -236,8 +226,7 @@ class AnnouncementEmail |
|
|
|
|
* |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
public function attachement() |
|
|
|
|
{ |
|
|
|
|
public function attachement() { |
|
|
|
|
$result = array(); |
|
|
|
|
$tbl_announcement_attachment = Database::get_course_table(TABLE_ANNOUNCEMENT_ATTACHMENT); |
|
|
|
|
$id = $this->announcement('id'); |
|
|
|
@ -246,7 +235,7 @@ class AnnouncementEmail |
|
|
|
|
$rs = Database::query($sql); |
|
|
|
|
$course_path = $this->course('directory'); |
|
|
|
|
while ($row = Database::fetch_array($rs)) { |
|
|
|
|
$path = api_get_path(SYS_COURSE_PATH) . $course_path . '/upload/announcements/' . $row['path']; |
|
|
|
|
$path = api_get_path(SYS_COURSE_PATH).$course_path.'/upload/announcements/'.$row['path']; |
|
|
|
|
$filename = $row['filename']; |
|
|
|
|
$result[] = array('path' => $path, 'filename' => $filename); |
|
|
|
|
} |
|
|
|
@ -258,15 +247,14 @@ class AnnouncementEmail |
|
|
|
|
/** |
|
|
|
|
* Send emails to users. |
|
|
|
|
*/ |
|
|
|
|
public function send() |
|
|
|
|
{ |
|
|
|
|
$sender = $this->sender(); |
|
|
|
|
public function send() { |
|
|
|
|
$sender = $this->sender(); |
|
|
|
|
$subject = $this->subject(); |
|
|
|
|
$message = $this->message(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Send email one by one to avoid antispam |
|
|
|
|
$users = $this->sent_to(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach ($users as $user) { |
|
|
|
|
MessageManager::send_message_simple($user['user_id'], $subject, $message, $sender['user_id']); |
|
|
|
|
} |
|
|
|
@ -276,8 +264,7 @@ class AnnouncementEmail |
|
|
|
|
/** |
|
|
|
|
* Store that emails where sent |
|
|
|
|
*/ |
|
|
|
|
public function log_mail_sent() |
|
|
|
|
{ |
|
|
|
|
public function log_mail_sent() { |
|
|
|
|
$id = $this->announcement('id'); |
|
|
|
|
$course_id = $this->course('id'); |
|
|
|
|
|
|
|
|
@ -285,5 +272,4 @@ class AnnouncementEmail |
|
|
|
|
$sql = "UPDATE $tbl_announcement SET email_sent=1 WHERE c_id = $course_id AND id=$id AND session_id = {$this->session_id} "; |
|
|
|
|
Database::query($sql); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |