Exemple #1
0
 /**
  *
  * @param string $courseName
  */
 public function onCourseCreated($courseCode)
 {
     $this->log("Create tool links for course {$courseCode} in Dokeos.");
     // Add Libcast tool in production section
     $sql = sprintf("INSERT INTO %s VALUES (NULL, 'videocast','%s','videocast.gif','%d','0','squaregrey.gif','NO','_self','authoring','0')", $this->getToolTableName($courseCode), $this->getHomeName() . '/libcast.php', (int) string2binary(api_get_setting('course_create_active_tools', 'videocast')));
     $this->log($sql);
     \Database::query($sql, __FILE__, __LINE__);
     // Add a link to the Course stream in Libcast backend
     $sql = sprintf("INSERT INTO %s VALUES (NULL, 'libcast','%s','videocast.gif','%d','1','squaregrey.gif',1,'_self','admin','0')", $this->getToolTableName($courseCode), $this->getHomeName() . '/manage.php', (int) string2binary(api_get_setting('course_create_active_tools', 'videocast')));
     $this->log($sql);
     \Database::query($sql, __FILE__, __LINE__);
 }
Exemple #2
0
 /**
  * Add course settings and, if not asked otherwise, add a tool link on the course homepage
  * @param int $courseId Course integer ID
  * @param boolean $add_tool_link Whether to add a tool link or not
  * (some tools might just offer a configuration section and act on the backend)
  * @return boolean  False on error, null otherwise
  */
 public function install_course_fields($courseId, $add_tool_link = true)
 {
     $plugin_name = $this->get_name();
     $t_course = Database::get_course_table(TABLE_COURSE_SETTING);
     $courseId = intval($courseId);
     if (empty($courseId)) {
         return false;
     }
     // Adding course settings.
     if (!empty($this->course_settings)) {
         foreach ($this->course_settings as $setting) {
             $variable = Database::escape_string($setting['name']);
             $value = '';
             if (isset($setting['init_value'])) {
                 $value = Database::escape_string($setting['init_value']);
             }
             $type = 'textfield';
             if (isset($setting['type'])) {
                 $type = Database::escape_string($setting['type']);
             }
             if (isset($setting['group'])) {
                 $group = Database::escape_string($setting['group']);
                 $sql = "SELECT value FROM {$t_course}\n                            WHERE c_id = {$courseId} AND variable = '{$group}' AND subkey = '{$variable}' ";
                 $result = Database::query($sql);
                 if (!Database::num_rows($result)) {
                     $sql = "INSERT INTO {$t_course} (c_id, variable, subkey, value, category, type) VALUES\n                                ({$courseId}, '{$group}', '{$variable}', '{$value}', 'plugins', '{$type}')";
                     Database::query($sql);
                 }
             } else {
                 $sql = "SELECT value FROM {$t_course}\n                            WHERE c_id = {$courseId} AND variable = '{$variable}' ";
                 $result = Database::query($sql);
                 if (!Database::num_rows($result)) {
                     $sql = "INSERT INTO {$t_course} (c_id, variable, value, category, subkey, type) VALUES\n                                ({$courseId}, '{$variable}','{$value}', 'plugins', '{$plugin_name}', '{$type}')";
                     Database::query($sql);
                 }
             }
         }
     }
     // Stop here if we don't want a tool link on the course homepage
     if (!$add_tool_link) {
         return true;
     }
     //Add an icon in the table tool list
     $t_tool = Database::get_course_table(TABLE_TOOL_LIST);
     $sql = "SELECT name FROM {$t_tool}\n                WHERE c_id = {$courseId} AND name = '{$plugin_name}' ";
     $result = Database::query($sql);
     if (!Database::num_rows($result)) {
         $tool_link = "{$plugin_name}/start.php";
         $visibility = string2binary(api_get_setting('course.course_create_active_tools', $plugin_name));
         $sql = "INSERT INTO {$t_tool} VALUES\n            ({$courseId}, NULL, '{$plugin_name}', '{$tool_link}', '{$plugin_name}.png',' " . $visibility . "','0', 'squaregrey.gif','NO','_self','plugin','0')";
         Database::query($sql);
     }
 }
/**
 * Fills the course database with some required content and example content.
 * @param int Course (int) ID
 * @param string Course directory name (e.g. 'ABC')
 * @param string Language used for content (e.g. 'spanish')
 * @param bool Whether to fill the course with example content
 * @return bool False on error, true otherwise
 * @version 1.2
 * @assert (null, '', '', null) === false
 * @assert (1, 'ABC', null, null) === false
 * @assert (1, 'TEST', 'spanish', true) === true
 */
