Example #1
0
    // --------------------------------
    // 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 = "&nbsp;<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}&amp;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'>&nbsp;{$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}>&nbsp;" . 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}>&nbsp;" . 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);
Example #3
0
                                            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'>
Example #4
0
     $countEmail = 0;
     $invalid = 0;
     $recipients = array();
     $emailBody = html2text($emailContent);
     $linkhere = "&nbsp;<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 {
Example #5
0
/**
 * @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;
}
Example #6
0
/**
 * @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')");

}
Example #7
0
                    '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 . "&amp;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'),
Example #8
0
$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'>";
Example #9
0
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&amp;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&amp;forum=$forum_id&amp;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);
}
Example #10
0
/**
 * 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 = '&nbsp;' . 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;
}
Example #11
0
/**
 * @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')");
}
Example #12
0
/**
 * @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') . "&nbsp;" . 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;
}