Bladeren bron

[svn r11785] Added backup of surveys

Yannick Warnier 18 jaren geleden
bovenliggende
commit
409735502b

+ 55 - 1
main/coursecopy/classes/CourseBuilder.class.php

@@ -1,4 +1,4 @@
-<?php // $Id: CourseBuilder.class.php 11379 2007-03-04 14:38:54Z yannoo $
+<?php // $Id: CourseBuilder.class.php 11785 2007-03-29 15:09:23Z yannoo $
 /*
 /*
 ==============================================================================
 ==============================================================================
 	Dokeos - elearning and course management software
 	Dokeos - elearning and course management software
@@ -37,6 +37,8 @@ require_once ('ForumCategory.class.php');
 require_once ('Quiz.class.php');
 require_once ('Quiz.class.php');
 require_once ('QuizQuestion.class.php');
 require_once ('QuizQuestion.class.php');
 require_once ('Learnpath.class.php');
 require_once ('Learnpath.class.php');
+require_once ('Survey.class.php');
+require_once ('SurveyQuestion.class.php');
 /**
 /**
  * Class which can build a course-object from a Dokeos-course.
  * Class which can build a course-object from a Dokeos-course.
  * @author Bart Mollet <bart.mollet@hogent.be>
  * @author Bart Mollet <bart.mollet@hogent.be>
@@ -81,6 +83,7 @@ class CourseBuilder
 		$this->build_course_descriptions();
 		$this->build_course_descriptions();
 		$this->build_quizzes();
 		$this->build_quizzes();
 		$this->build_learnpaths();
 		$this->build_learnpaths();
+		$this->build_surveys();
 		$table = Database :: get_course_table(TABLE_LINKED_RESOURCES);
 		$table = Database :: get_course_table(TABLE_LINKED_RESOURCES);
 		foreach ($this->course->resources as $type => $resources)
 		foreach ($this->course->resources as $type => $resources)
 		{
 		{
@@ -283,6 +286,57 @@ class CourseBuilder
 			$this->course->add_resource($question);
 			$this->course->add_resource($question);
 		}
 		}
 	}
 	}
+	/**
+	 * Build the Surveys
+	 */
+	function build_surveys()
+	{
+		$table_survey = Database :: get_course_table(TABLE_SURVEY);
+		$table_question = Database :: get_course_table(TABLE_SURVEY_QUESTION);
+		$sql = 'SELECT * FROM '.$table_survey;
+		$db_result = api_sql_query($sql, __FILE__, __LINE__);
+		while ($obj = Database::fetch_object($db_result))
+		{
+			$survey = new Survey($obj->survey_id, $obj->code,$obj->title,
+								$obj->subtitle, $obj->author, $obj->lang, 
+								$obj->avail_from, $obj->avail_till, $obj->is_shared,
+								$obj->template, $obj->intro, $obj->surveythanks, 
+								$obj->creation_date, $obj->invited, $obj->answered,
+								$obj->invite_mail, $obj->reminder_mail);
+			$sql = 'SELECT * FROM '.$table_question.' WHERE survey_id = '.$obj->survey_id;
+			$db_result2 = api_sql_query($sql, __FILE__, __LINE__);
+			while ($obj2 = Database::fetch_object($db_result2))
+			{
+				$survey->add_question($obj2->question_id);
+			}
+			$this->course->add_resource($survey);
+		}
+		$this->build_survey_questions();
+	}
+	/**
+	 * Build the Survey Questions
+	 */
+	function build_survey_questions()
+	{
+		$table_que = Database :: get_course_table(TABLE_SURVEY_QUESTION);
+		$table_opt = Database :: get_course_table(TABLE_SURVEY_QUESTION_OPTION);
+		$sql = 'SELECT * FROM '.$table_que;
+		$db_result = api_sql_query($sql, __FILE__, __LINE__);
+		while ($obj = Database::fetch_object($db_result))
+		{
+			$question = new SurveyQuestion($obj->question_id, $obj->survey_id, 
+											$obj->survey_question, $obj->survey_question_comment, 
+											$obj->type, $obj->display, $obj->sort,
+											$obj->shared_question_id, $obj->max_value);
+			$sql = 'SELECT * FROM '.$table_opt.' WHERE question_id = '.$obj->id;
+			$db_result2 = api_sql_query($sql, __FILE__, __LINE__);
+			while ($obj2 = Database::fetch_object($db_result2))
+			{
+				$question->add_answer($obj2->option_text, $obj2->sort);
+			}
+			$this->course->add_resource($question);
+		}
+	}
 	/**
 	/**
 	 * Build the announcements
 	 * Build the announcements
 	 */
 	 */