function fill_db_course($course_id, $course_repository, $language, $fill_with_exemplary_content = null)
{
    if (is_null($fill_with_exemplary_content)) {
        $fill_with_exemplary_content = api_get_setting('example_material_course_creation') != 'false';
    }
    global $_configuration;
    $course_id = intval($course_id);
    if (empty($course_id)) {
        return false;
    }
    $now = api_get_utc_datetime(time());
    $tbl_course_homepage = Database::get_course_table(TABLE_TOOL_LIST);
    $TABLEINTROS = Database::get_course_table(TABLE_TOOL_INTRO);
    $TABLEGROUPCATEGORIES = Database::get_course_table(TABLE_GROUP_CATEGORY);
    $TABLEITEMPROPERTY = Database::get_course_table(TABLE_ITEM_PROPERTY);
    $TABLETOOLAGENDA = Database::get_course_table(TABLE_AGENDA);
    $TABLETOOLANNOUNCEMENTS = Database::get_course_table(TABLE_ANNOUNCEMENT);
    $TABLETOOLDOCUMENT = Database::get_course_table(TABLE_DOCUMENT);
    $TABLETOOLLINK = Database::get_course_table(TABLE_LINK);
    $TABLEQUIZ = Database::get_course_table(TABLE_QUIZ_TEST);
    $TABLEQUIZQUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
    $TABLEQUIZQUESTIONLIST = Database::get_course_table(TABLE_QUIZ_QUESTION);
    $TABLEQUIZANSWERSLIST = Database::get_course_table(TABLE_QUIZ_ANSWER);
    $TABLESETTING = Database::get_course_table(TABLE_COURSE_SETTING);
    $TABLEFORUMCATEGORIES = Database::get_course_table(TABLE_FORUM_CATEGORY);
    $TABLEFORUMS = Database::get_course_table(TABLE_FORUM);
    $TABLEFORUMTHREADS = Database::get_course_table(TABLE_FORUM_THREAD);
    $TABLEFORUMPOSTS = Database::get_course_table(TABLE_FORUM_POST);
    $TABLEGRADEBOOK = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
    $TABLEGRADEBOOKLINK = Database::get_main_table(TABLE_MAIN_GRADEBOOK_LINK);
    $TABLEGRADEBOOKCERT = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CERTIFICATE);
    include api_get_path(SYS_CODE_PATH) . 'lang/english/create_course.inc.php';
    $file_to_include = api_get_path(SYS_CODE_PATH) . 'lang/' . $language . '/create_course.inc.php';
    if (file_exists($file_to_include)) {
        include $file_to_include;
    }
    $visible_for_all = 1;
    $visible_for_course_admin = 0;
    $visible_for_platform_admin = 2;
    /*    Course tools  */
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_COURSE_DESCRIPTION . "','course_description/','info.gif','" . string2binary(api_get_setting('course_create_active_tools', 'course_description')) . "','0','squaregrey.gif','NO','_self','authoring','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_CALENDAR_EVENT . "','calendar/agenda.php','agenda.gif','" . string2binary(api_get_setting('course_create_active_tools', 'agenda')) . "','0','squaregrey.gif','NO','_self','interaction','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_DOCUMENT . "','document/document.php','folder_document.gif','" . string2binary(api_get_setting('course_create_active_tools', 'documents')) . "','0','squaregrey.gif','NO','_self','authoring','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_LEARNPATH . "','newscorm/lp_controller.php','scorms.gif','" . string2binary(api_get_setting('course_create_active_tools', 'learning_path')) . "','0','squaregrey.gif','NO','_self','authoring','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_LINK . "','link/link.php','links.gif','" . string2binary(api_get_setting('course_create_active_tools', 'links')) . "','0','squaregrey.gif','NO','_self','authoring','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_QUIZ . "','exercice/exercice.php','quiz.gif','" . string2binary(api_get_setting('course_create_active_tools', 'quiz')) . "','0','squaregrey.gif','NO','_self','authoring','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_ANNOUNCEMENT . "','announcements/announcements.php','valves.gif','" . string2binary(api_get_setting('course_create_active_tools', 'announcements')) . "','0','squaregrey.gif','NO','_self','authoring','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_FORUM . "','forum/index.php','forum.gif','" . string2binary(api_get_setting('course_create_active_tools', 'forums')) . "','0','squaregrey.gif','NO','_self','interaction','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_DROPBOX . "','dropbox/index.php','dropbox.gif','" . string2binary(api_get_setting('course_create_active_tools', 'dropbox')) . "','0','squaregrey.gif','NO','_self','interaction','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_USER . "','user/user.php','members.gif','" . string2binary(api_get_setting('course_create_active_tools', 'users')) . "','0','squaregrey.gif','NO','_self','interaction','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_GROUP . "','group/group.php','group.gif','" . string2binary(api_get_setting('course_create_active_tools', 'groups')) . "','0','squaregrey.gif','NO','_self','interaction','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_CHAT . "','chat/chat.php','chat.gif','" . string2binary(api_get_setting('course_create_active_tools', 'chat')) . "','0','squaregrey.gif','NO','_self','interaction','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_STUDENTPUBLICATION . "','work/work.php','works.gif','" . string2binary(api_get_setting('course_create_active_tools', 'student_publications')) . "','0','squaregrey.gif','NO','_self','interaction','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_SURVEY . "','survey/survey_list.php','survey.gif','" . string2binary(api_get_setting('course_create_active_tools', 'survey')) . "','0','squaregrey.gif','NO','_self','interaction','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_WIKI . "','wiki/index.php','wiki.gif','" . string2binary(api_get_setting('course_create_active_tools', 'wiki')) . "','0','squaregrey.gif','NO','_self','interaction','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_GRADEBOOK . "','gradebook/index.php','gradebook.gif','" . string2binary(api_get_setting('course_create_active_tools', 'gradebook')) . "','0','squaregrey.gif','NO','_self','authoring','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_GLOSSARY . "','glossary/index.php','glossary.gif','" . string2binary(api_get_setting('course_create_active_tools', 'glossary')) . "','0','squaregrey.gif','NO','_self','authoring','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_NOTEBOOK . "','notebook/index.php','notebook.gif','" . string2binary(api_get_setting('course_create_active_tools', 'notebook')) . "','0','squaregrey.gif','NO','_self','interaction','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_ATTENDANCE . "','attendance/index.php','attendance.gif','" . string2binary(api_get_setting('course_create_active_tools', 'attendances')) . "','0','squaregrey.gif','NO','_self','authoring','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_COURSE_PROGRESS . "','course_progress/index.php','course_progress.gif','" . string2binary(api_get_setting('course_create_active_tools', 'course_progress')) . "','0','squaregrey.gif','NO','_self','authoring','0')");
    if (api_get_setting('service_visio', 'active') == 'true') {
        $mycheck = api_get_setting('service_visio', 'visio_host');
        if (!empty($mycheck)) {
            Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_VISIO_CONFERENCE . "','conference/index.php?type=conference','visio_meeting.gif','1','0','squaregrey.gif','NO','_self','interaction','0')");
            Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_VISIO_CLASSROOM . "','conference/index.php?type=classroom','visio.gif','1','0','squaregrey.gif','NO','_self','authoring','0')");
        }
    }
    if (api_get_setting('search_enabled') == 'true') {
        Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_SEARCH . "','search/','info.gif','" . string2binary(api_get_setting('course_create_active_tools', 'enable_search')) . "','0','search.gif','NO','_self','authoring','0')");
    }
    // Smartblogs (Kevin Van Den Haute :: kevin@develop-it.be)
    $sql = "INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL,'" . TOOL_BLOGS . "','blog/blog_admin.php','blog_admin.gif','" . string2binary(api_get_setting('course_create_active_tools', 'blogs')) . "','1','squaregrey.gif','NO','_self','admin','0')";
    Database::query($sql);
    // end of Smartblogs
    /*  Course homepage tools for course admin only    */
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_TRACKING . "','tracking/courseLog.php','statistics.gif','{$visible_for_course_admin}','1','', 'NO','_self','admin','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_COURSE_SETTING . "','course_info/infocours.php','reference.gif','{$visible_for_course_admin}','1','', 'NO','_self','admin','0')");
    Database::query("INSERT INTO {$tbl_course_homepage} VALUES ({$course_id}, NULL, '" . TOOL_COURSE_MAINTENANCE . "','course_info/maintenance.php','backup.gif','{$visible_for_course_admin}','1','','NO','_self', 'admin','0')");
    $defaultEmailExerciseAlert = 1;
    if (isset($_configuration['email_alert_manager_on_new_quiz'])) {
        $defaultEmailExerciseAlert = intval($_configuration['email_alert_manager_on_new_quiz']);
    }
    /* course_setting table (courseinfo tool)   */
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'email_alert_manager_on_new_doc',0,'work')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'email_alert_on_new_doc_dropbox',0,'dropbox')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'allow_user_edit_agenda',0,'agenda')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'allow_user_edit_announcement',0,'announcement')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'email_alert_manager_on_new_quiz', {$defaultEmailExerciseAlert},'quiz')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'allow_user_image_forum',1,'forum')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'course_theme','','theme')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'allow_learning_path_theme','1','theme')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'allow_open_chat_window',1,'chat')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'email_alert_to_teacher_on_new_user_in_course',0,'registration')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'allow_user_view_user_list',1,'user')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'display_info_advance_inside_homecourse',1,'thematic_advance')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'email_alert_students_on_new_homework',0,'work')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'enable_lp_auto_launch',0,'learning_path')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'pdf_export_watermark_text','','learning_path')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable,value,category) VALUES ({$course_id}, 'allow_public_certificates','','certificates')");
    Database::query("INSERT INTO {$TABLESETTING} (c_id, variable, value) VALUES ({$course_id}, 'documents_default_visibility', 'visible')");
    /* Course homepage tools for platform admin only */
    /* Group tool */
    Database::query("INSERT INTO {$TABLEGROUPCATEGORIES}  (c_id,  id , title , description , max_student , self_reg_allowed , self_unreg_allowed , groups_per_user , display_order )\n            VALUES ({$course_id}, '2', '" . lang2db(get_lang('DefaultGroupCategory')) . "', '', '8', '0', '0', '0', '0');");
    /*    Example Material  */
    global $language_interface;
    $language_interface = !empty($language_interface) ? $language_interface : api_get_setting('platformLanguage');
    // Example material should be in the same language as the course is.
    $language_interface_original = $language_interface;
    $language_interface = $language;
    //Share folder
    Database::query("INSERT INTO {$TABLETOOLDOCUMENT} (c_id, path,title,filetype,size) VALUES ({$course_id},'/shared_folder','" . get_lang('UserFolders') . "','folder','0')");
    $example_doc_id = Database::insert_id();
    Database::query("INSERT INTO {$TABLEITEMPROPERTY} (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ({$course_id},'document',1,NOW(),NOW(),{$example_doc_id},'DocumentAdded',1,0,NULL,0)");
    //Chat folder
    Database::query("INSERT INTO {$TABLETOOLDOCUMENT} (c_id, path,title,filetype,size) VALUES ({$course_id},'/chat_files','" . get_lang('ChatFiles') . "','folder','0')");
    $example_doc_id = Database::insert_id();
    Database::query("INSERT INTO {$TABLEITEMPROPERTY} (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ({$course_id},'document',1,NOW(),NOW(),{$example_doc_id},'DocumentAdded',1,0,NULL,0)");
    $sys_course_path = api_get_path(SYS_COURSE_PATH);
    $perm = api_get_permissions_for_new_directories();
    $perm_file = api_get_permissions_for_new_files();
    $chat_path = $sys_course_path . $course_repository . '/document/chat_files';
    if (!is_dir($chat_path)) {
        @mkdir($chat_path, api_get_permissions_for_new_directories());
    }
    /*    Documents   */
    if ($fill_with_exemplary_content) {
        Database::query("INSERT INTO {$TABLETOOLDOCUMENT} (c_id,path,title,filetype,size) VALUES ({$course_id},'/images','" . get_lang('Images') . "','folder','0')");
        $example_doc_id = Database::insert_id();
        Database::query("INSERT INTO {$TABLEITEMPROPERTY}  (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ({$course_id},'document',1,NOW(),NOW(),{$example_doc_id},'DocumentAdded',1,0,NULL,0)");
        Database::query("INSERT INTO {$TABLETOOLDOCUMENT} (c_id, path,title,filetype,size) VALUES ({$course_id},'/images/gallery','" . get_lang('DefaultCourseImages') . "','folder','0')");
        $example_doc_id = Database::insert_id();
        Database::query("INSERT INTO {$TABLEITEMPROPERTY}  (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ({$course_id},'document',1,NOW(),NOW(),{$example_doc_id},'DocumentAdded',1,0,NULL,0)");
        Database::query("INSERT INTO {$TABLETOOLDOCUMENT} (c_id, path,title,filetype,size) VALUES ({$course_id},'/audio','" . get_lang('Audio') . "','folder','0')");
        $example_doc_id = Database::insert_id();
        Database::query("INSERT INTO {$TABLEITEMPROPERTY}  (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ({$course_id},'document',1,NOW(),NOW(),{$example_doc_id},'DocumentAdded',1,0,NULL,0)");
        Database::query("INSERT INTO {$TABLETOOLDOCUMENT} (c_id, path,title,filetype,size) VALUES ({$course_id},'/flash','" . get_lang('Flash') . "','folder','0')");
        $example_doc_id = Database::insert_id();
        Database::query("INSERT INTO {$TABLEITEMPROPERTY}  (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ({$course_id},'document',1,NOW(),NOW(),{$example_doc_id},'DocumentAdded',1,0,NULL,0)");
        Database::query("INSERT INTO {$TABLETOOLDOCUMENT} (c_id, path,title,filetype,size) VALUES ({$course_id},'/video','" . get_lang('Video') . "','folder','0')");
        $example_doc_id = Database::insert_id();
        Database::query("INSERT INTO {$TABLEITEMPROPERTY}  (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ({$course_id},'document',1,NOW(),NOW(),{$example_doc_id},'DocumentAdded',1,0,NULL,0)");
        Database::query("INSERT INTO {$TABLETOOLDOCUMENT} (c_id, path,title,filetype,size) VALUES ({$course_id},'/certificates','" . get_lang('Certificates') . "','folder','0')");
        $example_doc_id = Database::insert_id();
        Database::query("INSERT INTO {$TABLEITEMPROPERTY}  (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ({$course_id},'document',1,NOW(),NOW(),{$example_doc_id},'DocumentAdded',1,0,NULL,0)");
        // FILL THE COURSE DOCUMENT WITH DEFAULT COURSE PICTURES
        $folders_to_copy_from_default_course = array('images', 'audio', 'flash', 'video', 'certificates');
        $default_course_path = api_get_path(SYS_CODE_PATH) . 'default_course_document/';
        $default_document_array = array();
        foreach ($folders_to_copy_from_default_course as $folder) {
            $default_course_folder_path = $default_course_path . $folder . '/';
            $files = browse_folders($default_course_folder_path, array(), $folder);
            $sorted_array = sort_pictures($files, 'dir');
            $sorted_array = array_merge($sorted_array, sort_pictures($files, 'file'));
            $default_document_array[$folder] = $sorted_array;
        }
        //echo '<pre>'; print_r($default_document_array);exit;
        //Light protection (adding index.html in every document folder)
        $htmlpage = "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\">\n <title>Not authorized</title>\n  </head>\n  <body>\n  </body>\n</html>";
        $example_cert_id = 0;
        if (is_array($default_document_array) && count($default_document_array) > 0) {
            foreach ($default_document_array as $media_type => $array_media) {
                $path_documents = "/{$media_type}/";
                //hack until feature #5242 is implemented
                if ($media_type == 'images') {
                    $media_type = 'images/gallery';
                    $images_folder = $sys_course_path . $course_repository . "/document/images/";
                    if (!is_dir($images_folder)) {
                        //Creating index.html
                        mkdir($images_folder, $perm);
                        $fd = fopen($images_folder . 'index.html', 'w');
                        fwrite($fd, $htmlpage);
                        @chmod($images_folder . 'index.html', $perm_file);
                    }
                }
                $course_documents_folder = $sys_course_path . $course_repository . "/document/{$media_type}/";
                $default_course_path = api_get_path(SYS_CODE_PATH) . 'default_course_document' . $path_documents;
                //echo 'try '.$course_documents_folder; echo '<br />';
                if (!is_dir($course_documents_folder)) {
                    //Creating index.html
                    mkdir($course_documents_folder, $perm);
                    $fd = fopen($course_documents_folder . 'index.html', 'w');
                    fwrite($fd, $htmlpage);
                    @chmod($course_documents_folder . 'index.html', $perm_file);
                }
                if (is_array($array_media) && count($array_media) > 0) {
                    foreach ($array_media as $key => $value) {
                        if (isset($value['dir']) && !empty($value['dir'])) {
                            if (!is_dir($course_documents_folder . $value['dir'])) {
                                //Creating folder
                                mkdir($course_documents_folder . $value['dir'], $perm);
                                //Creating index.html (for light protection)
                                $index_html = $course_documents_folder . $value['dir'] . '/index.html';
                                $fd = fopen($index_html, 'w');
                                fwrite($fd, $htmlpage);
                                @chmod($index_html, $perm_file);
                                //Inserting folder in the DB
                                $folder_path = substr($value['dir'], 0, strlen($value['dir']) - 1);
                                $temp = explode('/', $folder_path);
                                $title = $temp[count($temp) - 1];
                                //hack until feature #5242 is implemented
                                if ($title == 'gallery') {
                                    $title = get_lang('DefaultCourseImages');
                                }
                                if ($media_type == 'images/gallery') {
                                    $folder_path = 'gallery/' . $folder_path;
                                }
                                Database::query("INSERT INTO {$TABLETOOLDOCUMENT} (c_id, path,title,filetype,size) VALUES ({$course_id},'{$path_documents}" . $folder_path . "','" . $title . "','folder','0')");
                                $image_id = Database::insert_id();
                                Database::query("INSERT INTO {$TABLEITEMPROPERTY} (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ({$course_id},'document',1,NOW(),NOW(),{$image_id},'DocumentAdded',1,0,NULL,0)");
                            }
                        }
                        if (isset($value['file']) && !empty($value['file'])) {
                            if (!file_exists($course_documents_folder . $value['file'])) {
                                //Copying file
                                copy($default_course_path . $value['file'], $course_documents_folder . $value['file']);
                                chmod($course_documents_folder . $value['file'], $perm_file);
                                //echo $default_course_path.$value['file']; echo ' - '; echo $course_documents_folder.$value['file']; echo '<br />';
                                $temp = explode('/', $value['file']);
                                $file_size = filesize($course_documents_folder . $value['file']);
                                //hack until feature #5242 is implemented
                                if ($media_type == 'images/gallery') {
                                    $value["file"] = 'gallery/' . $value["file"];
                                }
                                //Inserting file in the DB
                                Database::query("INSERT INTO {$TABLETOOLDOCUMENT} (c_id, path,title,filetype,size) VALUES ({$course_id},'{$path_documents}" . $value["file"] . "','" . $temp[count($temp) - 1] . "','file','{$file_size}')");
                                $image_id = Database::insert_id();
                                if ($path_documents . $value['file'] == '/certificates/default.html') {
                                    $example_cert_id = $image_id;
                                }
                                Database::query("INSERT INTO {$TABLEITEMPROPERTY} (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ({$course_id},'document',1,NOW(),NOW(),{$image_id},'DocumentAdded',1,0,NULL,1)");
                            }
                        }
                    }
                }
            }
        }
        /* Agenda tool */
        Database::query("INSERT INTO {$TABLETOOLAGENDA}  VALUES ({$course_id}, NULL, '" . lang2db(get_lang('AgendaCreationTitle')) . "', '" . lang2db(get_lang('AgendaCreationContenu')) . "', now(), now(), NULL, 0, 0)");
        // We need to add the item properties too!
        $insert_id = Database::insert_id();
        $sql = "INSERT INTO {$TABLEITEMPROPERTY} (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ({$course_id}, '" . TOOL_CALENDAR_EVENT . "',1,NOW(),NOW(),{$insert_id},'AgendaAdded',1,0,NULL,1)";
        Database::query($sql);
        /*  Links tool */
        $add_google_link_sql = "INSERT INTO {$TABLETOOLLINK}  (c_id, url, title, description, category_id, display_order, on_homepage, target)\n                VALUES ({$course_id}, 'http://www.google.com','Google','" . lang2db(get_lang('Google')) . "','0','0','0','_self')";
        Database::query($add_google_link_sql);
        // We need to add the item properties too!
        $insert_id = Database::insert_id();
        $sql = "INSERT INTO {$TABLEITEMPROPERTY}  (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility)\n                VALUES ({$course_id}, '" . TOOL_LINK . "',1,NOW(),NOW(),{$insert_id},'LinkAdded',1,0,NULL,1)";
        Database::query($sql);
        $add_wikipedia_link_sql = "INSERT INTO {$TABLETOOLLINK}  (c_id, url, title, description, category_id, display_order, on_homepage, target)\n                VALUES ({$course_id}, 'http://www.wikipedia.org','Wikipedia','" . lang2db(get_lang('Wikipedia')) . "','0','1','0','_self')";
        Database::query($add_wikipedia_link_sql);
        // We need to add the item properties too!
        $insert_id = Database::insert_id();
        $sql = "INSERT INTO {$TABLEITEMPROPERTY}  (tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility) VALUES ('" . TOOL_LINK . "',1,NOW(),NOW(),{$insert_id},'LinkAdded',1,0,NULL,1)";
        Database::query($sql);
        /* Annoucement tool */
        $sql = "INSERT INTO {$TABLETOOLANNOUNCEMENTS}  (c_id, title,content,end_date,display_order,email_sent)\n                VALUES ({$course_id}, '" . lang2db(get_lang('AnnouncementExampleTitle')) . "', '" . lang2db(get_lang('AnnouncementEx')) . "', NOW(), '1','0')";
        Database::query($sql);
        // We need to add the item properties too!
        $insert_id = Database::insert_id();
        $sql = "INSERT INTO {$TABLEITEMPROPERTY}  (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility)\n                VALUES ({$course_id}, '" . TOOL_ANNOUNCEMENT . "',1,NOW(),NOW(),{$insert_id},'AnnouncementAdded',1,0,NULL,1)";
        Database::query($sql);
        /* Introduction text */
        $intro_text = '<p style="text-align: center;">
                        <img src="' . api_get_path(REL_CODE_PATH) . 'img/mascot.png" alt="Mr. Chamilo" title="Mr. Chamilo" />
                        <h2>' . lang2db(get_lang('IntroductionText')) . '</h2>
                     </p>';
        Database::query("INSERT INTO {$TABLEINTROS}  VALUES ({$course_id}, '" . TOOL_COURSE_HOMEPAGE . "','" . $intro_text . "', 0)");
        Database::query("INSERT INTO {$TABLEINTROS}  VALUES ({$course_id}, '" . TOOL_STUDENTPUBLICATION . "','" . lang2db(get_lang('IntroductionTwo')) . "', 0)");
        // Wiki intro
        $intro_wiki = '<table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td width="110" valign="top" align="left"></td><td valign="top" align="left">' . lang2db(get_lang('IntroductionWiki')) . '</td></tr></table>';
        Database::query("INSERT INTO {$TABLEINTROS}  VALUES ({$course_id}, '" . TOOL_WIKI . "','" . $intro_wiki . "', 0)");
        /*  Exercise tool */
        Database::query("INSERT INTO {$TABLEQUIZANSWERSLIST} (c_id, id, question_id, answer, correct, comment, ponderation, position) VALUES ({$course_id}, '1', '1', '" . lang2db(get_lang('Ridiculise')) . "', '0', '" . lang2db(get_lang('NoPsychology')) . "', '-5', '1')");
        Database::query("INSERT INTO {$TABLEQUIZANSWERSLIST} (c_id, id, question_id, answer, correct, comment, ponderation, position) VALUES ({$course_id},  '2', '1', '" . lang2db(get_lang('AdmitError')) . "', '0', '" . lang2db(get_lang('NoSeduction')) . "', '-5', '2')");
        Database::query("INSERT INTO {$TABLEQUIZANSWERSLIST} (c_id, id, question_id, answer, correct, comment, ponderation, position) VALUES ({$course_id},  '3', '1', '" . lang2db(get_lang('Force')) . "', '1', '" . lang2db(get_lang('Indeed')) . "', '5', '3')");
        Database::query("INSERT INTO {$TABLEQUIZANSWERSLIST} (c_id, id, question_id, answer, correct, comment, ponderation, position) VALUES ({$course_id},  '4', '1', '" . lang2db(get_lang('Contradiction')) . "', '1', '" . lang2db(get_lang('NotFalse')) . "', '5', '4')");
        $html = Database::escape_string('<table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td width="110" valign="top" align="left"><img src="' . api_get_path(WEB_CODE_PATH) . 'default_course_document/images/mr_dokeos/thinking.jpg"></td><td valign="top" align="left">' . get_lang('Antique') . '</td></tr></table>');
        Database::query('INSERT INTO ' . $TABLEQUIZ . ' (c_id, title, description, type, random, random_answers, active, results_disabled ) ' . ' VALUES (' . $course_id . ', "' . lang2db(get_lang('ExerciceEx')) . '",' . ' "' . $html . '", "1", "0", "0", "1", "0")');
        $exercise_id = Database::insert_id();
        Database::query("INSERT INTO {$TABLEQUIZQUESTIONLIST}  (c_id, id, question, description, ponderation, position, type, picture, level)\n                        VALUES ( '.{$course_id}.', '1', '" . lang2db(get_lang('SocraticIrony')) . "', '" . lang2db(get_lang('ManyAnswers')) . "', '10', '1', '2','',1)");
        Database::query("INSERT INTO {$TABLEQUIZQUESTION}  (c_id, question_id, exercice_id, question_order) VALUES ('.{$course_id}.', 1,1,1)");
        /* Forum tool */
        Database::query("INSERT INTO {$TABLEFORUMCATEGORIES} VALUES ({$course_id}, 1,'" . lang2db(get_lang('ExampleForumCategory')) . "', '', 1, 0, 0)");
        $insert_id = Database::insert_id();
        Database::query("INSERT INTO {$TABLEITEMPROPERTY}  (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility)\n                        VALUES ({$course_id}, 'forum_category',1,NOW(),NOW(),{$insert_id},'ForumCategoryAdded',1,0,NULL,1)");
        Database::query("INSERT INTO {$TABLEFORUMS} (c_id, forum_title, forum_comment, forum_threads,forum_posts,forum_last_post,forum_category, allow_anonymous, allow_edit,allow_attachments, allow_new_threads,default_view,forum_of_group,forum_group_public_private, forum_order,locked,session_id )\n                        VALUES ({$course_id}, '" . lang2db(get_lang('ExampleForum')) . "', '', 0, 0, 0, 1, 0, 1, '0', 1, 'flat','0', 'public', 1, 0,0)");
        $insert_id = Database::insert_id();
        Database::query("INSERT INTO {$TABLEITEMPROPERTY}  (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility)\n                         VALUES ({$course_id}, '" . TOOL_FORUM . "', 1,NOW(),NOW(),{$insert_id},'ForumAdded',1,0,NULL,1)");
        Database::query("INSERT INTO {$TABLEFORUMTHREADS} (c_id, thread_id, thread_title, forum_id, thread_replies, thread_poster_id, thread_poster_name, thread_views, thread_last_post, thread_date, locked, thread_qualify_max, session_id)\n                        VALUES ({$course_id}, 1, '" . lang2db(get_lang('ExampleThread')) . "', 1, 0, 1, '', 0, 1, NOW(), 0, 10, 0)");
        $insert_id = Database::insert_id();
        Database::query("INSERT INTO {$TABLEITEMPROPERTY}  (c_id, tool,insert_user_id,insert_date,lastedit_date,ref,lastedit_type,lastedit_user_id,to_group_id,to_user_id,visibility)\n                        VALUES ({$course_id}, 'forum_thread',1,NOW(),NOW(),{$insert_id},'ForumThreadAdded',1,0,NULL,1)");
        Database::query("INSERT INTO {$TABLEFORUMPOSTS} VALUES ({$course_id}, 1, '" . lang2db(get_lang('ExampleThread')) . "', '" . lang2db(get_lang('ExampleThreadContent')) . "', 1, 1, 1, '', NOW(), 0, 0, 1)");
        /* Gradebook tool */
        $course = api_get_course_info_by_id($course_id);
        $course_code = $course['code'];
        // father gradebook
        Database::query("INSERT INTO {$TABLEGRADEBOOK} (name, description, user_id, course_code, parent_id, weight, visible, certif_min_score, session_id, document_id) VALUES ('{$course_code}','',1,'{$course_code}',0,100,0,75,NULL,{$example_cert_id})");
        $gbid = Database::insert_id();
        Database::query("INSERT INTO {$TABLEGRADEBOOK} (name, description, user_id, course_code, parent_id, weight, visible, certif_min_score, session_id, document_id) VALUES ('{$course_code}','',1,'{$course_code}',{$gbid},100,1,75,NULL,{$example_cert_id})");
        $gbid = Database::insert_id();
        Database::query("INSERT INTO {$TABLEGRADEBOOKLINK} (type, ref_id, user_id, course_code, category_id, created_at, weight, visible, locked) VALUES (1,{$exercise_id},1,'{$course_code}',{$gbid},'{$now}',100,1,0)");
    }
    //Installing plugins in course
    $app_plugin = new AppPlugin();
    $app_plugin->install_course_plugins($course_id);
    $language_interface = $language_interface_original;
    return true;
}