function getSidebarMessages() { global $uid, $urlServer, $langFrom, $dateFormatLong, $langDropboxNoMessage; $message_content = ''; $mbox = new Mailbox($uid, 0); $msgs = $mbox->getInboxMsgs('', 5); $msgs = array_filter($msgs, function ($msg) { return !$msg->is_read; }); if (!count($msgs)) { $message_content .= "<li class='list-item'>" . "<span class='item-wholeline'>" . $langDropboxNoMessage . "</span>" . "</li>"; } else { foreach ($msgs as $message) { if ($message->course_id > 0) { $course_title = q(ellipsize(course_id_to_title($message->course_id), 30)); } else { $course_title = ''; } $message_date = claro_format_locale_date($dateFormatLong, $message->timestamp); $message_content .= "<li class='list-item'>" . "<span class='item-wholeline'>" . "<div class='text-title'>{$langFrom} " . display_user($message->author_id, false, false) . ":<br>" . "<a href='{$urlServer}modules/dropbox/index.php?mid={$message->id}'>" . q($message->subject) . "</a>" . "</div>" . "<div class='text-grey'>{$course_title}</div>" . "<div>{$message_date}</div>" . "</span>" . "</li>"; } } return $message_content; }
WHERE `visible` = 1 AND lang=?s AND (`begin` <= NOW() or `begin` IS null) AND (NOW() <= `end` or `end` IS null) ORDER BY `order` DESC", $language); $ann_content = ''; if ($announceArr && sizeof($announceArr) > 0) { $ann_content .= "<ul class='front-announcements'>"; $numOfAnnouncements = sizeof($announceArr); for ($i = 0; $i < $numOfAnnouncements; $i++) { $aid = $announceArr[$i]->id; $ann_content .= " <li> <div><a class='announcement-title' href='modules/announcements/main_ann.php?aid=$aid'>" . q($announceArr[$i]->title) . "</a></div> <span class='announcement-date'>- " . claro_format_locale_date($dateFormatLong, strtotime($announceArr[$i]->date)) . " -</span> " . standard_text_escape(ellipsize_html("<div class='announcement-main'>".$announceArr[$i]->body."</div>", 500, "<div class='announcements-more'><a href='modules/announcements/main_ann.php?aid=$aid'>$langMore …</a></div>"))."</li>"; } } $tool_content .= "<div class='row'> <div class='col-md-8'>"; $tool_content .= "<div class='panel'> <div class='panel-body'> $langInfoAbout </div> </div>"; // display admin announcements if(!empty($ann_content)) { $tool_content .= "<h3 class='content-title'>$langAnnouncements <a href='${urlServer}rss.php' style='padding-left:5px;'>
$result = Database::get()->queryArray("SELECT * FROM admin_announcement ORDER BY `order` DESC"); $bottomAnnouncement = $announcementNumber = count($result); if ($announcementNumber > 0) { $tool_content .= "<div class='table-responsive'><table class='table-default'> <tr><th>$langTitle</th> <th>$langAnnouncement</th> <th colspan='2'><div align='center'>" . icon('fa-gears') . "</th>"; foreach ($result as $myrow) { if ($myrow->visible == 1) { $visibility = 0; $classvis = ''; } else { $visibility = 1; $classvis = 'not_visible'; } $myrow->date = claro_format_locale_date($dateFormatLong, strtotime($myrow->date)); $tool_content .= "<tr class='$classvis'> <td width='200'><b>" . q($myrow->title) . "</b><br><span class='smaller'>$myrow->date</span></td> <td>" . standard_text_escape($myrow->body) . "</td> <td width='6'>" . action_button(array( array('title' => $langEditChange, 'url' => "$_SERVER[SCRIPT_NAME]?modify=$myrow->id", 'icon' => 'fa-edit'), array('title' => $visibility == 0 ? $langViewHide : $langViewShow, 'url' => "$_SERVER[SCRIPT_NAME]?id=$myrow->id&vis=$visibility", 'icon' => $visibility == 0 ? 'fa-eye-slash' : 'fa-eye'), array('title' => $langUp, 'url' => "$_SERVER[SCRIPT_NAME]?up=$myrow->id", 'icon' => 'fa-arrow-up'), array('title' => $langDown,
if (!empty($user_announcements)) { $tool_content .= $user_announcements; } else { $tool_content .= "<li class='list-item' style='border-bottom:none;'>{$langNoRecentAnnounce}</li>"; } $tool_content .= "</ul>\n </div>\n <div class='panel-footer'>\n <p class='link-to-more'><a href='../modules/announcements/myannouncements.php'>{$langMore}…</a></p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class='col-md-5'>\n <div class='row'>\n <div class='col-md-12'>\n <h3 class='content-title'>{%LANG_MY_PERSONAL_CALENDAR%}</h3>\n <div class='panel'>\n <div class='panel-body'>\n {%PERSONAL_CALENDAR_CONTENT%}\n </div>\n <div class='panel-footer'>\n <div class='row'>\n <div class='col-sm-6 event-legend'>\n <div>\n <span class='event event-important'></span><span>{$langAgendaDueDay}</span>\n </div>\n <div>\n <span class='event event-info'></span><span>{$langAgendaCourseEvent}</span>\n </div>\n </div>\n <div class='col-sm-6 event-legend'>\n <div>\n <span class='event event-success'></span><span>{$langAgendaSystemEvent}</span>\n </div>\n <div>\n <span class='event event-special'></span><span>{$langAgendaPersonalEvent}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class='row'>\n <div class='col-md-12 my-messages-list'>\n <h3 class='content-title'>{$langMyPersoMessages}</h3>\n <div class='panel'>\n <div class='panel-body'>\n <ul class='tablelist'>"; if (!empty($user_messages)) { $tool_content .= $user_messages; } else { $tool_content .= "<li class='list-item' style='border-bottom:none;'>{$langDropboxNoMessage}</li>"; } $tool_content .= "</ul>\n </div>\n <div class='panel-footer'>\n <p class='link-to-more'><a href='{$urlAppend}modules/dropbox/'>{$langMore}…</a></p>\n </div>\n </div>\n </div>\n </div>\n </div>"; $userdata = Database::get()->querySingle("SELECT surname, givenname, username, email, status, phone, am, registered_at,\n has_icon, description, password,\n email_public, phone_public, am_public\n FROM user\n WHERE id = ?d", $uid); $numUsersRegistered = Database::get()->querySingle("SELECT COUNT(*) AS numUsers\n FROM course_user cu1, course_user cu2\n WHERE cu1.course_id = cu2.course_id AND cu1.user_id = ?d AND cu1.status = ?d AND cu2.status <> ?d;", $uid, USER_TEACHER, USER_TEACHER)->numUsers; $lastVisit = Database::get()->queryArray("SELECT * FROM loginout\n WHERE id_user = ?d ORDER by idLog DESC LIMIT 2", $uid); $tool_content .= "\n</div>\n<div id='profile_box' class='row'>\n <div class='col-md-12'>\n <h3 class='content-title'>{$langCompactProfile}</h3>\n <div class='panel'>\n <div class='panel-body'>\n <div class='row'>\n <div class='col-xs-4 col-sm-2'>\n <img src='" . user_icon($uid, IMAGESIZE_LARGE) . "' style='width:80px;' class='img-circle center-block img-responsive' alt='Avatar Image'><br>\n <h5 class='not_visible text-center' style='margin:0px;'>" . q($_SESSION['uname']) . "</h5>\n </div>\n <div class='col-xs-8 col-sm-5'>\n <h4>" . q("{$_SESSION['givenname']} {$_SESSION['surname']}") . "</h4>\n <span class='tag'>{$langProfileMemberSince} : </span><span class='tag-value'>" . claro_format_locale_date($dateFormatLong, strtotime($userdata->registered_at)) . "</span><br>\n <span class='tag'>{$langProfileLastVisit} : <span><span class='tag-value'>" . claro_format_locale_date($dateFormatLong, strtotime($lastVisit[1]->when)) . "</span>\n </div>\n <div class='col-xs-12 col-sm-5'>\n <ul class='list-group'>\n <li class='list-group-item'>\n <span class='badge'>{$student_courses_count}</span>\n {$langSumCoursesEnrolled}\n </li>\n <li class='list-group-item'>\n <span class='badge'>{$teacher_courses_count}</span>\n {$langSumCoursesSupport}\n </li>\n </ul>\n <div class='quick-change-pwd'><a href='" . $urlSecure . "main/profile/password.php'>{$langProfileQuickPassword}</a></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n"; draw($tool_content, 1, null, $head_content, null, null, $perso_tool_content); /** * draws statistics graph * @global type $uid * @global type $langCourseVisits s * @return type */ function courseVisitsPlot() { global $uid, $langCourseVisits, $langNoStats; $totalHits = 0; $totalDuration = 0; $result = Database::get()->queryArray("SELECT a.code code, a.title title\n FROM course AS a LEFT JOIN course_user AS b\n ON a.id = b.course_id\n WHERE b.user_id = ?d\n AND a.visible != " . COURSE_INACTIVE . "\n ORDER BY a.title", $uid); if (count($result) > 0) { // found courses ?
</div> </div>"; $userdata = Database::get()->querySingle("SELECT surname, givenname, username, email, status, phone, am, registered_at, has_icon, description, password, email_public, phone_public, am_public FROM user WHERE id = ?d", $uid); $numUsersRegistered = Database::get()->querySingle("SELECT COUNT(*) AS numUsers FROM course_user cu1, course_user cu2 WHERE cu1.course_id = cu2.course_id AND cu1.user_id = ?d AND cu1.status = ?d AND cu2.status <> ?d;", $uid, USER_TEACHER, USER_TEACHER)->numUsers; $lastVisit = Database::get()->querySingle("SELECT * FROM loginout WHERE id_user = ?d ORDER by idLog DESC LIMIT 1", $uid); if ($lastVisit) { $lastVisitLabel = "<br><span class='tag'>$langProfileLastVisit : </span><span class='tag-value text-muted'>" . claro_format_locale_date($dateFormatLong, strtotime($lastVisit->when)) . "</span>"; } else { $lastVisitLabel = ''; } $tool_content .= " </div> <div id='profile_box' class='row'> <div class='col-md-12'> <h2 class='content-title'>$langCompactProfile</h2> <div class='panel'> <div class='panel-body'> <div class='row'> <div class='col-xs-4 col-sm-2'> <img src='" . user_icon($uid, IMAGESIZE_LARGE) . "' style='width:80px;' class='img-circle center-block img-responsive' alt='$langProfileImage'><br> <div class='not_visible text-center' style='margin:0px;'>".q($_SESSION['uname'])."</div>
$announcementNumber = count($result); if ($announcementNumber > 0) { $tool_content .= "<div class='alert alert-info'>" . userAttendTotal($attendance_id, $userID) . " " . $langAttendanceAbsencesFrom . " " . q($attendance_limit) . " " . $langAttendanceAbsencesFrom2 . " </div>"; $tool_content .= "<script type='text/javascript' src='../auth/sorttable.js'></script>\n <div class='row'><div class='col-sm-12'><div class='table-responsive'>\n <table class='table-default sortable' id='t2'>"; $tool_content .= "<tr><th >{$langTitle}</th><th>{$langAttendanceActivityDate2}</th><th>{$langDescription}</th><th>{$langAttendanceAbsencesYes}</th></tr>"; foreach ($result as $announce) { $content = standard_text_escape($announce->description); $d = strtotime($announce->date); $tool_content .= "<tr><td><b>"; if (empty($announce->title)) { $tool_content .= $langAnnouncementNoTille; } else { $tool_content .= q($announce->title); } $tool_content .= "</b>"; $tool_content .= "</td>" . "<td><div class='smaller'><span class='day'>" . ucfirst(claro_format_locale_date($dateFormatLong, $d)) . "</span> ({$langHour}: " . ucfirst(date('H:i', $d)) . ")</div></td>" . "<td>" . $content . "</td>"; $tool_content .= "<td class='center'>"; //check if the user has attend for this activity $userAttend = Database::get()->querySingle("SELECT attend FROM attendance_book\n WHERE attendance_activity_id = ?d AND uid = ?d", $announce->id, $userID); if ($userAttend) { $attend = $userAttend->attend; if ($attend) { $tool_content .= icon('fa-check-circle', $langAttendanceAbsencesYes); } else { $auto_activity = Database::get()->querySingle("SELECT auto FROM attendance_activities WHERE id = ?d", $announce->id)->auto; if (!$auto_activity and $announce->date > date("Y-m-d")) { $tool_content .= icon('fa-question-circle', $langAttendanceStudentFailure); } else { $tool_content .= icon('fa-times-circle', $langAttendanceAbsencesNo); } }
if (count($agendaHits) > 0) { $tool_content .= "<script type='text/javascript' src='../auth/sorttable.js'></script>\n <table width='99%' class='sortable' id='t2' align='left'>\n <tr>\n <th colspan='2' class='left'>{$langAgenda}:</th>\n </tr>"; $numLine = 0; foreach ($agendaHits as $agHit) { $agenda = Database::get()->querySingle("SELECT title, content, start, duration FROM agenda WHERE id = ?d", $agHit->pkid); $class = $numLine % 2 ? 'odd' : 'even'; $tool_content .= "\n <tr class='{$class}'>\n <td width='1' valign='top'><img style='padding-top:3px;' src='{$themeimg}/arrow.png' title='bullet' /></td>\n <td>"; $message = $langUnknown; if ($agenda->duration != "") { if ($agenda->duration == 1) { $message = $langHour; } else { $message = $langHours; } } $tool_content .= "<span class=day>" . ucfirst(claro_format_locale_date($dateFormatLong, strtotime($agenda->start))) . "</span> ({$langHour}: " . ucfirst(date("H:i", strtotime($agenda->start))) . ")<br />" . q($agenda->title) . " (" . $langDuration . ": " . q($agenda->duration) . " {$message}) " . $agenda->content . "\n </td>\n </tr>"; $numLine++; } $tool_content .= "</table>"; $found = true; } } // search in documents if ($documents) { $documentHits = $idx->searchRaw(DocumentIndexer::buildQuery($_POST)); if (count($documentHits) > 0) { $tool_content .= "<script type='text/javascript' src='../auth/sorttable.js'></script>\n <table width='99%' class='sortable' id='t3' align='left'>\n <tr>\n <th colspan='2' class='left'>{$langDoc}:</th>\n </tr>"; $numLine = 0; foreach ($documentHits as $docHit) { $document = Database::get()->querySingle("SELECT filename, path, comment FROM document WHERE id = ?d", $docHit->pkid); $class = $numLine % 2 ? 'odd' : 'even';
* ======================================================================== * Copyright 2003-2014 Greek Universities Network - GUnet * A full copyright notice can be read in "/info/copyright.txt". * For a full list of contributors, see "credits.txt". * * Open eClass is an open platform distributed in the hope that it will * be useful (without any warranty), under the terms of the GNU (General * Public License) as published by the Free Software Foundation. * The full license can be read in "/info/license/license_gpl.txt". * * Contact address: GUnet Asynchronous eLearning Group, * Network Operations Center, University of Athens, * Panepistimiopolis Ilissia, 15784, Athens, Greece * e-mail: info@openeclass.org * ======================================================================== */ $require_help = true; $guest_allowed = true; include '../../include/baseTheme.php'; require_once 'include/lib/textLib.inc.php'; $pageName = $langAnnouncements; $isaid = isset($_GET['aid']); $announceArr = Database::get()->queryArray($isaid ? "SELECT `date`, `title` , `body` FROM `admin_announcement` WHERE id = ?d" : "SELECT `date`, `title` , `body` FROM `admin_announcement`\n\t WHERE `visible` = 1 AND lang = ?s ORDER BY `date` DESC", $isaid ? intval($_GET['aid']) : $language); $numOfAnnouncements = count($announceArr); if ($numOfAnnouncements > 0) { $tool_content .= "<div class='table-responsive'><table class='table-default'>"; for ($i = 0; $i < $numOfAnnouncements; $i++) { $tool_content .= "<tr><td><label>" . q($announceArr[$i]->title) . "</label>\n\t\t <span class='smaller'>(" . claro_format_locale_date($dateFormatLong, strtotime($announceArr[$i]->date)) . ")</span>\n\t\t<p>" . standard_text_escape($announceArr[$i]->body) . "</p>\n\t\t</td>\n\t\t</tr>"; } $tool_content .= "</table></div>"; } draw($tool_content, 0);
$tool_content .= "<div class='alert alert-warning'>{$langGradebookTotalGradeNoInput}</div>"; } $result = Database::get()->queryArray("SELECT * FROM gradebook_activities WHERE gradebook_activities.visible = ?d AND gradebook_id = ?d ORDER BY `DATE` DESC", $visible, $gradebook_id); $announcementNumber = count($result); if ($announcementNumber > 0) { $tool_content .= "<div class='alert alert-info'>{$langGradebookTotalGrade}: <b>" . userGradeTotal($gradebook_id, $userID) . "</b> </div>"; if (weightleft($gradebook_id, 0) != 0) { $tool_content .= "<div class='alert alert-warning'>{$langGradebookAlertToChange}</p>"; } $tool_content .= "<table class='table-default' >"; $tool_content .= "<tr><th>{$langTitle}</th><th>{$langGradebookActivityDate2}</th><th>{$langGradebookActivityDescription}</th><th>{$langGradebookActivityWeight}</th><th>{$langGradebookGrade}</th></tr>"; } if ($result) { foreach ($result as $announce) { $content = standard_text_escape($announce->description); $announce->date = claro_format_locale_date($dateFormatLong, strtotime($announce->date)); $tool_content .= "<tr><td><b>"; if (empty($announce->title)) { $tool_content .= $langAnnouncementNoTille; } else { $tool_content .= q($announce->title); } $tool_content .= "</b>"; $tool_content .= "</td>" . "<td><div class='smaller'>" . nice_format($announce->date) . "</div></td>" . "<td>" . $content . "</td>" . "<td>" . q($announce->weight) . "%</td>"; $tool_content .= "<td width='70' class='text-center'>"; //check user grade for this activity $sql = Database::get()->querySingle("SELECT grade FROM gradebook_book WHERE gradebook_activity_id = ?d AND uid = ?d", $announce->id, $userID); if ($sql) { $tool_content .= $sql->grade; } else { $tool_content .= "—";
/** * @brief get user personal messages * @global type $uid * @global type $urlServer * @global type $langFrom * @global type $dateFormatLong * @param type $lesson_id * @return string */ function getUserMessages() { global $uid, $urlServer, $langFrom, $dateFormatLong; $message_content = ''; $mbox = new Mailbox($uid, 0); $msgs = $mbox->getInboxMsgs('', 5); foreach ($msgs as $message) { if ($message->course_id > 0) { $course_title = q(ellipsize(course_id_to_title($message->course_id), 30)); } else { $course_title = ''; } $message_date = claro_format_locale_date($dateFormatLong, $message->timestamp); $message_content .= "<li class='list-item'> <div class='item-wholeline'> <div class='text-title'>$langFrom ".display_user($message->author_id, false, false).": <a href='{$urlServer}modules/dropbox/index.php?mid=$message->id'>" .q($message->subject)."</a> </div> <div class='text-grey'>$course_title</div> <div>$message_date</div> </div> </li>"; } return $message_content; }
/** * @brief display available assignments for adding them to gradebook * @global type $course_id * @global type $course_code * @global type $tool_content * @global type $dateFormatLong * @global type $langWorks * @global type $m * @global type $langDescription * @global type $langAttendanceNoActMessageAss4 * @global type $langAdd * @global type $langTitle * @global type $langHour * @param type $gradebook_id */ function display_available_assignments($gradebook_id) { global $course_id, $course_code, $tool_content, $dateFormatLong, $langWorks, $m, $langDescription, $langAttendanceNoActMessageAss4, $langAdd, $langTitle, $langHour; $checkForAss = Database::get()->queryArray("SELECT * FROM assignment WHERE assignment.course_id = ?d AND assignment.active = 1 AND assignment.id NOT IN (SELECT module_auto_id FROM gradebook_activities WHERE module_auto_type = 1 AND gradebook_id = ?d)", $course_id, $gradebook_id); $checkForAssNumber = count($checkForAss); if ($checkForAssNumber > 0) { $tool_content .= " <div class='row'><div class='col-sm-12'><div class='table-responsive'> <table class='table-default'"; $tool_content .= "<tr class='list-header'><th>$langTitle</th><th>".q($m['deadline'])."</th><th>$langDescription</th>"; $tool_content .= "<th class='text-center'><i class='fa fa-cogs'></i></th>"; $tool_content .= "</tr>"; foreach ($checkForAss as $newAssToGradebook) { $content = ellipsize_html($newAssToGradebook->description, 50); if($newAssToGradebook->assign_to_specific){ $content .= "$m[WorkAssignTo]:<br>"; $checkForAssSpec = Database::get()->queryArray("SELECT user_id, user.surname , user.givenname FROM `assignment_to_specific`, user WHERE user_id = user.id AND assignment_id = ?d", $newAssToGradebook->id); foreach ($checkForAssSpec as $checkForAssSpecR) { $content .= q($checkForAssSpecR->surname). " " . q($checkForAssSpecR->givenname) . "<br>"; } } if ((int) $newAssToGradebook->deadline){ $d = strtotime($newAssToGradebook->deadline); $date_str = ucfirst(claro_format_locale_date($dateFormatLong, $d)); $hour_str = "($langHour: " . ucfirst(date('H:i', $d)).")"; } else { $date_str = $m['no_deadline']; $hour_str = ""; } $tool_content .= "<tr><td><b>"; if (!empty($newAssToGradebook->title)) { $tool_content .= q($newAssToGradebook->title); } $tool_content .= "</b>"; $tool_content .= "</td>" . "<td><div class='smaller'><span class='day'>".q($date_str)."</span> ".q($hour_str)." </div></td>" . "<td>" . $content . "</td>"; $tool_content .= "<td width='70' class='text-center'>".icon('fa-plus', $langAdd, "$_SERVER[SCRIPT_NAME]?course=$course_code&gradebook_id=" . getIndirectReference($gradebook_id) . "&addCourseActivity=" . getIndirectReference($newAssToGradebook->id) . "&type=1"); } // end of while $tool_content .= "</tr></table></div></div></div>"; } else { $tool_content .= "<div class='alert alert-warning'>$langAttendanceNoActMessageAss4</div>"; } }
$tool_content .= "</div>"; } $tool_content .= " </div>"; if (!empty($warning)) { $tool_content .= "<br><span>{$warning}</span>"; } $tool_content .= "</div>\n </div>\n </div>\n </div>\n </div>"; $rss_link = "<link rel='alternate' type='application/rss+xml' title='RSS-Feed' href='" . $urlServer . "rss.php'>"; $announceArr = Database::get()->queryArray("SELECT `id`, `date`, `title`, `body`, `order` FROM `admin_announcement`\n WHERE `visible` = 1\n AND lang=?s\n AND (`begin` <= NOW() or `begin` IS null)\n AND (NOW() <= `end` or `end` IS null)\n ORDER BY `order` DESC", $language); $ann_content = ''; if ($announceArr && sizeof($announceArr) > 0) { $ann_content .= "<h4>{$langAnnouncements} <a href='{$urlServer}rss.php' style='padding-left:5px;'>\n <i class='fa fa-rss-square'></i>\n </a></h4><ul class='front-announcements'>"; $numOfAnnouncements = sizeof($announceArr); for ($i = 0; $i < $numOfAnnouncements; $i++) { $aid = $announceArr[$i]->id; $ann_content .= "\n <li>\n <div><a class='announcement-title' href='modules/announcements/main_ann.php?aid={$aid}'>" . q($announceArr[$i]->title) . "</a></div>\n <span class='announcement-date'>- " . claro_format_locale_date($dateFormatLong, strtotime($announceArr[$i]->date)) . " -</span>\n " . standard_text_escape(ellipsize_html($announceArr[$i]->body, 500, "<div class='announcements-more'><a href='modules/announcements/main_ann.php?aid={$aid}'>{$langMore} …</a></div>")) . "</li>"; } } $tool_content .= "\n\n <div class='row'>\n\n <div class='col-md-8'>\n <div class='panel'>\n <div class='panel-body'>\n {$langInfoAbout}\n </div>\n </div>\n <div class='panel'>\n <div class='panel-body'>"; if (!empty($ann_content)) { $tool_content .= $ann_content; } else { $tool_content .= "<li>{$langNoRecentAnnounce}</li>"; } $tool_content .= "</ul></div>\n </div>\n </div>\n \n <div class='col-md-4'>\n\n "; $online_users = getOnlineUsers(); $tool_content .= "\n\n <div class='panel'>\n <div class='panel-body'>\n <i class='fa fa-group space-after-icon'></i>{$langOnlineUsers}: {$online_users}\n </div>\n </div>"; if (get_config('opencourses_enable')) { $tool_content .= "<div class='panel'>\n <div class='panel-body'>\n <a href='http://opencourses.gr'>\n <img class='img-responsive' src='{$themeimg}/open_courses_bnr.png'>\n </a>\n </div>\n </div>"; } if (get_config('enable_mobileapi')) {
function event_list($events, $sens) { global $course_code, $is_editor, $langEvents, $langCalendar, $langDateNow, $dateFormatLong, $langHour, $langHours, $langDuration, $langAgendaNoTitle, $langDelete, $langConfirmDeleteEvent, $langConfirmDeleteRecursive, $langConfirmDeleteRecursiveEvents, $langModify, $langVisible; $dateNow = date("j-n-Y / H:i", time()); $barMonth = ''; $nowBarShowed = false; $eventlist = "<div class='table-responsive'><table class='table-default'>\r\n <tr><th class='left'>{$langEvents}</th>"; if ($is_editor) { $eventlist .= "<th class='text-center option-btn-cell'>" . icon('fa-gears') . "</th>"; } $eventlist .= "</tr>"; foreach ($events as $myrow) { $content = standard_text_escape($myrow->content); $d = strtotime($myrow->start); if (!$nowBarShowed) { // Following order if ($d > time() and $sens == " ASC" or $d < time() and $sens == " DESC ") { if ($barMonth != date("m", time())) { $barMonth = date("m", time()); $eventlist .= "<tr>"; // current month $eventlist .= "<td colspan='2' class='monthLabel'>" . $langCalendar . " <b>" . ucfirst(claro_format_locale_date("%B %Y", time())) . "</b></td>"; $eventlist .= "</tr>"; } $nowBarShowed = TRUE; $eventlist .= "<tr>"; $eventlist .= "<td colspan='2' class='today'>{$langDateNow} {$dateNow}</td>"; $eventlist .= "</tr>"; } } if ($barMonth != date("m", $d)) { $barMonth = date("m", $d); // month LABEL $eventlist .= "<tr>"; $eventlist .= "<td colspan='2' class='monthLabel'>"; $eventlist .= "<div align='center'>" . $langCalendar . " <b>" . ucfirst(claro_format_locale_date("%B %Y", $d)) . "</b></div></td>"; $eventlist .= "</tr>"; } $classvis = ''; if ($is_editor) { if ($myrow->visible == 0) { $classvis = 'class = "not_visible"'; } } $eventlist .= "<tr {$classvis}>"; if ($is_editor) { $eventlist .= "<td>"; } else { $eventlist .= "<td colspan='2'>"; } $eventlist .= "<span class='day'>" . ucfirst(claro_format_locale_date($dateFormatLong, $d)) . "</span> ({$langHour}: " . ucfirst(date('H:i', $d)) . ")"; if ($myrow->duration != '') { if ($myrow->duration == 1) { $message = $langHour; } else { $message = $langHours; } $msg = "({$langDuration}: " . q($myrow->duration) . " {$message})"; } else { $msg = ''; } $eventlist .= "<br><b>"; if ($myrow->title == '') { $eventlist .= $langAgendaNoTitle; } else { $eventlist .= q($myrow->title); } $eventlist .= " {$msg} {$content}</b></td>"; if ($is_editor) { $eventlist .= "<td class='option-btn-cell'>"; $eventlist .= action_button(array(array('title' => $langDelete, 'url' => "?course={$course_code}&id={$myrow->id}&delete=yes", 'icon' => 'fa-times', 'class' => 'delete', 'confirm' => $langConfirmDeleteEvent), array('title' => $langConfirmDeleteRecursive, 'url' => "?course={$course_code}&id={$myrow->id}&delete=yes&rep=yes", 'icon' => 'fa-times-circle-o', 'class' => 'delete', 'confirm' => $langConfirmDeleteRecursiveEvents, 'show' => !(is_null($myrow->recursion_period) || is_null($myrow->recursion_end))), array('title' => $langModify, 'url' => "?course={$course_code}&id={$myrow->id}&edit=true", 'icon' => 'fa-edit'), array('title' => $langVisible, 'url' => "?course={$course_code}&id={$myrow->id}" . ($myrow->visible ? "&mkInvisibl=true" : "&mkVisibl=true"), 'icon' => $myrow->visible ? 'fa-eye-slash' : 'fa-eye'))); $eventlist .= "</td>"; } $eventlist .= "</tr>"; } $eventlist .= "</table></div>"; return $eventlist; }
$class = ($numLine % 2) ? 'odd' : 'even'; $tool_content .= " <tr class='$class'> <td width='1' valign='top'><img style='padding-top:3px;' src='$themeimg/arrow.png' title='bullet' /></td> <td>"; $message = $langUnknown; if ($agenda->duration != "") { if ($agenda->duration == 1) { $message = $langHour; } else { $message = $langHours; } } $tool_content .= "<span class=day>" . ucfirst(claro_format_locale_date($dateFormatLong, strtotime($agenda->start))) . "</span> ($langHour: " . ucfirst(date("H:i", strtotime($agenda->start))) . ")<br />" . q($agenda->title) . " (" . $langDuration . ": " . q($agenda->duration) . " $message) " . $agenda->content . " </td> </tr>"; $numLine++; } $tool_content .= "</table>"; $found = true; } } // search in documents if ($documents) { $documentHits = $idx->searchRaw(DocumentIndexer::buildQuery($_POST));
$bottomNote = $noteNumber = count($notelist); $tool_content .= " <script type='text/javascript' src='../../modules/auth/sorttable.js'></script> <div class='table-responsive'> <table class='table-default'>"; if ($noteNumber > 0) { $tool_content .= "<tr class='list-header'>"; $tool_content .= "<th class='text-left'>$langCategoryNotes</th>"; $tool_content .= "<th class='text-center'>".icon('fa-gears')."</th>"; $tool_content .= "</tr>"; } foreach ($notelist as $note) { $content = standard_text_escape($note->content); $note->date_time = claro_format_locale_date($dateFormatLong, strtotime($note->date_time)); $tool_content .= "<tr><td><b>"; if (empty($note->title)) { $tool_content .= $langNoteNoTitle; } else { $tool_content .= "<a href='$_SERVER[SCRIPT_NAME]?nid=" . getIndirectReference($note->id)."'>" . q($note->title) . "</a>"; } $tool_content .= "</b><br><small>" . nice_format($note->date_time) . "</small>"; if (!is_null($note->reference_obj_type)) { $tool_content .= "<br><small>$langReferencedObject: " . References::item_link($note->reference_obj_module, $note->reference_obj_type, $note->reference_obj_id, $note->reference_obj_course) . "</small>"; } $tool_content .= standard_text_escape(ellipsize_html($content, 500, "<strong> ...<a href='$_SERVER[SCRIPT_NAME]?nid=" . getIndirectReference($note->id)."'> <span class='smaller'>[$langMore]</span></a></strong>")); $tool_content .= "</td>"; $tool_content .= "<td class='option-btn-cell'>" .
/** * @brief display event list * @global type $course_code * @global type $is_editor * @global type $langEvents * @global type $langCalendar * @global type $langDateNow * @global type $dateFormatLong * @global type $langHour * @global type $langHours * @global type $langDuration * @global type $langAgendaNoTitle * @global type $langDelete * @global type $langConfirmDeleteEvent * @global type $langConfirmDeleteRecursive * @global type $langConfirmDeleteRecursiveEvents * @global type $langModify * @global type $langVisible * @param type $events * @param type $sens * @return string */ function event_list($events, $sens, $type = '') { global $course_code, $is_editor, $langDateNow, $dateFormatLong, $langHour, $langHours, $langDuration, $langAgendaNoTitle, $langDelete, $langConfirmDeleteEvent, $langConfirmDeleteRecursive, $langConfirmDeleteRecursiveEvents, $langEditChange, $langViewHide, $langViewShow, $id, $is_admin; $dateNow = date("j-n-Y / H:i", time()); $barMonth = ''; $nowBarShowed = false; $eventlist = "<div class='table-responsive'><table class='table-default'>"; foreach ($events as $myrow) { $content = standard_text_escape($myrow->content); $d = strtotime($myrow->start); if (!$nowBarShowed) { // Following order if ((($d > time()) and ($sens == " ASC")) or ( ($d < time()) and ( $sens == " DESC "))) { if ($barMonth != date("m", time())) { $barMonth = date("m", time()); $eventlist .= "<tr>"; // current month $eventlist .= "<td colspan='2' class='monthLabel list-header'><b>" . ucfirst(claro_format_locale_date("%B %Y", time())) . "</b></td>"; $eventlist .= "</tr>"; } $nowBarShowed = TRUE; $eventlist .= "<tr>"; $eventlist .= "<td colspan='2' class='today'>$langDateNow $dateNow</td>"; $eventlist .= "</tr>"; } } if ($barMonth != date("m", $d)) { $barMonth = date("m", $d); // month LABEL $eventlist .= "<tr>"; $eventlist .= "<td colspan='2' class='monthLabel list-header'>"; $eventlist .= "<div align='center'><b>" . ucfirst(claro_format_locale_date("%B %Y", $d)) . "</b></div></td>"; $eventlist .= "</tr>"; } $classvis = ''; if ($is_editor) { if ($myrow->visible == 0) { $classvis = 'class = "not_visible"'; } } $eventlist .= "<tr $classvis>"; if ($is_editor or $type == 'personal' or ($is_admin and $type == 'admin')) { $eventlist .= "<td style='padding:15px;'>"; } else { $eventlist .= "<td style='padding:15px;' colspan='2'>"; } if (($myrow->duration != '0:00') and ($myrow->duration != '')) { if ($myrow->duration == 1) { $message = $langHour; } else { $message = $langHours; } $msg = "($langDuration: " . q($myrow->duration) . " $message)"; } else { $msg = ''; } if ($myrow->title == '') { $eventlist .= "<a href='$_SERVER[PHP_SELF]?course=$course_code&id=$myrow->id'>$langAgendaNoTitle</a>"; } else { $eventlist .= "<strong><a href='$_SERVER[PHP_SELF]?course=$course_code&id=$myrow->id'>".q($myrow->title)."</a></strong> $msg"; } $eventlist .= "<div><span class='day'>" . ucfirst(claro_format_locale_date($dateFormatLong, $d)) . "</span> ($langHour: " . ucfirst(date('H:i', $d)) . ")</div>"; if (isset($id)) { $eventlist .= "<br>"; $eventlist .= "<div class='text-muted'>$content</div>"; } $eventlist .= "</td>"; if ($type == 'admin' and $is_admin == true) { $eventlist .= "<td class='option-btn-cell'>"; $eventlist .= action_button(array( array('title' => $langEditChange, 'url' => "?admin=1&modify=$myrow->id", 'icon' => 'fa-edit'), array('title' => $langConfirmDeleteRecursive, 'url' => "?delete=$myrow->id&et=admin&rep=yes", 'icon' => 'fa-times-circle-o', 'class' => 'delete', 'confirm' => $langConfirmDeleteRecursiveEvents, 'show' => !(is_null($myrow->recursion_period) || is_null($myrow->recursion_end))), array('title' => $langDelete, 'url' => "?delete=$myrow->id&et=admin", 'icon' => 'fa-times', 'class' => 'delete', 'confirm' => $langConfirmDeleteEvent) )); $eventlist .= "</td>"; } else { if ($is_editor) { $eventlist .= "<td class='option-btn-cell'>"; $eventlist .= action_button(array( array('title' => $langEditChange, 'url' => "?course=$course_code&id=$myrow->id&edit=true", 'icon' => 'fa-edit'), array('title' => $myrow->visible ? $langViewHide : $langViewShow, 'url' => "?course=$course_code&id=$myrow->id" . ($myrow->visible? "&mkInvisibl=true" : "&mkVisibl=true"), 'icon' => $myrow->visible ? 'fa-eye-slash' : 'fa-eye'), array('title' => $langDelete, 'url' => "?course=$course_code&id=$myrow->id&delete=yes", 'icon' => 'fa-times', 'class' => 'delete', 'confirm' => $langConfirmDeleteEvent), array('title' => $langConfirmDeleteRecursive, 'url' => "?course=$course_code&id=$myrow->id&delete=yes&rep=yes", 'icon' => 'fa-times-circle-o', 'class' => 'delete', 'confirm' => $langConfirmDeleteRecursiveEvents, 'show' => !(is_null($myrow->recursion_period) || is_null($myrow->recursion_end))) )); $eventlist .= "</td>"; } elseif ($type == 'personal') { // personal or admin event $eventlist .= "<td class='option-btn-cell'>"; $eventlist .= action_button(array( array('title' => $langEditChange, 'url' => "?modify=$myrow->id", 'icon' => 'fa-edit'), array('title' => $langDelete, 'url' => "?delete=$myrow->id&et=$type", 'icon' => 'fa-times', 'class' => 'delete', 'confirm' => $langConfirmDeleteEvent), array('title' => $langConfirmDeleteRecursive, 'url' => "?delete=$myrow->id&et=$type&rep=yes", 'icon' => 'fa-times-circle-o', 'class' => 'delete', 'confirm' => $langConfirmDeleteRecursiveEvents, 'show' => !(is_null($myrow->recursion_period) || is_null($myrow->recursion_end))), )); $eventlist .= "</td>"; } } $eventlist .= "</tr>"; } $eventlist .= "</table></div>"; return $eventlist; }
/** * A function to generate day view of a set of events * @param array $day day to show * @param integer $month month to show * @param integer $year year to show * @param array $weekdaynames * @return object with `count` attribute containing the number of associated events with the item */ public static function day_calendar($day, $month, $year) { global $langEvents, $langActions, $langCalendar, $langDateNow, $is_editor, $dateFormatLong, $langNoEvents, $langDay, $langWeek, $langMonth, $langView; $calendar_content = ""; if (is_null($day)) { $day = 1; } $nextdaydate = new DateTime("{$year}-{$month}-{$day}"); $nextdaydate->add(new DateInterval('P1D')); $previousdaydate = new DateTime("{$year}-{$month}-{$day}"); $previousdaydate->sub(new DateInterval('P1D')); $thisday = new DateTime("{$year}-{$month}-{$day}"); $daydescription = ucfirst(claro_format_locale_date($dateFormatLong, $thisday->getTimestamp())); $backward = array('day' => $previousdaydate->format('d'), 'month' => $previousdaydate->format('m'), 'year' => $previousdaydate->format('Y')); $foreward = array('day' => $nextdaydate->format('d'), 'month' => $nextdaydate->format('m'), 'year' => $nextdaydate->format('Y')); $calendar_content .= '<div class="right" style="width:100%">' . $langView . ': ' . '<a href="#" onclick="show_day(selectedday, selectedmonth, selectedyear);return false;">' . $langDay . '</a> | ' . '<a href="#" onclick="show_week(selectedday, selectedmonth, selectedyear);return false;">' . $langWeek . '</a> | ' . '<a href="#" onclick="show_month(selectedday, selectedmonth, selectedyear);return false;">' . $langMonth . '</a></div>'; $calendar_content .= "<table class='table-default'>"; $calendar_content .= "<tr>"; $calendar_content .= '<td width="25"><a href="#" onclick="show_day(' . $backward['day'] . ',' . $backward['month'] . ',' . $backward['year'] . '); return false;">«</a></td>'; $calendar_content .= "<td class='center'><b>{$daydescription}</b></td>"; $calendar_content .= '<td width="25" class="right"><a href="#" onclick="show_day(' . $foreward['day'] . ',' . $foreward['month'] . ',' . $foreward['year'] . '); return false;">»</a></td>'; $calendar_content .= "</tr>"; $calendar_content .= "</table>"; $eventlist = Calendar_Events::get_calendar_events("day", "{$year}-{$month}-{$day}"); $calendar_content .= "<table width='100%' class='tbl_alt'>"; $curhour = 0; $now = getdate(); $today = new DateTime($now['year'] . '-' . $now['mon'] . '-' . $now['mday'] . ' ' . $now['hours'] . ':' . $now['minutes']); if ($now['year'] . '-' . $now['mon'] . '-' . $now['mday'] == "{$year}-{$month}-{$day}") { $thisdayistoday = true; } else { $thisdayistoday = false; } $thishour = new DateTime($today->format('Y-m-d H:00')); $cursorhour = new DateTime("{$year}-{$month}-{$day} 00:00"); $curstarthour = ""; foreach ($eventlist as $thisevent) { $thiseventstart = new DateTime($thisevent->start); $thiseventhour = new DateTime($thiseventstart->format('Y-m-d H:00')); if ($curstarthour != $thiseventhour) { //event date changed while ($cursorhour < $thiseventhour) { if ($thisdayistoday && $thishour >= $cursorhour && intval($cursorhour->diff($thishour, true)->format('%h')) < 6) { $class = 'today'; } else { $class = 'monthLabel'; } $calendar_content .= "<tr><td colspan='3' class='{$class}'>" . " <b>" . ucfirst($cursorhour->format('H:i')) . "</b></td></tr>"; if (intval($cursorhour->diff($thiseventhour, true)->format('%h')) > 6) { $calendar_content .= "<tr><td colspan='3'>{$langNoEvents}</td></tr>"; } $cursorhour->add(new DateInterval('PT6H')); $curhour += 6; } if ($thisdayistoday && $thishour >= $cursorhour && intval($cursorhour->diff($thishour, true)->format('%h')) < 6) { $class = 'today'; } else { $class = 'monthLabel'; } //No hour tr for the event //$calendar_content .= "<tr><td colspan='3' class='$class'>" . " <b>" . ucfirst($thiseventhour->format('H:i')) . "</b></td></tr>"; if ($cursorhour <= $thiseventhour) { $cursorhour->add(new DateInterval('PT6H')); $curhour += 6; } } $calendar_content .= Calendar_Events::day_calendar_item($thisevent, 'even'); $curstarthour = $thiseventhour; //$numLine++; } /* Fill with empty days*/ for ($i = $curhour; $i < 24; $i += 6) { if ($thisdayistoday && $thishour >= $cursorhour && intval($cursorhour->diff($thishour, true)->format('%h')) < 6) { $class = 'today'; } else { $class = 'monthLabel'; } $calendar_content .= "<tr><td colspan='3' class='{$class}'>" . " <b>" . ucfirst($cursorhour->format('H:i')) . "</b></td></tr>"; $calendar_content .= "<tr><td colspan='3'>{$langNoEvents}</td></tr>"; $cursorhour->add(new DateInterval('PT6H')); } $calendar_content .= "</table>"; /* Legend */ $calendar_content .= Calendar_Events::calendar_legend(); return $calendar_content; }
/** * @brief fetch course announcements * @global type $course_id * @global type $course_code * @global type $langNoAnnounce * @global type $urlAppend * @global type $dateFormatLong * @return string */ function course_announcements() { global $course_id, $course_code, $langNoAnnounce, $urlAppend, $dateFormatLong; if (visible_module(MODULE_ID_ANNOUNCE)) { $q = Database::get()->queryArray("SELECT title, `date`, id FROM announcement WHERE course_id = ?d AND visible = 1 ORDER BY `date` DESC LIMIT 5", $course_id); if ($q) { // if announcements exist $ann_content = ''; foreach ($q as $ann) { $ann_url = $urlAppend . "modules/announcements/?course=$course_code&an_id=" . $ann->id; $ann_date = claro_format_locale_date($dateFormatLong, strtotime($ann->date)); $ann_content .= "<li class='list-item'> <span class='item-wholeline'><div class='text-title'><a href='$ann_url'>" . q(ellipsize($ann->title, 60)) ."</a></div>$ann_date</span> </li>"; } return $ann_content; } } return "<li class='list-item'><span class='item-wholeline'><div class='text-title not_visible'> - $langNoAnnounce - </div></span></li>"; }