24 include_once
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
61 include_once
"./Modules/SurveyQuestionPool/classes/class.SurveyCategories.php";
76 $categories =
array();
77 $result = $ilDB->queryF(
"SELECT svy_category.* FROM svy_category, svy_phrase_cat WHERE svy_phrase_cat.category_fi = svy_category.category_id AND svy_phrase_cat.phrase_fi = %s ORDER BY svy_phrase_cat.sequence",
83 if ((
$row[
"defaultvalue"] == 1)
and (
$row[
"owner_fi"] == 0))
85 $categories[
$row[
"category_id"]] = $this->lng->txt($row[
"title"]);
89 $categories[
$row[
"category_id"]] = $row[
"title"];
106 $result = $ilDB->queryF(
"SELECT svy_category.* FROM svy_category, svy_phrase_cat WHERE svy_phrase_cat.category_fi = svy_category.category_id AND svy_phrase_cat.phrase_fi = %s AND (svy_category.owner_fi = 0 OR svy_category.owner_fi = %s) ORDER BY svy_phrase_cat.sequence",
107 array(
'integer',
'integer'),
108 array($phrase_id, $ilUser->getId())
112 $neutral =
$row[
"neutral"];
113 if ((
$row[
"defaultvalue"] == 1)
and (
$row[
"owner_fi"] == 0))
115 $this->categories->addCategory($this->lng->txt(
$row[
"title"]), 0, $neutral);
119 $this->categories->addCategory(
$row[
"title"], 0, $neutral);
141 return $ilDB->fetchAssoc(
$result);
168 $this->label =
$data[
'label'];
173 include_once(
"./Services/RTE/classes/class.ilRTE.php");
180 $this->categories->flushCategories();
181 $result = $ilDB->queryF(
"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",
189 $this->categories->addCategory(
$data[
"title"],
$data[
"other"],
$data[
"neutral"], null, (
$data[
'scale']) ?
$data[
'scale'] : (
$data[
'sequence'] + 1));
193 parent::loadFromDb(
$id);
208 $this->categories->getCategoryCount()
228 $affectedRows = parent::saveToDb($original_id);
229 if ($affectedRows == 1)
231 $this->log->debug(
"Before save Category-> DELETE from svy_qst_sc WHERE question_fi = ".$this->
getId().
" AND INSERT again the same id and orientation in svy_qst_sc");
232 $affectedRows = $ilDB->manipulateF(
"DELETE FROM " . $this->
getAdditionalTableName() .
" WHERE question_fi = %s",
236 $affectedRows = $ilDB->manipulateF(
"INSERT INTO " . $this->
getAdditionalTableName() .
" (question_fi, orientation) VALUES (%s, %s)",
237 array(
'integer',
'text'),
253 $this->log->debug(
"DELETE from svy_variable before the INSERT into svy_variable. if scale > 0 we get scale value else we get null");
255 $affectedRows = $ilDB->manipulateF(
"DELETE FROM svy_variable WHERE question_fi = %s",
260 for ($i = 0; $i < $this->categories->getCategoryCount(); $i++)
262 $cat = $this->categories->getCategory($i);
264 $next_id = $ilDB->nextId(
'svy_variable');
265 $affectedRows = $ilDB->manipulateF(
"INSERT INTO svy_variable (variable_id, category_fi, question_fi, value1, other, sequence, scale, tstamp) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
266 array(
'integer',
'integer',
'integer',
'float',
'integer',
'integer',
'integer',
'integer'),
267 array($next_id, $category_id, $this->
getId(), ($i + 1), $cat->other, $i, ($cat->scale > 0) ? $cat->scale : null,
time())
270 $debug_scale = ($cat->scale > 0) ? $cat->scale : null;
271 $this->log->debug(
"INSERT INTO svy_variable category_fi= ".$category_id.
" question_fi= ".$this->getId().
" value1= ".($i + 1).
" other= ".$cat->other.
" sequence= ".$i.
" scale =".$debug_scale);
282 function toXML($a_include_header = TRUE, $obligatory_state =
"")
284 include_once(
"./Services/Xml/classes/class.ilXmlWriter.php");
287 $this->
insertXML($a_xml_writer, $a_include_header, $obligatory_state);
288 $xml = $a_xml_writer->xmlDumpMem(FALSE);
289 if (!$a_include_header)
291 $pos = strpos($xml,
"?>");
292 $xml = substr($xml, $pos + 2);
304 function insertXML(&$a_xml_writer, $a_include_header = TRUE)
307 "id" => $this->
getId(),
309 "type" => $this->getQuestiontype(),
312 $a_xml_writer->xmlStartTag(
"question", $attrs);
314 $a_xml_writer->xmlElement(
"description", NULL, $this->
getDescription());
315 $a_xml_writer->xmlElement(
"author", NULL, $this->
getAuthor());
316 if (strlen($this->label))
319 "label" => $this->label,
326 $a_xml_writer->xmlStartTag(
"questiontext", $attrs);
328 $a_xml_writer->xmlEndTag(
"questiontext");
330 $a_xml_writer->xmlStartTag(
"responses");
332 for ($i = 0; $i < $this->categories->getCategoryCount(); $i++)
337 if (strlen($this->categories->getCategory($i)->other)) $attrs[
'other'] = $this->categories->getCategory($i)->other;
338 if (strlen($this->categories->getCategory($i)->neutral)) $attrs[
'neutral'] = $this->categories->getCategory($i)->neutral;
339 if (strlen($this->categories->getCategory($i)->label)) $attrs[
'label'] = $this->categories->getCategory($i)->label;
340 if (strlen($this->categories->getCategory($i)->scale)) $attrs[
'scale'] = $this->categories->getCategory($i)->scale;
341 $a_xml_writer->xmlStartTag(
"response_single", $attrs);
342 $this->
addMaterialTag($a_xml_writer, $this->categories->getCategory($i)->title);
343 $a_xml_writer->xmlEndTag(
"response_single");
346 $a_xml_writer->xmlEndTag(
"responses");
348 if (count($this->material))
350 if (preg_match(
"/il_(\d*?)_(\w+)_(\d+)/", $this->material[
"internal_link"], $matches))
353 "label" => $this->material[
"title"]
355 $a_xml_writer->xmlStartTag(
"material", $attrs);
356 $intlink =
"il_" . IL_INST_ID .
"_" . $matches[2] .
"_" . $matches[3];
357 if (strcmp($matches[1],
"") != 0)
359 $intlink = $this->material[
"internal_link"];
361 $a_xml_writer->xmlElement(
"mattext", NULL, $intlink);
362 $a_xml_writer->xmlEndTag(
"material");
366 $a_xml_writer->xmlStartTag(
"metadata");
367 $a_xml_writer->xmlStartTag(
"metadatafield");
368 $a_xml_writer->xmlElement(
"fieldlabel", NULL,
"orientation");
369 $a_xml_writer->xmlElement(
"fieldentry", NULL, $this->
getOrientation());
370 $a_xml_writer->xmlEndTag(
"metadatafield");
371 $a_xml_writer->xmlEndTag(
"metadata");
373 $a_xml_writer->xmlEndTag(
"question");
386 foreach ($a_meta as $key => $value)
388 switch ($value[
"label"])
406 for ($i = $lower_limit; $i <= $upper_limit; $i++)
408 $this->categories->addCategory($i);
424 $next_id = $ilDB->nextId(
'svy_phrase');
425 $affectedRows = $ilDB->manipulateF(
"INSERT INTO svy_phrase (phrase_id, title, defaultvalue, owner_fi, tstamp) VALUES (%s, %s, %s, %s, %s)",
426 array(
'integer',
'text',
'text',
'integer',
'integer'),
429 $phrase_id = $next_id;
434 $next_id = $ilDB->nextId(
'svy_category');
435 $affectedRows = $ilDB->manipulateF(
"INSERT INTO svy_category (category_id, title, defaultvalue, owner_fi, tstamp, neutral) VALUES (%s, %s, %s, %s, %s, %s)",
436 array(
'integer',
'text',
'text',
'integer',
'integer',
'text'),
437 array($next_id, $data[
'answer'], 1, $ilUser->getId(),
time(), $data[
'neutral'])
439 $category_id = $next_id;
440 $next_id = $ilDB->nextId(
'svy_phrase_cat');
441 $affectedRows = $ilDB->manipulateF(
"INSERT INTO svy_phrase_cat (phrase_category_id, phrase_fi, category_fi, sequence, other, scale) VALUES (%s, %s, %s, %s, %s, %s)",
442 array(
'integer',
'integer',
'integer',
'integer',
'integer',
'integer'),
443 array($next_id, $phrase_id, $category_id,
$counter, ($data[
'other']) ? 1 : 0, $data[
'scale'])
457 return "SurveySingleChoiceQuestion";
479 $entered_value = $post_data[$this->
getId() .
"_value"];
481 if (strlen($entered_value))
483 array_push(
$data,
array(
"value" => $entered_value,
"textanswer" => $post_data[$this->
getId() .
'_' . $entered_value .
'_other']));
485 for ($i = 0; $i < $this->categories->getCategoryCount(); $i++)
487 $cat = $this->categories->getCategory($i);
490 if ($i != $entered_value)
492 if (strlen($post_data[$this->
getId() .
"_" . $i .
"_other"]))
494 array_push(
$data,
array(
"value" => $i,
"textanswer" => $post_data[$this->
getId() .
'_' . $i .
'_other'],
"uncheck" =>
true));
513 $entered_value = $post_data[$this->
getId() .
"_value"];
515 $this->log->debug(
"Entered value = ".$entered_value);
519 if (strlen($entered_value) == 0)
return $this->lng->txt(
"question_not_checked");
521 for ($i = 0; $i < $this->categories->getCategoryCount(); $i++)
523 $cat = $this->categories->getCategory($i);
526 if ($i == $entered_value)
528 if (array_key_exists($this->
getId() .
"_" . $entered_value .
"_other", $post_data) && !strlen($post_data[$this->
getId() .
"_" . $entered_value .
"_other"]))
530 return $this->lng->txt(
"question_mr_no_other_answer");
535 if (strlen($post_data[$this->
getId() .
"_" . $i .
"_other"]))
537 return $this->lng->txt(
"question_sr_no_other_answer_checked");
550 $entered_value = $post_data[$this->
getId() .
"_value"];
555 "textanswer"=>$post_data[$this->
getId() .
"_" . $entered_value .
"_other"]));
557 if (strlen($entered_value) == 0)
return;
559 $next_id = $ilDB->nextId(
'svy_answer');
562 $fields[
'answer_id'] =
array(
"integer", $next_id);
563 $fields[
'question_fi'] =
array(
"integer", $this->
getId());
564 $fields[
'active_fi'] =
array(
"integer", $active_id);
565 $fields[
'value'] =
array(
"float", (strlen($entered_value)) ? $entered_value : NULL);
566 $fields[
'textanswer'] =
array(
"clob", ($post_data[$this->
getId() .
"_" . $entered_value .
"_other"]) ? $post_data[$this->
getId() .
"_" . $entered_value .
"_other"] : null);
567 $fields[
'tstamp'] =
array(
"integer",
time());
569 $affectedRows = $ilDB->insert(
"svy_answer", $fields);
571 $debug_value = (strlen($entered_value)) ? $entered_value :
"NULL";
572 $debug_answer = ($post_data[$this->
getId() .
"_" . $entered_value .
"_other"]) ? $post_data[$this->
getId() .
"_" . $entered_value .
"_other"] :
"NULL";
573 $this->log->debug(
"INSERT svy_answer answer_id=".$next_id.
" question_fi=".$this->getId().
" active_fi=".$active_id.
" value=".$debug_value.
" textanswer=".$debug_answer);
589 $categorytext .= $material[
"text"];
591 $this->categories->addCategory(
594 strlen($data[
'neutral']) ? $data[
'neutral'] : 0,
595 strlen($data[
'label']) ? $data[
'label'] : null,
596 strlen($data[
'scale']) ? $data[
'scale'] : null
620 return array(
"<",
"<=",
"=",
"<>",
">=",
">");
633 for ($i = 0; $i < $this->categories->getCategoryCount(); $i++)
635 $category = $this->categories->getCategory($i);
636 $options[$category->scale-1] = $category->scale .
" - " . $category->title;
649 include_once
"./Services/Form/classes/class.ilSelectInputGUI.php";
653 $step3->setValue($default);
667 $category = $this->categories->getCategoryForScale($value+1);
670 return $category->scale .
672 ((strlen($category->title)) ? $category->title : $this->lng->txt(
'other_answer'));
& getWorkingDataFromUserInput($post_data)
Creates the user data of the svy_answer table from the POST data.
saveUserInput($post_data, $active_id, $a_return=false)
saveCategoryToDb($categorytext, $neutral=0)
Saves a category to the database.
saveCompletionStatus($original_id="")
Saves the complete flag to the database.
getPreconditionValueOutput($value)
Returns the output for a precondition value.
getAuthor()
Gets the authors name of the SurveyQuestion object.
SingleChoice survey question.
getTitle()
Gets the title string of the SurveyQuestion object.
usableForPrecondition()
Returns if the question is usable for preconditions.
getObligatory($survey_id="")
Gets the obligatory state of the question.
setObligatory($obligatory=1)
Sets the obligatory state of the question.
setOrientation($orientation=0)
Sets the orientation of the question output.
insertXML(&$a_xml_writer, $a_include_header=TRUE)
Adds the question XML to a given XMLWriter object.
importAdditionalMetadata($a_meta)
Import additional meta data from the question import file.
getAdditionalTableName()
Returns the name of the additional question data table in the database.
setId($id=-1)
Sets the id of the SurveyQuestion object.
isComplete()
Returns true if the question is complete for use.
savePhrase($title)
Saves a set of categories to a default phrase.
getQuestiontext()
Gets the questiontext of the SurveyQuestion object.
getOrientation()
Gets the orientation of the question output.
addStandardNumbers($lower_limit, $upper_limit)
Adds standard numbers as categories.
importResponses($a_data)
Import response data from the question import file.
saveToDb($original_id="")
Saves a SurveySingleChoiceQuestion object to a database.
static _replaceMediaObjectImageSrc($a_text, $a_direction=0, $nic=IL_INST_ID)
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
setOwner($owner="")
Sets the creator/owner ID of the SurveyQuestion object.
setComplete($a_complete)
Sets the complete state of the question.
setOriginalId($original_id)
setQuestiontext($questiontext="")
Sets the questiontext of the SurveyQuestion object.
getPreconditionOptions()
Returns the options for preconditions.
if(!is_array($argv)) $options
getId()
Gets the id of the SurveyQuestion object.
Basic class for all survey question types.
saveMaterial()
save material to db
xmlHeader()
Writes xml header public.
& getCategoriesForPhrase($phrase_id)
Gets the available categories for a given phrase.
getQuestionDataArray($id)
Returns the question data fields from the database.
Create styles array
The data for the language used.
toXML($a_include_header=TRUE, $obligatory_state="")
Returns an xml representation of the question.
setAuthor($author="")
Sets the authors name of the SurveyQuestion object.
loadFromDb($id)
Loads a SurveySingleChoiceQuestion object from the database.
addMaterialTag(&$a_xml_writer, $a_material, $close_material_tag=TRUE, $add_mobs=TRUE, $a_attrs=null)
Creates an XML material tag from a plain text or xhtml text.
setDescription($description="")
Sets the description string of the SurveyQuestion object.
checkUserInput($post_data, $survey_id)
Checks the input of the active user for obligatory status and entered values.
addPhrase($phrase_id)
Adds a phrase to the question.
getQuestionType()
Returns the question type of the question.
getDescription()
Gets the description string of the SurveyQuestion object.
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
setObjId($obj_id=0)
Set the reference id of the container object.
__construct($title="", $description="", $author="", $questiontext="", $owner=-1, $orientation=1)
SurveySingleChoiceQuestion constructor.
getPreconditionSelectValue($default="", $title, $variable)
Creates a form property for the precondition value.
getAvailableRelations()
Returns the available relations for the question.
setTitle($title="")
Sets the title string of the SurveyQuestion object.