// -------------------------------- // notify users // -------------------------------- $subject_notify = "{$logo} - {$langNewForumNotify}"; $category_id = forum_category($forum_id); $cat_name = category_name($category_id); $c = course_code_to_title($course_code); $name = uid_to_name($uid); $title = course_id_to_title($course_id); $forum_message = "-------- {$langBodyMessage} ({$langSender}: {$name})\n{$message}--------"; $plain_forum_message = q(html2text($forum_message)); $body_topic_notify = "{$langBodyForumNotify} {$langInForums} '" . q($forum_name) . "' \n {$langInCat} '" . q($cat_name) . "' {$langTo} {$langCourseS} '{$c}' <br /><br />" . q($forum_message) . "<br />\n <br />{$gunet}<br /><a href='{$urlServer}courses/{$course_code}'>{$urlServer}courses/{$course_code}</a>"; $plain_body_topic_notify = "{$langBodyForumNotify} {$langInForums} '" . q($forum_name) . "' {$langInCat} '" . q($cat_name) . "' {$langTo} {$langCourseS} '{$c}' \n\n{$plain_forum_message} \n\n{$gunet}\n<a href='{$urlServer}courses/{$course_code}'>{$urlServer}courses/{$course_code}</a>"; $linkhere = " <a href='{$urlServer}main/profile/emailunsubscribe.php?cid={$course_id}'>{$langHere}</a>."; $unsubscribe = "<br /><br />{$langNote}: " . sprintf($langLinkUnsubscribe, $title); $plain_body_topic_notify .= $unsubscribe . $linkhere; $body_topic_notify .= $unsubscribe . $linkhere; $sql = Database::get()->queryArray("SELECT DISTINCT user_id FROM forum_notify\n\t\t\tWHERE (forum_id = ?d OR cat_id = ?d)\n\t\t\tAND notify_sent = 1 AND course_id = ?d AND user_id != ?d", $forum_id, $category_id, $course_id, $uid); foreach ($sql as $r) { if (get_user_email_notification($r->user_id, $course_id)) { $emailaddr = uid_to_email($r->user_id); send_mail_multipart('', '', '', $emailaddr, $subject_notify, $plain_body_topic_notify, $body_topic_notify, $charset); } } // end of notification Session::Messages($langStored, 'alert-success'); redirect_to_home_page("modules/forum/viewforum.php?course={$course_code}&forum={$forum_id}"); } else { $tool_content .= "\n <div class='form-wrapper'>\n <form class='form-horizontal' role='form' action='{$_SERVER['SCRIPT_NAME']}?course={$course_code}&topic={$topic}&forum={$forum_id}' method='post'>\n <fieldset>\n <div class='form-group'>\n <label for='subject' class='col-sm-2 control-label'>{$langSubject}:</label>\n <div class='col-sm-10'>\n <input type='text' name='subject' id='subject' class='form-control' maxlength='100'>\n </div>\n </div> \n <div class='form-group'>\n <label for='message' class='col-sm-2 control-label'>{$langBodyMessage}:</label>\n <div class='col-sm-10'>\n " . rich_text_editor('message', 14, 50, '') . "\n </div>\n </div>\n <div class='form-group'>\n <div class='col-sm-10 col-sm-offset-2'>\n <input class='btn btn-primary' type='submit' name='submit' value='{$langSubmit}'>\n <a class='btn btn-default' href='viewforum.php?course={$course_code}&forum={$forum_id}'>{$langCancel}</a>\n </div>\n </div> \n\t</fieldset>\n\t</form>\n </div>"; } draw($tool_content, 2, null, $head_content);
$user_email_status = get_mail_ver_status($uid); if ($user_email_status == EMAIL_VERIFICATION_REQUIRED or $user_email_status == EMAIL_UNVERIFIED) { $link = "<a href = '../auth/mail_verify_change.php?from_profile=TRUE'>{$langHere}</a>."; $tool_content .= "<div class='alert alert-warning'>{$langMailNotVerified} {$link}</div>"; } } if (!get_user_email_notification_from_courses($uid)) { $head_content .= '<script type="text/javascript">$(control_deactivate);</script>'; $tool_content .= "<div class='alert alert-info'>{$langEmailUnsubscribeWarning}</div>\n <input type='checkbox' id='unsub' name='unsub' value='1'> {$langEmailFromCourses}"; } $tool_content .= "<div class='alert alert-info'>{$langInfoUnsubscribe}</div>\n <div id='unsubscontrols'>"; if (isset($_POST['cid'])) { // one course only $cid = intval($_POST['cid']); $course_title = course_id_to_title($cid); $selected = get_user_email_notification($uid, $cid) ? 'checked' : ''; $tool_content .= "<input type='checkbox' name='c_unsub' value='1' {$selected}> " . q($course_title) . "<br />"; $tool_content .= "<input type='hidden' name='cid' value='{$cid}'>"; } else { // displays all courses foreach ($_SESSION['courses'] as $code => $status) { $title = course_code_to_title($code); $cid = course_code_to_id($code); $selected = get_user_email_notification($uid, $cid) ? 'checked' : ''; $tool_content .= "<input type='checkbox' name='c_unsub[{$code}]' value='1' {$selected}> " . q($title) . "<br />"; } } $tool_content .= "</div>\n <br>\n <input class='btn btn-primary' type='submit' name='submit' value='{$langSubmit}'>\n <a class='btn btn-default' href='display_profile.php'>{$langCancel}<a>"; $tool_content .= "</form>"; } draw($tool_content, 1, null, $head_content);
AND user.status = " . USER_STUDENT . " AND " . $depwh); } else { $sql = Database::get()->queryArray("SELECT email, id FROM user where status = " . USER_STUDENT . ""); } } $recipients = array(); $emailsubject = "$langAdminMessage - $_POST[email_title]"; $emailbody = "" . $_POST['body_mail'] . "<br>\n$langManager $siteName " . get_config('admin_name') . " ($langEmail: " . get_config('email_helpdesk') . ")<br>\n"; // Send email to all addresses foreach ($sql as $m) { $emailTo = $m->email; $user_id = $m->id; // checks if user is notified by email if (get_user_email_notification($user_id)) { array_push($recipients, $emailTo); } $emailheader = " <!-- Header Section --> <div id='mail-header'> <br> <div> <div id='header-title'>$langAdminMessage.</div> </div> </div>"; $emailmain = " <!-- Body Section --> <div id='mail-body'>
$countEmail = 0; $invalid = 0; $recipients = array(); $emailBody = html2text($emailContent); $linkhere = " <a href='{$urlServer}main/profile/emailunsubscribe.php?cid={$course_id}'>{$langHere}</a>."; $unsubscribe = "<br /><br />{$langNote}: " . sprintf($langLinkUnsubscribe, $title); $emailContent .= $unsubscribe . $linkhere; $general_to = 'Members of course ' . $course_code; Database::get()->queryFunc("SELECT course_user.user_id as id, user.email as email\n FROM course_user, user\n WHERE course_id = ?d AND user.id IN ({$recipients_emaillist}) AND \n course_user.user_id = user.id", function ($person) use(&$countEmail, &$recipients, &$invalid, $course_id, $general_to, $emailSubject, $emailBody, $emailContent, $charset) { $countEmail++; $emailTo = $person->email; $user_id = $person->id; // check email syntax validity if (!email_seems_valid($emailTo)) { $invalid++; } elseif (get_user_email_notification($user_id, $course_id)) { // checks if user is notified by email array_push($recipients, $emailTo); } // send mail message per 50 recipients if (count($recipients) >= 50) { send_mail_multipart("{$_SESSION['givenname']} {$_SESSION['surname']}", $_SESSION['email'], $general_to, $recipients, $emailSubject, $emailBody, $emailContent, $charset); $recipients = array(); } }, $course_id); if (count($recipients) > 0) { send_mail_multipart("{$_SESSION['givenname']} {$_SESSION['surname']}", $_SESSION['email'], $general_to, $recipients, $emailSubject, $emailBody, $emailContent, $charset); } $messageInvalid = " {$langOn} {$countEmail} {$langRegUser}, {$invalid} {$langInvalidMail}"; $message = "<div class='alert alert-success'>{$langAnnAdd} {$langEmailSent}<br />{$messageInvalid}</div>"; } else {
/** * @brief send emails to course prof * @global type $themeimg * @global type $langSendingMessage * @global type $langHeaderMessage * @global type $langContactIntro * @param type $course_id * @param type $content * @param type $from_name * @param type $from_address * @return type */ function email_profs($course_id, $content, $from_name, $from_address) { global $themeimg, $langSendingMessage, $langHeaderMessage, $langContactIntro; $q = Database::get()->querySingle("SELECT public_code FROM course WHERE id = ?d", $course_id); $public_code = $q->public_code; $ret = "<p>{$langSendingMessage}</p><br />"; $profs = Database::get()->queryArray("SELECT user.id AS prof_uid, user.email AS email,\n user.surname, user.givenname\n FROM course_user JOIN user ON user.id = course_user.user_id\n WHERE course_id = ?d AND course_user.status = " . USER_TEACHER . "", $course_id); $message = sprintf($langContactIntro, $from_name, $from_address, $content); $subject = "{$langHeaderMessage} ({$public_code} - {$GLOBALS['title']})"; foreach ($profs as $prof) { if (!get_user_email_notification_from_courses($prof->prof_uid) or !get_user_email_notification($prof->prof_uid, $course_id)) { continue; } else { $to_name = $prof->givenname . ' ' . $prof->surname; $ret .= "<p><img src='{$themeimg}/teacher.png'> {$to_name}</p><br>\n"; if (!send_mail($from_name, $from_address, $to_name, $prof->email, $subject, $message, $GLOBALS['charset'])) { $ret .= "<div class='alert alert-warning'>{$GLOBALS['langErrorSendingMessage']}</div>\n"; } } } return $ret; }
/** * @brief update scheduled session data into database * @global type $tool_content * @global type $langBBBAddSuccessful * @global type $course_id * @global type $langBBBScheduleSessionInfo * @global type $langBBBScheduledSession * @global type $langBBBScheduleSessionInfoJoin * @param type $session_id * @param type $course_id * @param type $title * @param type $desc * @param type $start_session * @param type $type * @param type $status * @param type $notifyUsers * @param type $minutes_before * @param type $external_users */ function update_bbb_session($session_id,$title,$desc,$start_session,$type,$status,$notifyUsers,$minutes_before,$external_users,$record,$sessionUsers) { global $course_id; global $langBBBScheduleSessionInfo , $langBBBScheduledSession, $langBBBScheduleSessionInfo2, $langBBBScheduleSessionInfoJoin; // Groups of participants per session $r_group = ""; if (isset($_POST['groups'])) { foreach ($_POST['groups'] as $group) { $r_group .= "'$group'" .','; } } $r_group = rtrim($r_group,','); // Enable recording or not switch($record) { case 0: $record="false"; break; case 1: $record="true"; break; } Database::get()->querySingle("UPDATE bbb_session SET title=?s,description=?s," . "start_date=?t,public=?s,active=?s,unlock_interval=?d,external_users=?s,participants=?s,record=?s,sessionUsers=?d WHERE id=?d",$title, $desc, $start_session, $type, $status, $minutes_before, $external_users, $r_group, $record, $sessionUsers, $session_id); // if we have to notify users for new session if ($notifyUsers == "1") { $recipients = array(); $result = Database::get()->queryArray("SELECT course_user.user_id, user.email FROM course_user, user WHERE course_id = ?d AND user.id IN ($r_group) AND course_user.user_id = user.id", $course_id); foreach($result as $row) { $emailTo = $row->email; $user_id = $row->user_id; // we check if email notification are enabled for each user if (get_user_email_notification($user_id)) { //and add user to recipients array_push($recipients, $emailTo); } } if (count($recipients) > 0) { $emailsubject = $langBBBScheduledSession; $emailbody = $langBBBScheduleSessionInfo . " \"" . q($title) . "\" " . $langBBBScheduleSessionInfo2 . " " . q($start_session) . ""; $emailcontent = $emailbody; //Notify course users for new bbb session send_mail_multipart('', '', '', $recipients, $emailsubject, $emailbody, $emailcontent, 'UTF-8'); } //Notify external users for new bbb session if (isset($external_users)) { $recipients = explode(',', $external_users); $q = Database::get()->querySingle("SELECT meeting_id, att_pw FROM bbb_session WHERE id = ?d", $_GET['id']); foreach ($recipients as $row) { //$bbblink = bbb_join_user($q->meeting_id, $q->att_pw, $row, ''); $bbblink = get_config('base_url')."modules/bbb/ext.php?meeting_id=" . urlencode($q->meeting_id) . "&username="******" \"" . q($title) . "\" " . $langBBBScheduleSessionInfo2 . " " . q($start_session) . "<br><br>$langBBBScheduleSessionInfoJoin:<br> $bbblink"; $emailcontent = $emailbody; send_mail_multipart('', '', '', $row, $emailsubject, $emailbody, $emailcontent, 'UTF-8'); } } } $orderMax = Database::get()->querySingle("SELECT MAX(`order`) AS maxorder FROM announcement WHERE course_id = ?d", $course_id)->maxorder; $order = $orderMax + 1; Database::get()->querySingle("INSERT INTO announcement (content,title,`date`,course_id,`order`,visible) VALUES ('".$langBBBScheduleSessionInfo . " \"" . $title . "\" " . $langBBBScheduleSessionInfo2 . " " . $start_session."', '$langBBBScheduledSession',NOW(), '$course_id','$order','1')"); }
'name' => 'submitAnnouncement', 'value'=> $langAdd ), array( 'href' => "$_SERVER[SCRIPT_NAME]?course=$course_code", ) ))."</div> <input type='hidden' name='id' value='$AnnouncementToModify'> </div> </fieldset> </form> </div>"; } } // end: teacher only if ($uid and $status != USER_GUEST and !get_user_email_notification($uid, $course_id)) { $tool_content .= "<div class='alert alert-warning'>$langNoUserEmailNotification (<a href='{$urlServer}main/profile/emailunsubscribe.php?cid=$course_id'>$langModify</a>)</div>"; } if (isset($_GET['an_id'])) { $pageName = $row->title; $tool_content .= action_bar(array( array('title' => $langModify, 'url' => $_SERVER['SCRIPT_NAME'] . "?course=" . $course_code . "&modify=$row->id", 'icon' => 'fa-edit', 'level' => 'primary-label', 'show' => $is_editor), array('title' => $langBack, 'url' => $_SERVER['SCRIPT_NAME'] . "?course=" . $course_code, 'icon' => 'fa-reply', 'level' => 'primary-label'),
$level = ($levres = Database::get()->querySingle("SELECT level FROM course_review WHERE course_id = ?d", $course_id)) ? CourseXMLElement::getLevel($levres->level) : false; if (isset($level) && !empty($level)) { $metadataUrl = $urlServer . 'modules/course_metadata/info.php?course=' . $course_code; $opencourses_level = "\r\n <div class='row'>\r\n <div class='col-md-4'>\r\n <img src='{$themeimg}/open_courses_logo_small.png' title='" . $langOpenCourses . "' alt='" . $langOpenCourses . "' />\r\n </div>\r\n <div class='col-md-8 margin-top-thin'>\r\n {$langOpenCoursesLevel}: {$level}\r\n <br />\r\n <small><a href='{$metadataUrl}'>{$langCourseMetadata} " . icon('fa-tags', $langCourseMetadata, $metadataUrl) . "</small>\r\n </div>\r\n </div>\r\n\r\n\r\n <table class='tbl_courseid' width='200' style='display: none;'>\r\n <tr class='title1'>\r\n <td class='title1'></td>\r\n <td style='text-align: right; padding-right: 1.2em'><a href='{$metadataUrl}'>" . icon('fa-tags', $langCourseMetadata, $metadataUrl) . "</td>\r\n </tr>\r\n <tr>\r\n <td colspan='2'><div class='center'>" . icon('open_courses_logo_small', $langOpenCourses) . "</div>\r\n <div class='center'><b>{$langOpenCoursesLevel}: {$level}</b></div>\r\n </td>\r\n </tr>\r\n </table>"; } $emailnotification = ''; if ($uid and $status != USER_GUEST and !get_user_email_notification($uid, $course_id)) { $emailnotification = "<div class='alert alert-warning'>{$langNoUserEmailNotification}\r\n (<a href='{$urlServer}main/profile/emailunsubscribe.php?cid={$course_id}'>{$langModify}</a>)</div>"; } // display `contact teacher via email` link if teacher actually receives email from his course $receive_mail = FALSE; $rec_mail = array(); $q = Database::get()->queryArray("SELECT user_id FROM course_user WHERE course_id = ?d\r\n AND status = ?d", $course_id, USER_TEACHER); foreach ($q as $p) { $prof_uid = $p->user_id; if (get_user_email_notification_from_courses($prof_uid) and get_user_email_notification($prof_uid, $course_id)) { $rec_mail[$prof_uid] = 1; } } if (!empty($rec_mail)) { $receive_mail = TRUE; } // Contentbox: Course main contentbox //Temp commit (waiting for Alex to fix course description issue) if ($course_info->home_layout == 3) { $left_column = ''; $main_content_cols = ''; $horizontal_info_row = "<div class='col-xs-12'>\r\n <hr class='margin-top-fat margin-bottom-fat'>\r\n </div>\r\n <div class='col-xs-8'> \r\n {$bar_content}\r\n {$bar_content_2}\r\n </div>\r\n <div class='col-xs-4 text-center'> \r\n {$license_info_box}\r\n </div>"; } else { if (!empty($license_info_box)) { $license_holder = "<hr class='col-xs-12 margin-top-slim margin-bottom-fat'>\r\n <div class ='col-xs-12 text-center margin-top-fat'>\r\n {$license_info_box}\r\n </div>\r\n <hr class='col-xs-12 margin-top-fat margin-bottom-fat visible-xs-block'>";
function notify_users($forum_id, $forum_name, $topic_id, $subject, $message, $topic_date) { global $logo, $langNewForumNotify, $course_code, $course_code, $course_id, $langForumFrom, $uid, $langBodyForumNotify, $langInForums, $urlServer, $langdate, $langSender, $langCourse, $langCategory, $langForum, $langSubject, $langNote, $langLinkUnsubscribe, $langHere, $charset, $langMailBody; $subject_notify = "$logo - $langNewForumNotify"; $category_id = forum_category($forum_id); $cat_name = category_name($category_id); $c = course_code_to_title($course_code); $name = uid_to_name($uid); $title = course_id_to_title($course_id); $header_html_topic_notify = "<!-- Header Section --> <div id='mail-header'> <br> <div> <div id='header-title'>$langBodyForumNotify <a href='{$urlServer}courses/$course_code'>".q($title)."</a>.</div> <ul id='forum-category'> <li><span><b>$langCategory:</b></span> <span>" . q($cat_name) . "</span></li> <li><span><b>$langForum:</b></span> <span><a href='{$urlServer}modules/forum/viewforum.php?course=$course_code&forum=$forum_id'>" . q($forum_name) . "</a></span></li> <li><span><b>$langForumFrom :</b></span> <span>$name</span></li> <li><span><b>$langdate:</b></span> <span> $topic_date </span></li> </ul> </div> </div>"; $body_html_topic_notify = "<!-- Body Section --> <div id='mail-body'> <br> <div><b>$langSubject:</b> <span class='left-space'><a href='{$urlServer}modules/forum/viewforum.php?course=$course_code&forum=$forum_id&topic=$topic_id'>" . q($subject) . "</a></span></div><br> <div><b>$langMailBody:</b></div> <div id='mail-body-inner'> $message </div> </div>"; $footer_html_topic_notify = "<!-- Footer Section --> <div id='mail-footer'> <br> <div> <small>" . sprintf($langLinkUnsubscribe, q($title)) ." <a href='${urlServer}main/profile/emailunsubscribe.php?cid=$course_id'>$langHere</a></small> </div> </div>"; $html_topic_notify = $header_html_topic_notify.$body_html_topic_notify.$footer_html_topic_notify; $plain_message = html2text($message); $plain_topic_notify = "$langBodyForumNotify $langInForums\n" . "$langSender: $name\n" . "$langCourse: $title\n {$urlServer}courses/$course_code/\n" . "$langCategory: $cat_name\n" . "$langForum: $forum_name\n {$urlServer}modules/forum/viewforum.php?course=$course_code&forum=$forum_id\n" . "$langSubject: $subject\n {$urlServer}modules/forum/viewforum.php?course=$course_code&forum=$forum_id&topic=$topic_id\n" . "--------------------------------------------\n$plain_message\n" . "--------------------------------------------\n" . "$langNote: " . canonicalize_whitespace(str_replace('<br />', "\n", sprintf($langLinkUnsubscribe, q($title)))) . " $langHere:\n${urlServer}main/profile/emailunsubscribe.php?cid=$course_id\n"; $users = Database::get()->queryArray("SELECT DISTINCT user_id FROM forum_notify WHERE (forum_id = ?d OR cat_id = ?d) AND notify_sent = 1 AND course_id = ?d AND user_id != ?d", $forum_id, $category_id, $course_id, $uid); $email = array(); foreach ($users as $user) { if (get_user_email_notification($user->user_id, $course_id)) { $email[] = uid_to_email($user->user_id); } } send_mail_multipart('', '', '', $email, $subject_notify, $plain_topic_notify, $html_topic_notify, $charset); }
/** * Function lessonToolsMenu * * Creates a multi-dimensional array of the user's tools * in regard to the user's user level * (student | professor | platform administrator) * * @return array */ function lessonToolsMenu() { global $uid, $is_editor, $is_course_admin, $courses, $course_code, $langAdministrationTools, $langExternalLinks, $modules, $admin_modules, $urlAppend, $status, $course_id; $sideMenuGroup = array(); $sideMenuSubGroup = array(); $sideMenuText = array(); $sideMenuLink = array(); $sideMenuImg = array(); $sideMenuID = array(); $arrMenuType = array(); $arrMenuType['type'] = 'none'; if ($is_editor || $is_course_admin) { $tools_sections = array(array('type' => 'Public', 'title' => $GLOBALS['langActiveTools'], 'iconext' => '_on.png', 'class' => 'active'), array('type' => 'PublicButHide', 'title' => $GLOBALS['langInactiveTools'], 'iconext' => '_off.png', 'class' => 'inactive')); } else { $tools_sections = array(array('type' => 'Public', 'title' => $GLOBALS['langCourseOptions'], 'iconext' => '_on.png', 'class' => 'active')); } foreach ($tools_sections as $section) { $result = getToolsArray($section['type']); $sideMenuSubGroup = array(); $sideMenuText = array(); $sideMenuLink = array(); $sideMenuImg = array(); $sideMenuID = array(); $mail_status = ''; $arrMenuType = array('type' => 'text', 'text' => $section['title'], 'class' => $section['class']); array_push($sideMenuSubGroup, $arrMenuType); setlocale(LC_COLLATE, $GLOBALS['langLocale']); usort($result, function ($a, $b) { global $modules; return strcoll($modules[$a->module_id]['title'], $modules[$b->module_id]['title']); }); // check if we have define mail address and want to receive messages if ($uid and $status != USER_GUEST and !get_user_email_notification($uid, $course_id)) { $mail_status = ' ' . icon('fa-exclamation-triangle'); } foreach ($result as $toolsRow) { $mid = $toolsRow->module_id; // hide groups for unregistered users if ($mid == MODULE_ID_GROUPS and !$courses[$course_code]) { continue; } // hide teleconference when no BBB servers are enabled if ($mid == MODULE_ID_BBB and !get_total_bbb_servers()) { continue; } // if we are in dropbox or announcements add (if needed) mail address status if ($mid == MODULE_ID_DROPBOX or $mid == MODULE_ID_ANNOUNCE) { if ($mid == MODULE_ID_DROPBOX) { $mbox = new Mailbox($uid, course_code_to_id($course_code)); $new_msgs = $mbox->unreadMsgsNumber(); if ($new_msgs != 0) { array_push($sideMenuText, '<b>' . q($modules[$mid]['title']) . " $mail_status<span class='badge pull-right'>$new_msgs</span></b>"); } else { array_push($sideMenuText, q($modules[$mid]['title']).' '.$mail_status); } } else { array_push($sideMenuText, q($modules[$mid]['title']).' '.$mail_status); } } elseif ($mid == MODULE_ID_DOCS and ($new_docs = get_new_document_count($course_id))) { array_push($sideMenuText, '<b>' . q($modules[$mid]['title']) . "<span class='badge pull-right'>$new_docs</span></b>"); } else { array_push($sideMenuText, q($modules[$mid]['title'])); } array_push($sideMenuLink, q($urlAppend . 'modules/' . $modules[$mid]['link'] . '/?course=' . $course_code)); array_push($sideMenuImg, $modules[$mid]['image'] . $section['iconext']); array_push($sideMenuID, $mid); } array_push($sideMenuSubGroup, $sideMenuText); array_push($sideMenuSubGroup, $sideMenuLink); array_push($sideMenuSubGroup, $sideMenuImg); array_push($sideMenuSubGroup, $sideMenuID); array_push($sideMenuGroup, $sideMenuSubGroup); } $result2 = getExternalLinks(); if ($result2) { // display external link (if any) $sideMenuSubGroup = array(); $sideMenuText = array(); $sideMenuLink = array(); $sideMenuImg = array(); $arrMenuType = array('type' => 'text', 'text' => $langExternalLinks, 'class' => 'external'); array_push($sideMenuSubGroup, $arrMenuType); foreach ($result2 as $ex_link) { array_push($sideMenuText, q($ex_link->title)); array_push($sideMenuLink, q($ex_link->url)); array_push($sideMenuImg, 'fa-external-link'); } array_push($sideMenuSubGroup, $sideMenuText); array_push($sideMenuSubGroup, $sideMenuLink); array_push($sideMenuSubGroup, $sideMenuImg); array_push($sideMenuGroup, $sideMenuSubGroup); } if ($is_course_admin) { // display course admin tools $sideMenuSubGroup = array(); $sideMenuText = array(); $sideMenuLink = array(); $sideMenuImg = array(); $sideMenuID = array(); $arrMenuType = array('type' => 'text', 'text' => $langAdministrationTools, 'class' => 'course_admin'); array_push($sideMenuSubGroup, $arrMenuType); foreach ($admin_modules as $adm_mod) { array_push($sideMenuText, $adm_mod['title']); array_push($sideMenuLink, q($urlAppend . 'modules/' . $adm_mod['link'] . '/?course=' . $course_code)); array_push($sideMenuImg, $adm_mod['image'] . $section['iconext']); } array_push($sideMenuSubGroup, $sideMenuText); array_push($sideMenuSubGroup, $sideMenuLink); array_push($sideMenuSubGroup, $sideMenuImg); array_push($sideMenuSubGroup, $sideMenuID); array_push($sideMenuGroup, $sideMenuSubGroup); } return $sideMenuGroup; }
/** * @brief update scheduled session data into database * @global type $tool_content * @global type $langBBBAddSuccessful * @global type $course_id * @global type $langBBBScheduleSessionInfo * @global type $langBBBScheduledSession * @global type $langBBBScheduleSessionInfo2 * @param type $session_id * @param type $title * @param type $desc * @param type $start_session * @param type $type * @param type $status * @param type $notifyUsers * @param type $minutes_before * @param type $external_users */ function update_bbb_session($session_id, $title, $desc, $start_session, $type, $status, $notifyUsers, $minutes_before, $external_users, $record, $sessionUsers) { global $tool_content, $course_id; global $langBBBScheduleSessionInfo, $langBBBScheduledSession, $langBBBScheduleSessionInfo2; // Groups of participants per session $r_group = ""; foreach ($_POST['groups'] as $group) { $r_group .= $group . ','; } $r_group = rtrim($r_group, ','); // Enable recording or not switch ($record) { case 0: $record = "false"; break; case 1: $record = "true"; break; } Database::get()->querySingle("UPDATE bbb_session SET title=?s,description=?s," . "start_date=?t,public=?s,active=?s,unlock_interval=?d,external_users=?s,participants=?s,record=?s,sessionUsers=?d WHERE id=?d", $title, $desc, $start_session, $type, $status, $minutes_before, $external_users, $r_group, $record, $sessionUsers, $session_id); // if we have to notify users for new session if ($notifyUsers == "1") { $recipients = array(); $result = Database::get()->queryArray("SELECT user_id, email FROM course_user, user\n WHERE course_user.course_id = {$course_id} AND course_user.user_id = user.id"); foreach ($result as $row) { $emailTo = $row->email; $user_id = $row->user_id; // we check if email notification are enabled for each user if (get_user_email_notification($user_id)) { //and add user to recipients array_push($recipients, $emailTo); } } if (count($recipients) > 0) { $emailsubject = $langBBBScheduledSession; $emailbody = $langBBBScheduleSessionInfo . " \"" . q($title) . "\" " . $langBBBScheduleSessionInfo2 . " " . q($start_session); $emailcontent = $langBBBScheduleSessionInfo . " \"" . q($title) . "\" " . $langBBBScheduleSessionInfo2 . " " . q($start_session); //Notify course users for new bbb session send_mail_multipart('', '', '', $recipients, $emailsubject, $emailbody, $emailcontent, 'UTF-8'); } } $orderMax = Database::get()->querySingle("SELECT MAX(`order`) AS maxorder FROM announcement\n WHERE course_id = ?d", $course_id)->maxorder; $order = $orderMax + 1; Database::get()->querySingle("INSERT INTO announcement (content,title,`date`,course_id,`order`,visible) VALUES ('" . $langBBBScheduleSessionInfo . " \"" . $title . "\" " . $langBBBScheduleSessionInfo2 . " " . $start_session . "',\n '{$langBBBScheduledSession}',NOW(),\n '{$course_id}','{$order}','1')"); }
/** * @brief send emails to course prof * @global type $langSendingMessage * @global type $langHeaderMessage * @global type $langContactIntro * @param type $course_id * @param type $content * @param type $from_name * @param type $from_address * @return type */ function email_profs($course_id, $content, $from_name, $from_address) { global $langSendingMessage, $langHeaderMessage, $langContactIntro; $title = course_id_to_title($course_id); $ret = "<div class='alert alert-info'>$langSendingMessage $title</div>"; $public_code = course_id_to_public_code($course_id); $profs = Database::get()->queryArray("SELECT user.id AS prof_uid, user.email AS email, user.surname, user.givenname FROM course_user JOIN user ON user.id = course_user.user_id WHERE course_id = ?d AND course_user.status = " . USER_TEACHER . "", $course_id); $message = sprintf($langContactIntro, $from_name, $from_address, $content); $subject = "$langHeaderMessage ($public_code - $title)"; foreach ($profs as $prof) { if (!get_user_email_notification_from_courses($prof->prof_uid) or (!get_user_email_notification($prof->prof_uid, $course_id))) { continue; } else { $to_name = $prof->givenname . ' ' . $prof->surname; $ret .= "<div class='alert alert-success'>" . icon('fa-university') . " " . q($to_name) . "</div>"; if (!send_mail($from_name, $from_address, $to_name, $prof->email, $subject, $message, $GLOBALS['charset'])) { $ret .= "<div class='alert alert-warning'>$GLOBALS[langErrorSendingMessage]</div>"; } } } return $ret; }