+ 26 - 1
main/coursecopy/classes/CourseRecycler.class.php

@@ -1,5 +1,5 @@
 <?php
 <?php
-// $Id: CourseRecycler.class.php 11357 2007-03-02 23:52:24Z yannoo $
+// $Id: CourseRecycler.class.php 11785 2007-03-29 15:09:23Z yannoo $
 /*
 /*
 ============================================================================== 
 ============================================================================== 
 	Dokeos - elearning and course management software
 	Dokeos - elearning and course management software
@@ -200,6 +200,31 @@ class CourseRecycler
 			api_sql_query($sql,__FILE__,__LINE__);
 			api_sql_query($sql,__FILE__,__LINE__);
 		}
 		}
 	}
 	}
+	/**
+	 * Recycle surveys - removes everything
+	 */
+	function recycle_quizzes()
+	{
+		if ($this->course->has_resources(RESOURCE_SURVEY))
+		{
+			$table_survey = Database :: get_course_table(TABLE_SURVEY);
+			$table_survey_q = Database :: get_course_table(TABLE_SURVEY_QUESTION);
+			$table_survey_q_o = Database :: get_course_table(TABLE_SURVEY_QUESTION_OPTION);
+			$table_survey_a = Database :: get_course_Table(TABLE_SURVEY_ANSWER);
+			$table_survey_i = Database :: get_course_table(TABLE_SURVEY_INVITATION);
+			$ids = implode(',', (array_keys($this->course->resources[RESOURCE_SURVEY])));
+			$sql = "DELETE FROM ".$table_survey_i." ";
+			api_sql_query($sql,__FILE__,__LINE__);
+			$sql = "DELETE FROM ".$table_survey_a." WHERE survey_id IN(".$ids.")";
+			api_sql_query($sql,__FILE__,__LINE__);
+			$sql = "DELETE FROM ".$table_survey_q_o." WHERE survey_id IN(".$ids.")";
+			api_sql_query($sql,__FILE__,__LINE__);
+			$sql = "DELETE FROM ".$table_survey_q." WHERE survey_id IN(".$ids.")";
+			api_sql_query($sql,__FILE__,__LINE__);
+			$sql = "DELETE FROM ".$table_survey." WHERE survey_id IN(".$ids.")";
+			api_sql_query($sql,__FILE__,__LINE__);
+		}
+	}
 	/**
 	/**
 	 * Recycle learnpaths
 	 * Recycle learnpaths
 	 */
 	 */

+ 98 - 1
main/coursecopy/classes/CourseRestorer.class.php

@@ -1,7 +1,7 @@
 <?php
 <?php
 
 
 
 
-// $Id: CourseRestorer.class.php 11381 2007-03-04 18:43:55Z yannoo $
+// $Id: CourseRestorer.class.php 11785 2007-03-29 15:09:23Z yannoo $
 /*
 /*
 ==============================================================================
 ==============================================================================
 	Dokeos - elearning and course management software
 	Dokeos - elearning and course management software
@@ -36,6 +36,8 @@ require_once ('ForumTopic.class.php');
 require_once ('ForumPost.class.php');
 require_once ('ForumPost.class.php');
 require_once ('CourseDescription.class.php');
 require_once ('CourseDescription.class.php');
 require_once ('Learnpath.class.php');
 require_once ('Learnpath.class.php');
+require_once ('Survey.class.php');
+require_once ('SurveyQuestion.class.php');
 require_once ('mkdirr.php');
 require_once ('mkdirr.php');
 require_once ('rmdirr.php');
 require_once ('rmdirr.php');
 define('FILE_SKIP', 1);
 define('FILE_SKIP', 1);
@@ -103,6 +105,7 @@ class CourseRestorer
 		//$this->restore_forums();
 		//$this->restore_forums();
 		$this->restore_quizzes(); // after restore_documents! (for correct import of sound/video)
 		$this->restore_quizzes(); // after restore_documents! (for correct import of sound/video)
 		$this->restore_learnpaths();
 		$this->restore_learnpaths();
+		$this->restore_surveys();
 		// Restore the item properties
 		// Restore the item properties
 		$table = Database :: get_course_table(TABLE_ITEM_PROPERTY, $this->course->destination_db);
 		$table = Database :: get_course_table(TABLE_ITEM_PROPERTY, $this->course->destination_db);
 		foreach ($this->course->resources as $type => $resources)
 		foreach ($this->course->resources as $type => $resources)
@@ -621,6 +624,100 @@ class CourseRestorer
 
 
 		return $new_id;
 		return $new_id;
 	}
 	}
+	/**
+	 * Restore Quiz
+	 */
+	function restore_surveys()
+	{
+		if ($this->course->has_resources(RESOURCE_QUIZ))
+		{
+			$table_sur = Database :: get_course_table(TABLE_SURVEY, $this->course->destination_db);
+			$table_que = Database :: get_course_table(TABLE_SURVEY_QUESTION, $this->course->destination_db);
+			$table_ans = Database :: get_course_table(TABLE_SURVEY_QUESTION_OPTION, $this->course->destination_db);
+			$resources = $this->course->resources;
+			foreach ($resources[RESOURCE_SURVEY] as $id => $survey)
+			{
+				$doc = '';
+				$sql = "INSERT INTO ".$table_sur." " .
+						"SET code = '".Database::escape_string($quiz->code)."', " .
+						"title = '".Database::escape_string($quiz->title)."', " .
+						"subtitle = '".Database::escape_string($quiz->subtitle)."', " .
+						"author = '".Database::escape_string($quiz->author)."', " .
+						"lang = '".Database::escape_string($quiz->lang)."', " .
+						"avail_from = '".Database::escape_string($quiz->avail_from)."', " .
+						"avail_till = '".Database::escape_string($quiz->avail_till)."', " .
+						"is_shared = '".Database::escape_string($quiz->is_shared)."', " .
+						"template = '".Database::escape_string($quiz->template)."', " .
+						"intro = '".Database::escape_string($quiz->intro)."', " .
+						"surveythanks = '".Database::escape_string($quiz->surveythanks)."', " .
+						"creation_date = '".Database::escape_string($quiz->creation_date)."', " .
+						"invited = '".Database::escape_string($quiz->invited)."', " .
+						"answered = '".Database::escape_string($quiz->answered)."', " .
+						"invite_mail = '".Database::escape_string($quiz->invite_mail)."', " .
+						"reminder_mail = '".Database::escape_string($quiz->reminder_mail)."'";
+				api_sql_query($sql, __FILE__, __LINE__);
+				$new_id = Database::get_last_insert_id();
+				$this->course->resources[RESOURCE_SURVEY][$id]->destination_id = $new_id;
+				foreach ($survey->question_ids as $index => $question_id)
+				{
+					$qid = $this->restore_survey_question($question_id);
+					$sql = "UPDATE ".$table_que." " .
+							"SET survey_id = ".$new_id." WHERE " .
+							"question_id = ".$qid."";
+					api_sql_query($sql, __FILE__, __LINE__);
+					$sql = "UPDATE ".$table_ans." ".
+							"SET survey_id = ".$new_id." WHERE " .
+							"question_id = ".$qid."";
+					api_sql_query($sql, __FILE__, __LINE__);
+				}
+			}
+		}
+	}
+	/**
+	 * Restore survey-questions
+	 */
+	function restore_survey_question($id)
+	{
+		$resources = $this->course->resources;
+		$question = $resources[RESOURCE_SURVEYQUESTION][$id];
+
+		$new_id=0;
+
+		if(is_object($question))
+		{
+			if ($question->is_restored())
+			{
+				return $question->destination_id;
+			}
+			$table_que = Database :: get_course_table(TABLE_SURVEY_QUESTION, $this->course->destination_db);
+			$table_ans = Database :: get_course_table(TABLE_SURVEY_QUESTION_OPTION, $this->course->destination_db);
+			$sql = "INSERT INTO ".$table_que." " .
+					"SET survey_id = '".addslashes($question->survey_id)."', " .
+					"survey_question = '".addslashes($question->survey_question)."', " .
+					"survey_question_comment = '".addslashes($question->survey_question_comment)."', " .
+					"type = '".addslashes($question->type)."', " .
+					"display = '".addslashes($question->display)."', " .
+					"sort = '".addslashes($question->sort)."', " .
+					"shared_question_id = '".addslashes($question->shared_question_id)."', " .
+					"max_value = '".addslashes($question->max_value)."' ";
+			api_sql_query($sql, __FILE__, __LINE__);
+			$new_id = Database::get_last_insert_id();
+			foreach ($question->answers as $index => $answer)
+			{
+				$sql = "INSERT INTO ".$table_ans." " .
+						"SET " .
+						"question_id = '".addslashes($new_id)."', " .
+						"option_text = '".addslashes($answer->option_text)."', " .
+						"sort = '".addslashes($answer->sort)."', " .
+						"survey_id = '".addslashes($question->survey_id)."'";
+
+				api_sql_query($sql, __FILE__, __LINE__);
+			}
+			$this->course->resources[RESOURCE_SURVEYQUESTION][$id]->destination_id = $new_id;
+		}
+
+		return $new_id;
+	}
 	/**
 	/**
 	 * Restore learnpaths
 	 * Restore learnpaths
 	 */
 	 */

