Quiz course copy object creation is more easy, adding text_when_finished, pass_percentage parameters see #5744

skala
Julio Montoya 12 years ago
parent 9a84f7676d
commit bb11f0df9f
  1. 24
      main/coursecopy/classes/CourseBuilder.class.php
  2. 2
      main/coursecopy/classes/CourseRecycler.class.php
  3. 16
      main/coursecopy/classes/CourseRestorer.class.php
  4. 9
      main/coursecopy/classes/CourseSelectForm.class.php
  5. 97
      main/coursecopy/classes/Quiz.class.php
  6. 2
      main/coursecopy/classes/Resource.class.php

@ -443,22 +443,8 @@ class CourseBuilder {
$doc = Database::fetch_object($res);
$obj->sound = $doc->id;
}
$quiz = new Quiz( $obj->id,
$obj->title,
$obj->description,
$obj->random,
$obj->type,
$obj->active,
$obj->sound,
$obj->max_attempt,
$obj->results_disabled,
$obj->access_condition,
$obj->start_time,
$obj->end_time,
$obj->feedback_type,
$obj->random_answers,
$obj->expired_time,
$obj->session_id);
$quiz = new Quiz($obj);
$sql = 'SELECT * FROM '.$table_rel.' WHERE c_id = '.$course_id.' AND exercice_id = '.$obj->id;
$db_result2 = Database::query($sql);
while ($obj2 = Database::fetch_object($db_result2)) {
@ -533,7 +519,11 @@ class CourseBuilder {
}
if ($build_orphan_questions) {
$this->course->add_resource(new Quiz(-1, get_lang('OrphanQuestions', ''), '', 0, 0, 1, '', 0));
$obj = array(
'id' => -1,
'title' => get_lang('OrphanQuestions', '')
);
$this->course->add_resource(new Quiz((object)$obj));
}
}

