ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
SurveyMultipleChoiceQuestion Class Reference

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V. More...

+ Inheritance diagram for SurveyMultipleChoiceQuestion:
+ Collaboration diagram for SurveyMultipleChoiceQuestion:

Public Member Functions

 __construct (string $title="", string $description="", string $author="", string $questiontext="", int $owner=-1, int $orientation=0)
 
 getQuestionDataArray (int $id)
 
 loadFromDb (int $question_id)
 
 isComplete ()
 
 saveToDb (int $original_id=0)
 
 saveCategoriesToDb ()
 
 toXML (bool $a_include_header=true, bool $obligatory_state=false)
 
 insertXML (ilXmlWriter $a_xml_writer, bool $a_include_header=true)
 Adds the question XML to a given XMLWriter object. More...
 
 getQuestionType ()
 
 getAdditionalTableName ()
 
 getWorkingDataFromUserInput (array $post_data)
 
 checkUserInput (array $post_data, int $survey_id)
 
 saveUserInput (array $post_data, int $active_id, bool $a_return=false)
 
 importAdditionalMetadata (array $a_meta)
 
 importResponses (array $a_data)
 
 usableForPrecondition ()
 
 getAvailableRelations ()
 
 getPreconditionOptions ()
 
 getPreconditionSelectValue (string $default, string $title, string $variable)
 
 getPreconditionValueOutput (string $value)
 
 getCategories ()
 
- Public Member Functions inherited from SurveyQuestion
 __construct (string $title="", string $description="", string $author="", string $questiontext="", int $owner=-1)
 
 setComplete (bool $a_complete)
 
 isComplete ()
 
 questionTitleExists (string $title, int $questionpool_object=0)
 
 setTitle (string $title="")
 
 setObligatory (bool $obligatory=true)
 
 setOrientation (int $orientation=0)
 
 setId (int $id=-1)
 
 setSurveyId (int $id=-1)
 
 setDescription (string $description="")
 
 addMaterials (string $materials_file, string $materials_name="")
 
 setMaterialsfile (string $materials_filename, string $materials_tempfilename="", string $materials_name="")
 Uploads and adds a material. More...
 
 deleteMaterial (string $materials_name="")
 
 flushMaterials ()
 Deletes all materials uris. More...
 
 setAuthor (string $author="")
 
 setQuestiontext (string $questiontext="")
 
 setOwner (int $owner=0)
 
 getTitle ()
 
 getLabel ()
 
 getId ()
 
 getObligatory ()
 
 getSurveyId ()
 
 getOrientation ()
 
 getDescription ()
 
 getAuthor ()
 
 getOwner ()
 
 getQuestiontext ()
 
 getObjId ()
 Get the reference(?) id of the container object. More...
 
 setObjId (int $obj_id=0)
 Set the reference(?) id of the container object. More...
 
 duplicate (bool $for_survey=true, string $title="", string $author="", int $owner=0, int $a_survey_id=0)
 
 copyObject (int $target_questionpool, string $title="")
 
 copyXHTMLMediaObjectsOfQuestion (int $a_q_id)
 Copy media object usages from other question. More...
 
 loadFromDb (int $question_id)
 load question data into object note: this base implementation only loads the material data More...
 
 saveCompletionStatus (int $original_id=0)
 Saves the complete flag to the database. More...
 
 saveToDb (int $original_id=0)
 Saves a SurveyQuestion object to a database. More...
 
 saveMaterial ()
 
 createNewQuestion ()
 Creates a new question with a 0 timestamp when a new question is created This assures that an ID is given to the question if a file upload or something else occurs. More...
 
 getImagePath ()
 Returns the image path for web accessible images of a question. More...
 
 getMaterialsPath ()
 Returns the materials path for web accessible materials of a question. More...
 
 getImagePathWeb ()
 Returns the web image path for web accessible images of a question. More...
 
 getMaterialsPathWeb ()
 Returns the web image path for web accessable images of a question. More...
 
 saveCategoryToDb (string $categorytext, int $neutral=0)
 Saves a category to the database. More...
 
 deleteAdditionalTableData (int $question_id)
 Deletes datasets from the additional question table in the database. More...
 
 delete (int $question_id)
 Deletes a question and all materials from the database. More...
 
 syncWithOriginal ()
 
 getPhrase (int $phrase_id)
 Returns a phrase title for phrase id. More...
 
 phraseExists (string $title)
 Returns true if the phrase title already exists for the current user(!) More...
 
 deleteMaterials (array $a_array)
 
 duplicateMaterials (int $question_id)
 Duplicates the materials of a question. More...
 
 addMaterial (ilSurveyMaterial $obj_material)
 
 getQuestionTypeID ()
 
 getQuestionType ()
 
 isHTML (string $a_text)
 
 QTIMaterialToString (ilQTIMaterial $a_material)
 Reads an QTI material tag an creates a text string. More...
 
 addMaterialTag (ilXmlWriter $a_xml_writer, string $a_material, bool $close_material_tag=true, bool $add_mobs=true, ?array $a_attrs=null)
 Creates an XML material tag from a plain text or xhtml text. More...
 
 prepareTextareaOutput (string $txt_output, bool $prepare_for_latex_output=false)
 Prepares string for a text area output in surveys. More...
 
 getQuestionDataArray (int $id)
 Returns the question data. More...
 
 getWorkingDataFromUserInput (array $post_data)
 Creates the user data of the svy_answer table from the POST data. More...
 
 importAdditionalMetadata (array $a_meta)
 Import additional meta data from the question import file. More...
 
 importResponses (array $a_data)
 Import response data from the question import file. More...
 
 importAdjectives (array $a_data)
 Import bipolar adjectives from the question import file. More...
 
 importMatrix (array $a_data)
 Import matrix rows from the question import file. More...
 
 usableForPrecondition ()
 Returns if the question is usable for preconditions. More...
 
 getAvailableRelations ()
 Returns the available relations for the question. More...
 
 getPreconditionOptions ()
 Returns the options for preconditions. More...
 
 getPreconditionValueOutput (string $value)
 Returns the output for a precondition value. More...
 
 getPreconditionSelectValue (string $default, string $title, string $variable)
 Creates a form property for the precondition value. More...
 
 setOriginalId (?int $original_id)
 
 getOriginalId ()
 
 getMaterial ()
 
 setSubtype (int $a_subtype)
 
 getSubtype ()
 
 __get (string $value)
 
 __set (string $key, string $value)
 
 getCopyIds (bool $a_group_by_survey=false)
 
 hasCopies ()
 
 stripSlashesAddSpaceFallback (string $a_str)
 Strip slashes with add space fallback, see https://mantis.ilias.de/view.php?id=19727 and https://mantis.ilias.de/view.php?id=24200. More...
 

