[svn r11371] Updated learnpath restoration code

Minor layout change in CourseBuilder
skala
Yannick Warnier 19 years ago
parent e9f5cf8818
commit ec8a69b21c
  1. 21
      main/coursecopy/classes/CourseBuilder.class.php
  2. 115
      main/coursecopy/classes/CourseRestorer.class.php

@ -1,4 +1,4 @@
<?php // $Id: CourseBuilder.class.php 11369 2007-03-03 18:41:11Z yannoo $
<?php // $Id: CourseBuilder.class.php 11371 2007-03-03 19:42:06Z yannoo $
/*
==============================================================================
Dokeos - elearning and course management software
@ -376,7 +376,24 @@ class CourseBuilder
$visibility='0';
}
$lp = new Learnpath($obj->id, $obj->lp_type, $obj->name, $obj->path, $obj->ref, $obj->description, $obj->content_local, $obj->default_encoding, $obj->default_view_mod, $obj->prevent_reinit, $obj->force_commit, $obj->content_maker, $obj->display_order, $obj->js_lib, $obj->content_license, $obj->debug, $visibility, $items);
$lp = new Learnpath($obj->id,
$obj->lp_type,
$obj->name,
$obj->path,
$obj->ref,
$obj->description,
$obj->content_local,
$obj->default_encoding,
$obj->default_view_mod,
$obj->prevent_reinit,
$obj->force_commit,
$obj->content_maker,
$obj->display_order,
$obj->js_lib,
$obj->content_license,
$obj->debug,
$visibility,
$items);
$this->course->add_resource($lp);
}

@ -1,7 +1,7 @@
<?php
// $Id: CourseRestorer.class.php 11369 2007-03-03 18:41:11Z yannoo $
// $Id: CourseRestorer.class.php 11371 2007-03-03 19:42:06Z yannoo $
/*
==============================================================================
Dokeos - elearning and course management software
@ -619,9 +619,8 @@ class CourseRestorer
{
if ($this->course->has_resources(RESOURCE_LEARNPATH))
{
$table_main = Database :: get_course_table(TABLE_LEARNPATH_MAIN, $this->course->destination_db);
$table_chapter = Database :: get_course_table(TABLE_LEARNPATH_CHAPTER, $this->course->destination_db);
$table_item = Database :: get_course_table(TABLE_LEARNPATH_ITEM, $this->course->destination_db);
$table_main = Database :: get_course_table(TABLE_LP_MAIN, $this->course->destination_db);
$table_item = Database :: get_course_table(TABLE_LP_ITEM, $this->course->destination_db);
$table_tool = Database::get_course_table(TABLE_TOOL_LIST, $this->course->destination_db);
$resources = $this->course->resources;
@ -630,7 +629,22 @@ class CourseRestorer
foreach ($resources[RESOURCE_LEARNPATH] as $id => $lp)
{
$sql = "INSERT INTO ".$table_main." SET learnpath_name = '".Database::escape_string($lp->name)."', learnpath_description = '".Database::escape_string($lp->description)."'";
$sql = "INSERT INTO ".$table_main." " .
"SET lp_type = '".$lp->lp_type."', " .
"name = '".Database::escape_string($lp->name)."', " .
"path = '".Database::escape_string($lp->path)."', " .
"ref = '".$lp->ref."', " .
"description = '".Database::escape_string($lp->description)."', " .
"content_local = '".Database::escape_string($lp->content_local)."', " .
"default_encoding = '".Database::escape_string($lp->default_encoding)."', " .
"default_view_mod = '".Database::escape_string($lp->default_view_mod)."', " .
"prevent_reinit = '".Database::escape_string($lp->prevent_reinit)."', " .
"force_commit = '".Database::escape_string($lp->force_commit)."', " .
"content_maker = '".Database::escape_string($lp->content_maker)."', " .
"display_order = '".Database::escape_string($lp->display_order)."', " .
"js_lib= '".Database::escape_string($lp->js_lib)."', " .
"content_license= '".Database::escape_string($lp->content_license)."', " .
"debug= '".Database::escape_string($lp->debug)."' ";
api_sql_query($sql, __FILE__, __LINE__);
$new_lp_id = Database::get_last_insert_id();
@ -641,40 +655,87 @@ class CourseRestorer
api_sql_query($sql, __FILE__, __LINE__);
}
foreach ($lp->get_chapters() as $index => $chapter)
$new_item_ids = array();
$parent_item_ids = array();
$previous_item_ids = array();
$next_item_ids = array();
foreach ($lp->get_items() as $index => $item)
{
$sql = "INSERT INTO ".$table_chapter." SET learnpath_id ='".$new_lp_id."' ,chapter_name='".Database::escape_string($chapter['name'])."', chapter_description='".Database::escape_string($chapter['description'])."',display_order='".$chapter['display_order']."' ";
api_sql_query($sql, __FILE__, __LINE__);
$new_chap_id = Database::get_last_insert_id();
foreach ($chapter['items'] as $index => $item)
if ($item['id'] != 0)
{
if ($item['id'] != 0)
{
// Link in learnpath have types 'Link _self' or 'Link _blank'. We only need 'Link' here.
// Links in learnpath have types 'Link _self' or 'Link _blank'. We only need 'Link' here.
$type_parts = explode(' ',$item['type']);
$item['id'] = $this->course->resources[$type_parts[0]][$item['id']]->destination_id;
}
$sql = "INSERT INTO ".$table_item." SET chapter_id='".$new_chap_id."', item_type='".$item['type']."', item_id='".$item['id']."', display_order = '".$item['display_order']."', title = '".Database::escape_string($item['title'])."', description ='".Database::escape_string($item['description'])."', prereq_id='".$item['prereq']."', prereq_type = '".$item['prereq_type']."', prereq_completion_limit = '".$item['prereq_completion_limit']."' ";
api_sql_query($sql, __FILE__, __LINE__);
$new_item_id = Database::get_last_insert_id();
if ($item['prereq'] != '')
{
$prereq_old[$new_item_id] = $item['prereq'];
}
$item_id_old[$item['ref_id']] = $new_item_id;
}
//TODO @TODO get the new ref ID for all items that are not sco (dokeos quizzes, documents, etc)
$ref = '';
if(!empty($item['ref'])){
$ref = $this->get_new_id($item['item_type'],$item['ref']);
}
$sql = "INSERT INTO ".$table_item." SET " .
"lp_id = '".$new_lp_id."'" .
"item_type='".$item['item_type']."', " .
"ref = '".$ref."', " .
"title = '".Database::escape_string($item['title'])."', " .
"description ='".Database::escape_string($item['description'])."', " .
"path = '".Database::escape_string($item['path'])."', " .
"min_score = '".$item['min_score']."', " .
"max_score = '".$item['max_score']."', " .
"mastery_score = '".$item['mastery_score']."', " .
"parent_item_id = '".$item['parent_item_id']."', " .
"previous_item_id = '".$item['previous_item_id']."', " .
"next_item_id = '".$item['next_item_id']."', " .
"next_item_id = '".$item['display_order']."', " .
"prerequisite = '".Database::escape_string($item['prerequisite'])."', " .
"parameters='".Database::escape_string($item['parameters'])."', " .
"launch_data = '".Database::escape_string($item['launch_dataprereq_type'])."' ";
api_sql_query($sql, __FILE__, __LINE__);
$new_item_id = Database::get_last_insert_id();
//save a link between old and new item IDs
$new_item_ids[$item['id']] = $new_item_id;
//save a reference of items that need a parent_item_id refresh
$parent_item_ids[$new_item_id] = $item['parent_item_id'];
//save a reference of items that need a previous_item_id refresh
$previous_item_ids[$new_item_id] = $item['previous_item_id'];
//save a reference of items that need a next_item_id refresh
$next_item_ids[$new_item_id] = $item['next_item_id'];
}
foreach ($prereq_old as $new_item_id => $prereq_old_id)
foreach ($parent_item_ids as $new_item_id => $parent_item_old_id)
{
$prereq_new_id = $item_id_old[$prereq_old_id];
$sql = "UPDATE ".$table_item." SET prereq_id = '".$prereq_new_id."' WHERE id = '".$new_item_id."'";
$parent_new_id = $new_item_ids[$parent_item_old_id];
$sql = "UPDATE ".$table_item." SET parent_item_id = '".$parent_new_id."' WHERE id = '".$new_item_id."'";
api_sql_query($sql, __FILE__, __LINE__);
}
foreach ($previous_item_ids as $new_item_id => $previous_item_old_id)
{
$previous_new_id = $new_item_ids[$previous_item_old_id];
$sql = "UPDATE ".$table_item." SET previous_item_id = '".$previous_new_id."' WHERE id = '".$new_item_id."'";
api_sql_query($sql, __FILE__, __LINE__);
}
foreach ($next_item_ids as $new_item_id => $next_item_old_id)
{
$next_new_id = $new_item_ids[$next_item_old_id];
$sql = "UPDATE ".$table_item." SET next_item_id = '".$next_new_id."' WHERE id = '".$new_item_id."'";
api_sql_query($sql, __FILE__, __LINE__);
}
$this->course->resources[RESOURCE_LEARNPATH][$id]->destination_id = $new_lp_id;
}
}
}
/**
* Gets the new ID of one specific tool item from the tool name and the old ID
* @param string Tool name
* @param integer Old ID
* @return integer New ID
*/
function get_new_id($tool,$ref)
{
//transform $tool into one backup/restore constant
if(!empty($this->course->resources[$tool][$ref]->destination_id)){
return $this->course->resources[$tool][$ref]->destination_id;
}
return '';
}
}
?>
Loading…
Cancel
Save