ILIAS  trunk Revision v11.0_alpha-1723-g8e69f309bab
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
SurveyTextQuestion 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 SurveyTextQuestion:
+ Collaboration diagram for SurveyTextQuestion:

Public Member Functions

 __construct (string $title="", string $description="", string $author="", string $questiontext="", int $owner=-1)
 
 getQuestionDataArray (int $id)
 
 loadFromDb (int $question_id)
 
 isComplete ()
 
 setMaxChars (int $maxchars=0)
 
 getMaxChars ()
 
 saveToDb (int $original_id=0)
 
 toXML (bool $a_include_header=true, bool $obligatory_state=false)
 
 insertXML (ilXmlWriter $a_xml_writer, $a_include_header=true)
 
 getQuestionType ()
 
 getAdditionalTableName ()
 
 getWorkingDataFromUserInput (array $post_data)
 
 checkUserInput (array $post_data, int $survey_id)
 Checks the input of the active user for obligatory status and entered values. More...
 
 saveUserInput (array $post_data, int $active_id, bool $a_return=false)
 
 importResponses (array $a_data)
 
 usableForPrecondition ()
 
- 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...
 
 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 ()
 
 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...
 

Protected Attributes

int $maxchars = null
 
- 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
 

Additional Inherited Members

- 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 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
 

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 Text survey question

The SurveyTextQuestion class defines and encapsulates basic methods and attributes for text 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 27 of file class.SurveyTextQuestion.php.

Constructor & Destructor Documentation

◆ __construct()

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

Definition at line 31 of file class.SurveyTextQuestion.php.

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

37  {
38  global $DIC;
39 
40  $this->db = $DIC->database();
42 
43  $this->maxchars = 0;
44  }
global $DIC
Definition: shib_login.php:22
__construct(Container $dic, ilPlugin $plugin)
+ Here is the call graph for this function:

Member Function Documentation

◆ checkUserInput()

SurveyTextQuestion::checkUserInput ( array  $post_data,
int  $survey_id 
)

Checks the input of the active user for obligatory status and entered values.

Definition at line 225 of file class.SurveyTextQuestion.php.

References SurveyQuestion\getId(), getMaxChars(), SurveyQuestion\getObligatory(), ILIAS\Repository\lng(), and ilStr\strLen().

228  : string {
229  $entered_value = $post_data[$this->getId() . "_text_question"];
230 
231  if ((!$this->getObligatory()) && (strlen($entered_value ?? "") == 0)) {
232  return "";
233  }
234 
235  if (strlen($entered_value ?? "") == 0) {
236  return $this->lng->txt("text_question_not_filled_out");
237  }
238 
239  // see bug #22648
240  if ($this->getMaxChars() > 0 && ilStr::strLen($entered_value) > $this->getMaxChars()) {
241  return str_replace("%s", ilStr::strLen($entered_value), $this->lng->txt("svy_answer_too_long"));
242  }
243 
244  return "";
245  }
static strLen(string $a_string)
Definition: class.ilStr.php:63
+ Here is the call graph for this function:

◆ getAdditionalTableName()

SurveyTextQuestion::getAdditionalTableName ( )

Definition at line 205 of file class.SurveyTextQuestion.php.

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

205  : string
206  {
207  return "svy_qst_text";
208  }
+ Here is the caller graph for this function:

◆ getMaxChars()

SurveyTextQuestion::getMaxChars ( )

Definition at line 107 of file class.SurveyTextQuestion.php.

References $maxchars.

Referenced by checkUserInput(), insertXML(), saveToDb(), and saveUserInput().

107  : int
108  {
109  return $this->maxchars;
110  }
+ Here is the caller graph for this function:

◆ getQuestionDataArray()

SurveyTextQuestion::getQuestionDataArray ( int  $id)

Definition at line 46 of file class.SurveyTextQuestion.php.

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

46  : array
47  {
48  $ilDB = $this->db;
49  $result = $ilDB->queryF(
50  "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",
51  array('integer'),
52  array($id)
53  );
54  if ($result->numRows() === 1) {
55  return $ilDB->fetchAssoc($result);
56  } else {
57  return array();
58  }
59  }
+ Here is the call graph for this function:

◆ getQuestionType()

SurveyTextQuestion::getQuestionType ( )

Definition at line 200 of file class.SurveyTextQuestion.php.

Referenced by insertXML().

200  : string
201  {
202  return "SurveyTextQuestion";
203  }
+ Here is the caller graph for this function:

