You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

163 lines
4.4 KiB

<?php
/**
* @package tikiwiki
*/
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
require_once('tiki-setup.php');
$quizlib = TikiLib::lib('quiz');
$auto_query_args = ['quizId', 'questionId', 'sort_mode', 'offset', 'find'];
$access->check_feature('feature_quizzes');
if (! isset($_REQUEST['quizId'])) {
$smarty->assign('msg', tra('No quiz indicated'));
$smarty->display('error.tpl');
die;
}
$tikilib->get_perm_object($_REQUEST['quizId'], 'quiz');
$access->check_permission('tiki_p_admin_quizzes');
$smarty->assign('quizId', $_REQUEST['quizId']);
$smarty->assign('individual', 'n');
$quiz_info = $quizlib->get_quiz($_REQUEST['quizId']);
$smarty->assign('quiz_info', $quiz_info);
if (! isset($_REQUEST['questionId'])) {
$_REQUEST['questionId'] = 0;
}
$smarty->assign('questionId', $_REQUEST['questionId']);
if ($_REQUEST['questionId']) {
$info = $quizlib->get_quiz_question($_REQUEST['questionId']);
} else {
$info = [];
$info['question'] = '';
$info['type'] = '';
$info['position'] = '';
}
$smarty->assign('question', $info['question']);
$smarty->assign('type', $info['type']);
$smarty->assign('position', $info['position']);
if (isset($_REQUEST['remove'])) {
$access->check_authenticity();
$quizlib->remove_quiz_question($_REQUEST['remove']);
}
if (isset($_REQUEST['save'])) {
check_ticket('edit-quiz-question');
$quizlib->replace_quiz_question(
$_REQUEST['questionId'],
$_REQUEST['question'],
$_REQUEST['questionType'],
$_REQUEST['quizId'],
$_REQUEST['position']
);
$smarty->assign('question', '');
$smarty->assign('questionId', 0);
}
if (isset($_REQUEST['import'])) {
check_ticket('edit-quiz-question');
$questions = TextToQuestions($_REQUEST['input_data']);
foreach ($questions as $question) {
$question_text = $question->getQuestion();
$id = $quizlib->replace_quiz_question(0, $question_text, 'o', $_REQUEST['quizId'], 0);
$temp_max = $question->getChoiceCount();
for ($i = 0; $i < $temp_max; $i++) {
$a = $question->GetChoice($i);
$b = $question->GetCorrect($i);
$quizlib->replace_question_option(0, $a, $b, $id);
}
}
$smarty->assign('question', '');
$smarty->assign('questionId', 0);
}
if (isset($_REQUEST['useQuestion'])) {
check_ticket('edit-quiz-question');
$info = $quizlib->get_quiz_question($_REQUEST['usequestionid']);
$qid = $quizlib->replace_quiz_question(0, $info['question'], $info['type'], $_REQUEST['quizId'], $_REQUEST['position']);
$options = $quizlib->list_quiz_question_options($info['questionId'], 0, -1, 'points_desc', '');
foreach ($options['data'] as $opt) {
$quizlib->replace_question_option(0, $opt['optionText'], $opt['points'], $qid);
}
}
if (! isset($_REQUEST['sort_mode'])) {
$sort_mode = 'position_asc';
} else {
$sort_mode = $_REQUEST['sort_mode'];
}
if (! isset($_REQUEST['offset'])) {
$offset = 0;
} else {
$offset = $_REQUEST['offset'];
}
$smarty->assign_by_ref('offset', $offset);
if (isset($_REQUEST['find'])) {
$find = $_REQUEST['find'];
} else {
$find = '';
}
$smarty->assign('find', $find);
$smarty->assign_by_ref('sort_mode', $sort_mode);
$channels = $quizlib->list_quiz_questions($_REQUEST['quizId'], $offset, $maxRecords, $sort_mode, $find);
// GGG turned this off as we now have too many questions in the db for this to work.
// $questions = $quizlib->list_all_questions(0, -1, 'position_desc', '');
// $smarty->assign('questions', $questions["data"]);
$smarty->assign_by_ref('cant_pages', $channels['cant']);
$smarty->assign_by_ref('channels', $channels['data']);
// Fill array with possible number of questions per page
$positions = [];
for ($i = 1; $i < 100; $i++) {
$positions[] = $i;
}
$smarty->assign('positions', $positions);
$questionTypes = [];
$questionTypes['o'] = tr('Optional');
$questionTypes['f'] = tr('Optional + File');
$smarty->assign('questionTypes', $questionTypes);
ask_ticket('edit-quiz-question');
// disallow robots to index page:
$smarty->assign('metatag_robots', 'NOINDEX, NOFOLLOW');
// Display the template
$smarty->assign('mid', 'tiki-edit_quiz_questions.tpl');
$smarty->display('tiki.tpl');