fixed - Bug in empty the course with wiki - CT#511

skala
Cristian Fasanando 16 years ago
parent be5bae82da
commit be644b39b2
  1. 44
      main/coursecopy/classes/CourseBuilder.class.php
  2. 39
      main/coursecopy/classes/CourseRecycler.class.php
  3. 40
      main/coursecopy/classes/CourseRestorer.class.php
  4. 2
      main/coursecopy/classes/Resource.class.php
  5. 10
      main/coursecopy/classes/wiki.class.php

@ -71,7 +71,7 @@ class CourseBuilder
$this->build_learnpaths($session_id,$course_code);
$this->build_links($session_id,$course_code);
$this->build_course_descriptions($session_id,$course_code);
$this->build_wiki();
$this->build_wiki($session_id,$course_code);
} else {
@ -155,9 +155,9 @@ class CourseBuilder
$table_prop = Database :: get_course_table(TABLE_ITEM_PROPERTY);
if (!empty($this->course->type) && $this->course->type=='partial')
$sql = 'SELECT * FROM '.$table_doc.' d, '.$table_prop.' p WHERE tool = \''.TOOL_DOCUMENT.'\' AND p.ref = d.id AND p.visibility != 2 AND path NOT LIKE \'/images/gallery%\' ORDER BY path';
$sql = 'SELECT * FROM '.$table_doc.' d, '.$table_prop.' p WHERE tool = \''.TOOL_DOCUMENT.'\' AND p.ref = d.id AND p.visibility != 2 AND path NOT LIKE \'/images/gallery%\' AND d.session_id = 0 ORDER BY path';
else
$sql = 'SELECT * FROM '.$table_doc.' d, '.$table_prop.' p WHERE tool = \''.TOOL_DOCUMENT.'\' AND p.ref = d.id AND p.visibility != 2 ORDER BY path';
$sql = 'SELECT * FROM '.$table_doc.' d, '.$table_prop.' p WHERE tool = \''.TOOL_DOCUMENT.'\' AND p.ref = d.id AND p.visibility != 2 AND d.session_id = 0 ORDER BY path';
$db_result = Database::query($sql, __FILE__, __LINE__);
while ($obj = Database::fetch_object($db_result))
@ -244,7 +244,7 @@ class CourseBuilder
} else {
$table = Database :: get_course_table(TABLE_LINK);
$table_prop = Database :: get_course_table(TABLE_ITEM_PROPERTY);
$sql = "SELECT * FROM $table l, $table_prop p WHERE p.ref=l.id AND p.tool = '".TOOL_LINK."' AND p.visibility != 2 ORDER BY l.display_order";
$sql = "SELECT * FROM $table l, $table_prop p WHERE p.ref=l.id AND p.tool = '".TOOL_LINK."' AND p.visibility != 2 AND l.session_id = 0 ORDER BY l.display_order";
}
$db_result = Database::query($sql, __FILE__, __LINE__);
@ -317,7 +317,7 @@ class CourseBuilder
$table_qui = Database :: get_course_table(TABLE_QUIZ_TEST);
$table_rel = Database :: get_course_table(TABLE_QUIZ_TEST_QUESTION);
$table_doc = Database :: get_course_table(TABLE_DOCUMENT);
$sql = 'SELECT * FROM '.$table_qui.' WHERE active >=0'; //select only quizzes with active = 0 or 1 (not -1 which is for deleted quizzes)
$sql = 'SELECT * FROM '.$table_qui.' WHERE active >=0 AND session_id = 0'; //select only quizzes with active = 0 or 1 (not -1 which is for deleted quizzes)
}
$db_result = Database::query($sql, __FILE__, __LINE__);
@ -403,7 +403,7 @@ class CourseBuilder
}
if ($build_orphan_questions)
{
$this->course->add_resource(new Quiz(-1, get_lang('OrphanQuestions', ''), '', 0, 0, 1, '', 0));
//$this->course->add_resource(new Quiz(-1, get_lang('OrphanQuestions', ''), '', 0, 0, 1, '', 0));
}
}
/**
@ -444,7 +444,7 @@ class CourseBuilder
{
$table_survey = Database :: get_course_table(TABLE_SURVEY);
$table_question = Database :: get_course_table(TABLE_SURVEY_QUESTION);
$sql = 'SELECT * FROM '.$table_survey;
$sql = 'SELECT * FROM '.$table_survey.' WHERE session_id = 0 ';
$db_result = Database::query($sql, __FILE__, __LINE__);
while ($obj = Database::fetch_object($db_result))
{
@ -494,7 +494,7 @@ class CourseBuilder
function build_announcements()
{
$table = Database :: get_course_table(TABLE_ANNOUNCEMENT);
$sql = 'SELECT * FROM '.$table;
$sql = 'SELECT * FROM '.$table.' WHERE session_id = 0';
$db_result = Database::query($sql, __FILE__, __LINE__);
while ($obj = Database::fetch_object($db_result))
{
@ -508,7 +508,7 @@ class CourseBuilder
function build_events()
{
$table = Database :: get_course_table(TABLE_AGENDA);
$sql = 'SELECT * FROM '.$table;
$sql = 'SELECT * FROM '.$table.' WHERE session_id = 0';
$db_result = Database::query($sql, __FILE__, __LINE__);
while ($obj = Database::fetch_object($db_result))
{
@ -528,7 +528,7 @@ class CourseBuilder
$sql = 'SELECT * FROM '.$table. ' WHERE session_id ='.$session_id;
} else {
$table = Database :: get_course_table(TABLE_COURSE_DESCRIPTION);
$sql = 'SELECT * FROM '.$table;
$sql = 'SELECT * FROM '.$table. ' WHERE session_id = 0';
}
$db_result = Database::query($sql, __FILE__, __LINE__);
@ -556,7 +556,7 @@ class CourseBuilder
$table_item = Database :: get_course_table(TABLE_LP_ITEM);
$table_tool = Database::get_course_table(TABLE_TOOL_LIST);
$sql = 'SELECT * FROM '.$table_main;
$sql = 'SELECT * FROM '.$table_main.' WHERE session_id = 0';
}
$db_result = Database::query($sql, __FILE__, __LINE__);
@ -655,9 +655,9 @@ class CourseBuilder
} else {
$table_glossary = Database :: get_course_table(TABLE_GLOSSARY);
if (!empty($this->course->type) && $this->course->type=='partial') {
$sql = 'SELECT * FROM '.$table_glossary.' g ';
$sql = 'SELECT * FROM '.$table_glossary.' g WHERE session_id = 0';
} else {
$sql = 'SELECT * FROM '.$table_glossary.' g ';
$sql = 'SELECT * FROM '.$table_glossary.' g WHERE session_id = 0';
}
}
@ -698,17 +698,21 @@ class CourseBuilder
return $list;
}
function build_wiki()
function build_wiki($session_id = 0, $course_code = 0)
{
// Database table definition
$tbl_wiki = Database::get_course_table('wiki');
$sql = 'SELECT * FROM ' . $tbl_wiki . ' INNER JOIN (SELECT MAX(id) as wikiid FROM ' . $tbl_wiki . ' GROUP BY page_id)ids ON id=ids.wikiid ORDER BY dtime DESC, group_id, reflink';
if (!empty($session_id) && !empty($course_code)) {
$course_info = api_get_course_info($course_code);
$tbl_wiki = Database::get_course_table(TABLE_WIKI,$course_info['dbName']);
$session_id = intval($session_id);
$sql = 'SELECT * FROM ' . $tbl_wiki . ' WHERE session_id='.$session_id.'';
} else {
$tbl_wiki = Database::get_course_table(TABLE_WIKI);
$sql = 'SELECT * FROM ' . $tbl_wiki . ' WHERE session_id = 0';
}
$db_result = api_sql_query($sql, __FILE__, __LINE__);
while ($obj = mysql_fetch_object($db_result))
{
$wiki = new Wiki($obj->page_id, $obj->reflink, $obj->title, $obj->content, $obj->user_id, $obj->group_id, $obj->dtime);
$wiki = new Wiki($obj->id, $obj->page_id, $obj->reflink, $obj->title, $obj->content, $obj->user_id, $obj->group_id, $obj->dtime, $obj->progress, $obj->version);
$this->course->add_resource($wiki);
}
}

@ -85,6 +85,8 @@ class CourseRecycler
$this->recycle_surveys();
$this->recycle_learnpaths();
$this->recycle_cours_description();
$this->recycle_wiki();
$this->recycle_glossary();
}
/**
* Delete documents
@ -103,6 +105,43 @@ class CourseRecycler
Database::query($sql,__FILE__,__LINE__);
}
}
/**
* Delete wiki
*/
function recycle_wiki() {
if ($this->course->has_resources(RESOURCE_WIKI)) {
$table_wiki = Database::get_course_table(TABLE_WIKI);
$table_wiki_conf = Database::get_course_table(TABLE_WIKI_CONF);
$table_wiki_discuss = Database::get_course_table(TABLE_WIKI_DISCUSS);
$table_wiki_mailcue = Database::get_course_table(TABLE_WIKI_MAILCUE);
$pages = array();
foreach ($this->course->resources[RESOURCE_WIKI] as $resource) {
$pages[] = $resource->page_id;
}
$wiki_ids = implode(',', (array_keys($this->course->resources[RESOURCE_WIKI])));
$page_ids = implode(',', $pages);
$sql = "DELETE FROM ".$table_wiki." WHERE id IN(".$wiki_ids.")";
Database::query($sql,__FILE__,__LINE__);
$sql = "DELETE FROM ".$table_wiki_conf." WHERE page_id IN(".$page_ids.")";
Database::query($sql,__FILE__,__LINE__);
}
}
/**
* Delete glossary
*/
function recycle_glossary() {
if ($this->course->has_resources(RESOURCE_GLOSSARY)) {
$table_glossary = Database::get_course_table(TABLE_GLOSSARY);
$ids = implode(',', (array_keys($this->course->resources[RESOURCE_GLOSSARY])));
$sql = "DELETE FROM ".$table_glossary." WHERE glossary_id IN(".$ids.")";
Database::query($sql,__FILE__,__LINE__);
}
}
/**
* Delete links
*/

