24include_once
"./Modules/SurveyQuestionPool/classes/class.SurveyQuestion.php";
61 include_once
"./Modules/SurveyQuestionPool/classes/class.SurveyCategories.php";
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))
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);
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");
234 array($this->
getId())
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",
257 array($this->
getId())
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'),
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"];
554 return array(array(
"value"=>$entered_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);
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'));
An exception for terminatinating execution or to throw for unit testing.
Basic class for all survey question types.
setQuestiontext($questiontext="")
Sets the questiontext of the SurveyQuestion object.
setId($id=-1)
Sets the id of the SurveyQuestion object.
setAuthor($author="")
Sets the authors name of the SurveyQuestion object.
getDescription()
Gets the description string of the SurveyQuestion object.
getId()
Gets the id of the SurveyQuestion object.
setDescription($description="")
Sets the description string of the SurveyQuestion object.
setObjId($obj_id=0)
Set the reference id of the container object.
getAuthor()
Gets the authors name of the SurveyQuestion object.
setOriginalId($original_id)
getQuestiontext()
Gets the questiontext of the SurveyQuestion object.
getObligatory($survey_id="")
Gets the obligatory state of the question.
setOrientation($orientation=0)
Sets the orientation of the question output.
saveCategoryToDb($categorytext, $neutral=0)
Saves a category to the database.
getTitle()
Gets the title string of the SurveyQuestion object.
setComplete($a_complete)
Sets the complete state of the question.
saveMaterial()
save material to db
setOwner($owner="")
Sets the creator/owner ID of the SurveyQuestion object.
setTitle($title="")
Sets the title string of the SurveyQuestion object.
saveCompletionStatus($original_id="")
Saves the complete flag to 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.
getOrientation()
Gets the orientation of the question output.
setObligatory($obligatory=1)
Sets the obligatory state of the question.
SingleChoice survey question.
getPreconditionOptions()
Returns the options for preconditions.
getQuestionType()
Returns the question type of the question.
addPhrase($phrase_id)
Adds a phrase to the question.
__construct($title="", $description="", $author="", $questiontext="", $owner=-1, $orientation=1)
SurveySingleChoiceQuestion constructor.
isComplete()
Returns true if the question is complete for use.
savePhrase($title)
Saves a set of categories to a default phrase.
importAdditionalMetadata($a_meta)
Import additional meta data from the question import file.
checkUserInput($post_data, $survey_id)
Checks the input of the active user for obligatory status and entered values.
saveUserInput($post_data, $active_id, $a_return=false)
importResponses($a_data)
Import response data from the question import file.
saveToDb($original_id="")
Saves a SurveySingleChoiceQuestion object to a database.
usableForPrecondition()
Returns if the question is usable for preconditions.
toXML($a_include_header=TRUE, $obligatory_state="")
Returns an xml representation of the question.
getAdditionalTableName()
Returns the name of the additional question data table in the database.
getPreconditionSelectValue($default="", $title, $variable)
Creates a form property for the precondition value.
& getWorkingDataFromUserInput($post_data)
Creates the user data of the svy_answer table from the POST data.
getAvailableRelations()
Returns the available relations for the question.
addStandardNumbers($lower_limit, $upper_limit)
Adds standard numbers as categories.
& getCategoriesForPhrase($phrase_id)
Gets the available categories for a given phrase.
insertXML(&$a_xml_writer, $a_include_header=TRUE)
Adds the question XML to a given XMLWriter object.
getQuestionDataArray($id)
Returns the question data fields from the database.
loadFromDb($id)
Loads a SurveySingleChoiceQuestion object from the database.
getPreconditionValueOutput($value)
Returns the output for a precondition value.
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...
xmlHeader()
Writes xml header @access public.
if(!is_array($argv)) $options