* @author Julio Montoya * @package chamilo.backup */ class CourseSelectForm { /** * Display the form * @param array $hidden_fiels Hidden fields to add to the form. * @param boolean the document array will be serialize. This is used in the course_copy.php file */ function display_form($course, $hidden_fields = null, $avoid_serialize=false) { $resource_titles[RESOURCE_EVENT] = get_lang('Events'); $resource_titles[RESOURCE_ANNOUNCEMENT] = get_lang('Announcements'); $resource_titles[RESOURCE_DOCUMENT] = get_lang('Documents'); $resource_titles[RESOURCE_LINK] = get_lang('Links'); $resource_titles[RESOURCE_COURSEDESCRIPTION] = get_lang('CourseDescription'); $resource_titles[RESOURCE_FORUM] = get_lang('Forums'); $resource_titles[RESOURCE_QUIZ] = get_lang('Tests'); $resource_titles[RESOURCE_LEARNPATH] = get_lang('Learnpaths'); $resource_titles[RESOURCE_SCORM] = 'SCORM'; $resource_titles[RESOURCE_TOOL_INTRO] = get_lang('ToolIntro'); $resource_titles[RESOURCE_SURVEY] = get_lang('Survey'); $resource_titles[RESOURCE_GLOSSARY] = get_lang('Glossary'); $resource_titles[RESOURCE_WIKI] = get_lang('Wiki'); ?> '; echo get_lang('DestinationCourse').' : '.$course_infos['title']; echo ''; } echo '

'; echo get_lang('SelectResources'); echo '

'; echo ''; echo ''; echo '
'; echo ''; if (!empty($hidden_fields['destination_course']) && !empty($hidden_fields['origin_course']) && !empty($hidden_fields['destination_session']) && !empty($hidden_fields['origin_session']) ) { echo ''; echo ''; echo ''; echo ''; } foreach ($course->resources as $type => $resources) { if (count($resources) > 0) { switch ($type) { case RESOURCE_LINKCATEGORY : case RESOURCE_FORUMCATEGORY : case RESOURCE_FORUMPOST : case RESOURCE_FORUMTOPIC : case RESOURCE_QUIZQUESTION: case RESOURCE_SURVEYQUESTION: case RESOURCE_SURVEYINVITATION: case RESOURCE_SCORM: break; default : echo ''; echo ''.$resource_titles[$type].'
'; echo '
'; echo '
'; echo "[".get_lang('All')." | ".get_lang('None')."]"; echo '
'; foreach ($resources as $id => $resource) { echo ''; echo ' '; echo '
'; } echo '
'; echo '
'; echo ''; } } } if ($avoid_serialize) { //Documents are avoided due the huge amount of memory that the serialize php function "eats" (when there are directories with hundred/thousand of files) // this is a known issue of serialize $course->resources['document']= null; } echo ''; if (is_array($hidden_fields)) { foreach ($hidden_fields as $key => $value) { echo ''; } } if (!empty($hidden_fields['destination_session'])) { echo '
'; } else { echo '
'; } CourseSelectForm :: display_hidden_quiz_questions($course); CourseSelectForm :: display_hidden_scorm_directories($course); echo '
'; echo '
'; } function display_hidden_quiz_questions($course) { if(is_array($course->resources)){ foreach ($course->resources as $type => $resources) { if (count($resources) > 0) { switch ($type) { case RESOURCE_QUIZQUESTION: foreach ($resources as $id => $resource) { echo ''; } break; } } } } } function display_hidden_scorm_directories($course) { if(is_array($course->resources)){ foreach ($course->resources as $type => $resources) { if(count($resources) > 0) { switch($type) { case RESOURCE_SCORM: foreach ($resources as $id=>$resource) { echo ''; } break; } } } } } /** * Get the posted course * @param string who calls the function? It can be copy_course, create_backup, import_backup or recycle_course * @return course The course-object with all resources selected by the user * in the form given by display_form(...) */ function get_posted_course($from='', $session_id = 0, $course_code = '') { $course = unserialize(base64_decode($_POST['course'])); //Create the resource DOCUMENT objects //Loading the results from the checkboxes of the javascript $resource = $_POST['resource'][RESOURCE_DOCUMENT]; if (!empty($course_code)) { $course_info = api_get_course_info($course_code); $table_doc = Database :: get_course_table(TABLE_DOCUMENT,$course_info['dbName']); $table_prop = Database :: get_course_table(TABLE_ITEM_PROPERTY,$course_info['dbName']); } else { $table_doc = Database :: get_course_table(TABLE_DOCUMENT); $table_prop = Database :: get_course_table(TABLE_ITEM_PROPERTY); } // Searching the documents resource that have been set to null because $avoid_serialize is true in the display_form() function if ($from == 'copy_course') { if (is_array($resource)) { $resource = array_keys($resource); foreach ($resource as $resource_item) { $condition_session = ''; if (!empty($session_id)) { $session_id = intval($session_id); $condition_session = ' AND d.session_id ='.$session_id; } $sql = 'SELECT d.id, d.path, d.comment, d.title, d.filetype, d.size FROM '.$table_doc.' d, '.$table_prop.' p WHERE tool = \''.TOOL_DOCUMENT.'\' AND p.ref = d.id AND p.visibility != 2 AND d.id = '.$resource_item.$condition_session.' ORDER BY path'; $db_result = Database::query($sql); while ($obj = Database::fetch_object($db_result)) { $doc = new Document($obj->id, $obj->path, $obj->comment, $obj->title, $obj->filetype, $obj->size); $course->add_resource($doc); // adding item property $sql = "SELECT * FROM $table_prop WHERE TOOL = '".RESOURCE_DOCUMENT."' AND ref='".$resource_item."'"; $res = Database::query($sql); $all_properties = array (); while ($item_property = Database::fetch_array($res,'ASSOC')) { $all_properties[] = $item_property; } $course->resources[RESOURCE_DOCUMENT][$resource_item]->item_properties = $all_properties; } } } } /*else { $documents = $_POST['resource'][RESOURCE_DOCUMENT]; //print_r($course->resources ); foreach ($resource as $resource_item) { echo $resource_item; foreach($documents as $obj) { print_r($obj); if ($obj->id==$resource_item) { $doc = new Document($obj->id, $obj->path, $obj->comment, $obj->title, $obj->filetype, $obj->size); print_r($doc); $course->add_resource($doc); } } } }*/ if (is_array($course->resources)) { foreach ($course->resources as $type => $resources) { switch ($type) { case RESOURCE_SURVEYQUESTION: foreach($resources as $id => $obj) { if(is_array($_POST['resource'][RESOURCE_SURVEY]) && !in_array($obj->survey_id,array_keys($_POST['resource'][RESOURCE_SURVEY]))) { unset ($course->resources[$type][$id]); } } break; case RESOURCE_LINKCATEGORY : case RESOURCE_FORUMCATEGORY : case RESOURCE_FORUMPOST : case RESOURCE_FORUMTOPIC : case RESOURCE_QUIZQUESTION : case RESOURCE_DOCUMENT: // Mark folders to import which are not selected by the user to import, // but in which a document was selected. $documents = $_POST['resource'][RESOURCE_DOCUMENT]; if (is_array($resources)) foreach($resources as $id => $obj) { if( $obj->file_type == 'folder' && ! isset($_POST['resource'][RESOURCE_DOCUMENT][$id]) && is_array($documents)) { foreach($documents as $id_to_check => $post_value) { $obj_to_check = $resources[$id_to_check]; $shared_path_part = substr($obj_to_check->path,0,strlen($obj->path)); if($id_to_check != $id && $obj->path == $shared_path_part) { $_POST['resource'][RESOURCE_DOCUMENT][$id] = 1; break; } } } } default : if (is_array($resources)) { foreach ($resources as $id => $obj) { $resource_is_used_elsewhere = $course->is_linked_resource($obj); // check if document is in a quiz (audio/video) if( $type == RESOURCE_DOCUMENT && $course->has_resources(RESOURCE_QUIZ)) { foreach($course->resources[RESOURCE_QUIZ] as $qid => $quiz) { if($quiz->media == $id) { $resource_is_used_elsewhere = true; } } } if (!isset ($_POST['resource'][$type][$id]) && !$resource_is_used_elsewhere) { unset ($course->resources[$type][$id]); } } } } } } return $course; } /** * Display the form session export * @param array $hidden_fiels Hidden fields to add to the form. * @param boolean the document array will be serialize. This is used in the course_copy.php file */ function display_form_session_export($list_course, $hidden_fields = null, $avoid_serialize=false) { ?> '; echo get_lang('DestinationCourse').' : '.$course_infos['title']; echo ''; } echo ''; echo ''; echo '
'; echo ''; foreach($list_course as $course){ foreach ($course->resources as $type => $resources) { if (count($resources) > 0) { echo 'code'".');" />'; echo 'code'".');" > '.$course->code.'
'; echo '
'; echo '
'; echo "[code."',true);\" >".get_lang('All')." - code."',false);\" >".get_lang('None')."]"; echo '
'; foreach ($resources as $id => $resource) { echo ''; echo ' '; echo '
'; echo "\n"; } echo '
'; echo '
'; echo ''; } } } if ($avoid_serialize) { //Documents are avoided due the huge amount of memory that the serialize php function "eats" (when there are directories with hundred/thousand of files) // this is a known issue of serialize $course->resources['document']= null; } echo ''; if (is_array($hidden_fields)) { foreach ($hidden_fields as $key => $value) { echo "\n"; echo ''; } } echo '
'; CourseSelectForm :: display_hidden_quiz_questions($course); CourseSelectForm :: display_hidden_scorm_directories($course); echo '
'; echo '
'; } } ?>