@ -104,7 +104,7 @@ class CourseRestorer
$this->restore_learnpaths($session_id);
$this->restore_links($session_id);
$this->restore_course_descriptions($session_id);
$this->restore_wiki();
$this->restore_wiki($session_id);
} else {
$this->restore_links();
$this->restore_tool_intro();
@ -130,7 +130,7 @@ class CourseRestorer
if (!empty($session_id)) {
$condition_session = " , id_session='".intval($session_id)."'";
}
foreach ($this->course->resources as $type => $resources) {
if (is_array($resources)) {
foreach ($resources as $id => $resource) {
@ -1442,7 +1442,7 @@ class CourseRestorer
}
}
function restore_wiki()
function restore_wiki($session_id = 0)
{
if ($this->course->has_resources(RESOURCE_WIKI))
{
@ -1457,26 +1457,32 @@ class CourseRestorer
{
//$wiki = new Wiki($obj->page_id, $obj->reflink, $obj->title, $obj->content, $obj->user_id, $obj->group_id, $obj->dtime);
// the sql statement to insert the groups from the old course to the new course
$sql = "INSERT INTO $table_wiki (page_id, reflink, title, content, user_id, group_id, dtime)
$sql = "INSERT INTO $table_wiki (page_id, reflink, title, content, user_id, group_id, dtime, progress, version, session_id)
VALUES (
'".Database::escape_string($wiki->page_id)."',
'".Database::escape_string($wiki->reflink)."',
'".Database::escape_string($wiki->title)."',
'".Database::escape_string($wiki->content)."',
'".Database::escape_string($wiki->user_id)."', " .
(empty($wiki->group_id) ? 'NULL' : Database::escape_string($wiki->group_id)).",
'".Database::escape_string($wiki->dtime)."')";
$result = Database::query($sql, __FILE__, __LINE__);
$new_id = Database::insert_id();
'".intval($wiki->user_id)."',
'".intval($wiki->group_id)."',
'".Database::escape_string($wiki->dtime)."',
'".Database::escape_string($wiki->progress)."',
'".intval($wiki->version)."',
'".(!empty($session_id)?intval($session_id):0)."')";
$rs2 = Database::query($sql, __FILE__, __LINE__);
$new_id = Database::insert_id();
$this->course->resources[RESOURCE_WIKI][$id]->destination_id = $new_id;
// we also add an entry in wiki_conf
$sql = "INSERT INTO $table_wiki_conf
(page_id, task, feedback1, feedback2, feedback3, fprogress1, fprogress2, fprogress3, max_size, max_text, max_version, startdate_assig, enddate_assig, delayedsubmit)
VALUES
('".Database::escape_string($wiki->page_id)."', '', '', '', '', '', '', '', NULL, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0)";
$result = Database::query($sql, __FILE__, __LINE__);
}
$sql = "UPDATE $table_wiki set page_id = '$new_id' WHERE id = '$new_id'";
Database::query($sql, __FILE__, __LINE__);
// we also add an entry in wiki_conf
$sql = "INSERT INTO $table_wiki_conf
(page_id, task, feedback1, feedback2, feedback3, fprogress1, fprogress2, fprogress3, max_size, max_text, max_version, startdate_assig, enddate_assig, delayedsubmit)
VALUES
('".intval($new_id)."', '', '', '', '', '', '', '', NULL, 0, 0, '0000-00-00 00:00:00', '0000-00-00 00:00:00', 0)";
$rs1 = Database::query($sql, __FILE__, __LINE__);
}
}
}
}

@ -186,6 +186,8 @@ class Resource
// return TOOL_SURVEY_INVITATION;
case RESOURCE_GLOSSARY:
return TOOL_GLOSSARY;
case RESOURCE_WIKI:
return TOOL_WIKI;
default:
return null;
}

@ -9,23 +9,29 @@ require_once('Resource.class.php');
class Wiki extends Resource
{
var $id;
var $page_id;
var $reflink;
var $title;
var $content;
var $user_id;
var $group_id;
var $timestamp;
var $progress;
var $version;
function Wiki($id, $reflink, $title, $content, $user_id, $group_id, $timestamp)
function Wiki($id, $page_id, $reflink, $title, $content, $user_id, $group_id, $timestamp, $progress, $version)
{
parent::Resource($id,RESOURCE_WIKI);
$this->page_id = $id;
$this->id = $id;
$this->page_id = $page_id;
$this->reflink = $reflink;
$this->title = $title;
$this->content = $content;
$this->user_id = $user_id;
$this->group_id = $group_id;
$this->dtime = $timestamp;
$this->progress = $progress;
$this->version = $version;
}
function show()

Loading…
Cancel
Save