function checkInput()
 {
     global $lng;
     include_once "./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php";
     if (is_array($_POST[$this->getPostVar()])) {
         $_POST[$this->getPostVar()] = ilUtil::stripSlashesRecursive($_POST[$this->getPostVar()], false, ilObjAdvancedEditing::_getUsedHTMLTagsAsString("assessment"));
     }
     $foundvalues = $_POST[$this->getPostVar()];
     #vd($foundvalues);
     if (is_array($foundvalues)) {
         // check answers
         if (is_array($foundvalues['answer'])) {
             foreach ($foundvalues['answer'] as $aidx => $answervalue) {
                 if (strlen($answervalue) == 0 && strlen($foundvalues['imagename'][$aidx]) == 0) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
         }
         // check correctness
         if (!isset($foundvalues['correctness']) || count($foundvalues['correctness']) < count($foundvalues['answer'])) {
             $this->setAlert($lng->txt("msg_input_is_required"));
             return false;
         }
         if (!$this->checkUploads($foundvalues)) {
             return false;
         }
     } else {
         $this->setAlert($lng->txt("msg_input_is_required"));
         return FALSE;
     }
     return $this->checkSubItemsInput();
 }
 /**
  * Check input, strip slashes etc. set alert, if input is not ok.
  *
  * @return	boolean		Input ok, true/false
  */
 function checkInput()
 {
     global $lng;
     if (is_array($_POST[$this->getPostVar()])) {
         $_POST[$this->getPostVar()] = ilUtil::stripSlashesRecursive($_POST[$this->getPostVar()]);
     }
     $foundvalues = $_POST[$this->getPostVar()];
     if (is_array($foundvalues)) {
         // check answers
         if (is_array($foundvalues['answer'])) {
             foreach ($foundvalues['answer'] as $aidx => $answervalue) {
                 if (strlen($answervalue) == 0) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
         }
         // check points
         $max = 0;
         if (is_array($foundvalues['points'])) {
             foreach ($foundvalues['points'] as $points) {
                 if ($points > $max) {
                     $max = $points;
                 }
                 if (strlen($points) == 0 || !is_numeric($points)) {
                     $this->setAlert($lng->txt("form_msg_numeric_value_required"));
                     return FALSE;
                 }
             }
         }
         if ($max == 0) {
             $this->setAlert($lng->txt("enter_enough_positive_points"));
             return false;
         }
     } else {
         $this->setAlert($lng->txt("msg_input_is_required"));
         return FALSE;
     }
     return $this->checkSubItemsInput();
 }
 /**
  * Check input, strip slashes etc. set alert, if input is not ok.
  *
  * @return	boolean		Input ok, true/false
  */
 function checkInput()
 {
     global $lng;
     include_once "./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php";
     if (is_array($_POST[$this->getPostVar()])) {
         $_POST[$this->getPostVar()] = ilUtil::stripSlashesRecursive($_POST[$this->getPostVar()], true, ilObjAdvancedEditing::_getUsedHTMLTagsAsString("assessment"));
     }
     $foundvalues = $_POST[$this->getPostVar()];
     if (is_array($foundvalues)) {
         // check answers
         if (is_array($foundvalues['answer'])) {
             foreach ($foundvalues['answer'] as $aidx => $answervalue) {
                 if (strlen($answervalue) == 0 && strlen($foundvalues['imagename'][$aidx]) == 0) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
         }
         if (!$this->hideImages) {
             if (is_array($_FILES[$this->getPostVar()]['error']['image'])) {
                 foreach ($_FILES[$this->getPostVar()]['error']['image'] as $index => $error) {
                     // error handling
                     if ($error > 0) {
                         switch ($error) {
                             case UPLOAD_ERR_INI_SIZE:
                                 $this->setAlert($lng->txt("form_msg_file_size_exceeds"));
                                 return false;
                                 break;
                             case UPLOAD_ERR_FORM_SIZE:
                                 $this->setAlert($lng->txt("form_msg_file_size_exceeds"));
                                 return false;
                                 break;
                             case UPLOAD_ERR_PARTIAL:
                                 $this->setAlert($lng->txt("form_msg_file_partially_uploaded"));
                                 return false;
                                 break;
                             case UPLOAD_ERR_NO_FILE:
                                 if ($this->getRequired()) {
                                     if (!strlen($foundvalues['imagename'][$index]) && !strlen($foundvalues['answer'][$index])) {
                                         $this->setAlert($lng->txt("form_msg_file_no_upload"));
                                         return false;
                                     }
                                 }
                                 break;
                             case UPLOAD_ERR_NO_TMP_DIR:
                                 $this->setAlert($lng->txt("form_msg_file_missing_tmp_dir"));
                                 return false;
                                 break;
                             case UPLOAD_ERR_CANT_WRITE:
                                 $this->setAlert($lng->txt("form_msg_file_cannot_write_to_disk"));
                                 return false;
                                 break;
                             case UPLOAD_ERR_EXTENSION:
                                 $this->setAlert($lng->txt("form_msg_file_upload_stopped_ext"));
                                 return false;
                                 break;
                         }
                     }
                 }
             }
             if (is_array($_FILES[$this->getPostVar()]['tmp_name']['image'])) {
                 foreach ($_FILES[$this->getPostVar()]['tmp_name']['image'] as $index => $tmpname) {
                     $filename = $_FILES[$this->getPostVar()]['name']['image'][$index];
                     $filename_arr = pathinfo($filename);
                     $suffix = $filename_arr["extension"];
                     // check suffixes
                     if (strlen($tmpname) && is_array($this->getSuffixes())) {
                         $vir = ilUtil::virusHandling($tmpname, $filename);
                         if ($vir[0] == false) {
                             $this->setAlert($lng->txt("form_msg_file_virus_found") . "<br />" . $vir[1]);
                             return false;
                         }
                         if (!in_array(strtolower($suffix), $this->getSuffixes())) {
                             $this->setAlert($lng->txt("form_msg_file_wrong_file_type"));
                             return false;
                         }
                     }
                 }
             }
         }
     }
     return $this->checkSubItemsInput();
 }
 /**
  * Check input, strip slashes etc. set alert, if input is not ok.
  *
  * @return	boolean		Input ok, true/false
  */
 function checkInput()
 {
     global $lng;
     if (is_array($_POST[$this->getPostVar()])) {
         $_POST[$this->getPostVar()] = ilUtil::stripSlashesRecursive($_POST[$this->getPostVar()]);
     }
     $foundvalues = $_POST[$this->getPostVar()];
     $max_points = 0;
     if (is_array($foundvalues)) {
         // check answers
         if (is_array($foundvalues['key']) && is_array($foundvalues['value'])) {
             foreach ($foundvalues['key'] as $val) {
                 if ($this->getRequired() && strlen($val) == 0) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
             foreach ($foundvalues['value'] as $val) {
                 if ($this->getRequired() && strlen($val) == 0) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
             foreach ($foundvalues['points'] as $val) {
                 if ($this->getRequired() && strlen($val) == 0) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
                 if (!is_numeric(str_replace(",", ".", $val))) {
                     $this->setAlert($lng->txt("form_msg_numeric_value_required"));
                     return FALSE;
                 }
                 if ((double) $val <= 0) {
                     $this->setAlert($lng->txt("positive_numbers_required"));
                     return FALSE;
                 }
             }
         } else {
             if ($this->getRequired()) {
                 $this->setAlert($lng->txt("msg_input_is_required"));
                 return FALSE;
             }
         }
     } else {
         if ($this->getRequired()) {
             $this->setAlert($lng->txt("msg_input_is_required"));
             return FALSE;
         }
     }
     return $this->checkSubItemsInput();
 }
 /**
  * Check input, strip slashes etc. set alert, if input is not ok.
  *
  * @return	boolean		Input ok, true/false
  */
 function checkInput()
 {
     global $lng;
     if (is_array($_POST[$this->getPostVar()])) {
         $_POST[$this->getPostVar()] = ilUtil::stripSlashesRecursive($_POST[$this->getPostVar()]);
     }
     $foundvalues = $_POST[$this->getPostVar()];
     if (is_array($foundvalues)) {
         // check answers
         if (is_array($foundvalues['key']) && is_array($foundvalues['value'])) {
             foreach ($foundvalues['key'] as $val) {
                 if ($this->getRequired() && strlen($val) == 0) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
             foreach ($foundvalues['value'] as $val) {
                 if ($this->getRequired() && strlen($val) == 0) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
         } else {
             if ($this->getRequired()) {
                 $this->setAlert($lng->txt("msg_input_is_required"));
                 return FALSE;
             }
         }
     } else {
         if ($this->getRequired()) {
             $this->setAlert($lng->txt("msg_input_is_required"));
             return FALSE;
         }
     }
     return $this->checkSubItemsInput();
 }
 /**
  * Check input, strip slashes etc. set alert, if input is not ok.
  *
  * @return	boolean		Input ok, true/false
  */
 function checkInput()
 {
     global $lng;
     if (is_array($_POST[$this->getPostVar()])) {
         $_POST[$this->getPostVar()] = ilUtil::stripSlashesRecursive($_POST[$this->getPostVar()]);
     }
     if (is_array($_FILES[$this->getPostVar()]['error']['image'])) {
         foreach ($_FILES[$this->getPostVar()]['error']['image'] as $index => $error) {
             // error handling
             if ($error > 0) {
                 switch ($error) {
                     case UPLOAD_ERR_INI_SIZE:
                         $this->setAlert($lng->txt("form_msg_file_size_exceeds"));
                         return false;
                         break;
                     case UPLOAD_ERR_FORM_SIZE:
                         $this->setAlert($lng->txt("form_msg_file_size_exceeds"));
                         return false;
                         break;
                     case UPLOAD_ERR_PARTIAL:
                         $this->setAlert($lng->txt("form_msg_file_partially_uploaded"));
                         return false;
                         break;
                     case UPLOAD_ERR_NO_FILE:
                         if ($this->getRequired()) {
                             if (!strlen($_POST[$this->getPostVar()]['imagename'][$index])) {
                                 $this->setAlert($lng->txt("form_msg_file_no_upload"));
                                 return false;
                             }
                         }
                         break;
                     case UPLOAD_ERR_NO_TMP_DIR:
                         $this->setAlert($lng->txt("form_msg_file_missing_tmp_dir"));
                         return false;
                         break;
                     case UPLOAD_ERR_CANT_WRITE:
                         $this->setAlert($lng->txt("form_msg_file_cannot_write_to_disk"));
                         return false;
                         break;
                     case UPLOAD_ERR_EXTENSION:
                         $this->setAlert($lng->txt("form_msg_file_upload_stopped_ext"));
                         return false;
                         break;
                 }
             }
         }
     } else {
         if ($this->getRequired()) {
             $this->setAlert($lng->txt("form_msg_file_no_upload"));
             return false;
         }
     }
     if (is_array($_FILES[$this->getPostVar()]['tmp_name']['image'])) {
         foreach ($_FILES[$this->getPostVar()]['tmp_name']['image'] as $index => $tmpname) {
             $filename = $_FILES[$this->getPostVar()]['name']['image'][$index];
             $filename_arr = pathinfo($filename);
             $suffix = $filename_arr["extension"];
             $mimetype = $_FILES[$this->getPostVar()]['type']['image'][$index];
             $size_bytes = $_FILES[$this->getPostVar()]['size']['image'][$index];
             // check suffixes
             if (strlen($tmpname) && is_array($this->getSuffixes())) {
                 if (!in_array(strtolower($suffix), $this->getSuffixes())) {
                     $this->setAlert($lng->txt("form_msg_file_wrong_file_type"));
                     return false;
                 }
             }
         }
     }
     if (is_array($_FILES[$this->getPostVar()]['tmp_name']['image'])) {
         foreach ($_FILES[$this->getPostVar()]['tmp_name']['image'] as $index => $tmpname) {
             $filename = $_FILES[$this->getPostVar()]['name']['image'][$index];
             $filename_arr = pathinfo($filename);
             $suffix = $filename_arr["extension"];
             $mimetype = $_FILES[$this->getPostVar()]['type']['image'][$index];
             $size_bytes = $_FILES[$this->getPostVar()]['size']['image'][$index];
             // virus handling
             if (strlen($tmpname)) {
                 $vir = ilUtil::virusHandling($tmpname, $filename);
                 if ($vir[0] == false) {
                     $this->setAlert($lng->txt("form_msg_file_virus_found") . "<br />" . $vir[1]);
                     return false;
                 }
             }
         }
     }
     return $this->checkSubItemsInput();
 }
 /**
  * Check input, strip slashes etc. set alert, if input is not ok.
  *
  * @return	boolean		Input ok, true/false
  */
 function checkInput()
 {
     global $lng;
     if (is_array($_POST[$this->getPostVar()])) {
         $_POST[$this->getPostVar()] = ilUtil::stripSlashesRecursive($_POST[$this->getPostVar()]);
     }
     $foundvalues = $_POST[$this->getPostVar()];
     if (is_array($foundvalues)) {
         // check answers
         if (is_array($foundvalues['answer'])) {
             foreach ($foundvalues['answer'] as $idx => $answervalue) {
                 if (strlen($answervalue) == 0 && ($this->getRequired() && !$foundvalues['other'][$idx])) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
         }
     } else {
         $this->setAlert($lng->txt("msg_input_is_required"));
         return FALSE;
     }
     return $this->checkSubItemsInput();
 }
 /**
  * Strip slashes from array and sub-arrays
  * 
  * @static
  * 
  */
 public static function stripSlashesRecursive($a_data, $a_strip_html = true, $a_allow = "")
 {
     if (is_array($a_data)) {
         foreach ($a_data as $k => $v) {
             if (is_array($v)) {
                 $a_data[$k] = ilUtil::stripSlashesRecursive($v, $a_strip_html, $a_allow);
             } else {
                 $a_data[$k] = ilUtil::stripSlashes($v, $a_strip_html, $a_allow);
             }
         }
     } else {
         $a_data = ilUtil::stripSlashes($a_data, $a_strip_html, $a_allow);
     }
     return $a_data;
 }
 /**
  * Check input, strip slashes etc. set alert, if input is not ok.
  *
  * @return	boolean		Input ok, true/false
  */
 function checkInput()
 {
     global $lng;
     if (is_array($_POST[$this->getPostVar()])) {
         $_POST[$this->getPostVar()] = ilUtil::stripSlashesRecursive($_POST[$this->getPostVar()]);
     }
     $foundvalues = $_POST[$this->getPostVar()];
     if (is_array($foundvalues)) {
         // check answers
         if (is_array($foundvalues['term'])) {
             foreach ($foundvalues['term'] as $val) {
                 if ($this->getRequired() && $val < 1) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
             foreach ($foundvalues['definition'] as $val) {
                 if ($this->getRequired() && $val < 1) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
             $max = 0;
             foreach ($foundvalues['points'] as $val) {
                 if ($val > 0) {
                     $max += $val;
                 }
                 if ($this->getRequired() && strlen($val) == 0) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
             if ($max <= 0) {
                 $this->setAlert($lng->txt("enter_enough_positive_points"));
                 return FALSE;
             }
         } else {
             if ($this->getRequired()) {
                 $this->setAlert($lng->txt("msg_input_is_required"));
                 return FALSE;
             }
         }
     } else {
         if ($this->getRequired()) {
             $this->setAlert($lng->txt("msg_input_is_required"));
             return FALSE;
         }
     }
     return $this->checkSubItemsInput();
 }
 public function checkInput()
 {
     $error = false;
     $json = json_decode(ilUtil::stripSlashes($_POST['gap_json_post']));
     $_POST['gap'] = ilUtil::stripSlashesRecursive($_POST['gap']);
     $gaps_used_in_combination = array();
     if (array_key_exists('gap_combination', $_POST)) {
         $_POST['gap_combination'] = ilUtil::stripSlashesRecursive($_POST['gap_combination']);
         $_POST['gap_combination_values'] = ilUtil::stripSlashesRecursive($_POST['gap_combination_values']);
         $gap_with_points = array();
         for ($i = 0; $i < count($_POST['gap_combination']['select']); $i++) {
             foreach ($_POST['gap_combination']['select'][$i] as $key => $item) {
                 if ($item == 'none_selected_minus_one') {
                     return false;
                 }
                 $gaps_used_in_combination[$item] = $item;
                 $check_points_for_best_scoring = false;
                 foreach ($_POST['gap_combination_values'][$i] as $index => $answeritems) {
                     foreach ($answeritems as $answeritem) {
                         if ($answeritem == 'none_selected_minus_one') {
                             return false;
                         }
                     }
                     $points = $_POST['gap_combination']['points'][$i][$index];
                     if ($points > 0) {
                         $check_points_for_best_scoring = true;
                     }
                 }
                 if (!$check_points_for_best_scoring) {
                     return false;
                 }
             }
         }
     }
     if (isset($_POST['gap']) && is_array($_POST['gap'])) {
         foreach ($_POST['gap'] as $key => $item) {
             $_POST['clozetype_' . $key] = ilUtil::stripSlashes($_POST['clozetype_' . $key]);
             $getType = $_POST['clozetype_' . $key];
             $gapsize = $_POST['gap_' . $key . '_gapsize'];
             $json[0][$key]->text_field_length = $gapsize > 0 ? $gapsize : '';
             if ($getType == CLOZE_TEXT || $getType == CLOZE_SELECT) {
                 $_POST['gap_' . $key] = ilUtil::stripSlashesRecursive($_POST['gap_' . $key]);
                 $gapText = $_POST['gap_' . $key];
                 foreach ($gapText['answer'] as $row => $answer) {
                     if (!isset($answer) || $answer == '') {
                         $error = true;
                     }
                 }
                 $points_sum = 0;
                 if (array_key_exists('points', $gapText)) {
                     foreach ($gapText['points'] as $row => $points) {
                         if (isset($points) && $points != '' && is_numeric($points)) {
                             $points_sum += $points;
                         } else {
                             $error = true;
                         }
                     }
                     if (is_array($gap_with_points) && array_key_exists($key, $gap_with_points)) {
                         $points_sum += $gap_with_points[$key];
                     }
                     if ($points_sum == 0) {
                         if (!array_key_exists($key, $gaps_used_in_combination)) {
                             $error = true;
                         }
                     }
                     if ($getType == CLOZE_SELECT) {
                         $_POST['shuffle_' . $key] = ilUtil::stripSlashes($_POST['shuffle_' . $key]);
                         if (!isset($_POST['shuffle_' . $key])) {
                             $error = true;
                         }
                     }
                 } else {
                     $error = true;
                 }
             }
             if ($getType == CLOZE_NUMERIC) {
                 $_POST['gap_' . $key . 'numeric'] = ilUtil::stripSlashes($_POST['gap_' . $key . 'numeric'], FALSE);
                 $_POST['gap_' . $key . 'numeric_lower'] = ilUtil::stripSlashes($_POST['gap_' . $key . 'numeric_lower'], FALSE);
                 $_POST['gap_' . $key . 'numeric_upper'] = ilUtil::stripSlashes($_POST['gap_' . $key . 'numeric_upper'], FALSE);
                 $_POST['gap_' . $key . 'numeric_points'] = ilUtil::stripSlashes($_POST['gap_' . $key . 'numeric_points']);
                 $mark_errors = array('answer' => false, 'lower' => false, 'upper' => false, 'points' => false);
                 $eval = new EvalMath();
                 $eval->suppress_errors = true;
                 $formula = $_POST['gap_' . $key . '_numeric'];
                 $result = $eval->e(str_replace(',', '.', $_POST['gap_' . $key . '_numeric'], $formula));
                 if ($result === false) {
                     $error = true;
                 }
                 $lower = $_POST['gap_' . $key . '_numeric_lower'];
                 $assClozeTestObject = new assClozeTest();
                 $has_valid_chars = $assClozeTestObject->checkForValidFormula($lower);
                 $result = $eval->e(str_replace(',', '.', $lower), FALSE);
                 if ($result === false || !$has_valid_chars) {
                     $error = true;
                 }
                 $_POST['gap_' . $key . '_numeric_lower'] = $result;
                 $result = $eval->e(str_replace(',', '.', $_POST['gap_' . $key . '_numeric_upper']), FALSE);
                 if ($result === false) {
                     $error = true;
                 }
                 $_POST['gap_' . $key . '_numeric_upper'] = $result;
                 $points = $_POST['gap_' . $key . '_numeric_points'];
                 if (is_array($gap_with_points) && array_key_exists($key, $gap_with_points)) {
                     $points += $gap_with_points[$key];
                 }
                 if (!isset($points) || $points == '' || !is_numeric($points) || $points == 0) {
                     if (!array_key_exists($key, $gaps_used_in_combination)) {
                         $error = true;
                     }
                 }
                 $json[0][$key]->values[0]->error = $mark_errors;
             }
         }
     }
     $_POST['gap_json_post'] = json_encode($json);
     return !$error;
 }
Example #11
0
 public function writeAnswerSpecificPostData(ilPropertyFormGUI $form)
 {
     if (is_array($_POST['gap'])) {
         if ($this->ctrl->getCmd() != 'createGaps') {
             $this->object->clearGapAnswers();
         }
         foreach ($_POST['gap'] as $idx => $hidden) {
             $clozetype = $_POST['clozetype_' . $idx];
             $this->object->setGapType($idx, $clozetype);
             switch ($clozetype) {
                 case CLOZE_TEXT:
                     $this->object->setGapShuffle($idx, 0);
                     if ($this->ctrl->getCmd() != 'createGaps') {
                         if (is_array($_POST['gap_' . $idx]['answer'])) {
                             foreach ($_POST['gap_' . $idx]['answer'] as $order => $value) {
                                 $this->object->addGapAnswer($idx, $order, $value);
                             }
                         } else {
                             $this->object->addGapAnswer($idx, 0, '');
                         }
                     }
                     if (is_array($_POST['gap_' . $idx]['points'])) {
                         foreach ($_POST['gap_' . $idx]['points'] as $order => $value) {
                             $this->object->setGapAnswerPoints($idx, $order, $value);
                         }
                     }
                     if (array_key_exists('gap_' . $idx . '_gapsize', $_POST)) {
                         $this->object->setGapSize($idx, $order, $_POST['gap_' . $idx . '_gapsize']);
                     }
                     break;
                 case CLOZE_SELECT:
                     $this->object->setGapShuffle($idx, (int) (isset($_POST["shuffle_{$idx}"]) && $_POST["shuffle_{$idx}"]));
                     if ($this->ctrl->getCmd() != 'createGaps') {
                         if (is_array($_POST['gap_' . $idx]['answer'])) {
                             foreach ($_POST['gap_' . $idx]['answer'] as $order => $value) {
                                 $this->object->addGapAnswer($idx, $order, $value);
                             }
                         } else {
                             $this->object->addGapAnswer($idx, 0, '');
                         }
                     }
                     if (is_array($_POST['gap_' . $idx]['points'])) {
                         foreach ($_POST['gap_' . $idx]['points'] as $order => $value) {
                             $this->object->setGapAnswerPoints($idx, $order, $value);
                         }
                     }
                     break;
                 case CLOZE_NUMERIC:
                     $this->object->setGapShuffle($idx, 0);
                     $gap = $this->object->getGap($idx);
                     if (!$gap) {
                         break;
                     }
                     $this->object->getGap($idx)->clearItems();
                     if (array_key_exists('gap_' . $idx . '_numeric', $_POST)) {
                         if ($this->ctrl->getCmd() != 'createGaps') {
                             $this->object->addGapAnswer($idx, 0, str_replace(",", ".", $_POST['gap_' . $idx . '_numeric']));
                         }
                         $this->object->setGapAnswerLowerBound($idx, 0, str_replace(",", ".", $_POST['gap_' . $idx . '_numeric_lower']));
                         $this->object->setGapAnswerUpperBound($idx, 0, str_replace(",", ".", $_POST['gap_' . $idx . '_numeric_upper']));
                         $this->object->setGapAnswerPoints($idx, 0, $_POST['gap_' . $idx . '_numeric_points']);
                     } else {
                         if ($this->ctrl->getCmd() != 'createGaps') {
                             $this->object->addGapAnswer($idx, 0, '');
                         }
                         $this->object->setGapAnswerLowerBound($idx, 0, '');
                         $this->object->setGapAnswerUpperBound($idx, 0, '');
                     }
                     if (array_key_exists('gap_' . $idx . '_gapsize', $_POST)) {
                         $this->object->setGapSize($idx, $order, $_POST['gap_' . $idx . '_gapsize']);
                     }
                     break;
             }
             $assClozeGapCombinationObject = new assClozeGapCombination();
             $assClozeGapCombinationObject->clearGapCombinationsFromDb($this->object->getId());
             if (count($_POST['gap_combination']) > 0) {
                 $assClozeGapCombinationObject->saveGapCombinationToDb($this->object->getId(), ilUtil::stripSlashesRecursive($_POST['gap_combination']), ilUtil::stripSlashesRecursive($_POST['gap_combination_values']));
             }
         }
         if ($this->ctrl->getCmd() != 'createGaps') {
             $this->object->updateClozeTextFromGaps();
         }
     }
 }
 /**
  * Check input, strip slashes etc. set alert, if input is not ok.
  *
  * @return	boolean		Input ok, true/false
  */
 function checkInput()
 {
     global $lng;
     if (is_array($_POST[$this->getPostVar()])) {
         $_POST[$this->getPostVar()] = ilUtil::stripSlashesRecursive($_POST[$this->getPostVar()]);
     }
     $foundvalues = $_POST[$this->getPostVar()];
     if (is_array($foundvalues)) {
         // check answers
         if (is_array($foundvalues['answer'])) {
             foreach ($foundvalues['answer'] as $idx => $answervalue) {
                 if (strlen($answervalue) == 0 && ($this->getRequired() && !$foundvalues['other'][$idx])) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
         }
         // check neutral column
         if (array_key_exists('neutral', $foundvalues)) {
             if (strlen($foundvalues['neutral']) == 0 && $this->getRequired) {
                 $this->setAlert($lng->txt("msg_input_is_required"));
                 return false;
             }
         }
         // check scales
         if (is_array($foundvalues['scale'])) {
             foreach ($foundvalues['scale'] as $scale) {
                 if (strlen($scale) == 0) {
                     $this->setAlert($lng->txt("msg_input_is_required"));
                     return FALSE;
                 }
             }
         }
         // check scales
         if (is_array($foundvalues['scale'])) {
             if (count(array_unique($foundvalues['scale'])) != count($foundvalues['scale'])) {
                 $this->setAlert($lng->txt("msg_duplicate_scale"));
                 return FALSE;
             }
         }
         // check neutral column scale
         if (strlen($_POST[$this->postvar . '_neutral_scale'])) {
             if (is_array($foundvalues['scale'])) {
                 if (in_array($_POST[$this->postvar . '_neutral_scale'], $foundvalues['scale'])) {
                     $this->setAlert($lng->txt("msg_duplicate_scale"));
                     return FALSE;
                 }
             }
         }
     } else {
         $this->setAlert($lng->txt("msg_input_is_required"));
         return FALSE;
     }
     return $this->checkSubItemsInput();
 }
 /**
  * Check input, strip slashes etc. set alert, if input is not ok.
  *
  * @return	boolean		Input ok, true/false
  */
 function checkInput()
 {
     global $lng;
     if (is_array($_POST[$this->getPostVar()])) {
         $_POST[$this->getPostVar()] = ilUtil::stripSlashesRecursive($_POST[$this->getPostVar()]);
     }
     // remove trailing '/'
     while (substr($_FILES[$this->getPostVar()]["name"], -1) == '/') {
         $_FILES[$this->getPostVar()]["name"] = substr($_FILES[$this->getPostVar()]["name"], 0, -1);
     }
     $filename = $_FILES[$this->getPostVar()]["name"];
     $filename_arr = pathinfo($_FILES[$this->getPostVar()]["name"]);
     $suffix = $filename_arr["extension"];
     $mimetype = $_FILES[$this->getPostVar()]["type"];
     $size_bytes = $_FILES[$this->getPostVar()]["size"];
     $temp_name = $_FILES[$this->getPostVar()]["tmp_name"];
     $error = $_FILES[$this->getPostVar()]["error"];
     // error handling
     if ($error > 0) {
         switch ($error) {
             case UPLOAD_ERR_INI_SIZE:
                 $this->setAlert($lng->txt("form_msg_file_size_exceeds"));
                 return false;
                 break;
             case UPLOAD_ERR_FORM_SIZE:
                 $this->setAlert($lng->txt("form_msg_file_size_exceeds"));
                 return false;
                 break;
             case UPLOAD_ERR_PARTIAL:
                 $this->setAlert($lng->txt("form_msg_file_partially_uploaded"));
                 return false;
                 break;
             case UPLOAD_ERR_NO_FILE:
                 if ($this->getRequired()) {
                     if (!strlen($this->getValue())) {
                         $this->setAlert($lng->txt("form_msg_file_no_upload"));
                         return false;
                     }
                 }
                 break;
             case UPLOAD_ERR_NO_TMP_DIR:
                 $this->setAlert($lng->txt("form_msg_file_missing_tmp_dir"));
                 return false;
                 break;
             case UPLOAD_ERR_CANT_WRITE:
                 $this->setAlert($lng->txt("form_msg_file_cannot_write_to_disk"));
                 return false;
                 break;
             case UPLOAD_ERR_EXTENSION:
                 $this->setAlert($lng->txt("form_msg_file_upload_stopped_ext"));
                 return false;
                 break;
         }
     }
     // check suffixes
     if ($_FILES[$this->getPostVar()]["tmp_name"] != "" && is_array($this->getSuffixes())) {
         if (!in_array(strtolower($suffix), $this->getSuffixes())) {
             $this->setAlert($lng->txt("form_msg_file_wrong_file_type"));
             return false;
         }
     }
     // virus handling
     if ($_FILES[$this->getPostVar()]["tmp_name"] != "") {
         $vir = ilUtil::virusHandling($temp_name, $filename);
         if ($vir[0] == false) {
             $this->setAlert($lng->txt("form_msg_file_virus_found") . "<br />" . $vir[1]);
             return false;
         }
     }
     $max = 0;
     if (is_array($_POST[$this->getPostVar()]['coords']['name'])) {
         foreach ($_POST[$this->getPostVar()]['coords']['name'] as $idx => $name) {
             if (!strlen($_POST[$this->getPostVar()]['coords']['points'][$idx]) && $this->getRequired) {
                 $this->setAlert($lng->txt('form_msg_area_missing_points'));
                 return false;
             }
             if (!is_numeric($_POST[$this->getPostVar()]['coords']['points'][$idx])) {
                 $this->setAlert($lng->txt('form_msg_numeric_value_required'));
                 return false;
             }
             if ($_POST[$this->getPostVar()]['coords']['points'][$idx] > 0) {
                 $max = $_POST[$this->getPostVar()]['coords']['points'][$idx];
             }
         }
     }
     if ($max == 0 && !$filename) {
         $this->setAlert($lng->txt("enter_enough_positive_points"));
         return false;
     }
     return true;
 }