ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
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)
 Returns the question data. More...
 
 loadFromDb (int $question_id)
 load question data into object note: this base implementation only loads the material data More...
 
 isComplete ()
 
 setMaxChars (int $maxchars=0)
 
 getMaxChars ()
 
 saveToDb (int $original_id=0)
 Saves a SurveyQuestion object to a database. More...
 
 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)
 Creates the user data of the svy_answer table from the POST data. More...
 
 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)
 Import response data from the question import file. More...
 
 usableForPrecondition ()
 Returns if the question is usable for preconditions. More...
 
- 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 
)

Reimplemented from SurveyQuestion.

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

37 {
38 global $DIC;
39
40 $this->db = $DIC->database();
42
43 $this->maxchars = 0;
44 }
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
global $DIC
Definition: shib_login.php:26

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

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

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

◆ getAdditionalTableName()

SurveyTextQuestion::getAdditionalTableName ( )

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

205 : string
206 {
207 return "svy_qst_text";
208 }

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

+ Here is the caller graph for this function:

◆ getMaxChars()

SurveyTextQuestion::getMaxChars ( )

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

107 : int
108 {
109 return $this->maxchars;
110 }

References $maxchars.

Referenced by saveToDb().

+ Here is the caller graph for this function:

◆ getQuestionDataArray()

SurveyTextQuestion::getQuestionDataArray ( int  $id)

Returns the question data.

Reimplemented from SurveyQuestion.

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

46 : array
47 {
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 }

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

+ Here is the call graph for this function:

◆ getQuestionType()

SurveyTextQuestion::getQuestionType ( )

Reimplemented from SurveyQuestion.

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

200 : string
201 {
202 return "SurveyTextQuestion";
203 }

◆ getWorkingDataFromUserInput()

SurveyTextQuestion::getWorkingDataFromUserInput ( array  $post_data)

Creates the user data of the svy_answer table from the POST data.

Returns
array User data according to the svy_answer table

Reimplemented from SurveyQuestion.

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

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 }

◆ importResponses()

SurveyTextQuestion::importResponses ( array  $a_data)

Import response data from the question import file.

Reimplemented from SurveyQuestion.

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

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

References $data, and $id.

◆ insertXML()

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

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

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 }
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.
xmlElement(string $tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
xmlEndTag(string $tag)
Writes an endtag.
xmlStartTag(string $tag, ?array $attrs=null, bool $empty=false, bool $encode=true, bool $escape=true)
Writes a starttag.
const IL_INST_ID
Definition: constants.php:40

◆ isComplete()

SurveyTextQuestion::isComplete ( )

Reimplemented from SurveyQuestion.

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

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 }

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

+ Here is the call graph for this function:

◆ loadFromDb()

SurveyTextQuestion::loadFromDb ( int  $question_id)

load question data into object note: this base implementation only loads the material data

Reimplemented from SurveyQuestion.

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

61 : void
62 {
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 }
setTitle(string $title="")
setQuestiontext(string $questiontext="")
setDescription(string $description="")
setObjId(int $obj_id=0)
Set the reference(?) id of the container object.
setOwner(int $owner=0)
setComplete(bool $a_complete)
setOriginalId(?int $original_id)
setObligatory(bool $obligatory=true)
setAuthor(string $author="")
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...

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().

+ Here is the call graph for this function:

◆ saveToDb()

SurveyTextQuestion::saveToDb ( int  $original_id = 0)

Saves a SurveyQuestion object to a database.

Reimplemented from SurveyQuestion.

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

112 : int
113 {
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 }

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

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

251 : ?array {
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 }
stripSlashesAddSpaceFallback(string $a_str)
Strip slashes with add space fallback, see https://mantis.ilias.de/view.php?id=19727 and https://mant...
static subStr(string $a_str, int $a_start, ?int $a_length=null)
Definition: class.ilStr.php:21

◆ setMaxChars()

SurveyTextQuestion::setMaxChars ( int  $maxchars = 0)

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

102 : void
103 {
104 $this->maxchars = $maxchars;
105 }

References $maxchars.

Referenced by loadFromDb().

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

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)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

◆ usableForPrecondition()

SurveyTextQuestion::usableForPrecondition ( )

Returns if the question is usable for preconditions.

Reimplemented from SurveyQuestion.

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: