📄 coursebuilder.class.php
字号:
<?php // $Id: CourseBuilder.class.php 13309 2007-09-27 07:29:58Z yannoo $/*============================================================================== Dokeos - elearning and course management software Copyright (c) 2004 Dokeos S.A. Copyright (c) 2003 Ghent University (UGent) Copyright (c) 2001 Universite catholique de Louvain (UCL) Copyright (c) Bart Mollet (bart.mollet@hogent.be) For a full list of contributors, see "credits.txt". The full license can be read in "license.txt". This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See the GNU General Public License for more details. Contact address: Dokeos, 44 rue des palais, B-1030 Brussels, Belgium Mail: info@dokeos.com==============================================================================*/require_once ('Course.class.php');require_once ('Event.class.php');require_once ('Link.class.php');require_once ('ToolIntro.class.php');require_once ('Document.class.php');require_once ('ScormDocument.class.php');require_once ('LinkCategory.class.php');require_once ('CourseDescription.class.php');require_once ('ForumPost.class.php');require_once ('ForumTopic.class.php');require_once ('Forum.class.php');require_once ('ForumCategory.class.php');require_once ('Quiz.class.php');require_once ('QuizQuestion.class.php');require_once ('Learnpath.class.php');require_once ('Survey.class.php');require_once ('SurveyQuestion.class.php');/** * Class which can build a course-object from a Dokeos-course. * @author Bart Mollet <bart.mollet@hogent.be> * @package dokeos.backup */class CourseBuilder{ /** * The course */ var $course; /** * Create a new CourseBuilder */ function CourseBuilder() { global $_course; $this->course = new Course(); $this->course->code = $_course['official_code']; $this->course->path = api_get_path(SYS_COURSE_PATH).$_course['path'].'/'; $this->course->backup_path = api_get_path(SYS_COURSE_PATH).$_course['path']; } /** * Get the created course * @return course The course */ function get_course() { return $this->course; } /** * Build the course-object */ function build() { $this->build_events(); $this->build_announcements(); $this->build_links(); $this->build_tool_intro(); //$this->build_forums(); $this->build_documents(); $this->build_course_descriptions(); $this->build_quizzes(); $this->build_learnpaths(); $this->build_surveys(); //TABLE_LINKED_RESOURCES is the "resource" course table, which is deprecated, apparently $table = Database :: get_course_table(TABLE_LINKED_RESOURCES); foreach ($this->course->resources as $type => $resources) { foreach ($resources as $id => $resource) { $sql = "SELECT * FROM ".$table." WHERE source_type = '".$resource->get_type()."' AND source_id = '".$resource->get_id()."'"; $res = api_sql_query($sql, __FILE__, __LINE__); while ($link = Database::fetch_object($res)) { $this->course->resources[$type][$id]->add_linked_resource($link->resource_type, $link->resource_id); } } } $table = Database :: get_course_table(TABLE_ITEM_PROPERTY); foreach ($this->course->resources as $type => $resources) { foreach ($resources as $id => $resource) { $tool = $resource->get_tool(); if ($tool != null) { $sql = "SELECT * FROM $table WHERE TOOL = '".$tool."' AND ref='".$resource->get_id()."'"; $res = api_sql_query($sql,__FILE__,__LINE__); $all_properties = array (); while ($item_property = Database::fetch_array($res)) { $all_properties[] = $item_property; } $this->course->resources[$type][$id]->item_properties = $all_properties; } } } return $this->course; } /** * Build the documents */ function build_documents() { $table_doc = Database :: get_course_table(TABLE_DOCUMENT); $table_prop = Database :: get_course_table(TABLE_ITEM_PROPERTY); $sql = 'SELECT * FROM '.$table_doc.' d, '.$table_prop.' p WHERE tool = \''.TOOL_DOCUMENT.'\' AND p.ref = d.id AND p.visibility != 2 ORDER BY path'; $db_result = api_sql_query($sql, __FILE__, __LINE__); while ($obj = Database::fetch_object($db_result)) { $doc = new Document($obj->id, $obj->path, $obj->comment, $obj->title, $obj->filetype, $obj->size); $this->course->add_resource($doc); } } /** * Build the forums */ function build_forums() { $table = Database :: get_course_table(TABLE_FORUM); $sql = 'SELECT * FROM '.$table; $db_result = api_sql_query($sql, __FILE__, __LINE__); while ($obj = Database::fetch_object($db_result)) { $forum = new Forum($obj->forum_id, $obj->forum_name, $obj->forum_description, $obj->cat_id, $obj->forum_last_post_id); $this->course->add_resource($forum); $this->build_forum_category($obj->cat_id); } $this->build_forum_topics(); $this->build_forum_posts(); } /** * Build a forum-category */ function build_forum_category($id) { $table = Database :: get_course_table(TABLE_FORUM_CATEGORY); $sql = 'SELECT * FROM '.$table.' WHERE cat_id = '.$id; $db_result = api_sql_query($sql, __FILE__, __LINE__); while ($obj = Database::fetch_object($db_result)) { $forum_category = new ForumCategory($obj->cat_id, $obj->cat_title); $this->course->add_resource($forum_category); } } /** * Build the forum-topics */ function build_forum_topics() { $table = Database :: get_course_table(TABLE_FORUM_POST); $sql = 'SELECT * FROM '.$table; $db_result = api_sql_query($sql, __FILE__, __LINE__); while ($obj = Database::fetch_object($db_result)) { $forum_topic = new ForumTopic($obj->topic_id, $obj->topic_title, $obj->topic_time, $obj->prenom, $obj->nom, $obj->topic_notify, $obj->forum_id, $obj->topic_last_post_id); $this->course->add_resource($forum_topic); } } /** * Build the forum-posts */ function build_forum_posts() { $table_post = Database :: get_course_table(TABLE_FORUM_POST); $table_posttext = Database :: get_course_table(TOOL_FORUM_POST_TEXT_TABLE); $sql = 'SELECT * FROM '.$table_post.' p,'.$table_posttext.' pt WHERE p.post_id = pt.post_id'; $db_result = api_sql_query($sql, __FILE__, __LINE__); while ($obj = Database::fetch_object($db_result)) { $forum_post = new ForumPost($obj->post_id, $obj->post_title, $obj->post_text, $obj->post_time, $obj->poster_ip, $obj->prenom, $obj->nom, $obj->topic_notify, $obj->parent_id, $obj->topic_id); $this->course->add_resource($forum_post); } } /** * Build the links */ function build_links() { $table = Database :: get_course_table(TABLE_LINK); $table_prop = Database :: get_course_table(TABLE_ITEM_PROPERTY); $sql = "SELECT * FROM $table l, $table_prop p WHERE p.ref=l.id AND p.tool = '".TOOL_LINK."' AND p.visibility != 2 ORDER BY l.display_order"; $db_result = api_sql_query($sql, __FILE__, __LINE__); while ($obj = Database::fetch_object($db_result)) { $link = new Link($obj->id, $obj->title, $obj->url, $obj->description, $obj->category_id, $obj->on_homepage); $this->course->add_resource($link); $res = $this->build_link_category($obj->category_id); if($res > 0) { $this->course->resources[RESOURCE_LINK][$obj->id]->add_linked_resource(RESOURCE_LINKCATEGORY, $obj->category_id); } } } /** * Build tool intro */ function build_tool_intro() { $table = Database :: get_course_table(TABLE_TOOL_INTRO); $sql = 'SELECT * FROM '.$table; $db_result = api_sql_query($sql, __FILE__, __LINE__); while ($obj = Database::fetch_object($db_result)) { $tool_intro = new ToolIntro($obj->id, $obj->intro_text); $this->course->add_resource($tool_intro); } } /** * Build a link category */ function build_link_category($id) { $link_cat_table = Database :: get_course_table(TABLE_LINK_CATEGORY); $sql = 'SELECT * FROM '.$link_cat_table.' WHERE id = '.$id; $db_result = api_sql_query($sql, __FILE__, __LINE__); while ($obj = Database::fetch_object($db_result))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -