/** * Construct a Zend_Search_Lucene_Document object out of a document db row. * * @global string $urlServer * @param object $docu * @return Zend_Search_Lucene_Document */ protected function makeDoc($docu) { global $urlServer; $encoding = 'utf-8'; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'doc_' . $docu->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $docu->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'doc', $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $docu->course_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('title', Indexer::phonetics($docu->title), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('content', Indexer::phonetics($docu->description), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('filename', Indexer::phonetics($docu->filename), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('comment', Indexer::phonetics($docu->comment), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('creator', Indexer::phonetics($docu->creator), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('subject', Indexer::phonetics($docu->subject), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('author', Indexer::phonetics($docu->author), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('visible', $docu->visible, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('public', $docu->public, $encoding)); $urlAction = ($docu->format == '.dir') ? 'openDir' : 'download'; $doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $urlServer . 'modules/document/index.php?course=' . course_id_to_code($docu->course_id) . '&' . $urlAction . '=' . $docu->path, $encoding)); return $doc; }
function getSidebarNotifications() { global $modules, $admin_modules, $theme_settings, $urlAppend; $notifications_html = array(); if (isset($_GET['courseIDs']) and count($_GET['courseIDs'])) { $t = new Template(); $t->set_var('sideBarCourseNotifyBlock', $_SESSION['template']['sideBarCourseNotifyBlock']); foreach ($_GET['courseIDs'] as $id) { $t->set_var('sideBarCourseNotify', ''); $notifications = get_course_notifications($id); $course_code = course_id_to_code($id); foreach ($notifications as $n) { $modules_array = (isset($modules[$n->module_id]))? $modules: $admin_modules; if (isset($modules_array[$n->module_id]) && isset($modules_array[$n->module_id]['image']) && isset($theme_settings['icon_map'][$modules_array[$n->module_id]['image']])) { $t->set_var('sideBarCourseNotifyIcon', $theme_settings['icon_map'][$modules_array[$n->module_id]['image']]); $t->set_var('sideBarCourseNotifyCount', $n->notcount); $t->set_var('sideBarCourseNotifyTitle', q($modules_array[$n->module_id]['title'])); $t->set_var('sideBarCourseNotifyURL', $urlAppend . 'modules/' . $modules_array[$n->module_id]['link'] . '/?course=' . $course_code); $t->parse('sideBarCourseNotify', 'sideBarCourseNotifyBlock', true); } } $notifications_html[$id] = $t->get_var('sideBarCourseNotify'); } } return $notifications_html; }
/** * Construct a Zend_Search_Lucene_Document object out of a video db row. * * @global string $urlServer * @param object $video * @return Zend_Search_Lucene_Document */ protected function makeDoc($video) { global $urlServer; $encoding = 'utf-8'; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'video_' . $video->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $video->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'video', $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $video->course_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('title', Indexer::phonetics($video->title), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('content', Indexer::phonetics($video->description), $encoding)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $urlServer . 'modules/video/file.php?course=' . course_id_to_code($video->course_id) . '&id=' . $video->id, $encoding)); return $doc; }
/** * Construct a Zend_Search_Lucene_Document object out of an announcement db row. * * @global string $urlServer * @param object $announce * @return Zend_Search_Lucene_Document */ protected function makeDoc($announce) { global $urlServer; $encoding = 'utf-8'; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'announce_' . $announce->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $announce->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'announce', $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $announce->course_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('title', Indexer::phonetics($announce->title), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('content', Indexer::phonetics(strip_tags($announce->content)), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('visible', $announce->visible, $encoding)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $urlServer . 'modules/announcements/index.php?course=' . course_id_to_code($announce->course_id) . '&an_id=' . $announce->id, $encoding)); return $doc; }
/** * Construct a Zend_Search_Lucene_Document object out of an exercise db row. * * @global string $urlServer * @param object $exercise * @return Zend_Search_Lucene_Document */ protected function makeDoc($exercise) { global $urlServer; $encoding = 'utf-8'; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'exercise_' . $exercise->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $exercise->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'exercise', $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $exercise->course_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('title', Indexer::phonetics($exercise->title), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('content', Indexer::phonetics(strip_tags($exercise->description)), $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('visible', $exercise->active, $encoding)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $urlServer . 'modules/exercise/exercise_submit.php?course=' . course_id_to_code($exercise->course_id) . '&exerciseId=' . $exercise->id, $encoding)); return $doc; }
/** * Construct a Zend_Search_Lucene_Document object out of a forum topic db row. * * @global string $urlServer * @param object $ftopic * @return Zend_Search_Lucene_Document */ protected function makeDoc($ftopic) { global $urlServer; $encoding = 'utf-8'; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'ftopic_' . $ftopic->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $ftopic->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'ftopic', $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $ftopic->course_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('forumid', $ftopic->forum_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('title', Indexer::phonetics($ftopic->title), $encoding)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $urlServer . 'modules/forum/viewforum.php?course=' . course_id_to_code($ftopic->course_id) . '&forum=' . intval($ftopic->forum_id), $encoding)); return $doc; }
/** * Construct a Zend_Search_Lucene_Document object out of a forum post row. * * @global string $urlServer * @param object $fpost * @return Zend_Search_Lucene_Document */ protected function makeDoc($fpost) { global $urlServer; $encoding = 'utf-8'; $doc = new Zend_Search_Lucene_Document(); $doc->addField(Zend_Search_Lucene_Field::Keyword('pk', 'fpost_' . $fpost->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('pkid', $fpost->id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('doctype', 'fpost', $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('courseid', $fpost->course_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Keyword('topicid', $fpost->topic_id, $encoding)); $doc->addField(Zend_Search_Lucene_Field::Text('content', Indexer::phonetics(strip_tags($fpost->post_text)), $encoding)); $doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', $urlServer . 'modules/forum/viewtopic.php?course=' . course_id_to_code($fpost->course_id) . '&topic=' . intval($fpost->topic_id) . '&forum=' . intval($fpost->forum_id), $encoding)); return $doc; }
/** * Refresh the hierarchy nodes (departments) that a course belongs to. All previous belonging * nodes get deleted and then refreshed with the ones given as array arguments. * * @param int $id - Id for a given course * @param array $departments - Array containing the node ids that the given course should belong to */ public function refresh($id, $departments) { if ($departments != null) { Database::get()->query("DELETE FROM {$this->departmenttable} WHERE course = ?d", $id); foreach (array_unique($departments) as $key => $department) { Database::get()->query("INSERT INTO {$this->departmenttable} (course, department) VALUES (?d,?d)", $id, $department); } } // refresh index global $webDir; // required for indexer require_once 'modules/search/indexer.class.php'; Indexer::queueAsync(Indexer::REQUEST_STORE, Indexer::RESOURCE_COURSE, $id); // refresh course metadata require_once 'modules/course_metadata/CourseXML.php'; CourseXMLElement::refreshCourse($id, course_id_to_code($id)); }
$tool_content .= "</table>"; $found = true; } } // search in links if ($links) { $linkHits = $idx->searchRaw(LinkIndexer::buildQuery($_POST)); if (count($linkHits) > 0) { $tool_content .= "<script type='text/javascript' src='../auth/sorttable.js'></script>\n <table width='100%' class='sortable' id='t7' align='left'>\n <tr>\n <th colspan='2' class='left'>{$langLinks}:</th>\n </tr>"; $numLine = 0; foreach ($linkHits as $linkHit) { $link = Database::get()->querySingle("SELECT title, description FROM link WHERE id = ?d", $linkHit->pkid); $class = $numLine % 2 ? 'odd' : 'even'; $tool_content .= "<tr class='{$class}'>\n <td width='1' valign='top'><img style='padding-top:3px;' src='{$themeimg}/arrow.png' title='bullet' /></td>\n <td>"; $desc_text = empty($link->description) ? "" : "<span class='smaller'>" . $link->description . "</span>"; $tool_content .= "<a href='" . $urlServer . "modules/link/go.php?course=" . course_id_to_code($linkHit->courseid) . "&id={$linkHit->pkid}&url=" . urlencode($linkHit->url) . "' target=_blank> " . q($link->title) . "</a> {$desc_text} </td></tr>"; $numLine++; } $tool_content .= "</table>"; $found = true; } } // search in video and videolinks if ($video) { $videoHits = $idx->searchRaw(VideoIndexer::buildQuery($_POST)); $vlinkHits = $idx->searchRaw(VideolinkIndexer::buildQuery($_POST)); if (count($videoHits) > 0) { $tool_content .= "<script type='text/javascript' src='../auth/sorttable.js'></script>\n <table width='99%' class='sortable' id='t8' align='left'>\n <tr>\n <th colspan='2' class='left'>{$langVideo}:</th>\n </tr>"; $numLine = 0; foreach ($videoHits as $videoHit) { $video = Database::get()->querySingle("SELECT title, description FROM video WHERE id = ?d", $videoHit->pkid);
/** * @global type $webDir * @param type $cid * @brief Delete course with id = $cid */ function delete_course($cid) { global $webDir; $course_code = course_id_to_code($cid); Database::get()->query("DELETE FROM announcement WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM document WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM ebook_subsection WHERE section_id IN\n (SELECT ebook_section.id FROM ebook_section, ebook\n WHERE ebook_section.ebook_id = ebook.id AND\n ebook.course_id = ?d)", $cid); Database::get()->query("DELETE FROM ebook_section WHERE id IN\n (SELECT id FROM ebook WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM ebook WHERE course_id = ?d", $cid); Database::get()->query("DELETE `rating` FROM `rating` INNER JOIN `forum_post` ON `rating`.`rid` = `forum_post`.`id` INNER JOIN `forum_topic`\n ON `forum_post`.`topic_id` = `forum_topic`.`id` INNER JOIN `forum` ON `forum`.`id` = `forum_topic`.`forum_id`\n WHERE `rating`.`rtype` = ?s AND `forum`.`course_id` = ?d", 'forum_post', $cid); Database::get()->query("DELETE `rating_cache` FROM `rating_cache` INNER JOIN `forum_post` ON `rating_cache`.`rid` = `forum_post`.`id` INNER JOIN `forum_topic`\n ON `forum_post`.`topic_id` = `forum_topic`.`id` INNER JOIN `forum` ON `forum`.`id` = `forum_topic`.`forum_id`\n WHERE `rating_cache`.`rtype` = ?s AND `forum`.`course_id` = ?d", 'forum_post', $cid); Database::get()->query("DELETE FROM forum_notify WHERE course_id = ?d", $cid); Database::get()->query("DELETE forum_post FROM forum_post INNER JOIN forum_topic ON forum_post.topic_id = forum_topic.id\n INNER JOIN forum ON forum_topic.forum_id = forum.id\n WHERE forum.course_id = ?d", $cid); Database::get()->query("DELETE forum_topic FROM forum_topic INNER JOIN forum ON forum_topic.forum_id = forum.id\n WHERE forum.course_id = ?d", $cid); Database::get()->query("DELETE FROM forum_category WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM forum WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM forum_user_stats WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM glossary WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM group_members WHERE group_id IN\n (SELECT id FROM `group` WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM group_properties WHERE group_id IN\n (SELECT id FROM `group` WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM `group` WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM `group_category` WHERE course_id = ?d", $cid); Database::get()->query("DELETE `rating` FROM `rating` INNER JOIN `link` ON `rating`.`rid` = `link`.`id`\n WHERE `rating`.`rtype` = ?s AND `link`.`course_id` = ?d", 'link', $cid); Database::get()->query("DELETE `rating_cache` FROM `rating_cache` INNER JOIN `link` ON `rating_cache`.`rid` = `link`.`id`\n WHERE `rating_cache`.`rtype` = ?s AND `link`.`course_id` = ?d", 'link', $cid); Database::get()->query("DELETE FROM link WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM link_category WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM agenda WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM course_review WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM unit_resources WHERE unit_id IN\n (SELECT id FROM course_units WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM course_units WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM abuse_report WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM course_weekly_view_activities WHERE course_weekly_view_id IN\n (SELECT id FROM course_weekly_view WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM course_weekly_view WHERE course_id = ?d", $cid); Database::get()->query("DELETE `comments` FROM `comments` INNER JOIN `blog_post` ON `comments`.`rid` = `blog_post`.`id`\n WHERE `comments`.`rtype` = ?s AND `blog_post`.`course_id` = ?d", 'blogpost', $cid); Database::get()->query("DELETE `rating` FROM `rating` INNER JOIN `blog_post` ON `rating`.`rid` = `blog_post`.`id`\n WHERE `rating`.`rtype` = ?s AND `blog_post`.`course_id` = ?d", 'blogpost', $cid); Database::get()->query("DELETE `rating_cache` FROM `rating_cache` INNER JOIN `blog_post` ON `rating_cache`.`rid` = `blog_post`.`id`\n WHERE `rating_cache`.`rtype` = ?s AND `blog_post`.`course_id` = ?d", 'blogpost', $cid); Database::get()->query("DELETE FROM `rating` WHERE `rtype` = ?s AND `rid` = ?d", 'course', $cid); Database::get()->query("DELETE FROM `rating_cache` WHERE `rtype` = ?s AND `rid` = ?d", 'course', $cid); Database::get()->query("DELETE FROM `blog_post` WHERE `course_id` = ?d", $cid); // check if we have guest account. If yes delete it. $guest_user = Database::get()->querySingle("SELECT user_id FROM course_user WHERE course_id = ?d AND status = ?d", $cid, USER_GUEST); if ($guest_user) { deleteUser($guest_user->user_id, true); } Database::get()->query("DELETE FROM course_user WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM course_department WHERE course = ?d", $cid); Database::get()->query("DELETE FROM course WHERE id = ?d", $cid); Database::get()->query("DELETE FROM video WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM videolink WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM dropbox_attachment WHERE msg_id IN (SELECT id FROM dropbox_msg WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM dropbox_index WHERE msg_id IN (SELECT id FROM dropbox_msg WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM dropbox_msg WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM lp_asset WHERE module_id IN (SELECT module_id FROM lp_module WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM lp_rel_learnPath_module WHERE learnPath_id IN (SELECT learnPath_id FROM lp_learnPath WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM lp_user_module_progress WHERE learnPath_id IN (SELECT learnPath_id FROM lp_learnPath WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM lp_module WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM lp_learnPath WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM wiki_pages_content WHERE pid IN (SELECT id FROM wiki_pages WHERE wiki_id IN (SELECT id FROM wiki_properties WHERE course_id = ?d))", $cid); Database::get()->query("DELETE FROM wiki_pages WHERE wiki_id IN (SELECT id FROM wiki_properties WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM wiki_acls WHERE wiki_id IN (SELECT id FROM wiki_properties WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM wiki_properties WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM poll_question_answer WHERE pqid IN (SELECT pqid FROM poll_question WHERE pid IN (SELECT pid FROM poll WHERE course_id = ?d))", $cid); Database::get()->query("DELETE FROM poll_answer_record WHERE pid IN (SELECT pid FROM poll WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM poll_question WHERE pid IN (SELECT pid FROM poll WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM poll WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM assignment_submit WHERE assignment_id IN (SELECT id FROM assignment WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM assignment_to_specific WHERE assignment_id IN (SELECT id FROM assignment WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM assignment WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM exercise_with_questions WHERE question_id IN (SELECT id FROM exercise_question WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM exercise_with_questions WHERE exercise_id IN (SELECT id FROM exercise WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM exercise_answer WHERE question_id IN (SELECT id FROM exercise_question WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM exercise_answer_record WHERE question_id IN (SELECT id FROM exercise_question WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM exercise_question WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM exercise_question_cats WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM exercise_user_record WHERE eid IN (SELECT id FROM exercise WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM exercise WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM course_module WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM course_settings WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM tag WHERE id NOT IN(SELECT DISTINCT tag_id FROM tag_element_module WHERE course_id != ?d)", $cid); Database::get()->query("DELETE FROM tag_element_module WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM gradebook_book WHERE gradebook_activity_id IN \n (SELECT id FROM gradebook_activities WHERE gradebook_id IN (SELECT id FROM gradebook WHERE course_id = ?d))", $cid); Database::get()->query("DELETE FROM gradebook_activities WHERE gradebook_id IN (SELECT id FROM gradebook WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM gradebook_users WHERE gradebook_id IN (SELECT id FROM gradebook WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM gradebook WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM attendance_book WHERE attendance_activity_id IN \n (SELECT id FROM attendance_activities WHERE attendance_id IN (SELECT id FROM attendance WHERE course_id = ?d))", $cid); Database::get()->query("DELETE FROM attendance_activities WHERE attendance_id IN (SELECT id FROM attendance WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM attendance_users WHERE attendance_id IN (SELECT id FROM attendance WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM attendance WHERE course_id = ?d", $cid); removeDir("{$webDir}/courses/{$course_code}"); removeDir("{$webDir}/video/{$course_code}"); // refresh index require_once 'modules/search/indexer.class.php'; Indexer::queueAsync(Indexer::REQUEST_REMOVEALLBYCOURSE, Indexer::RESOURCE_IDX, $cid); Database::get()->query("UPDATE oai_record SET deleted = 1, datestamp = ?t WHERE course_id = ?d", gmdate('Y-m-d H:i:s'), $cid); }
} if (isset($_POST['mailing']) and $_POST['mailing']) { // send mail to recipients of dropbox file if ($course_id != 0 || isset($_POST['course'])) { //message in course context $c = course_id_to_title($cid); $subject_dropbox = "{$c} (" . course_id_to_code($cid) . ") - {$langNewDropboxFile}"; foreach ($recipients as $userid) { if (get_user_email_notification($userid, $cid)) { $linkhere = "<a href='{$urlServer}main/profile/emailunsubscribe.php?cid={$cid}'>{$langHere}</a>."; $unsubscribe = "<br />" . sprintf($langLinkUnsubscribe, $c); $body_dropbox_message = "{$langSender}: " . q($_SESSION['givenname']) . " " . q($_SESSION['surname']) . " <br /><br /> {$subject} <br /><br />" . $_POST['body'] . "<br />"; if ($filesize > 0) { $body_dropbox_message .= "<a href='{$urlServer}modules/dropbox/dropbox_download.php?course=" . course_id_to_code($cid) . "&id={$msg->id}'>[{$langAttachedFile}]</a><br /><br />"; } $body_dropbox_message .= "{$langNote}: {$langDoNotReply} <a href='{$urlServer}modules/dropbox/index.php?course=" . course_id_to_code($cid) . "'>{$langHere}</a>.<br />"; $body_dropbox_message .= "{$unsubscribe} {$linkhere}"; $plain_body_dropbox_message = html2text($body_dropbox_message); $emailaddr = uid_to_email($userid); send_mail_multipart('', '', '', $emailaddr, $subject_dropbox, $plain_body_dropbox_message, $body_dropbox_message, $charset); } } } else { //message in personal context $subject_dropbox = $langNewDropboxFile; foreach ($recipients as $userid) { if (get_user_email_notification($userid)) { $linkhere = "<a href='{$urlServer}main/profile/profile.php'>{$langHere}</a>."; //$unsubscribe = "<br />" . sprintf($langLinkUnsubscribe, $title); $body_dropbox_message = "{$langSender}: " . q($_SESSION['givenname']) . " " . q($_SESSION['surname']) . " <br /><br /> {$subject} <br /><br />" . $_POST['body'] . "<br />"; $body_dropbox_message .= "{$langNote}: {$langDoNotReply} <a href='{$urlServer}modules/dropbox/index.php'>{$langHere}</a>.<br />";
<label class='col-sm-2'>$langNo:</label> <div class='col-sm-10'> <a href='{$urlAppend}main/portfolio.php' class='btn btn-default'><i class='fa fa-reply'></i> $langCancel</a> </div> </div> </form> </div>"; } else { if (isset($_SESSION['uid']) and $_GET['u'] == $_SESSION['uid']) { $q = Database::get()->query("DELETE from course_user WHERE course_id = ?d AND user_id = ?d", $cid, $_GET['u']); if ($q->affectedRows > 0) { Log::record($cid, MODULE_ID_USERS, LOG_DELETE, array('uid' => $_GET['u'], 'right' => 0)); $code = course_id_to_code($cid); // clear session access to lesson unset($_SESSION['dbname']); unset($_SESSION['cid_tmp']); unset($_SESSION['courses'][$code]); Session::Messages($langCoursDelSuccess, 'alert-success'); redirect_to_home_page('main/portfolio.php'); } else { $tool_content .= "<div class='alert alert-danger'>$langCoursError</div>"; } } $tool_content .= "<br><br><div align=right><a href='../index.php' class=mainpage>$langBack</a></div>"; } if (isset($_SESSION['uid'])) { draw($tool_content, 1);
<div class='panel panel-default'> <div class='panel-heading'>$langMessage</div> <div class='panel-body'> <div class='row margin-bottom-thin'> <div class='col-xs-12'> ".standard_text_escape($msg->body)." </div> </div>"; if ($msg->filename != '') { $out .= "<hr> <div class='row margin-top-thin'> <div class='col-sm-2'> $langAttachedFile </div> <div class='col-sm-10'> <a href=\"dropbox_download.php?course=".course_id_to_code($msg->course_id)."&id=$msg->id\" class=\"outtabs\" target=\"_blank\">$msg->real_filename  <i class='fa fa-save'></i></a> (".format_file_size($msg->filesize).") </div> </div>"; } $out .= "</div> </div>"; $out .= '<script> $(".row.title-row").next(".row").hide(); $("#dropboxTabs .nav.nav-tabs").hide(); $(".back_index").on("click", function(){ $(".row.title-row").next(".row").show(); $("#dropboxTabs .nav.nav-tabs").show();
/** * Build link to referenced object by a note * @param integer $module_id the module id * @param $item_type string with values: 'course'|'course_ebook'|'course_event'|'personalevent'|'course_assignment'|'course_document'|'course_link'|'course_exercise'|'course_learningpath'|'course_video'|'course_videolink'|'user' * @param integer $item_id the item id in the database * @param integer $course_id the course id * @return array of modules items as object id and object description */ public static function item_link($module_id, $item_type, $item_id, $course_id) { global $urlServer; $itemurl = $urlServer; if (is_null($item_type) || empty($item_type)) { return false; } $objprops = self::get_module_from_objtype($item_type); $res = Database::get()->queryArray("SELECT {$objprops['id_field']} id, {$objprops['title_field']} title FROM {$objprops['objtable']} WHERE {$objprops['id_field']} = ?d", $item_id); if ($res) { $itemattributes = $res[0]; if ($item_type == 'course') { $itemurl .= $objprops['relative_prefix_path'] . sprintf($objprops['relative_module_path'], course_id_to_code($itemattributes->id)); } else { $itemurl .= $objprops['relative_prefix_path'] . $objprops['relative_module_path'] . '?'; if (!empty($course_id)) { $itemurl .= $objprops['course_parameter'] . "=" . course_id_to_code($itemattributes->id); if (!empty($objprops['item_id_parameter'])) { $itemurl .= '&'; } } if (!empty($objprops['item_id_parameter'])) { $itemurl .= $objprops['item_id_parameter'] . "=" . $item_id; } } $itemlink = '<a href="'; $itemlink .= $itemurl; $itemlink .= '" target="_blank">'; $itemlink .= $itemattributes->title; $itemlink .= "</a>"; return $itemlink; } return false; }
 <i class='fa fa-save'></i></a> (".format_file_size($msg->filesize).") </div> </div>"; } $out .= "</div> </div>"; /*****Reply Form****/ if ($msg->course_id == 0 && !$personal_msgs_allowed) { //do not show reply form when personal messages are not allowed } else { $out .= "<div class='form-wrapper' id='replyBox' style='display:none;'>"; if ($course_id == 0) { $out .= "<form method='post' class='form-horizontal' role='form' action='dropbox_submit.php' enctype='multipart/form-data' onsubmit='return checkForm(this)'>"; if ($msg->course_id != 0) {//thread belonging to a course viewed from the central ui $out .= "<input type='hidden' name='course' value='".course_id_to_code($msg->course_id)."' />"; } } else { $out .= "<form method='post' class='form-horizontal' role='form' action='dropbox_submit.php?course=$course_code' enctype='multipart/form-data' onsubmit='return checkForm(this)'>"; } //hidden variables needed in case of a reply foreach ($msg->recipients as $rec) { if ($rec != $uid) { $out .= "<input type='hidden' name='recipients[]' value='$rec' />"; } } $out .= " <fieldset> <legend>$langReply</legend> <div class='form-group'> <label for='senderName' class='col-sm-2 control-label'>$langSender:</label>
$tool_content .= "<script type='text/javascript' src='../auth/sorttable.js'></script> <table width='100%' class='sortable' id='t7' align='left'> <tr> <th colspan='2' class='left'>$langLinks:</th> </tr>"; $numLine = 0; foreach ($linkHits as $linkHit) { $link = Database::get()->querySingle("SELECT title, description FROM link WHERE id = ?d", $linkHit->pkid); $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>"; $desc_text = (empty($link->description)) ? "" : "<span class='smaller'>" . $link->description . "</span>"; $tool_content .= "<a href='" . $urlServer . "modules/link/go.php?course=" . course_id_to_code($linkHit->courseid) . "&id=" . getIndirectReference($linkHit->pkid) . "&url=" . urlencode($linkHit->url) . "' target=_blank> " . q($link->title) . "</a> $desc_text </td></tr>"; $numLine++; } $tool_content .= "</table>"; $found = true; } } // search in video and videolinks if ($video) { $videoHits = $idx->searchRaw(VideoIndexer::buildQuery($_POST)); $vlinkHits = $idx->searchRaw(VideolinkIndexer::buildQuery($_POST)); if (count($videoHits) > 0) { $tool_content .= "<script type='text/javascript' src='../auth/sorttable.js'></script> <table width='99%' class='sortable' id='t8' align='left'>
$out .= "<tr id='{$msg->id}'><td>{$langDelete}:</td><td class='delete'><i class='class='fa fa-times'></i></td></tr>"; if ($msg->course_id != 0 && $course_id == 0) { $out .= "<tr><td>{$langCourse}:</td><td><a class=\"outtabs\" href=\"index.php?course=" . course_id_to_code($msg->course_id) . "\">" . course_id_to_title($msg->course_id) . "</a></td></tr>"; } $out .= "<tr><td>{$langDate}:</td><td>" . nice_format(date('Y-m-d H:i:s', $msg->timestamp), true) . "</td></tr>"; $out .= "<tr><td>{$langSender}:</td><td>" . display_user($msg->author_id, false, false, "outtabs") . "</td></tr>"; $recipients = ''; foreach ($msg->recipients as $r) { if ($r != $msg->author_id) { $recipients .= display_user($r, false, false, "outtabs") . '<br/>'; } } $out .= "<tr><td>{$langRecipients}:</td><td>" . $recipients . "</td></tr>"; $out .= "<tr><td>{$langMessage}:</td><td id='out_msg_body'>" . standard_text_escape($msg->body) . "</td></tr>"; if ($msg->filename != '') { $out .= "<tr><td>{$langAttachedFile}</td><td><a href=\"dropbox_download.php?course=" . course_id_to_code($msg->course_id) . "&id={$msg->id}\" class=\"outtabs\" target=\"_blank\">{$msg->real_filename}\r\n <img class='outtabs' src='{$themeimg}/save.png' /></a> (" . format_file_size($msg->filesize) . ")</td></tr>"; } $out .= "</table><br/>"; $out .= '<script> $(function() { $("#out_msg_body").find("a").addClass("outtabs"); $(".delete").click(function() { if (confirm("' . $langConfirmDelete . '")) { var rowContainer = $(this).parent().parent(); var id = rowContainer.attr("id"); var string = \'mid=\'+ id; $.ajax({ type: "POST", url: "ajax_handler.php",
</a><span class='smaller'> (".format_file_size($msg->filesize).")</span><br />"; } else { $filename = ''; } $i = 0; if ($mbox_type == 'inbox') { $td[$i++] = "<i class='fa $envelove_icon' title='".q($msg->subject)."' /></i> $bold_start<a href='inbox.php?mid=$msg->id".$urlstr."'>".q($msg->subject)."</a>".$bold_end.$filename; } else { $td[$i++] = "<i class='fa fa-envelope-o' title='".q($msg->subject)."' /></i> <a href='outbox.php?mid=$msg->id".$urlstr."'>".q($msg->subject)."</a>".$filename; } if ($course_id == 0) { if ($msg->course_id != 0) { $td[$i++] = "$bold_start<a class=\"outtabs\" href=\"index.php?course=".course_id_to_code($msg->course_id)."\">".course_id_to_title($msg->course_id)."</a>$bold_end"; } else { $td[$i++] = ""; } } if ($mbox_type == 'inbox') { $td[$i++] = display_user($msg->author_id, false, false, "outtabs"); } else { $recipients = ''; foreach ($msg->recipients as $r) { if ($r != $msg->author_id) { $recipients .= display_user($r, false, false, "outtabs").'<br/>'; } } $td[$i++] = $recipients;
/** * @brief display course user assingment * @global type $langNoAssignmentsExist * @global type $langGroupWorkSubmitted * @global type $langGroupWorkNotSubmitted * @global type $langGroupWorkDeadline_of_Submission * @global type $langGroupWorkSubmitted * @global type $urlServer * @param type $param * @param type $type * @return string */ function getUserAssignments($lesson_id) { global $langNoAssignmentsExist, $langGroupWorkSubmitted, $langDays, $langDaysLeft, $langGroupWorkDeadline_of_Submission, $langGroupWorkSubmitted, $urlServer, $uid; $found = false; $assign_content = '<table width="100%">'; foreach ($lesson_id as $lid) { $q = Database::get()->queryArray("SELECT DISTINCT assignment.id, assignment.title, assignment.deadline,\n (TO_DAYS(assignment.deadline) - TO_DAYS(NOW())) AS days_left\n FROM assignment, course, course_module\n WHERE (TO_DAYS(deadline) - TO_DAYS(NOW())) >= '0'\n AND assignment.active = 1\n AND assignment.course_id = ?d\n AND course.id = ?d\n AND course_module.course_id = course.id\n AND course_module.visible = 1 AND course_module.module_id = " . MODULE_ID_ASSIGN . "\n ORDER BY assignment.deadline", $lid, $lid); if ($q) { $found = true; $assign_content .= "<tr><td class='sub_title1'>" . q(ellipsize(course_id_to_title($lid), 70)) . "</td></tr>"; foreach ($q as $data) { $url = $urlServer . "modules/work/index.php?course=" . course_id_to_code($lid) . "&i=" . $data->id; if (submitted($uid, $data->id, $lid)) { $submit_status = $langGroupWorkSubmitted; } else { $submit_status = "({$langDaysLeft} {$data->days_left} {$langDays})"; } $assign_content .= "<tr><td><ul class='custom_list'><li><a href='{$url}'><b>" . q($data->title) . "</b></a><div class='smaller'>{$langGroupWorkDeadline_of_Submission}: <b>" . nice_format($data->deadline, true) . "</b><div class='grey'>" . $submit_status . "</div></div></li></ul></td></tr>"; } } } $assign_content .= "</table>"; if ($found) { return $assign_content; } else { return "<div class='alert alert-warning'>{$langNoAssignmentsExist}</div>"; } }
/** * @global type $webDir * @param type $cid * @brief Delete course with id = $cid */ function delete_course($cid) { global $webDir; $course_code = course_id_to_code($cid); Database::get()->query("DELETE FROM announcement WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM document WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM ebook_subsection WHERE section_id IN\n (SELECT ebook_section.id FROM ebook_section, ebook\n WHERE ebook_section.ebook_id = ebook.id AND\n ebook.course_id = ?d)", $cid); Database::get()->query("DELETE FROM ebook_section WHERE id IN\n (SELECT id FROM ebook WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM ebook WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM forum_notify WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM glossary WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM group_members WHERE group_id IN\n (SELECT id FROM `group` WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM `group` WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM group_properties WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM link WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM link_category WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM agenda WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM course_review WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM unit_resources WHERE unit_id IN\n (SELECT id FROM course_units WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM course_units WHERE course_id = ?d", $cid); // check if we have guest account. If yes delete him. $guest_user = Database::get()->querySingle("SELECT user_id FROM course_user WHERE course_id = ?d AND status = ?d", $cid, USER_GUEST); if ($guest_user) { deleteUser($guest_user->user_id, true); } Database::get()->query("DELETE FROM course_user WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM course_department WHERE course = ?d", $cid); Database::get()->query("DELETE FROM course WHERE id = ?d", $cid); Database::get()->query("DELETE FROM video WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM videolink WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM dropbox_attachment WHERE msg_id IN (SELECT id FROM dropbox_msg WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM dropbox_index WHERE msg_id IN (SELECT id FROM dropbox_msg WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM dropbox_msg WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM lp_asset WHERE module_id IN (SELECT module_id FROM lp_module WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM lp_rel_learnPath_module WHERE learnPath_id IN (SELECT learnPath_id FROM lp_learnPath WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM lp_user_module_progress WHERE learnPath_id IN (SELECT learnPath_id FROM lp_learnPath WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM lp_module WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM lp_learnPath WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM wiki_pages_content WHERE pid IN (SELECT id FROM wiki_pages WHERE wiki_id IN (SELECT id FROM wiki_properties WHERE course_id = ?d))", $cid); Database::get()->query("DELETE FROM wiki_pages WHERE wiki_id IN (SELECT id FROM wiki_properties WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM wiki_acls WHERE wiki_id IN (SELECT id FROM wiki_properties WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM wiki_properties WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM poll_question_answer WHERE pqid IN (SELECT pqid FROM poll_question WHERE pid IN (SELECT pid FROM poll WHERE course_id = ?d))", $cid); Database::get()->query("DELETE FROM poll_answer_record WHERE pid IN (SELECT pid FROM poll WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM poll_question WHERE pid IN (SELECT pid FROM poll WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM poll WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM assignment_submit WHERE assignment_id IN (SELECT id FROM assignment WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM assignment_to_specific WHERE assignment_id IN (SELECT id FROM assignment WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM assignment WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM exercise_with_questions WHERE question_id IN (SELECT id FROM exercise_question WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM exercise_with_questions WHERE exercise_id IN (SELECT id FROM exercise WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM exercise_answer WHERE question_id IN (SELECT id FROM exercise_question WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM exercise_question WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM exercise_question_cats WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM exercise_answer_record WHERE eurid IN (SELECT a.eurid FROM exercise_user_record a, exercise b WHERE a.eid = b.id AND b.course_id = ?d)", $cid); Database::get()->query("DELETE FROM exercise_user_record WHERE eid IN (SELECT id FROM exercise WHERE course_id = ?d)", $cid); Database::get()->query("DELETE FROM exercise WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM course_module WHERE course_id = ?d", $cid); Database::get()->query("DELETE FROM course_settings WHERE course_id = ?d", $cid); $garbage = "{$webDir}/courses/garbage"; if (!is_dir($garbage)) { mkdir($garbage, 0775); } rename("{$webDir}/courses/{$course_code}", "{$garbage}/{$course_code}"); removeDir("{$webDir}/video/{$course_code}"); // refresh index require_once 'modules/search/indexer.class.php'; Indexer::queueAsync(Indexer::REQUEST_REMOVEALLBYCOURSE, Indexer::RESOURCE_IDX, $cid); Database::get()->query("UPDATE oai_record SET deleted = 1, datestamp = ?t WHERE course_id = ?d", gmdate('Y-m-d H:i:s'), $cid); }
$content = mathfilter($res->post_text, 12, "../../courses/mathimg/"); } elseif ($rtype == 'comment') { if ($comm_rtype == 'blogpost') { $url = $urlServer."modules/blog/index.php?course=".course_id_to_code($cid). "&action=showPost&pId=".$comm_rid."#comments_title"; } elseif ($comm_rtype == 'course') { $url = $urlServer."courses/".course_id_to_code($comm_rid); } $content_type = $langAComment; $content = q($rcontent); } elseif ($rtype == 'link') { $content_type = $langLink; $content = "<a href='" . $urlServer . "modules/link/go.php?course=".course_id_to_code($cid)."&id=$rid&url=" . urlencode($rcontent) . "'>" . q($link_title) . "</a>"; $url = $urlServer."modules/link/?course=".course_id_to_code($cid); } $v = Database::get()->querySingle("SELECT visible FROM course_module WHERE module_id = ?d AND course_id = ?d", MODULE_ID_DROPBOX, $cid)->visible; if ($v == 1) { $reports_cats = array('rudeness' => $langRudeness, 'spam' => $langSpam, 'other' => $langOther); $msg_body = sprintf($langAbuseReportPMBody, $content_type, $reports_cats[$reason], q($msg), $content, $url); $pm = new Msg($uid, $cid, $langAbuseReport, $msg_body, $editors); }
<li><span><b>$langdate:</b></span> <span>$datetime</span></li> </ul> </div> </div>"; $main_dropbox_message = " <!-- Body Section --> <div id='mail-body'> <br> <div><b>$langSubject:</b> <span>$subject</span></div><br> <div><b>$langMailBody:</b></div> <div id='mail-body-inner'> " . $_POST['body']. " </div><br/>"; if ($filesize > 0) { $main_dropbox_message .= "<div><a href='${urlServer}modules/dropbox/dropbox_download.php?course=".course_id_to_code($cid)."&id=$msg->id'>[$langAttachedFile]</a></div><br/>"; } $main_dropbox_message .= " </div>"; $footer_dropbox_message = " <!-- Footer Section --> <div id='mail-footer'> <br> <div id='alert'><small><b class='notice'>$langNote:</b> $langDoNotReply <a href='$msgURL'>$langHere</a>.</small></div> <br> <div> <small>" . sprintf($langLinkUnsubscribe, $c) ." <a href='${urlServer}main/profile/emailunsubscribe.php?cid=$cid'>$langHere</a></small> </div> </div>";