Fixing buttons when copying forums course backup see #5499

skala
Julio Montoya 13 years ago
parent acad38137b
commit 753d7ae72f
  1. 3
      main/coursecopy/classes/CourseBuilder.class.php
  2. 55
      main/coursecopy/classes/CourseRecycler.class.php
  3. 31
      main/coursecopy/classes/CourseRestorer.class.php
  4. 61
      main/coursecopy/classes/CourseSelectForm.class.php
  5. 7
      main/coursecopy/recycle_course.php

@ -303,7 +303,8 @@ class CourseBuilder {
$table = Database :: get_course_table(TABLE_FORUM_THREAD);
$course_info = api_get_course_info($course_code);
$course_id = $course_info['real_id'];
$sql = "SELECT * FROM $table WHERE c_id = $course_id ORDER BY thread_title ";
$sql = "SELECT * FROM $table WHERE c_id = $course_id
ORDER BY thread_title ";
$db_result = Database::query($sql);
while ($obj = Database::fetch_object($db_result)) {
//$forum_topic = new ForumTopic($obj->thread_id, $obj->thread_title, $obj->thread_date, $obj->thread_poster_id, $obj->thread_poster_name, $obj->forum_id, $obj->thread_last_post, $obj->thread_replies, $obj->thread_views, $obj->thread_sticky, $obj->locked, $obj->thread_close_date, $obj->thread_weight, $obj->thread_title_qualify, $obj->thread_qualify_max);

@ -13,7 +13,9 @@ class CourseRecycler
/**
* A course-object with the items to delete
*/
var $course;
public $course;
public $type;
/**
* Create a new CourseRecycler
* @param course $course The course-object which contains the items to
@ -29,8 +31,9 @@ class CourseRecycler
* This deletes all items in the course-object from the current Chamilo-
* course
*/
function recycle() {
function recycle($type) {
$this->type = $type;
$table_tool_intro = Database::get_course_table(TABLE_TOOL_INTRO);
$table_linked_resources = Database::get_course_table(TABLE_LINKED_RESOURCES);
$table_item_properties = Database::get_course_table(TABLE_ITEM_PROPERTY);
@ -135,24 +138,45 @@ class CourseRecycler
*/
function recycle_forums() {
if ($this->course->has_resources(RESOURCE_FORUMCATEGORY)) {
$table_category = Database :: get_course_table(TABLE_FORUM_CATEGORY);
$table_category = Database :: get_course_table(TABLE_FORUM_CATEGORY);
$table_forum = Database :: get_course_table(TABLE_FORUM);
$table_thread = Database :: get_course_table(TABLE_FORUM_THREAD);
$table_post = Database :: get_course_table(TABLE_FORUM_POST);
$table_attachment = Database::get_course_table(TABLE_FORUM_ATTACHMENT);
$table_notification = Database::get_course_table(TABLE_FORUM_NOTIFICATION);
$table_mail_queue = Database::get_course_table(TABLE_FORUM_MAIL_QUEUE);
$table_thread_qualify = Database::get_course_table(TABLE_FORUM_THREAD_QUALIFY);
$table_thread_qualify_log = Database::get_course_table(TABLE_FORUM_THREAD_QUALIFY_LOG);
if ($this->type == 'full_backup') {
$sql = "DELETE FROM ".$table_category." WHERE c_id = ".$this->course_id;
Database::query($sql);
$sql = "DELETE FROM ".$table_forum." WHERE c_id = ".$this->course_id;
Database::query($sql);
$sql = "DELETE FROM ".$table_thread." WHERE c_id = ".$this->course_id;
Database::query($sql);
$sql = "DELETE FROM ".$table_post." WHERE c_id = ".$this->course_id;
Database::query($sql);
$sql = "DELETE FROM ".$table_attachment." WHERE c_id = ".$this->course_id;
Database::query($sql);
$sql = "DELETE FROM ".$table_notification." WHERE c_id = ".$this->course_id;
Database::query($sql);
$sql = "DELETE FROM ".$table_mail_queue." WHERE c_id = ".$this->course_id;
Database::query($sql);
$sql = "DELETE FROM ".$table_thread_qualify." WHERE c_id = ".$this->course_id;
Database::query($sql);
$sql = "DELETE FROM ".$table_thread_qualify_log." WHERE c_id = ".$this->course_id;
Database::query($sql);
}
if ($this->course->has_resources(RESOURCE_FORUMCATEGORY)) {
$forum_ids = implode(',', (array_keys($this->course->resources[RESOURCE_FORUMCATEGORY])));
$sql = "DELETE FROM ".$table_category." WHERE c_id = ".$this->course_id." AND cat_id IN(".$forum_ids.");";
Database::query($sql);
Database::query($sql);
}
if ($this->course->has_resources(RESOURCE_FORUM)) {
$table_forum = Database :: get_course_table(TABLE_FORUM);
$table_thread = Database :: get_course_table(TABLE_FORUM_THREAD);
$table_post = Database :: get_course_table(TABLE_FORUM_POST);
$table_attachment = Database::get_course_table(TABLE_FORUM_ATTACHMENT);
$table_notification = Database::get_course_table(TABLE_FORUM_NOTIFICATION);
$table_mail_queue = Database::get_course_table(TABLE_FORUM_MAIL_QUEUE);
$table_thread_qualify = Database::get_course_table(TABLE_FORUM_THREAD_QUALIFY);
$table_thread_qualify_log = Database::get_course_table(TABLE_FORUM_THREAD_QUALIFY_LOG);
$forum_ids = implode(',', (array_keys($this->course->resources[RESOURCE_FORUM])));
$sql = "DELETE FROM $table_attachment USING $table_attachment
@ -199,6 +223,7 @@ class CourseRecycler
$sql = "DELETE FROM ".$table_forum." WHERE c_id = ".$this->course_id." AND forum_id IN(".$forum_ids.")";
Database::query($sql);
}
}
/**

@ -63,7 +63,7 @@ class CourseRestorer
'course_descriptions',
'documents',
'events',
'forum_category',
//'forum_category',
'forums',
// 'forum_topics',
'glossary',
@ -722,7 +722,8 @@ class CourseRestorer
$resources = $this->course->resources;
foreach ($resources[RESOURCE_FORUM] as $id => $forum) {
$params = (array)$forum->obj;
$cat_id = $this->restore_forum_category($params['forum_category']);
$cat_id = $this->restore_forum_category($params['forum_category']);
self::DBUTF8_array($params);
$params['c_id'] = $this->destination_course_id;
$params['forum_category'] = $cat_id;
@ -751,17 +752,14 @@ class CourseRestorer
/**
* Restore forum-categories
*/
function restore_forum_category($my_id = null) {
function restore_forum_category($id) {
$forum_cat_table = Database :: get_course_table(TABLE_FORUM_CATEGORY);
$resources = $this->course->resources;
foreach ($resources[RESOURCE_FORUMCATEGORY] as $id => $forum_cat) {
if (!empty($my_id)) {
if ($id != $my_id) {
continue;
}
}
if (!$forum_cat->is_restored()) {
$forum_cat = $resources[RESOURCE_FORUMCATEGORY][$id];
//foreach ($resources[RESOURCE_FORUMCATEGORY] as $id => $forum_cat) {
if ($forum_cat && !$forum_cat->is_restored()) {
$title = $forum_cat->obj->cat_title;
if (!empty($title)) {
if (!preg_match('/.*\((.+)\)$/', $title, $matches)) {
@ -775,14 +773,11 @@ class CourseRestorer
$params['c_id'] = $this->destination_course_id;
unset($params['cat_id']);
self::DBUTF8_array($params);
$new_id = Database::insert($forum_cat_table, $params);
if (!empty($my_id)) {
return $new_id;
}
$new_id = Database::insert($forum_cat_table, $params);
$this->course->resources[RESOURCE_FORUMCATEGORY][$id]->destination_id = $new_id;
}
$this->course->resources[RESOURCE_FORUMCATEGORY][$id]->destination_id;
}
return $new_id;
}
//}
}
/**

@ -79,6 +79,7 @@ class CourseSelectForm
}
}
}
function checkLearnPath(message){
d = document.course_select_form;
for (i = 0; i < d.elements.length; i++) {
@ -94,6 +95,43 @@ class CourseSelectForm
}
}
}
function check_forum(obj) {
var id = $(obj).attr('rel');
var my_id = $(obj).attr('my_rel');
var checked = false;
if ($('#resource_forum_'+my_id).attr('checked')) {
checked = true;
}
setCheckboxForum('thread', checked, my_id);
$('#resource_Forum_Category_'+id).attr('checked','checked');
}
function check_category(obj) {
var my_id = $(obj).attr('my_rel');
var checked = false;
if ($('#resource_Forum_Category_'+my_id).attr('checked')) {
checked = true;
}
$('.resource_forum').each(function(index, value) {
if ($(value).attr('rel') == my_id) {
$(value).attr('checked', checked);
}
});
$('.resource_topic').each(function(index, value) {
if ($(value).attr('cat_id') == my_id) {
$(value).attr('checked', checked);
}
});
}
function check_topic(obj) {
var my_id = $(obj).attr('cat_id');
var forum_id = $(obj).attr('forum_id');
$('#resource_Forum_Category_'+my_id).attr('checked','checked');
$('#resource_forum_'+forum_id).attr('checked','checked');
}
</script>
<?php
@ -193,7 +231,6 @@ class CourseSelectForm
}
//Fixes forum order
//var_dump($forum_topics);exit;
if (!empty($forum_categories)) {
$type = RESOURCE_FORUMCATEGORY;
@ -202,25 +239,25 @@ class CourseSelectForm
echo '<div id="div_'.$type.'">';
//All non categories
echo '<div class="btn-group">';
echo "<a class=\"btn\" href=\"javascript: void(0);\" onclick=\"javascript:setCheckbox('".RESOURCE_FORUMCATEGORY."',true);\" >".get_lang('All')."</a>";
echo "<a class=\"btn\" href=\"javascript: void(0);\" onclick=\"javascript:setCheckbox('".RESOURCE_FORUMCATEGORY."',false);\" >".get_lang('None')."</a>";
echo '</div><br />';
/*echo '<div class="btn-group">';
echo "<a class=\"btn\" href=\"javascript: void(0);\" onclick=\"javascript:setCheckbox('".RESOURCE_FORUMCATEGORY."', true);\" >".get_lang('All')."</a>";
echo "<a class=\"btn\" href=\"javascript: void(0);\" onclick=\"javascript:setCheckbox('".RESOURCE_FORUMCATEGORY."', false);\" >".get_lang('None')."</a>";
echo '</div><br />';*/
echo '<ul>';
foreach ($forum_categories as $forum_category_id => $forum_category) {
echo '<li>';
echo '<label class="checkbox">';
echo '<input type="checkbox" name="resource['.RESOURCE_FORUMCATEGORY.']['.$forum_category_id.']" id="resource['.RESOURCE_FORUMCATEGORY.']['.$forum_category_id.']" />';
echo '<input type="checkbox" id="resource_'.RESOURCE_FORUMCATEGORY.'_'.$forum_category_id.'" my_rel="'.$forum_category_id.'" onclick="javascript:check_category(this);" name="resource['.RESOURCE_FORUMCATEGORY.']['.$forum_category_id.']" /> ';
$forum_category->show();
echo '</label>';
if (isset($forums[$forum_category_id]) && count($forums[$forum_category_id]) > 1) {
echo '<div class="btn-group">';
/*echo '<div class="btn-group">';
echo "<a class=\"btn\" href=\"javascript: void(0);\" onclick=\"javascript:setCheckboxForum('".RESOURCE_FORUM."',true, '".$forum_category_id."');\" >".get_lang('All')."</a>";
echo "<a class=\"btn\" href=\"javascript: void(0);\" onclick=\"javascript:setCheckboxForum('".RESOURCE_FORUM."',false, '".$forum_category_id."' );\" >".get_lang('None')."</a>";
echo '</div>';
echo '</div>';*/
}
echo '</li>';
@ -230,15 +267,15 @@ class CourseSelectForm
foreach ($my_forums as $forum_id => $forum) {
echo '<li>';
echo '<label class="checkbox">';
echo '<input type="checkbox" rel="'.$forum_category_id.'" name="resource['.RESOURCE_FORUM.']['.$forum_id.']" id="resource['.RESOURCE_FORUM.']['.$forum_id.']" />';
echo '<input type="checkbox" class="resource_forum" id="resource_'.RESOURCE_FORUM.'_'.$forum_id.'" onclick="javascript:check_forum(this);" my_rel="'.$forum_id.'" rel="'.$forum_category_id.'" name="resource['.RESOURCE_FORUM.']['.$forum_id.']" />';
$forum->show();
echo '</label>';
if (isset($forum_topics[$forum_id])) {
echo '<div class="btn-group">';
/*echo '<div class="btn-group">';
echo "<a class=\"btn\" href=\"javascript: void(0);\" onclick=\"javascript:setCheckboxForum('".RESOURCE_FORUMTOPIC."',true, '".$forum_id."');\" >".get_lang('All')."</a>";
echo "<a class=\"btn\" href=\"javascript: void(0);\" onclick=\"javascript:setCheckboxForum('".RESOURCE_FORUMTOPIC."',false, '".$forum_id."' );\" >".get_lang('None')."</a>";
echo '</div>';
echo '</div>';*/
}
echo '</li>';
@ -250,7 +287,7 @@ class CourseSelectForm
foreach ($my_forum_topics as $topic_id => $topic) {
echo '<li>';
echo '<label class="checkbox">';
echo '<input type="checkbox" rel="'.$forum_id.'" name="resource['.RESOURCE_FORUMTOPIC.']['.$topic_id.']" id="resource['.RESOURCE_FORUMTOPIC.']['.$topic_id.']" />';
echo '<input type="checkbox" id="resource_'.RESOURCE_FORUMTOPIC.'_'.$topic_id.'" onclick="javascript:check_topic(this);" class="resource_topic" forum_id="'.$forum_id.'" rel="'.$forum_id.'" cat_id="'.$forum_category_id.'" name="resource['.RESOURCE_FORUMTOPIC.']['.$topic_id.']" />';
$topic->show();
echo '</label>';
echo '</li>';

@ -17,7 +17,6 @@ require_once '../inc/global.inc.php';
$current_course_tool = TOOL_COURSE_MAINTENANCE;
api_protect_course_script(true);
// Check access rights (only teachers are allowed here)
if (!api_is_allowed_to_edit()) {
api_not_allowed(true);
@ -51,12 +50,12 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (is
$cb = new CourseBuilder();
$course = $cb->build();
}
$cr = new CourseRecycler($course);
$cr->recycle();
$cr = new CourseRecycler($course);
$cr->recycle($_POST['recycle_option']);
Display::display_confirmation_message(get_lang('RecycleFinished'));
} elseif (isset($_POST['recycle_option']) && $_POST['recycle_option'] == 'select_items') {
$cb = new CourseBuilder();
$course = $cb->build();
$course = $cb->build();
CourseSelectForm::display_form($course);
} else {
$cb = new CourseBuilder();

Loading…
Cancel
Save