Static Public Member Functions

static getMaxSumScore (int $survey_id)
 
- Static Public Member Functions inherited from SurveyQuestion
static _isComplete (int $question_id)
 Checks whether the question is complete or not. More...
 
static _getQuestionType (int $question_id)
 Returns the question type of a question with a given id. More...
 
static _getTitle (int $question_id)
 Returns the question title of a question with a given id. More...
 
static _getOriginalId (int $question_id, bool $a_return_question_id_if_no_original=true)
 Returns the original id of a question. More...
 
static _questionExists (int $question_id)
 
static _resolveInternalLink (string $internal_link)
 
static _resolveIntLinks (int $question_id)
 
static _getInternalLinkHref (string $target="", int $a_parent_ref_id=null)
 
static _isWriteable (int $question_id, int $user_id)
 is question writeable by a certain user More...
 
static _includeClass (string $question_type, int $gui=0)
 Include the php class file for a given question type. More...
 
static _getQuestionTypeName (string $type_tag)
 Return the translation for a given question type. More...
 
static _instanciateQuestion (int $question_id)
 Get question object. More...
 
static _instanciateQuestionGUI (int $question_id)
 Get question gui object. More...
 
static _instanciateQuestionEvaluation (int $question_id, array $a_finished_ids=null)
 
static _changeOriginalId (int $a_question_id, int $a_original_id, int $a_object_id)
 Change original id of existing question in db. More...
 
static _lookupSurveyObjId (int $a_question_id)
 
static lookupObjFi (int $a_qid)
 
static getMaxSumScore (int $survey_id)
 Get max sum score for specific survey (and this question type) More...
 

Data Fields

SurveyCategories $categories
 
- Data Fields inherited from SurveyQuestion
int $id
 
string $title
 
string $description
 
int $owner
 
string $author
 
array $materials
 
int $survey_id
 
int $obj_id
 
string $questiontext
 
bool $obligatory
 
ilLanguage $lng
 
int $orientation
 
array $material
 
bool $complete
 

Additional Inherited Members

- Protected Attributes inherited from SurveyQuestion
int $original_id
 
ILIAS SurveyQuestionPool Editing EditSessionRepository $edit_manager
 
ilObjUser $user
 
ilDBInterface $db
 
array $cumulated
 
ilLogger $log
 
ILIAS SurveyQuestionPool Export ImportSessionRepository $import_manager
 

Detailed Description

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.

ILIAS is licensed with the GPL-3.0, see https://www.gnu.org/licenses/gpl-3.0.en.html You should have received a copy of said license along with the source code, too.

If this is not the case or you just want to try ILIAS, you'll find us at: https://www.ilias.de https://github.com/ILIAS-eLearning MultipleChoice survey question The SurveyMultipleChoiceQuestion class defines and encapsulates basic methods and attributes for multiple choice survey question types.

Author
Helmut Schottmüller helmu.nosp@m.t.sc.nosp@m.hottm.nosp@m.uell.nosp@m.er@ma.nosp@m.c.co.nosp@m.m

Definition at line 25 of file class.SurveyMultipleChoiceQuestion.php.

Constructor & Destructor Documentation

◆ __construct()

SurveyMultipleChoiceQuestion::__construct ( string  $title = "",
string  $description = "",
string  $author = "",
string  $questiontext = "",
int  $owner = -1,
int  $orientation = 0 
)

Definition at line 29 of file class.SurveyMultipleChoiceQuestion.php.

References SurveyQuestion\$author, SurveyQuestion\$description, $DIC, SurveyQuestion\$orientation, SurveyQuestion\$owner, SurveyQuestion\$questiontext, SurveyQuestion\$title, ILIAS\GlobalScreen\Provider\__construct(), and ILIAS\Repository\lng().

36  {
37  global $DIC;
38 
39  $this->db = $DIC->database();
40  $this->lng = $DIC->language();
42 
43  $this->orientation = $orientation;
44  $this->categories = new SurveyCategories();
45  }
global $DIC
Definition: feed.php:28
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(Container $dic, ilPlugin $plugin)
+ Here is the call graph for this function:

Member Function Documentation

◆ checkUserInput()

SurveyMultipleChoiceQuestion::checkUserInput ( array  $post_data,
int  $survey_id 
)
Returns
string Empty string if the input is ok, an error message otherwise

Definition at line 314 of file class.SurveyMultipleChoiceQuestion.php.

References $i, SurveyQuestion\getId(), SurveyQuestion\getObligatory(), ILIAS\Repository\int(), and ILIAS\Repository\lng().

317  : string {
318  $entered_value = (array) ($post_data[$this->getId() . "_value"] ?? []);
319  if (!$this->getObligatory() && (count($entered_value) === 0)) {
320  return "";
321  }
322 
323  if ($this->use_min_answers && $this->nr_min_answers > 0 && $this->nr_max_answers > 0 && $this->nr_min_answers == $this->nr_max_answers && count($entered_value) !== (int) $this->nr_max_answers) {
324  return sprintf($this->lng->txt("err_no_exact_answers"), $this->nr_min_answers);
325  }
326  if ($this->use_min_answers && $this->nr_min_answers > 0 && count($entered_value) < $this->nr_min_answers) {
327  return sprintf($this->lng->txt("err_no_min_answers"), $this->nr_min_answers);
328  }
329  if ($this->use_min_answers && $this->nr_max_answers > 0 && count($entered_value) > $this->nr_max_answers) {
330  return sprintf($this->lng->txt("err_no_max_answers"), $this->nr_max_answers);
331  }
332  if (count($entered_value) == 0) {
333  return $this->lng->txt("question_mr_not_checked");
334  }
335  for ($i = 0; $i < $this->categories->getCategoryCount(); $i++) {
336  $cat = $this->categories->getCategory($i);
337  if ($cat->other) {
338  if (in_array($i, $entered_value)) {
339  if (array_key_exists($this->getId() . "_" . $i . "_other", $post_data) && !strlen($post_data[$this->getId() . "_" . $i . "_other"])) {
340  return $this->lng->txt("question_mr_no_other_answer");
341  }
342  } elseif (strlen($post_data[$this->getId() . "_" . $i . "_other"] ?? "")) {
343  return $this->lng->txt("question_mr_no_other_answer_checked");
344  }
345  }
346  }
347  return "";
348  }
$i
Definition: metadata.php:41
+ Here is the call graph for this function:

◆ getAdditionalTableName()

SurveyMultipleChoiceQuestion::getAdditionalTableName ( )

Definition at line 278 of file class.SurveyMultipleChoiceQuestion.php.

Referenced by getQuestionDataArray(), loadFromDb(), and saveToDb().

278  : string
279  {
280  return "svy_qst_mc";
281  }
+ Here is the caller graph for this function:

◆ getAvailableRelations()

SurveyMultipleChoiceQuestion::getAvailableRelations ( )

Definition at line 431 of file class.SurveyMultipleChoiceQuestion.php.

431  : array
432  {
433  return array("=", "<>");
434  }

◆ getCategories()

SurveyMultipleChoiceQuestion::getCategories ( )

Definition at line 470 of file class.SurveyMultipleChoiceQuestion.php.

References $categories.

471  {
472  return $this->categories;
473  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

◆ getMaxSumScore()

static SurveyMultipleChoiceQuestion::getMaxSumScore ( int  $survey_id)
static

Definition at line 475 of file class.SurveyMultipleChoiceQuestion.php.

References SurveyQuestion\$db, $DIC, ilDBInterface\fetchAssoc(), and ilDBInterface\queryF().

475  : int
476  {
477  global $DIC;
478 
479  // we need sum of scale values of multiple choice questions (type 1)
480  $db = $DIC->database();
481  $set = $db->queryF(
482  "SELECT SUM(scale) sum_sum_score FROM svy_svy_qst sq " .
483  "JOIN svy_question q ON (sq.question_fi = q.question_id) " .
484  "JOIN svy_variable v ON (v.question_fi = q.question_id) " .
485  "WHERE sq.survey_fi = %s AND q.questiontype_fi = %s ",
486  ["integer", "integer"],
487  [$survey_id, 1]
488  );
489  $rec = $db->fetchAssoc($set);
490  return (int) $rec["sum_sum_score"];
491  }
fetchAssoc(ilDBStatement $statement)
global $DIC
Definition: feed.php:28
queryF(string $query, array $types, array $values)
+ Here is the call graph for this function:

◆ getPreconditionOptions()

SurveyMultipleChoiceQuestion::getPreconditionOptions ( )

Definition at line 436 of file class.SurveyMultipleChoiceQuestion.php.

References $i.

Referenced by getPreconditionSelectValue().

436  : array
437  {
438  $options = array();
439  for ($i = 0; $i < $this->categories->getCategoryCount(); $i++) {
440  $category = $this->categories->getCategory($i);
441  $options[$category->scale - 1] = $category->scale . " - " . $category->title;
442  }
443  return $options;
444  }
$i
Definition: metadata.php:41
+ Here is the caller graph for this function:

◆ getPreconditionSelectValue()

SurveyMultipleChoiceQuestion::getPreconditionSelectValue ( string  $default,
string  $title,
string  $variable 
)

Definition at line 446 of file class.SurveyMultipleChoiceQuestion.php.

References getPreconditionOptions().

450  : ?ilFormPropertyGUI {
451  $step3 = new ilSelectInputGUI($title, $variable);
452  $options = $this->getPreconditionOptions();
453  $step3->setOptions($options);
454  $step3->setValue($default);
455  return $step3;
456  }
This class represents a property in a property form.
+ Here is the call graph for this function:

◆ getPreconditionValueOutput()

SurveyMultipleChoiceQuestion::getPreconditionValueOutput ( string  $value)

Definition at line 458 of file class.SurveyMultipleChoiceQuestion.php.

460  : string {
461  // #18136
462  $category = $this->categories->getCategoryForScale((int) $value + 1);
463 
464  // #17895 - see getPreconditionOptions()
465  return $category->scale .
466  " - " .
467  ((strlen($category->title)) ? $category->title : $this->lng->txt('other_answer'));
468  }

◆ getQuestionDataArray()

SurveyMultipleChoiceQuestion::getQuestionDataArray ( int  $id)

Definition at line 47 of file class.SurveyMultipleChoiceQuestion.php.

References SurveyQuestion\$db, $ilDB, and getAdditionalTableName().

47  : array
48  {
49  $ilDB = $this->db;
50 
51  $result = $ilDB->queryF(
52  "SELECT svy_question.*, " . $this->getAdditionalTableName() . ".* FROM svy_question, " . $this->getAdditionalTableName() . " WHERE svy_question.question_id = %s AND svy_question.question_id = " . $this->getAdditionalTableName() . ".question_fi",
53  array('integer'),
54  array($id)
55  );
56  if ($result->numRows() === 1) {
57  return $ilDB->fetchAssoc($result);
58  }
59 
60  return array();
61  }
+ Here is the call graph for this function:

◆ getQuestionType()

SurveyMultipleChoiceQuestion::getQuestionType ( )

Definition at line 273 of file class.SurveyMultipleChoiceQuestion.php.

Referenced by insertXML().

273  : string
274  {
275  return "SurveyMultipleChoiceQuestion";
276  }
+ Here is the caller graph for this function:

◆ getWorkingDataFromUserInput()

SurveyMultipleChoiceQuestion::getWorkingDataFromUserInput ( array  $post_data)

Definition at line 283 of file class.SurveyMultipleChoiceQuestion.php.

References $data, $i, and SurveyQuestion\getId().

283  : array
284  {
285  $entered_value = $post_data[$this->getId() . "_value"] ?? "";
286  $data = array();
287  if (is_array($entered_value)) {
288  foreach ($entered_value as $idx => $value) {
289  $data[] = array("value" => $value,
290  "textanswer" => $post_data[$this->getId() . '_' . $value . '_other'] ?? ""
291  );
292  }
293  }
294  for ($i = 0; $i < $this->categories->getCategoryCount(); $i++) {
295  $cat = $this->categories->getCategory($i);
296  if ($cat->other) {
297  // #18212
298  if (!is_array($entered_value) || !in_array($i, $entered_value)) {
299  if (strlen($post_data[$this->getId() . "_" . $i . "_other"])) {
300  $data[] = array("value" => $i,
301  "textanswer" => $post_data[$this->getId() . '_' . $i . '_other'] ?? "",
302  "uncheck" => true
303  );
304  }
305  }
306  }
307  }
308  return $data;
309  }
$i
Definition: metadata.php:41
+ Here is the call graph for this function:

◆ importAdditionalMetadata()

SurveyMultipleChoiceQuestion::importAdditionalMetadata ( array  $a_meta)

Definition at line 389 of file class.SurveyMultipleChoiceQuestion.php.

References ILIAS\LTI\ToolProvider\$key, and SurveyQuestion\setOrientation().

389  : void
390  {
391  foreach ($a_meta as $key => $value) {
392  switch ($value["label"]) {
393  case "orientation":
394  $this->setOrientation($value["entry"]);
395  break;
396  case "use_min_answers":
397  $this->use_min_answers = $value["entry"];
398  break;
399  case "nr_min_answers":
400  $this->nr_min_answers = $value["entry"];
401  break;
402  case "nr_max_answers":
403  $this->nr_max_answers = $value["entry"];
404  break;
405  }
406  }
407  }
setOrientation(int $orientation=0)
string $key
Consumer key/client ID value.
Definition: System.php:193
+ Here is the call graph for this function:

◆ importResponses()

SurveyMultipleChoiceQuestion::importResponses ( array  $a_data)

Definition at line 409 of file class.SurveyMultipleChoiceQuestion.php.

References $data, SurveyQuestion\$id, and SurveyQuestion\$material.

409  : void
410  {
411  foreach ($a_data as $id => $data) {
412  $categorytext = "";
413  foreach ($data["material"] as $material) {
414  $categorytext .= $material["text"];
415  }
416  $this->categories->addCategory(
417  $categorytext,
418  strlen($data['other']) ? $data['other'] : 0,
419  strlen($data['neutral']) ? $data['neutral'] : 0,
420  strlen($data['label']) ? $data['label'] : null,
421  strlen($data['scale']) ? $data['scale'] : null
422  );
423  }
424  }

◆ insertXML()

SurveyMultipleChoiceQuestion::insertXML ( ilXmlWriter  $a_xml_writer,
bool  $a_include_header = true 
)

Adds the question XML to a given XMLWriter object.

Definition at line 186 of file class.SurveyMultipleChoiceQuestion.php.

References $i, SurveyQuestion\addMaterialTag(), SurveyQuestion\getAuthor(), SurveyQuestion\getDescription(), SurveyQuestion\getId(), SurveyQuestion\getObligatory(), SurveyQuestion\getOrientation(), SurveyQuestion\getQuestiontext(), getQuestionType(), SurveyQuestion\getTitle(), IL_INST_ID, ilXmlWriter\xmlElement(), ilXmlWriter\xmlEndTag(), and ilXmlWriter\xmlStartTag().

Referenced by toXML().

189  : void {
190  $attrs = array(
191  "id" => $this->getId(),
192  "title" => $this->getTitle(),
193  "type" => $this->getQuestionType(),
194  "obligatory" => $this->getObligatory()
195  );
196  $a_xml_writer->xmlStartTag("question", $attrs);
197 
198  $a_xml_writer->xmlElement("description", null, $this->getDescription());
199  $a_xml_writer->xmlElement("author", null, $this->getAuthor());
200  if (strlen($this->label)) {
201  $attrs = array(
202  "label" => $this->label,
203  );
204  } else {
205  $attrs = array();
206  }
207  $a_xml_writer->xmlStartTag("questiontext", $attrs);
208  $this->addMaterialTag($a_xml_writer, $this->getQuestiontext());
209  $a_xml_writer->xmlEndTag("questiontext");
210 
211  $a_xml_writer->xmlStartTag("responses");
212 
213  for ($i = 0; $i < $this->categories->getCategoryCount(); $i++) {
214  $attrs = array(
215  "id" => $i
216  );
217  if (strlen($this->categories->getCategory($i)->other)) {
218  $attrs['other'] = $this->categories->getCategory($i)->other;
219  }
220  if (strlen($this->categories->getCategory($i)->neutral)) {
221  $attrs['neutral'] = $this->categories->getCategory($i)->neutral;
222  }
223  if (strlen($this->categories->getCategory($i)->label)) {
224  $attrs['label'] = $this->categories->getCategory($i)->label;
225  }
226  if (strlen($this->categories->getCategory($i)->scale)) {
227  $attrs['scale'] = $this->categories->getCategory($i)->scale;
228  }
229  $a_xml_writer->xmlStartTag("response_multiple", $attrs);
230  $this->addMaterialTag($a_xml_writer, $this->categories->getCategory($i)->title);
231  $a_xml_writer->xmlEndTag("response_multiple");
232  }
233 
234  $a_xml_writer->xmlEndTag("responses");
235 
236  if (count($this->material)) {
237  if (preg_match("/il_(\d*?)_(\w+)_(\d+)/", $this->material["internal_link"], $matches)) {
238  $attrs = array(
239  "label" => $this->material["title"]
240  );
241  $a_xml_writer->xmlStartTag("material", $attrs);
242  $intlink = "il_" . IL_INST_ID . "_" . $matches[2] . "_" . $matches[3];
243  if (strcmp($matches[1], "") !== 0) {
244  $intlink = $this->material["internal_link"];
245  }
246  $a_xml_writer->xmlElement("mattext", null, $intlink);
247  $a_xml_writer->xmlEndTag("material");
248  }
249  }
250 
251  $a_xml_writer->xmlStartTag("metadata");
252  $a_xml_writer->xmlStartTag("metadatafield");
253  $a_xml_writer->xmlElement("fieldlabel", null, "orientation");
254  $a_xml_writer->xmlElement("fieldentry", null, $this->getOrientation());
255  $a_xml_writer->xmlEndTag("metadatafield");
256  $a_xml_writer->xmlStartTag("metadatafield");
257  $a_xml_writer->xmlElement("fieldlabel", null, "use_min_answers");
258  $a_xml_writer->xmlElement("fieldentry", null, $this->use_min_answers);
259  $a_xml_writer->xmlEndTag("metadatafield");
260  $a_xml_writer->xmlStartTag("metadatafield");
261  $a_xml_writer->xmlElement("fieldlabel", null, "nr_min_answers");
262  $a_xml_writer->xmlElement("fieldentry", null, $this->nr_min_answers);
263  $a_xml_writer->xmlEndTag("metadatafield");
264  $a_xml_writer->xmlStartTag("metadatafield");
265  $a_xml_writer->xmlElement("fieldlabel", null, "nr_max_answers");
266  $a_xml_writer->xmlElement("fieldentry", null, $this->nr_max_answers);
267  $a_xml_writer->xmlEndTag("metadatafield");
268  $a_xml_writer->xmlEndTag("metadata");
269 
270  $a_xml_writer->xmlEndTag("question");
271  }
const IL_INST_ID
Definition: constants.php:40
xmlEndTag(string $tag)
Writes an endtag.
addMaterialTag(ilXmlWriter $a_xml_writer, string $a_material, bool $close_material_tag=true, bool $add_mobs=true, ?array $a_attrs=null)
Creates an XML material tag from a plain text or xhtml text.
xmlStartTag(string $tag, ?array $attrs=null, bool $empty=false, bool $encode=true, bool $escape=true)
Writes a starttag.
xmlElement(string $tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
$i
Definition: metadata.php:41
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isComplete()

SurveyMultipleChoiceQuestion::isComplete ( )

Definition at line 105 of file class.SurveyMultipleChoiceQuestion.php.

References SurveyQuestion\getAuthor(), SurveyQuestion\getQuestiontext(), and SurveyQuestion\getTitle().

105  : bool
106  {
107  return (
108  $this->getTitle() !== '' &&
109  $this->getAuthor() !== '' &&
110  $this->getQuestiontext() !== '' &&
111  $this->categories->getCategoryCount()
112  );
113  }
+ Here is the call graph for this function:

◆ loadFromDb()

SurveyMultipleChoiceQuestion::loadFromDb ( int  $question_id)

Definition at line 63 of file class.SurveyMultipleChoiceQuestion.php.

References $data, SurveyQuestion\$db, $ilDB, ilRTE\_replaceMediaObjectImageSrc(), getAdditionalTableName(), SurveyQuestion\setAuthor(), SurveyQuestion\setComplete(), SurveyQuestion\setDescription(), SurveyQuestion\setId(), SurveyQuestion\setObjId(), SurveyQuestion\setObligatory(), SurveyQuestion\setOrientation(), SurveyQuestion\setOriginalId(), SurveyQuestion\setOwner(), SurveyQuestion\setQuestiontext(), and SurveyQuestion\setTitle().

63  : void
64  {
65  $ilDB = $this->db;
66 
67  $result = $ilDB->queryF(
68  "SELECT svy_question.*, " . $this->getAdditionalTableName() . ".* FROM svy_question LEFT JOIN " . $this->getAdditionalTableName() . " ON " . $this->getAdditionalTableName() . ".question_fi = svy_question.question_id WHERE svy_question.question_id = %s",
69  array('integer'),
70  array($question_id)
71  );
72  if ($result->numRows() === 1) {
73  $data = $ilDB->fetchAssoc($result);
74  $this->setId($data["question_id"]);
75  $this->setTitle((string) $data["title"]);
76  $this->label = (string) $data['label'];
77  $this->setDescription((string) $data["description"]);
78  $this->setObjId((int) $data["obj_fi"]);
79  $this->setAuthor((string) $data["author"]);
80  $this->setOwner((int) $data["owner_fi"]);
81  $this->setQuestiontext(ilRTE::_replaceMediaObjectImageSrc((string) $data["questiontext"], 1));
82  $this->setObligatory((bool) $data["obligatory"]);
83  $this->setComplete((bool) $data["complete"]);
84  $this->setOriginalId((int) $data["original_id"]);
85  $this->setOrientation((int) $data["orientation"]);
86  $this->use_min_answers = (bool) $data['use_min_answers'];
87  $this->nr_min_answers = (string) $data['nr_min_answers'];
88  $this->nr_max_answers = (string) $data['nr_max_answers'];
89 
90  $this->categories->flushCategories();
91  $result = $ilDB->queryF(
92  "SELECT svy_variable.*, svy_category.title, svy_category.neutral FROM svy_variable, svy_category WHERE svy_variable.question_fi = %s AND svy_variable.category_fi = svy_category.category_id ORDER BY sequence ASC",
93  array('integer'),
94  array($question_id)
95  );
96  if ($result->numRows() > 0) {
97  while ($data = $ilDB->fetchAssoc($result)) {
98  $this->categories->addCategory((string) $data["title"], (int) $data["other"], (int) $data["neutral"], null, ($data['scale']) ?: ($data['sequence'] + 1));
99  }
100  }
101  }
102  parent::loadFromDb($question_id);
103  }
static _replaceMediaObjectImageSrc(string $a_text, int $a_direction=0, string $nic='')
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
setQuestiontext(string $questiontext="")
setObligatory(bool $obligatory=true)
setOriginalId(?int $original_id)
setComplete(bool $a_complete)
setOrientation(int $orientation=0)
setAuthor(string $author="")
setTitle(string $title="")
setOwner(int $owner=0)
setDescription(string $description="")
setObjId(int $obj_id=0)
Set the reference(?) id of the container object.
+ Here is the call graph for this function:

◆ saveCategoriesToDb()

SurveyMultipleChoiceQuestion::saveCategoriesToDb ( )

Definition at line 145 of file class.SurveyMultipleChoiceQuestion.php.

References SurveyQuestion\$db, $i, $ilDB, SurveyQuestion\getId(), SurveyQuestion\saveCategoryToDb(), and SurveyQuestion\saveCompletionStatus().

Referenced by saveToDb().

145  : void
146  {
147  $ilDB = $this->db;
148 
149  $affectedRows = $ilDB->manipulateF(
150  "DELETE FROM svy_variable WHERE question_fi = %s",
151  array('integer'),
152  array($this->getId())
153  );
154 
155  for ($i = 0; $i < $this->categories->getCategoryCount(); $i++) {
156  $cat = $this->categories->getCategory($i);
157  $category_id = $this->saveCategoryToDb($cat->title, $cat->neutral);
158  $next_id = $ilDB->nextId('svy_variable');
159  $affectedRows = $ilDB->manipulateF(
160  "INSERT INTO svy_variable (variable_id, category_fi, question_fi, value1, other, sequence, scale, tstamp) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
161  array('integer','integer','integer','float','integer','integer', 'integer','integer'),
162  array($next_id, $category_id, $this->getId(), ($i + 1), $cat->other, $i, ($cat->scale > 0) ? $cat->scale : null, time())
163  );
164  }
165  $this->saveCompletionStatus();
166  }
saveCompletionStatus(int $original_id=0)
Saves the complete flag to the database.
saveCategoryToDb(string $categorytext, int $neutral=0)
Saves a category to the database.
$i
Definition: metadata.php:41
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveToDb()

SurveyMultipleChoiceQuestion::saveToDb ( int  $original_id = 0)

Definition at line 115 of file class.SurveyMultipleChoiceQuestion.php.

References SurveyQuestion\$db, $ilDB, SurveyQuestion\$original_id, getAdditionalTableName(), SurveyQuestion\getId(), SurveyQuestion\getOrientation(), saveCategoriesToDb(), and SurveyQuestion\saveMaterial().

115  : int
116  {
117  $ilDB = $this->db;
118 
119  $affectedRows = parent::saveToDb($original_id);
120  if ($affectedRows === 1) {
121  $ilDB->manipulateF(
122  "DELETE FROM " . $this->getAdditionalTableName() . " WHERE question_fi = %s",
123  array('integer'),
124  array($this->getId())
125  );
126  $ilDB->manipulateF(
127  "INSERT INTO " . $this->getAdditionalTableName() . " (question_fi, orientation, use_min_answers, nr_min_answers, nr_max_answers) VALUES (%s, %s, %s, %s, %s)",
128  array('integer', 'text', 'integer', 'integer', 'integer'),
129  array(
130  $this->getId(),
131  $this->getOrientation(),
132  ($this->use_min_answers) ? 1 : 0,
133  ($this->nr_min_answers > 0) ? $this->nr_min_answers : null,
134  ($this->nr_max_answers > 0) ? $this->nr_max_answers : null
135  )
136  );
137 
138  // saving material uris in the database
139  $this->saveMaterial();
140  $this->saveCategoriesToDb();
141  }
142  return $affectedRows;
143  }
+ Here is the call graph for this function:

◆ saveUserInput()

SurveyMultipleChoiceQuestion::saveUserInput ( array  $post_data,
int  $active_id,
bool  $a_return = false 
)

Definition at line 350 of file class.SurveyMultipleChoiceQuestion.php.

References SurveyQuestion\$db, $ilDB, SurveyQuestion\getId(), and SurveyQuestion\stripSlashesAddSpaceFallback().

354  : ?array {
355  $ilDB = $this->db;
356 
357  if ($a_return) {
358  $return_data = array();
359  }
360  if (is_array($post_data[$this->getId() . "_value"] ?? null)) {
361  foreach ($post_data[$this->getId() . "_value"] as $entered_value) {
362  if (strlen($entered_value) > 0) {
363  if (!$a_return) {
364  $next_id = $ilDB->nextId('svy_answer');
365 
366  #20216
367  $fields = array();
368  $fields['answer_id'] = array("integer", $next_id);
369  $fields['question_fi'] = array("integer", $this->getId());
370  $fields['active_fi'] = array("integer", $active_id);
371  $fields['value'] = array("float", (strlen($entered_value)) ? $entered_value : null);
372  $fields['textanswer'] = array("clob", isset($post_data[$this->getId() . "_" . $entered_value . "_other"]) ? $this->stripSlashesAddSpaceFallback($post_data[$this->getId() . "_" . $entered_value . "_other"]) : null);
373  $fields['tstamp'] = array("integer", time());
374 
375  $affectedRows = $ilDB->insert("svy_answer", $fields);
376  } else {
377  $return_data[] = array("value" => $entered_value,
378  "textanswer" => $post_data[$this->getId() . "_" . $entered_value . "_other"] ?? "");
379  }
380  }
381  }
382  }
383  if ($a_return) {
384  return $return_data;
385  }
386  return null;
387  }
stripSlashesAddSpaceFallback(string $a_str)
Strip slashes with add space fallback, see https://mantis.ilias.de/view.php?id=19727 and https://mant...
+ Here is the call graph for this function:

◆ toXML()

SurveyMultipleChoiceQuestion::toXML ( bool  $a_include_header = true,
bool  $obligatory_state = false 
)

Definition at line 168 of file class.SurveyMultipleChoiceQuestion.php.

References $xml, and insertXML().

171  : string {
172  $a_xml_writer = new ilXmlWriter();
173  $a_xml_writer->xmlHeader();
174  $this->insertXML($a_xml_writer, $a_include_header);
175  $xml = $a_xml_writer->xmlDumpMem(false);
176  if (!$a_include_header) {
177  $pos = strpos($xml, "?>");
178  $xml = substr($xml, $pos + 2);
179  }
180  return $xml;
181  }
insertXML(ilXmlWriter $a_xml_writer, bool $a_include_header=true)
Adds the question XML to a given XMLWriter object.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$xml
Definition: metadata.php:351
+ Here is the call graph for this function:

◆ usableForPrecondition()

SurveyMultipleChoiceQuestion::usableForPrecondition ( )

Definition at line 426 of file class.SurveyMultipleChoiceQuestion.php.

426  : bool
427  {
428  return true;
429  }

Field Documentation

◆ $categories

SurveyCategories SurveyMultipleChoiceQuestion::$categories

Definition at line 27 of file class.SurveyMultipleChoiceQuestion.php.

Referenced by getCategories().


The documentation for this class was generated from the following file: