本文整理汇总了PHP中Question::createQuestion方法的典型用法代码示例。如果您正苦于以下问题:PHP Question::createQuestion方法的具体用法?PHP Question::createQuestion怎么用?PHP Question::createQuestion使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Question
的用法示例。
在下文中一共展示了Question::createQuestion方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: communicate
public function communicate(string $name = null, Question $question)
{
$this->answersSet->has($name);
if (null !== $name && $this->answersSet->has($name)) {
throw new \InvalidArgumentException(sprintf('Question with name "%s" already exists in the QuestionsSet.', $name));
}
$default = $this->answersSet->resolve($name, $question->getDefault());
if ($this->skipOptional && $question->isOptional()) {
$value = $default;
} else {
$value = ($this->communicator)($question->createQuestion($default), $name);
}
if (null !== $name) {
$answer = $value;
$value = $question->getNormalizer() ? call_user_func($question->getNormalizer(), $value) : $value;
$this->answersSet->set($name, $answer, $value);
}
return $value;
}
示例2: copyTest
/**
* Copy test
*
* This function copies a test into the current content tree
* <br/>Example:
* <code>
* $currentContent = new EfrontContentTree(5); //Initialize content for lesson with id 5
* $currentContent -> copyTest(3, false); //Copy the corresponding test into the content tree (at its end)
* </code>
*
* @param int $testId The id of the test to be copied
* @param mixed $targetUnit The id of the parent unit (or the parent EfrontUnit)in which the new unit will be copied, or false (the unit will be appended at the end)
* @param boolean $copyQuestions Whether to copy questions as well. Copied questions will be attached to the test itself as parent unit
* @return EfrontUnit The newly created test unit object
* @since 3.5.0
* @access public
*/
public function copyTest($testId, $targetUnit = false, $copyQuestions = true, $copyFiles = true, $linked_to = false)
{
$oldTest = new EfrontTest($testId);
$oldUnit = $oldTest->getUnit();
$oldUnit['data'] = $oldTest->test['description'];
//Hack in order to successfully copy files. It will be removed when we implement the new copy/export framework
$newUnit = $this->copySimpleUnit($oldUnit, $targetUnit);
$oldTest->test['description'] = $newUnit['data'];
//As above
$newTest = EfrontTest::createTest($newUnit, $oldTest->test);
$newUnit['data'] = '';
//As above
$newUnit->persist();
//As above
if ($copyQuestions) {
$testQuestions = $oldTest->getQuestions(true);
$newQuestions = array();
if (sizeof($testQuestions) > 0) {
$result = eF_getTableData("questions", "*", "id in (" . implode(",", array_keys($testQuestions)) . ")");
foreach ($result as $value) {
$questionData[$value['id']] = $value;
unset($questionData[$value['id']]['id']);
}
}
$ids_mapping = array();
$lesson = new EfrontLesson($newUnit->offsetGet('lessons_ID'));
$folderId = $lesson->lesson['share_folder'] ? $lesson->lesson['share_folder'] : $lesson->lesson['id'];
foreach ($testQuestions as $key => $oldQuestion) {
$questionData[$key]['content_ID'] = $newUnit->offsetGet('id');
$questionData[$key]['lessons_ID'] = $newUnit->offsetGet('lessons_ID');
if ($copyFiles) {
$questionData[$key]['text'] = replaceQuestionPaths($questionData[$key]['text'], $oldUnit['lessons_ID'], $folderId);
$questionData[$key]['explanation'] = replaceQuestionPaths($questionData[$key]['explanation'], $oldUnit['lessons_ID'], $folderId);
}
$newQuestion = Question::createQuestion($questionData[$key]);
$qid = $newQuestion->question['id'];
if ($linked_to) {
$newQuestion->question['linked_to'] = $oldQuestion->question['id'];
$newQuestion->persist();
}
$newQuestions[$qid] = $oldTest->getAbsoluteQuestionWeight($oldQuestion->question['id']);
$ids_mapping[$oldQuestion->question['id']] = $qid;
}
//code for sorting $newQuestions based on $oldQuestion in order to be copied in same order(#2962)
$newQuestionsSorted = array();
foreach ($testQuestions as $key => $oldQuestion) {
$newQuestionsSorted[$ids_mapping[$key]] = $newQuestions[$ids_mapping[$key]];
}
$newQuestions = $newQuestionsSorted;
$newTest->addQuestions($newQuestions);
}
return $newUnit;
}
示例3: array_merge
}
} else {
$currentQuestion->question = array_merge($currentQuestion->question, $question_values);
//This way, latter values (new ones) replace former (current ones);
$currentQuestion->persist();
//Update the question
if (isset($_GET['return'])) {
eF_redirect(basename($_SERVER['PHP_SELF']) . '?' . urldecode($_GET['return']) . "&message=" . rawurlencode(_SUCCESFULLYUPDATEDQUESTION) . "&message_type=success");
} else {
eF_redirect("" . ltrim(basename($_SERVER['PHP_SELF']), "/") . "?ctg=tests{$location}&message=" . rawurlencode(_SUCCESFULLYUPDATEDQUESTION) . "&message_type=success&tab=question");
//&question is used for the tabber to enable the correct tab
}
}
} else {
//We are inserting a new question
$newQuestion = Question::createQuestion($question_values);
$new_question_id = $newQuestion->question['id'];
// Code to maintain consistent state in questions_to_skills:
// -- add either question to lesson specific skill if lesson['course_only'] == 0
// -- or question to course specific skill if lesson['course_only'] == 1
if (G_VERSIONTYPE == 'educational') {
#cpp#ifdef EDUCATIONAL
if ($question_values['lessons_ID']) {
// then the currentLesson object exists
if ($currentLesson->lesson['course_only']) {
$courses = $currentLesson->getCourses(true);
//OPTIMIZE
foreach ($courses as $course) {
$course_specific_skill = $course->getCourseSkill();
eF_insertTableData("questions_to_skills", array("questions_ID" => $new_question_id, "skills_ID" => $course_specific_skill['skill_ID'], "relevance" => 2));
}
示例4: getModule
public function getModule()
{
$smarty = $this->getSmartyVar();
// Always show the preview of the data
if ($_POST['preview'] || $_POST['submit']) {
if ($_POST['questions_format'] == "gift") {
$questions = $this->scanGIFT($_POST['imported_data']);
} else {
$questions = $this->scanAIKEN(str_replace('\\"', '"', str_replace("\\'", "'", $_POST['imported_data'])));
}
if (sizeof($questions)) {
$smarty->assign("T_PREVIEW_DIV", $this->createPreviewHTML($questions));
}
}
// Submit the data the data
if ($_POST['submit']) {
if ($_POST['select_unit'] == -1 || $_POST['select_unit'] == -2) {
$content_ID = 0;
} else {
$content_ID = $_POST['select_unit'];
}
$currentLesson = $this->getCurrentLesson();
$lessons_ID = $currentLesson->lesson['id'];
$count = 0;
foreach ($questions as $key => $question) {
if ($question['type'] != "same" && $question['type'] != "error" && $question['type'] != "no_answer_error") {
$question['content_ID'] = $content_ID;
$question['lessons_ID'] = $lessons_ID;
$question['difficulty'] = "medium";
if (sizeof($question['options'])) {
$question['options'] = serialize($question['options']);
//$question['options'] = str_replace("'", "'", $question['options']);
//$question['options'] = str_replace("\r", "", $question['options']);
}
if (sizeof($question['answer'])) {
// Different accounting for answers of multiple many type
if ($question['type'] == "multiple_many") {
$answers = array();
foreach ($question['answer'] as $answer) {
$answers[$answer] = "1";
}
$question['answer'] = $answers;
}
$question['answer'] = serialize($question['answer']);
//$question['answer'] = str_replace("'", "'", $question['answer']);
//$question['answer'] = str_replace("\r", "", $question['answer']);
}
//$question['text'] = str_replace("'", "'", $question['text']);
if (isset($question['explanation'])) {
//$question['explanation'] = str_replace("'", "'", $question['explanation']);
//$question['explanation'] = str_replace("\r", "", $question['explanation']);
}
if (Question::createQuestion($question)) {
$count++;
}
}
}
if ($count) {
$this->setMessageVar($count . " " . _GIFTAIKEN_QUESTIONSIMPORTEDSUCCESSFULLY, "success");
} else {
$this->setMessageVar(_GIFTAIKEN_NOQUESTIONCOULDBEIMPORTED, "failure");
}
}
$pos = strpos($_SERVER['REQUEST_URI'], "&message");
if ($pos) {
$postUrl = substr($_SERVER['REQUEST_URI'], 0, $pos);
} else {
$postUrl = $_SERVER['REQUEST_URI'];
}
$importForm = new HTML_QuickForm("import_users_form", "post", $postUrl, "", null, true);
$importForm->registerRule('checkParameter', 'callback', 'eF_checkParameter');
//Register this rule for checking user input with our function, eF_checkParameter
$importForm->addElement('radio', 'questions_format', _GIFTAIKEN_GIFT, null, 'gift', 'id="gift_selection"');
$importForm->addElement('radio', 'questions_format', _GIFTAIKEN_AIKEN, null, 'aiken', 'id="aiken_selection"');
$currentLesson = $this->getCurrentLesson();
$currentContent = new EfrontContentTree($currentLesson->lesson['id']);
$smarty->assign("T_UNITS", $currentContent->toHTMLSelectOptions());
$importForm->addElement('textarea', 'imported_data', _GIFTAIKEN_QUESTIONDATATOIMPORT, 'class = "inputProjectTextarea" id="imported_data"');
$importForm->addElement('submit', 'preview', _PREVIEW, 'class=flatButton onclick="$(\'import_users_form\').action += \'&preview=1\'"');
$importForm->addElement('submit', 'submit', _SUBMIT, 'class=flatButton');
$renderer = new HTML_QuickForm_Renderer_ArraySmarty($smarty);
$importForm->setJsWarnings(_BEFOREJAVASCRIPTERROR, _AFTERJAVASCRIPTERROR);
$importForm->setRequiredNote(_REQUIREDNOTE);
$importForm->accept($renderer);
$smarty->assign('T_GIFTAIKENQUESTIONS_FORM', $renderer->toArray());
return true;
}