/** * */ protected function getAgreementTextByFilenameAsynch() { /** * @var $rbacsystem ilRbacSystem */ global $rbacsystem; require_once 'Services/TermsOfService/classes/class.ilTermsOfServiceJsonResponse.php'; $response = new ilTermsOfServiceJsonResponse(); if (!isset($_GET['agreement_document']) || !strlen($_GET['agreement_document']) || !$rbacsystem->checkAccess('read', $this->object->getRefId())) { $response->setStatus(ilTermsOfServiceJsonResponse::STATUS_FAILURE); echo $response; } $file = realpath(strip_tags(rawurldecode(ilUtil::stripOnlySlashes($_GET['agreement_document'])))); if (preg_match('/Customizing[\\/\\\\](global[\\/\\\\]agreement|clients[\\/\\\\]' . CLIENT_ID . '[\\/\\\\]agreement)[\\/\\\\]agreement_([a-z]{2})\\.html$/', $file)) { $response->setBody(nl2br(trim(file_get_contents($file)))); } else { $response->setStatus(ilTermsOfServiceJsonResponse::STATUS_FAILURE); } echo $response; }
/** * Submit the definition form */ function submitFormDefinition() { global $ilCtrl, $ilTabs, $lng, $tpl; $ilCtrl->saveParameter($this, 'type_id'); $ilTabs->activateSubTab('type_definition'); $xml = ilUtil::stripOnlySlashes($_POST['xml']); $this->initFormDefinition($xml); $this->form->checkInput(); $message = ""; if (!$this->type->setXML($xml, $message)) { $this->form->setValuesByPost(); ilUtil::sendFailure($this->txt('type_failure_xml') . '<br />' . $message, false); $style = "<style>#il_prop_cont_ {display:none;}</style>"; $tpl->setContent($style . $this->form->getHTML()); return; } $this->type->update(); ilUtil::sendSuccess($this->txt('type_updated'), true); $ilCtrl->redirect($this, 'editDefinition'); }
/** * Evaluates a posted edit form and writes the form data in the question object * (called frm generic commands in assQuestionGUI) * * @return integer 0: question can be saved / 1: form is not complete */ public function writePostData($always = false) { $this->initQuestionForm(); if ($this->form->checkInput()) { $error = ''; // write the basic data $this->writeQuestionGenericPostData(); // get the acccounts definition either by file upload or post if (file_exists($_FILES["accounts_file"]["tmp_name"])) { $accounts_xml = file_get_contents($_FILES["accounts_file"]["tmp_name"]); } else { $accounts_xml = ilUtil::stripOnlySlashes($_POST['accounts_xml']); } // check the accounts definition but save it anyway if (!$this->object->analyzeAccountsXML($accounts_xml, false)) { $error .= sprintf($this->plugin->txt('xml_accounts_error')); } $this->object->setAccountsXML($accounts_xml); // sort the part positions $positions = array(); foreach ($_POST['parts'] as $part_id) { $positions[$part_id] = $_POST['position_' . $part_id]; } asort($positions, SORT_NUMERIC); // set the part data $i = 1; foreach ($positions as $part_id => $pos) { if ($part_id == 0 and $pos == '') { // add a new part to the end $pos = count($positions); } else { // set the position to the counter $pos = $i++; } // save the question part // a new part object is be created if part_id is 0 $part_obj = $this->object->getPart($part_id); $part_obj->setText($this->form->getInput('text_' . $part_id)); $part_obj->setPosition($pos); if ($_FILES["booking_file_" . $part_id]["tmp_name"]) { $booking_xml = file_get_contents($_FILES["booking_file_" . $part_id]["tmp_name"]); } else { $booking_xml = ilUtil::stripOnlySlashes($_POST['booking_xml_' . $part_id]); } // check the booking definition but save it anyway if (!$part_obj->analyzeBookingXML($booking_xml, false)) { $error .= sprintf($this->plugin->txt('xml_booking_error'), $pos); } $part_obj->setBookingXML($booking_xml); } if ($error != '') { ilUtil::sendFailure($error, true); } // save taxonomy assignment $this->saveTaxonomyAssignments(); // indicator to save the question return 0; } else { // indicator to show the edit form with errors return 1; } }
/** * 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 ($this->usePurifier() && $this->getPurifier()) { $_POST[$this->getPostVar()] = ilUtil::stripOnlySlashes($_POST[$this->getPostVar()]); $_POST[$this->getPostVar()] = $this->getPurifier()->purify($_POST[$this->getPostVar()]); } else { $allowed = $this->getRteTagString(); if ($this->plugins["latex"] == "latex" && !is_int(strpos($allowed, "<span>"))) { $allowed .= "<span>"; } $_POST[$this->getPostVar()] = $this->getUseRte() || !$this->getUseTagsForRteOnly() ? ilUtil::stripSlashes($_POST[$this->getPostVar()], true, $allowed) : ilUtil::stripSlashes($_POST[$this->getPostVar()]); } if ($this->getRequired() && trim($_POST[$this->getPostVar()]) == "") { $this->setAlert($lng->txt("msg_input_is_required")); return false; } return $this->checkSubItemsInput(); }
/** * Evaluates a posted edit form and writes the form data in the question object * @return integer A positive value, if one of the required fields wasn't set, else 0 */ public function writePostData($always = false) { $hasErrors = !$always ? $this->editQuestion(true) : false; $checked = true; if (!$hasErrors) { $this->object->setTitle($_POST["title"]); $this->object->setAuthor($_POST["author"]); $this->object->setComment($_POST["comment"]); include_once "./Services/AdvancedEditing/classes/class.ilObjAdvancedEditing.php"; $questiontext = ilUtil::stripOnlySlashes($_POST["question"]); $this->object->setQuestion($questiontext); $this->object->setEstimatedWorkingTime($_POST["Estimated"]["hh"], $_POST["Estimated"]["mm"], $_POST["Estimated"]["ss"]); $this->object->parseQuestionText(); $found_vars = array(); $found_results = array(); foreach ($_POST as $key => $value) { if (preg_match("/^unit_(\\\$v\\d+)\$/", $key, $matches)) { array_push($found_vars, $matches[1]); } if (preg_match("/^unit_(\\\$r\\d+)\$/", $key, $matches)) { array_push($found_results, $matches[1]); } } // if(!$this->object->checkForDuplicateVariables()) // { // // $this->addErrorMessage($this->lng->txt("err_duplicate_variables")); // $checked = FALSE; // } if (!$this->object->checkForDuplicateResults()) { $this->addErrorMessage($this->lng->txt("err_duplicate_results")); $checked = FALSE; } foreach ($found_vars as $variable) { if ($this->object->getVariable($variable) != null) { $varObj = new assFormulaQuestionVariable($variable, $_POST["range_min_{$variable}"], $_POST["range_max_{$variable}"], $this->object->getUnitrepository()->getUnit($_POST["unit_{$variable}"]), $_POST["precision_{$variable}"], $_POST["intprecision_{$variable}"]); $varObj->setRangeMinTxt($_POST["range_min_{$variable}"]); $varObj->setRangeMaxTxt($_POST["range_max_{$variable}"]); $this->object->addVariable($varObj); } } $tmp_form_vars = array(); $tmp_quest_vars = array(); foreach ($found_results as $result) { $tmp_res_match = preg_match_all("/([\$][v][0-9]*)/", $_POST["formula_{$result}"], $form_vars); $tmp_form_vars = array_merge($tmp_form_vars, $form_vars[0]); $tmp_que_match = preg_match_all("/([\$][v][0-9]*)/", $_POST['question'], $quest_vars); $tmp_quest_vars = array_merge($tmp_quest_vars, $quest_vars[0]); } $result_has_undefined_vars = array_diff($tmp_form_vars, $found_vars); $question_has_unused_vars = array_diff($tmp_quest_vars, $tmp_form_vars); if (count($result_has_undefined_vars) > 0 || count($question_has_unused_vars) > 0) { $error_message = ''; if (count($result_has_undefined_vars) > 0) { $error_message .= $this->lng->txt("res_contains_undef_var") . '<br>'; } if (count($question_has_unused_vars) > 0) { $error_message .= $this->lng->txt("que_contains_unused_var"); } $checked = false; if ($this->isSaveCommand()) { ilUtil::sendFailure($error_message); } } foreach ($found_results as $result) { if (is_object($this->object->getUnitrepository()->getUnit($_POST["unit_{$result}"]))) { $tmp_result_unit = $this->object->getUnitrepository()->getUnit($_POST["unit_{$result}"]); } else { $tmp_result_unit = NULL; } if ($this->object->getResult($result) != null) { $use_simple_rating = $_POST["rating_advanced_{$result}"] == 1 ? FALSE : TRUE; $resObj = new assFormulaQuestionResult($result, $_POST["range_min_{$result}"], $_POST["range_max_{$result}"], $_POST["tolerance_{$result}"], $tmp_result_unit, $_POST["formula_{$result}"], $_POST["points_{$result}"], $_POST["precision_{$result}"], $use_simple_rating, $_POST["rating_advanced_{$result}"] == 1 ? $_POST["rating_sign_{$result}"] : "", $_POST["rating_advanced_{$result}"] == 1 ? $_POST["rating_value_{$result}"] : "", $_POST["rating_advanced_{$result}"] == 1 ? $_POST["rating_unit_{$result}"] : "", $_POST["result_type_{$result}"] != 0 ? $_POST["result_type_{$result}"] : 0); $resObj->setRangeMinTxt($_POST["range_min_{$result}"]); $resObj->setRangeMaxTxt($_POST["range_max_{$result}"]); $this->object->addResult($resObj); $this->object->addResultUnits($resObj, $_POST["units_{$result}"]); } } if ($checked == false) { return 1; } else { $this->resetSavedPreviewSession(); return 0; } } else { return 1; } }
protected function writeQuestionGenericPostData() { $this->object->setTitle($_POST["title"]); $this->object->setAuthor($_POST["author"]); $this->object->setComment($_POST["comment"]); if ($this->object->getSelfAssessmentEditingMode()) { $this->object->setNrOfTries($_POST['nr_of_tries']); } $this->object->setQuestion(ilUtil::stripOnlySlashes($_POST['question'])); // ? $this->object->setEstimatedWorkingTime($_POST["Estimated"]["hh"], $_POST["Estimated"]["mm"], $_POST["Estimated"]["ss"]); }