/** * * @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__); }
/** * 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; }