ILIAS  trunk Revision v13.0_alpha-62-g3b72d83f2e5
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, mixed $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 29 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 33 of file class.SurveyTextQuestion.php.

39 {
40 global $DIC;
41
42 $this->db = $DIC->database();
44
45 $this->maxchars = 0;
46 }
__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 227 of file class.SurveyTextQuestion.php.

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

◆ getAdditionalTableName()

SurveyTextQuestion::getAdditionalTableName ( )

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

207 : string
208 {
209 return "svy_qst_text";
210 }

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

+ Here is the caller graph for this function:

◆ getMaxChars()

SurveyTextQuestion::getMaxChars ( )

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

109 : int
110 {
111 return $this->maxchars;
112 }

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 48 of file class.SurveyTextQuestion.php.

48 : array
49 {
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 } else {
59 return array();
60 }
61 }

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 202 of file class.SurveyTextQuestion.php.

202 : string
203 {
204 return "SurveyTextQuestion";
205 }

◆ 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 212 of file class.SurveyTextQuestion.php.

214 : array {
215 $entered_value = (string) ($post_data[$this->getId() . "_text_question"] ?? "");
216 $data = array();
217 if (strlen($entered_value ?? "")) {
218 $data[] = array("textanswer" => $entered_value);
219 }
220 return $data;
221 }
$data
Definition: storeScorm.php:45

◆ importResponses()

SurveyTextQuestion::importResponses ( array  $a_data)

Import response data from the question import file.

Reimplemented from SurveyQuestion.

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

287 : void
288 {
289 foreach ($a_data as $id => $data) {
290 if ($data["maxlength"] > 0) {
291 $this->setMaxChars((int) $data["maxlength"]);
292 }
293 }
294 }

References $data, and $id.

◆ insertXML()

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

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

152 : void {
153 $attrs = array(
154 "id" => $this->getId(),
155 "title" => $this->getTitle(),
156 "type" => $this->getQuestionType(),
157 "obligatory" => $this->getObligatory()
158 );
159 $a_xml_writer->xmlStartTag("question", $attrs);
160
161 $a_xml_writer->xmlElement("description", null, $this->getDescription());
162 $a_xml_writer->xmlElement("author", null, $this->getAuthor());
163 if (strlen($this->label ?? "")) {
164 $attrs = array(
165 "label" => $this->label,
166 );
167 } else {
168 $attrs = array();
169 }
170 $a_xml_writer->xmlStartTag("questiontext", $attrs);
171 $this->addMaterialTag($a_xml_writer, $this->getQuestiontext());
172 $a_xml_writer->xmlEndTag("questiontext");
173
174 $a_xml_writer->xmlStartTag("responses");
175 $attrs = array(
176 "id" => "0"
177 );
178 if ($this->getMaxChars() > 0) {
179 $attrs["maxlength"] = $this->getMaxChars();
180 }
181 $a_xml_writer->xmlElement("response_text", $attrs);
182 $a_xml_writer->xmlEndTag("responses");
183
184 if (count($this->material)) {
185 if (preg_match("/il_(\d*?)_(\w+)_(\d+)/", (string) $this->material["internal_link"], $matches)) {
186 $attrs = array(
187 "label" => $this->material["title"]
188 );
189 $a_xml_writer->xmlStartTag("material", $attrs);
190 $intlink = "il_" . IL_INST_ID . "_" . $matches[2] . "_" . $matches[3];
191 if (strcmp($matches[1], "") != 0) {
192 $intlink = $this->material["internal_link"];
193 }
194 $a_xml_writer->xmlElement("mattext", null, $intlink);
195 $a_xml_writer->xmlEndTag("material");
196 }
197 }
198
199 $a_xml_writer->xmlEndTag("question");
200 }
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 91 of file class.SurveyTextQuestion.php.

91 : bool
92 {
93 if (
94 strlen($this->getTitle() ?? "") &&
95 strlen($this->getAuthor() ?? "") &&
96 strlen($this->getQuestiontext() ?? "")
97 ) {
98 return true;
99 } else {
100 return false;
101 }
102 }

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 63 of file class.SurveyTextQuestion.php.

63 : void
64 {
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((int) $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
86 $this->setMaxChars((int) $data["maxchars"]);
87 }
88 parent::loadFromDb($question_id);
89 }
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 114 of file class.SurveyTextQuestion.php.

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

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 249 of file class.SurveyTextQuestion.php.

253 : ?array {
255
256 $entered_value = $this->stripSlashesAddSpaceFallback(
257 (string) ($post_data[$this->getId() . "_text_question"] ?? "")
258 );
259 $maxchars = $this->getMaxChars();
260
261 if ($maxchars > 0) {
262 $entered_value = ilStr::subStr($entered_value, 0, $maxchars);
263 }
264
265 if ($a_return) {
266 return array(array("value" => null, "textanswer" => $entered_value));
267 }
268 if (strlen($entered_value ?? "") == 0) {
269 return null;
270 }
271
272 $next_id = $ilDB->nextId('svy_answer');
273 #20216
274 $fields = array();
275 $fields['answer_id'] = array("integer", $next_id);
276 $fields['question_fi'] = array("integer", $this->getId());
277 $fields['active_fi'] = array("integer", $active_id);
278 $fields['value'] = array("float", null);
279 $fields['textanswer'] = array("clob", (strlen($entered_value ?? "")) ? $entered_value : null);
280 $fields['tstamp'] = array("integer", time());
281
282 $ilDB->insert("svy_answer", $fields);
283
284 return null;
285 }
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 104 of file class.SurveyTextQuestion.php.

104 : void
105 {
106 $this->maxchars = $maxchars;
107 }

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 134 of file class.SurveyTextQuestion.php.

137 : string {
138 $a_xml_writer = new ilXmlWriter();
139 $a_xml_writer->xmlHeader();
140 $this->insertXML($a_xml_writer, $a_include_header);
141 $xml = $a_xml_writer->xmlDumpMem(false);
142 if (!$a_include_header) {
143 $pos = strpos($xml, "?>");
144 $xml = substr($xml, $pos + 2);
145 }
146 return $xml;
147 }
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 296 of file class.SurveyTextQuestion.php.

296 : bool
297 {
298 return false;
299 }

Field Documentation

◆ $maxchars

int SurveyTextQuestion::$maxchars = null
protected

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

Referenced by getMaxChars(), and setMaxChars().


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