+ 4 - 1
main/coursecopy/classes/CourseSelectForm.class.php

@@ -1,5 +1,5 @@
 <?php
 <?php
-// $Id: CourseSelectForm.class.php 11389 2007-03-05 10:46:21Z elixir_julian $
+// $Id: CourseSelectForm.class.php 11785 2007-03-29 15:09:23Z yannoo $
 /*
 /*
 ============================================================================== 
 ============================================================================== 
 	Dokeos - elearning and course management software
 	Dokeos - elearning and course management software
@@ -47,6 +47,7 @@ class CourseSelectForm
 		$resource_titles[RESOURCE_LEARNPATH] = get_lang('Learnpaths');
 		$resource_titles[RESOURCE_LEARNPATH] = get_lang('Learnpaths');
 		$resource_titles[RESOURCE_SCORM] = 'SCORM';
 		$resource_titles[RESOURCE_SCORM] = 'SCORM';
 		$resource_titles[RESOURCE_TOOL_INTRO] = get_lang('ToolIntro');
 		$resource_titles[RESOURCE_TOOL_INTRO] = get_lang('ToolIntro');
+		$resource_titles[RESOURCE_SURVEY] = get_lang('Survey');
 ?>
 ?>
 		<script language="JavaScript" type="text/javascript">
 		<script language="JavaScript" type="text/javascript">
 			function exp(item) {
 			function exp(item) {
@@ -96,6 +97,7 @@ class CourseSelectForm
 					case RESOURCE_FORUMPOST :
 					case RESOURCE_FORUMPOST :
 					case RESOURCE_FORUMTOPIC :
 					case RESOURCE_FORUMTOPIC :
 					case RESOURCE_QUIZQUESTION:
 					case RESOURCE_QUIZQUESTION:
+					case RESOURCE_SURVEYQUESTION:
 						break;
 						break;
 					default :
 					default :
 						echo ' <img id="img_'.$type.'" src="../img/1.gif" onclick="javascript:exp('."'$type'".');" >';
 						echo ' <img id="img_'.$type.'" src="../img/1.gif" onclick="javascript:exp('."'$type'".');" >';
@@ -148,6 +150,7 @@ class CourseSelectForm
 				case RESOURCE_FORUMPOST :
 				case RESOURCE_FORUMPOST :
 				case RESOURCE_FORUMTOPIC :
 				case RESOURCE_FORUMTOPIC :
 				case RESOURCE_QUIZQUESTION :
 				case RESOURCE_QUIZQUESTION :
+				case RESOURCE_SURVEYQUESTION
 					break;
 					break;
 				case RESOURCE_DOCUMENT:
 				case RESOURCE_DOCUMENT:
 					// Mark folders to import which are not selected by the user to import,
 					// Mark folders to import which are not selected by the user to import,