@ -320,12 +320,14 @@ class CourseRecycler
$delete_orphan_questions = in_array(-1, $ids);
$ids = implode(',', $ids);
if (!empty($ids)) {
// Deletion of the tests first. Questions in these tests are
// not deleted and become orphan at this point
$sql = "DELETE FROM ".$table_qui." WHERE c_id = ".$this->course_id." AND id IN(".$ids.")";
Database::query($sql);
$sql = "DELETE FROM ".$table_rel." WHERE c_id = ".$this->course_id." AND exercice_id IN(".$ids.")";
Database::query($sql);
}
// Identifying again and deletion of the orphan questions, if it was desired.
if ($delete_orphan_questions) {

@ -1092,6 +1092,8 @@ class CourseRestorer
$table_doc = Database :: get_course_table(TABLE_DOCUMENT);
$resources = $this->course->resources;
foreach ($resources[RESOURCE_QUIZ] as $id => $quiz) {
$quiz = $quiz->obj;
$doc = '';
if (strlen($quiz->media) > 0) {
if ($this->course->resources[RESOURCE_DOCUMENT][$quiz->media]->is_restored()) {
@ -1125,24 +1127,28 @@ class CourseRestorer
$quiz->end_time = null;
}
// Normal tests are stored in the database.
$sql = "INSERT INTO ".$table_qui." SET
c_id = ".$this->destination_course_id." ,
title = '".self::DBUTF8escapestring($quiz->title).
"', description = '".self::DBUTF8escapestring($quiz->description).
"', type = '".$quiz->quiz_type.
"', type = '".$quiz->type.
"', random = '".$quiz->random.
"', active = '".$quiz->active.
"', sound = '".self::DBUTF8escapestring($doc).
"', max_attempt = ".(int)$quiz->attempts.
"', max_attempt = ".(int)$quiz->max_attempt.
", results_disabled = ".(int)$quiz->results_disabled.
", access_condition = '".$quiz->access_condition.
"', start_time = '".$quiz->start_time.
"', pass_percentage = '".$quiz->pass_percentage.
"', end_time = '".$quiz->end_time.
"', feedback_type = ".(int)$quiz->feedback_type.
", random_answers = ".(int)$quiz->random_answers.
", expired_time = ".(int)$quiz->expired_time.
", random_by_category = ".$quiz->random_by_category.
", review_answers = ".$quiz->review_answers.
", propagate_neg = ".$quiz->propagate_neg.
", text_when_finished = '".$quiz->text_when_finished."',
expired_time = ".(int)$quiz->expired_time.
$condition_session;
Database::query($sql);
$new_id = Database::insert_id();
@ -1151,7 +1157,7 @@ class CourseRestorer
$new_id = -1;
}
$this->course->resources[RESOURCE_QUIZ][$id]->destination_id = $new_id;
$this->course->resources[RESOURCE_QUIZ][$id]->obj->destination_id = $new_id;
$order = 0;
foreach ($quiz->question_ids as $index => $question_id) {

@ -210,10 +210,12 @@ class CourseSelectForm
echo '</div><br />';
foreach ($resources as $id => $resource) {
if ($resource) {
echo '<label class="checkbox">';
echo '<input type="checkbox" name="resource['.$type.']['.$id.']" id="resource['.$type.']['.$id.']" />';
$resource->show();
echo '</label>';
}
}
echo '</blockquote>';
echo '</div>';
@ -254,7 +256,6 @@ class CourseSelectForm
echo '</li>';
if (isset($forum_topics[$forum_id])) {
$my_forum_topics = $forum_topics[$forum_id];
if (!empty($my_forum_topics)) {
echo '<ul>';
foreach ($my_forum_topics as $topic_id => $topic) {
@ -491,6 +492,7 @@ class CourseSelectForm
// 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) {
$quiz = $quiz->obj;
if ($quiz->media == $id) {
$resource_is_used_elsewhere = true;
}
@ -568,7 +570,7 @@ class CourseSelectForm
echo '<script type="text/javascript">var myUpload = new upload(1000);</script>';
echo '<form method="post" id="upload_form" name="course_select_form" onsubmit="myUpload.start(\'dynamic_div\',\''.api_get_path(WEB_CODE_PATH).'img/progress_bar.gif\',\''.get_lang('PleaseStandBy').'\',\'upload_form\')">';
echo '<input type="hidden" name="action" value="course_select_form"/>';
foreach($list_course as $course){
foreach ($list_course as $course){
foreach ($course->resources as $type => $resources) {
if (count($resources) > 0) {
echo '<img id="img_'.$course->code.'" src="../img/1.gif" onclick="javascript:exp('."'$course->code'".');" />';
@ -582,11 +584,10 @@ class CourseSelectForm
echo '</div><br />';
foreach ($resources as $id => $resource) {
echo ' <label class="checkbox" for="resource['.$course->code.']['.$id.']">';
echo '<label class="checkbox" for="resource['.$course->code.']['.$id.']">';
echo '<input type="checkbox" name="resource['.$course->code.']['.$id.']" id="resource['.$course->code.']['.$id.']"/>';
$resource->show();
echo '</label>';
echo "\n";
}
echo '</blockquote>';
echo '</div>';

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**
* Exercises backup script
@ -8,6 +9,7 @@
* Code
*/
require_once 'Resource.class.php';
/**
* An Quiz
* @author Bart Mollet <bart.mollet@hogent.be>
@ -15,73 +17,6 @@ require_once 'Resource.class.php';
*/
class Quiz extends Resource
{
/**
* The title
*/
var $title;
/**
* The description
*/
var $description;
/**
* random
*/
var $random;
/**
* Type
*/
var $quiz_type;
/**
* Active
*/
var $active;
/**
* Sound or video file
* This should be the id of the file and not the file-name like in the
* database!
*/
var $media;
/**
* Questions
*/
var $question_ids;
/**
* Questions orders
*/
var $question_orders;
/**
* Max attempts
*/
var $attempts;
/**
* Results disabled
*/
var $results_disabled;
/**
* Access condition
*/
var $access_condition;
/**
* Start time
*/
var $start_time;
/**
* End time
*/
var $end_time;
/**
* Feedback type
*/
var $feedback_type;
/**
* Random answers
*/
var $random_answers;
/**
* Expired time
*/
var $expired_time;
/**
* Create a new Quiz
* @param string $title
@ -90,10 +25,12 @@ class Quiz extends Resource
* @param int $type
* @param int $active
*/
function Quiz($id, $title, $description, $random, $type, $active, $media, $attempts = 0, $results_disabled = 0, $access_condition = null,
$start_time = '0000-00-00 00:00:00', $end_time = '0000-00-00 00:00:00', $feedback_type = 0, $random_answers = 0, $expired_time = 0, $session_id = 0)
{
parent::Resource($id, RESOURCE_QUIZ);
// function Quiz($id, $title, $description, $random, $type, $active, $media, $attempts = 0, $results_disabled = 0, $access_condition = null, $start_time = '0000-00-00 00:00:00', $end_time = '0000-00-00 00:00:00', $feedback_type = 0, $random_answers = 0, $expired_time = 0, $session_id = 0) {
function Quiz($obj) {
parent::Resource($obj->id, RESOURCE_QUIZ);
$this->obj = $obj;
/*
$this->title = $title;
$this->description = $description;
$this->random = $random;
@ -102,7 +39,7 @@ class Quiz extends Resource
$this->media = $media;
$this->attempts = $attempts;
$this->question_ids = array();
$this->question_orders= array();
$this->question_orders = array();
$this->results_disabled = $results_disabled;
$this->access_condition = $access_condition;
$this->start_time = $start_time;
@ -110,22 +47,22 @@ class Quiz extends Resource
$this->feedback_type = $feedback_type;
$this->random_answers = $random_answers;
$this->expired_time = $expired_time;
$this->session_id = $session_id;
$this->session_id = $session_id;*/
}
/**
* Add a question to this Quiz
*/
function add_question($id,$question_order)
{
$this->question_ids[] = $id;
$this->question_orders[] = $question_order;
function add_question($id, $question_order) {
$this->obj->question_ids[] = $id;
$this->obj->question_orders[] = $question_order;
}
/**
* Show this question
*/
function show()
{
function show() {
parent::show();
echo $this->title;
echo $this->obj->title;
}
}

@ -67,6 +67,8 @@ class Resource {
*/
var $item_properties;
var $obj = null;
/**
* Create a new Resource
* @param int $id The id of this resource in the source course.

Loading…
Cancel
Save