◆ getWorkingDataFromUserInput()

SurveyTextQuestion::getWorkingDataFromUserInput ( array  $post_data)

Definition at line 210 of file class.SurveyTextQuestion.php.

References $data, and SurveyQuestion\getId().

212  : array {
213  $entered_value = $post_data[$this->getId() . "_text_question"] ?? "";
214  $data = array();
215  if (strlen($entered_value ?? "")) {
216  $data[] = array("textanswer" => $entered_value);
217  }
218  return $data;
219  }
+ Here is the call graph for this function:

◆ importResponses()

SurveyTextQuestion::importResponses ( array  $a_data)

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

References $data, SurveyQuestion\$id, and setMaxChars().

283  : void
284  {
285  foreach ($a_data as $id => $data) {
286  if ($data["maxlength"] > 0) {
287  $this->setMaxChars($data["maxlength"]);
288  }
289  }
290  }
+ Here is the call graph for this function:

◆ insertXML()

SurveyTextQuestion::insertXML ( ilXmlWriter  $a_xml_writer,
  $a_include_header = true 
)

Definition at line 147 of file class.SurveyTextQuestion.php.

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

Referenced by toXML().

150  : void {
151  $attrs = array(
152  "id" => $this->getId(),
153  "title" => $this->getTitle(),
154  "type" => $this->getQuestionType(),
155  "obligatory" => $this->getObligatory()
156  );
157  $a_xml_writer->xmlStartTag("question", $attrs);
158 
159  $a_xml_writer->xmlElement("description", null, $this->getDescription());
160  $a_xml_writer->xmlElement("author", null, $this->getAuthor());
161  if (strlen($this->label ?? "")) {
162  $attrs = array(
163  "label" => $this->label,
164  );
165  } else {
166  $attrs = array();
167  }
168  $a_xml_writer->xmlStartTag("questiontext", $attrs);
169  $this->addMaterialTag($a_xml_writer, $this->getQuestiontext());
170  $a_xml_writer->xmlEndTag("questiontext");
171 
172  $a_xml_writer->xmlStartTag("responses");
173  $attrs = array(
174  "id" => "0"
175  );
176  if ($this->getMaxChars() > 0) {
177  $attrs["maxlength"] = $this->getMaxChars();
178  }
179  $a_xml_writer->xmlElement("response_text", $attrs);
180  $a_xml_writer->xmlEndTag("responses");
181 
182  if (count($this->material)) {
183  if (preg_match("/il_(\d*?)_(\w+)_(\d+)/", $this->material["internal_link"], $matches)) {
184  $attrs = array(
185  "label" => $this->material["title"]
186  );
187  $a_xml_writer->xmlStartTag("material", $attrs);
188  $intlink = "il_" . IL_INST_ID . "_" . $matches[2] . "_" . $matches[3];
189  if (strcmp($matches[1], "") != 0) {
190  $intlink = $this->material["internal_link"];
191  }
192  $a_xml_writer->xmlElement("mattext", null, $intlink);
193  $a_xml_writer->xmlEndTag("material");
194  }
195  }
196 
197  $a_xml_writer->xmlEndTag("question");
198  }
const IL_INST_ID
Definition: constants.php:40
xmlEndTag(string $tag)
Writes an endtag.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
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)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isComplete()

SurveyTextQuestion::isComplete ( )

Definition at line 89 of file class.SurveyTextQuestion.php.

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

89  : bool
90  {
91  if (
92  strlen($this->getTitle() ?? "") &&
93  strlen($this->getAuthor() ?? "") &&
94  strlen($this->getQuestiontext() ?? "")
95  ) {
96  return true;
97  } else {
98  return false;
99  }
100  }
+ Here is the call graph for this function:

◆ loadFromDb()

SurveyTextQuestion::loadFromDb ( int  $question_id)

Definition at line 61 of file class.SurveyTextQuestion.php.

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

61  : void
62  {
63  $ilDB = $this->db;
64 
65  $result = $ilDB->queryF(
66  "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",
67  array('integer'),
68  array($question_id)
69  );
70  if ($result->numRows() === 1) {
71  $data = $ilDB->fetchAssoc($result);
72  $this->setId((int) $data["question_id"]);
73  $this->setTitle((string) $data["title"]);
74  $this->label = (string) $data['label'];
75  $this->setDescription((string) $data["description"]);
76  $this->setObjId((int) $data["obj_fi"]);
77  $this->setAuthor((string) $data["author"]);
78  $this->setOwner((int) $data["owner_fi"]);
79  $this->setQuestiontext(ilRTE::_replaceMediaObjectImageSrc((string) $data["questiontext"], 1));
80  $this->setObligatory((bool) $data["obligatory"]);
81  $this->setComplete((bool) $data["complete"]);
82  $this->setOriginalId((int) $data["original_id"]);
83 
84  $this->setMaxChars((int) $data["maxchars"]);
85  }
86  parent::loadFromDb($question_id);
87  }
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)
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:

◆ saveToDb()

SurveyTextQuestion::saveToDb ( int  $original_id = 0)

Definition at line 112 of file class.SurveyTextQuestion.php.

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

112  : int
113  {
114  $ilDB = $this->db;
115 
116  $affectedRows = parent::saveToDb($original_id);
117  if ($affectedRows === 1) {
118  $ilDB->manipulateF(
119  "DELETE FROM " . $this->getAdditionalTableName() . " WHERE question_fi = %s",
120  array('integer'),
121  array($this->getId())
122  );
123  $ilDB->manipulateF(
124  "INSERT INTO " . $this->getAdditionalTableName() . " (question_fi, maxchars) VALUES (%s, %s)",
125  array('integer', 'integer'),
126  array($this->getId(), $this->getMaxChars())
127  );
128  }
129  return $affectedRows;
130  }
+ Here is the call graph for this function:

◆ saveUserInput()

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

Definition at line 247 of file class.SurveyTextQuestion.php.

References SurveyQuestion\$db, $ilDB, SurveyQuestion\getId(), getMaxChars(), null, SurveyQuestion\stripSlashesAddSpaceFallback(), and ilStr\subStr().

251  : ?array {
252  $ilDB = $this->db;
253 
254  $entered_value = $this->stripSlashesAddSpaceFallback($post_data[$this->getId() . "_text_question"]);
255  $maxchars = $this->getMaxChars();
256 
257  if ($maxchars > 0) {
258  $entered_value = ilStr::subStr($entered_value, 0, $maxchars);
259  }
260 
261  if ($a_return) {
262  return array(array("value" => null, "textanswer" => $entered_value));
263  }
264  if (strlen($entered_value ?? "") == 0) {
265  return null;
266  }
267 
268  $next_id = $ilDB->nextId('svy_answer');
269  #20216
270  $fields = array();
271  $fields['answer_id'] = array("integer", $next_id);
272  $fields['question_fi'] = array("integer", $this->getId());
273  $fields['active_fi'] = array("integer", $active_id);
274  $fields['value'] = array("float", null);
275  $fields['textanswer'] = array("clob", (strlen($entered_value ?? "")) ? $entered_value : null);
276  $fields['tstamp'] = array("integer", time());
277 
278  $ilDB->insert("svy_answer", $fields);
279 
280  return null;
281  }
static subStr(string $a_str, int $a_start, ?int $a_length=null)
Definition: class.ilStr.php:24
stripSlashesAddSpaceFallback(string $a_str)
Strip slashes with add space fallback, see https://mantis.ilias.de/view.php?id=19727 and https://mant...
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
+ Here is the call graph for this function:

◆ setMaxChars()

SurveyTextQuestion::setMaxChars ( int  $maxchars = 0)

Definition at line 102 of file class.SurveyTextQuestion.php.

References $maxchars.

Referenced by importResponses(), and loadFromDb().

102  : void
103  {
104  $this->maxchars = $maxchars;
105  }
+ Here is the caller graph for this function:

◆ toXML()

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

Definition at line 132 of file class.SurveyTextQuestion.php.

References insertXML().

135  : string {
136  $a_xml_writer = new ilXmlWriter();
137  $a_xml_writer->xmlHeader();
138  $this->insertXML($a_xml_writer, $a_include_header);
139  $xml = $a_xml_writer->xmlDumpMem(false);
140  if (!$a_include_header) {
141  $pos = strpos($xml, "?>");
142  $xml = substr($xml, $pos + 2);
143  }
144  return $xml;
145  }
insertXML(ilXmlWriter $a_xml_writer, $a_include_header=true)
+ Here is the call graph for this function:

◆ usableForPrecondition()

SurveyTextQuestion::usableForPrecondition ( )

Definition at line 292 of file class.SurveyTextQuestion.php.

292  : bool
293  {
294  return false;
295  }

Field Documentation

◆ $maxchars

int SurveyTextQuestion::$maxchars = null
protected

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

Referenced by getMaxChars(), and setMaxChars().


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