本文整理汇总了PHP中ilObjMediaObject::_saveUsage方法的典型用法代码示例。如果您正苦于以下问题:PHP ilObjMediaObject::_saveUsage方法的具体用法?PHP ilObjMediaObject::_saveUsage怎么用?PHP ilObjMediaObject::_saveUsage使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ilObjMediaObject
的用法示例。
在下文中一共展示了ilObjMediaObject::_saveUsage方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: fromXML
/**
* Creates a question from a QTI file
*
* Receives parameters from a QTI parser and creates a valid ILIAS question object
*
* @param object $item The QTI item object
* @param integer $questionpool_id The id of the parent questionpool
* @param integer $tst_id The id of the parent test if the question is part of a test
* @param object $tst_object A reference to the parent test object
* @param integer $question_counter A reference to a question counter to count the questions of an imported question pool
* @param array $import_mapping An array containing references to included ILIAS objects
* @access public
*/
function fromXML(&$item, $questionpool_id, &$tst_id, &$tst_object, &$question_counter, &$import_mapping)
{
global $ilUser;
// empty session variable for imported xhtml mobs
unset($_SESSION["import_mob_xhtml"]);
$presentation = $item->getPresentation();
$duration = $item->getDuration();
$now = getdate();
$created = sprintf("%04d%02d%02d%02d%02d%02d", $now['year'], $now['mon'], $now['mday'], $now['hours'], $now['minutes'], $now['seconds']);
$feedbacksgeneric = array();
$this->addGeneralMetadata($item);
$this->object->setTitle($item->getTitle());
$this->object->setNrOfTries($item->getMaxattempts());
$this->object->setComment($item->getComment());
$this->object->setAuthor($item->getAuthor());
$this->object->setOwner($ilUser->getId());
$this->object->setQuestion($this->object->QTIMaterialToString($item->getQuestiontext()));
$this->object->setObjId($questionpool_id);
$this->object->setEstimatedWorkingTime($duration["h"], $duration["m"], $duration["s"]);
$this->object->setPoints($item->getMetadataEntry("points"));
$this->object->setOrderText($item->getMetadataEntry("ordertext"));
$this->object->setTextSize($item->getMetadataEntry("textsize"));
$this->object->setSeparator($item->getMetadataEntry("separator"));
// additional content editing mode information
$this->object->setAdditionalContentEditingMode($this->fetchAdditionalContentEditingModeInformation($item));
$this->object->saveToDb();
// handle the import of media objects in XHTML code
$questiontext = $this->object->getQuestion();
if (is_array($_SESSION["import_mob_xhtml"])) {
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
include_once "./Services/RTE/classes/class.ilRTE.php";
foreach ($_SESSION["import_mob_xhtml"] as $mob) {
if ($tst_id > 0) {
$importfile = $this->getTstImportArchivDirectory() . '/' . $mob["uri"];
} else {
$importfile = $this->getQplImportArchivDirectory() . '/' . $mob["uri"];
}
$GLOBALS['ilLog']->write(__METHOD__ . ': import mob from dir: ' . $importfile);
$media_object =& ilObjMediaObject::_saveTempFileAsMediaObject(basename($importfile), $importfile, FALSE);
ilObjMediaObject::_saveUsage($media_object->getId(), "qpl:html", $this->object->getId());
$questiontext = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $questiontext);
}
}
$this->object->setQuestion(ilRTE::_replaceMediaObjectImageSrc($questiontext, 1));
$this->object->saveToDb();
if (count($item->suggested_solutions)) {
foreach ($item->suggested_solutions as $suggested_solution) {
$this->object->setSuggestedSolution($suggested_solution["solution"]->getContent(), $suggested_solution["gap_index"], true);
}
$this->object->saveToDb();
}
if ($tst_id > 0) {
$q_1_id = $this->object->getId();
$question_id = $this->object->duplicate(true, null, null, null, $tst_id);
$tst_object->questions[$question_counter++] = $question_id;
$import_mapping[$item->getIdent()] = array("pool" => $q_1_id, "test" => $question_id);
} else {
$import_mapping[$item->getIdent()] = array("pool" => $this->object->getId(), "test" => 0);
}
}
示例2: importXmlRepresentation
/**
* Import XML
*
* @param
* @return
*/
function importXmlRepresentation($a_entity, $a_id, $a_xml, $a_mapping)
{
// Container import => test object already created
if ($new_id = $a_mapping->getMapping('Services/Container', 'objs', $a_id)) {
$newObj = ilObjectFactory::getInstanceByObjId($new_id, false);
#$newObj->setImportDirectory(dirname(rtrim($this->getImportDirectory(),'/')));
} else {
// Shouldn't happen
$GLOBALS['ilLog']->write(__METHOD__ . ': Called in non container mode');
return false;
}
include_once "./Services/Survey/classes/class.SurveyImportParser.php";
list($xml_file) = $this->parseXmlFileNames();
if (!@file_exists($xml_file)) {
$GLOBALS['ilLog']->write(__METHOD__ . ': Cannot find xml definition: ' . $xml_file);
return false;
}
$import = new SurveyImportParser(-1, $xml_file, TRUE);
$import->setSurveyObject($newObj);
$import->startParsing();
if (is_array($_SESSION["import_mob_xhtml"])) {
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
include_once "./Services/RTE/classes/class.ilRTE.php";
include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php";
foreach ($_SESSION["import_mob_xhtml"] as $mob) {
$importfile = dirname($xml_file) . "/" . $mob["uri"];
if (file_exists($importfile)) {
$media_object =& ilObjMediaObject::_saveTempFileAsMediaObject(basename($importfile), $importfile, FALSE);
ilObjMediaObject::_saveUsage($media_object->getId(), "svy:html", $newObj->getId());
$newObj->setIntroduction(str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $newObj->getIntroduction()));
$newObj->setOutro(str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $newObj->getOutro()));
} else {
global $ilLog;
$ilLog->write("Error: Could not open XHTML mob file for test introduction during test import. File {$importfile} does not exist!");
}
}
$newObj->setIntroduction(ilRTE::_replaceMediaObjectImageSrc($newObj->getIntroduction(), 1));
$newObj->setOutro(ilRTE::_replaceMediaObjectImageSrc($newObj->getOutro(), 1));
$newObj->saveToDb();
}
$a_mapping->addMapping("Modules/Survey", "svy", $a_id, $newObj->getId());
return true;
}
示例3: saveMobUsage
/**
* Save all usages of media objects (media aliases, media objects, internal links)
*
* @param string $a_xml xml data of page
*/
static function saveMobUsage($a_page, $a_domdoc, $a_old_nr = 0)
{
$usages = array();
// media aliases
$xpath = new DOMXPath($a_domdoc);
$nodes = $xpath->query('//MediaAlias');
foreach ($nodes as $node) {
$id_arr = explode("_", $node->getAttribute("OriginId"));
$mob_id = $id_arr[count($id_arr) - 1];
if ($mob_id > 0 && $id_arr[1] == "") {
$usages[$mob_id] = true;
}
}
// media objects
$xpath = new DOMXPath($a_domdoc);
$nodes = $xpath->query('//MediaObject/MetaData/General/Identifier');
foreach ($nodes as $node) {
$mob_entry = $node->getAttribute("Entry");
$mob_arr = explode("_", $mob_entry);
$mob_id = $mob_arr[count($mob_arr) - 1];
if ($mob_id > 0 && $mob_arr[1] == "") {
$usages[$mob_id] = true;
}
}
// internal links
$xpath = new DOMXPath($a_domdoc);
$nodes = $xpath->query("//IntLink[@Type='MediaObject']");
foreach ($nodes as $node) {
$mob_target = $node->getAttribute("Target");
$mob_arr = explode("_", $mob_target);
//echo "<br>3<br>";
//echo $mob_target."<br>";
//var_dump($mob_arr);
$mob_id = $mob_arr[count($mob_arr) - 1];
if ($mob_id > 0 && $mob_arr[1] == "") {
$usages[$mob_id] = true;
}
}
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
ilObjMediaObject::_deleteAllUsages($a_page->getParentType() . ":pg", $a_page->getId(), $a_old_nr, $a_page->getLanguage());
foreach ($usages as $mob_id => $val) {
ilObjMediaObject::_saveUsage($mob_id, $a_page->getParentType() . ":pg", $a_page->getId(), $a_old_nr, $a_page->getLanguage());
}
return $usages;
}
示例4: fromXML
/**
* Creates a question from a QTI file
*
* Receives parameters from a QTI parser and creates a valid ILIAS question object
*
* @param object $item The QTI item object
* @param integer $questionpool_id The id of the parent questionpool
* @param integer $tst_id The id of the parent test if the question is part of a test
* @param object $tst_object A reference to the parent test object
* @param integer $question_counter A reference to a question counter to count the questions of an imported question pool
* @param array $import_mapping An array containing references to included ILIAS objects
* @access public
*/
function fromXML(&$item, $questionpool_id, &$tst_id, &$tst_object, &$question_counter, &$import_mapping)
{
global $ilUser;
// empty session variable for imported xhtml mobs
unset($_SESSION["import_mob_xhtml"]);
$presentation = $item->getPresentation();
$duration = $item->getDuration();
$now = getdate();
$created = sprintf("%04d%02d%02d%02d%02d%02d", $now['year'], $now['mon'], $now['mday'], $now['hours'], $now['minutes'], $now['seconds']);
$feedbacksgeneric = array();
$this->object->setTitle($item->getTitle());
$this->object->setComment($item->getComment());
$this->object->setAuthor($item->getAuthor());
$this->object->setOwner($ilUser->getId());
$this->object->setQuestion($this->object->QTIMaterialToString($item->getQuestiontext()));
$this->object->setObjId($questionpool_id);
$this->object->setEstimatedWorkingTime($duration["h"], $duration["m"], $duration["s"]);
$this->object->setPoints($item->getMetadataEntry("points"));
$this->object->setOptionString($item->getMetadataEntry("option_string"));
$this->object->setSampleSolution($item->getMetadataEntry("sample_solution"));
$this->object->saveToDb('', false);
// handle the import of media objects in XHTML code
$questiontext = $this->object->getQuestion();
if (is_array($_SESSION["import_mob_xhtml"])) {
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
include_once "./Services/RTE/classes/class.ilRTE.php";
foreach ($_SESSION["import_mob_xhtml"] as $mob) {
if ($tst_id > 0) {
include_once "./Modules/Test/classes/class.ilObjTest.php";
$importfile = ilObjTest::_getImportDirectory() . '/' . $mob["uri"];
} else {
include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php";
$importfile = ilObjQuestionPool::_getImportDirectory() . '/' . $mob["uri"];
}
$media_object =& ilObjMediaObject::_saveTempFileAsMediaObject(basename($importfile), $importfile, FALSE);
ilObjMediaObject::_saveUsage($media_object->getId(), "qpl:html", $this->object->getId());
$questiontext = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $questiontext);
}
}
$this->object->setQuestion(ilRTE::_replaceMediaObjectImageSrc($questiontext, 1));
// feedback
$feedbacksgeneric = array();
foreach ($item->itemfeedback as $ifb) {
if (strcmp($ifb->getIdent(), "response_allcorrect") == 0) {
// found a feedback for the identifier
if (count($ifb->material)) {
foreach ($ifb->material as $material) {
$feedbacksgeneric[1] = $material;
}
}
if (count($ifb->flow_mat) > 0) {
foreach ($ifb->flow_mat as $fmat) {
if (count($fmat->material)) {
foreach ($fmat->material as $material) {
$feedbacksgeneric[1] = $material;
}
}
}
}
} else {
if (strcmp($ifb->getIdent(), "response_onenotcorrect") == 0) {
// found a feedback for the identifier
if (count($ifb->material)) {
foreach ($ifb->material as $material) {
$feedbacksgeneric[0] = $material;
}
}
if (count($ifb->flow_mat) > 0) {
foreach ($ifb->flow_mat as $fmat) {
if (count($fmat->material)) {
foreach ($fmat->material as $material) {
$feedbacksgeneric[0] = $material;
}
}
}
}
}
}
}
// genericFeedback
foreach ($feedbacksgeneric as $correctness => $material) {
$m = $this->object->QTIMaterialToString($material);
$feedbacksgeneric[$correctness] = $m;
}
foreach ($feedbacksgeneric as $correctness => $material) {
//$this->object->saveFeedbackGeneric($correctness, ilRTE::_replaceMediaObjectImageSrc($material, 1));
$this->object->feedbackOBJ->importGenericFeedback($this->object->getId(), $correctness, ilRTE::_replaceMediaObjectImageSrc($material, 1));
//.........这里部分代码省略.........
示例5: fromXML
//.........这里部分代码省略.........
if (strlen($feedbackpointer->getLinkrefid())) {
foreach ($item->itemfeedback as $ifb) {
if (strcmp($ifb->getIdent(), "response_allcorrect") == 0) {
// found a feedback for the identifier
if (count($ifb->material)) {
foreach ($ifb->material as $material) {
$feedbacksgeneric[1] = $material;
}
}
if (count($ifb->flow_mat) > 0) {
foreach ($ifb->flow_mat as $fmat) {
if (count($fmat->material)) {
foreach ($fmat->material as $material) {
$feedbacksgeneric[1] = $material;
}
}
}
}
} else {
if (strcmp($ifb->getIdent(), "response_onenotcorrect") == 0) {
// found a feedback for the identifier
if (count($ifb->material)) {
foreach ($ifb->material as $material) {
$feedbacksgeneric[0] = $material;
}
}
if (count($ifb->flow_mat) > 0) {
foreach ($ifb->flow_mat as $fmat) {
if (count($fmat->material)) {
foreach ($fmat->material as $material) {
$feedbacksgeneric[0] = $material;
}
}
}
}
}
}
}
}
}
}
}
}
$this->object->setTitle($item->getTitle());
$this->object->setNrOfTries($item->getMaxattempts());
$this->object->setComment($item->getComment());
$this->object->setAuthor($item->getAuthor());
$this->object->setOwner($ilUser->getId());
$this->object->setQuestion($this->object->QTIMaterialToString($item->getQuestiontext()));
$this->object->setObjId($questionpool_id);
$this->object->setEstimatedWorkingTime($duration["h"], $duration["m"], $duration["s"]);
$this->object->setMaxChars($maxchars);
$this->object->setPoints($points);
$this->object->setLowerLimit($lowerlimit);
$this->object->setUpperLimit($upperlimit);
$this->object->saveToDb();
if (count($item->suggested_solutions)) {
foreach ($item->suggested_solutions as $suggested_solution) {
$this->object->setSuggestedSolution($suggested_solution["solution"]->getContent(), $suggested_solution["gap_index"], true);
}
$this->object->saveToDb();
}
foreach ($feedbacksgeneric as $correctness => $material) {
$m = $this->object->QTIMaterialToString($material);
$feedbacksgeneric[$correctness] = $m;
}
// handle the import of media objects in XHTML code
$questiontext = $this->object->getQuestion();
if (is_array($_SESSION["import_mob_xhtml"])) {
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
include_once "./Services/RTE/classes/class.ilRTE.php";
foreach ($_SESSION["import_mob_xhtml"] as $mob) {
if ($tst_id > 0) {
$importfile = $this->getTstImportArchivDirectory() . '/' . $mob["uri"];
} else {
$importfile = $this->getQplImportArchivDirectory() . '/' . $mob["uri"];
}
$GLOBALS['ilLog']->write(__METHOD__ . ': import mob from dir: ' . $importfile);
$media_object =& ilObjMediaObject::_saveTempFileAsMediaObject(basename($importfile), $importfile, FALSE);
ilObjMediaObject::_saveUsage($media_object->getId(), "qpl:html", $this->object->getId());
$questiontext = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $questiontext);
foreach ($feedbacksgeneric as $correctness => $material) {
$feedbacksgeneric[$correctness] = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $material);
}
}
}
$this->object->setQuestion(ilRTE::_replaceMediaObjectImageSrc($questiontext, 1));
foreach ($feedbacksgeneric as $correctness => $material) {
$this->object->saveFeedbackGeneric($correctness, ilRTE::_replaceMediaObjectImageSrc($material, 1));
}
$this->object->saveToDb();
if ($tst_id > 0) {
$q_1_id = $this->object->getId();
$question_id = $this->object->duplicate(true, null, null, null, $tst_id);
$tst_object->questions[$question_counter++] = $question_id;
$import_mapping[$item->getIdent()] = array("pool" => $q_1_id, "test" => $question_id);
} else {
$import_mapping[$item->getIdent()] = array("pool" => $this->object->getId(), "test" => 0);
}
}
示例6: saveStatutoryRegulationsObject
public function saveStatutoryRegulationsObject()
{
require_once 'Services/RTE/classes/class.ilRTE.php';
if (isset($_POST['statutory_regulations']) && $_POST['statutory_regulations'] != NULL) {
$this->genSetData->set('statutory_regulations', ilRTE::_replaceMediaObjectImageSrc($_POST['statutory_regulations'], 0), 'regulations');
// copy temporary media objects (frm~)
include_once 'Services/MediaObjects/classes/class.ilObjMediaObject.php';
$mediaObjects = ilRTE::_getMediaObjects($_POST['statutory_regulations'], 0);
$myMediaObjects = ilObjMediaObject::_getMobsOfObject('pays~:html', ilObject::_lookupObjId($this->ref_id));
foreach ($mediaObjects as $mob) {
foreach ($myMediaObjects as $myMob) {
if ($mob == $myMob) {
// change usage
ilObjMediaObject::_removeUsage($mob, 'pays~:html', ilObject::_lookupObjId($this->ref_id));
break;
}
}
ilObjMediaObject::_saveUsage($mob, 'pays~:html', ilObject::_lookupObjId($this->ref_id));
}
} else {
$this->genSetData->set('statutory_regulations', NULL, 'regulations');
}
// remove usage of deleted media objects
include_once 'Services/MediaObjects/classes/class.ilObjMediaObject.php';
$oldMediaObjects = ilObjMediaObject::_getMobsOfObject('pays~:html', ilObject::_lookupObjId($this->ref_id));
$curMediaObjects = ilRTE::_getMediaObjects($_POST['statutory_regulations'], 0);
foreach ($oldMediaObjects as $oldMob) {
$found = false;
foreach ($curMediaObjects as $curMob) {
if ($oldMob == $curMob) {
$found = true;
break;
}
}
if (!$found) {
if (ilObjMediaObject::_exists($oldMob)) {
ilObjMediaObject::_removeUsage($oldMob, 'pays~:html', ilObject::_lookupObjId($this->ref_id));
$mob_obj = new ilObjMediaObject($oldMob);
$mob_obj->delete();
}
}
}
$this->genSetData->set('show_sr_shoppingcart', isset($_POST['show_sr_shoppingcart']) ? 1 : 0, 'regulations');
$this->genSetData->set('attach_sr_invoice', isset($_POST['attach_sr_invoice']) ? 1 : 0, 'regulations');
$this->StatutoryRegulationsObject();
ilUtil::sendSuccess($this->lng->txt('pays_updated_general_settings'));
return true;
}
示例7: fromXML
/**
* Creates a question from a QTI file
*
* Receives parameters from a QTI parser and creates a valid ILIAS question object
*
* @param object $item The QTI item object
* @param integer $questionpool_id The id of the parent questionpool
* @param integer $tst_id The id of the parent test if the question is part of a test
* @param object $tst_object A reference to the parent test object
* @param integer $question_counter A reference to a question counter to count the questions of an imported question pool
* @param array $import_mapping An array containing references to included ILIAS objects
* @access public
*/
function fromXML(&$item, $questionpool_id, &$tst_id, &$tst_object, &$question_counter, &$import_mapping)
{
global $ilUser;
// empty session variable for imported xhtml mobs
unset($_SESSION["import_mob_xhtml"]);
$presentation = $item->getPresentation();
$duration = $item->getDuration();
$now = getdate();
$created = sprintf("%04d%02d%02d%02d%02d%02d", $now['year'], $now['mon'], $now['mday'], $now['hours'], $now['minutes'], $now['seconds']);
$feedbacksgeneric = array();
$this->object->setTitle($item->getTitle());
$this->object->setNrOfTries($item->getMaxattempts());
$this->object->setComment($item->getComment());
$this->object->setAuthor($item->getAuthor());
$this->object->setOwner($ilUser->getId());
$this->object->setQuestion($this->object->QTIMaterialToString($item->getQuestiontext()));
$this->object->setObjId($questionpool_id);
$this->object->setEstimatedWorkingTime($duration["h"], $duration["m"], $duration["s"]);
$this->object->setWidth($item->getMetadataEntry("width"));
$this->object->setHeight($item->getMetadataEntry("height"));
$this->object->setApplet($item->getMetadataEntry("applet"));
$this->object->setParameters(unserialize($item->getMetadataEntry("params")));
$this->object->setPoints($item->getMetadataEntry("points"));
$this->object->saveToDb();
$flashapplet =& base64_decode($item->getMetadataEntry("swf"));
if (!file_exists($this->object->getFlashPath())) {
include_once "./Services/Utilities/classes/class.ilUtil.php";
ilUtil::makeDirParents($this->object->getFlashPath());
}
$filename = $this->object->getFlashPath() . $this->object->getApplet();
$fh = fopen($filename, "wb");
if ($fh == false) {
// global $ilErr;
// $ilErr->raiseError($this->object->lng->txt("error_save_image_file") . ": $php_errormsg", $ilErr->MESSAGE);
// return;
} else {
fwrite($fh, $flashapplet);
fclose($fh);
}
$feedbacksgeneric = $this->getFeedbackGeneric($item);
// handle the import of media objects in XHTML code
$questiontext = $this->object->getQuestion();
if (is_array($_SESSION["import_mob_xhtml"])) {
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
include_once "./Services/RTE/classes/class.ilRTE.php";
foreach ($_SESSION["import_mob_xhtml"] as $mob) {
if ($tst_id > 0) {
$importfile = $this->getTstImportArchivDirectory() . '/' . $mob["uri"];
} else {
$importfile = $this->getQplImportArchivDirectory() . '/' . $mob["uri"];
}
$GLOBALS['ilLog']->write(__METHOD__ . ': import mob from dir: ' . $importfile);
$media_object =& ilObjMediaObject::_saveTempFileAsMediaObject(basename($importfile), $importfile, FALSE);
ilObjMediaObject::_saveUsage($media_object->getId(), "qpl:html", $this->object->getId());
$questiontext = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $questiontext);
foreach ($feedbacksgeneric as $correctness => $material) {
$feedbacksgeneric[$correctness] = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $material);
}
}
}
$this->object->setQuestion(ilRTE::_replaceMediaObjectImageSrc($questiontext, 1));
foreach ($feedbacksgeneric as $correctness => $material) {
$this->object->saveFeedbackGeneric($correctness, ilRTE::_replaceMediaObjectImageSrc($material, 1));
}
$this->object->saveToDb();
if (count($item->suggested_solutions)) {
foreach ($item->suggested_solutions as $suggested_solution) {
$this->object->setSuggestedSolution($suggested_solution["solution"]->getContent(), $suggested_solution["gap_index"], true);
}
$this->object->saveToDb();
}
if ($tst_id > 0) {
$q_1_id = $this->object->getId();
$question_id = $this->object->duplicate(true, null, null, null, $tst_id);
$tst_object->questions[$question_counter++] = $question_id;
$import_mapping[$item->getIdent()] = array("pool" => $q_1_id, "test" => $question_id);
} else {
$import_mapping[$item->getIdent()] = array("pool" => $this->object->getId(), "test" => 0);
}
}
示例8: fromXML
//.........这里部分代码省略.........
if (count($ifb->material)) {
foreach ($ifb->material as $material) {
$feedbacksgeneric[0] = $material;
}
}
if (count($ifb->flow_mat) > 0) {
foreach ($ifb->flow_mat as $fmat) {
if (count($fmat->material)) {
foreach ($fmat->material as $material) {
$feedbacksgeneric[0] = $material;
}
}
}
}
}
}
}
}
}
}
}
$this->object->setTitle($item->getTitle());
$this->object->setNrOfTries($item->getMaxattempts());
$this->object->setComment($item->getComment());
$this->object->setAuthor($item->getAuthor());
$this->object->setOwner($ilUser->getId());
$this->object->setQuestion($this->object->QTIMaterialToString($item->getQuestiontext()));
$this->object->setObjId($questionpool_id);
$this->object->setEstimatedWorkingTime($duration["h"], $duration["m"], $duration["s"]);
$this->object->setJavaAppletFilename($applet->getUri());
$this->object->setJavaWidth($applet->getWidth());
$this->object->setJavaHeight($applet->getHeight());
$this->object->setJavaCode($javacode);
$this->object->setJavaCodebase($javacodebase);
$this->object->setJavaArchive($javaarchive);
$this->object->setPoints($maxpoints);
foreach ($params as $pair) {
$this->object->addParameter($pair["key"], $pair["value"]);
}
$this->object->saveToDb();
if (count($item->suggested_solutions)) {
foreach ($item->suggested_solutions as $suggested_solution) {
$this->object->setSuggestedSolution($suggested_solution["solution"]->getContent(), $suggested_solution["gap_index"], true);
}
$this->object->saveToDb();
}
$javaapplet =& base64_decode($applet->getContent());
$javapath = $this->object->getJavaPath();
if (!file_exists($javapath)) {
include_once "./Services/Utilities/classes/class.ilUtil.php";
ilUtil::makeDirParents($javapath);
}
$javapath .= $this->object->getJavaAppletFilename();
$fh = fopen($javapath, "wb");
if ($fh == false) {
// global $ilErr;
// $ilErr->raiseError($this->object->lng->txt("error_save_image_file") . ": $php_errormsg", $ilErr->MESSAGE);
// return;
} else {
$javafile = fwrite($fh, $javaapplet);
fclose($fh);
}
// handle the import of media objects in XHTML code
foreach ($feedbacksgeneric as $correctness => $material) {
$m = $this->object->QTIMaterialToString($material);
$feedbacksgeneric[$correctness] = $m;
}
$questiontext = $this->object->getQuestion();
if (is_array($_SESSION["import_mob_xhtml"])) {
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
include_once "./Services/RTE/classes/class.ilRTE.php";
foreach ($_SESSION["import_mob_xhtml"] as $mob) {
if ($tst_id > 0) {
$importfile = $this->getTstImportArchivDirectory() . '/' . $mob["uri"];
} else {
$importfile = $this->getQplImportArchivDirectory() . '/' . $mob["uri"];
}
$GLOBALS['ilLog']->write(__METHOD__ . ': import mob from dir: ' . $importfile);
$media_object =& ilObjMediaObject::_saveTempFileAsMediaObject(basename($importfile), $importfile, FALSE);
ilObjMediaObject::_saveUsage($media_object->getId(), "qpl:html", $this->object->getId());
$questiontext = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $questiontext);
foreach ($feedbacksgeneric as $correctness => $material) {
$feedbacksgeneric[$correctness] = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $material);
}
}
}
$this->object->setQuestion(ilRTE::_replaceMediaObjectImageSrc($questiontext, 1));
foreach ($feedbacksgeneric as $correctness => $material) {
$this->object->saveFeedbackGeneric($correctness, ilRTE::_replaceMediaObjectImageSrc($material, 1));
}
$this->object->saveToDb();
if ($tst_id > 0) {
$q_1_id = $this->object->getId();
$question_id = $this->object->duplicate(true, null, null, null, $tst_id);
$tst_object->questions[$question_counter++] = $question_id;
$import_mapping[$item->getIdent()] = array("pool" => $q_1_id, "test" => $question_id);
} else {
$import_mapping[$item->getIdent()] = array("pool" => $this->object->getId(), "test" => 0);
}
}
示例9: _cleanupMediaObjectUsage
/**
* synchronises appearances of media objects in $a_text with media
* object usage table
*
* @param string $a_text text, including media object tags
* @param string $a_usage_type type of context of usage, e.g. cat:html
* @param int $a_usage_id if of context of usage, e.g. category id
*/
function _cleanupMediaObjectUsage($a_text, $a_usage_type, $a_usage_id)
{
// get current stored mobs
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
$mobs = ilObjMediaObject::_getMobsOfObject($a_usage_type, $a_usage_id);
while (eregi("data\\/" . CLIENT_ID . "\\/mobs\\/mm_([0-9]+)", $a_text, $found)) {
$a_text = str_replace($found[0], "", $a_text);
if (!in_array($found[1], $mobs)) {
// save usage if missing
ilObjMediaObject::_saveUsage($found[1], $a_usage_type, $a_usage_id);
} else {
// if already saved everything ok -> take mob out of mobs array
unset($mobs[$found[1]]);
}
}
// remaining usages are not in text anymore -> delete them
// and media objects (note: delete method of ilObjMediaObject
// checks whether object is used in another context; if yes,
// the object is not deleted!)
foreach ($mobs as $mob) {
ilObjMediaObject::_removeUsage($mob, $a_usage_type, $a_usage_id);
$mob_obj =& new ilObjMediaObject($mob);
$mob_obj->delete();
}
}
示例10: saveMobUsage
/**
* save all usages of media objects (media aliases, media objects, internal links)
*
* @param string $a_xml xml data of page
*/
function saveMobUsage($a_xml, $a_old_nr = 0)
{
$doc = domxml_open_mem($a_xml);
// media aliases
$xpc = xpath_new_context($doc);
$path = "//MediaAlias";
$res =& xpath_eval($xpc, $path);
$usages = array();
for ($i = 0; $i < count($res->nodeset); $i++) {
$id_arr = explode("_", $res->nodeset[$i]->get_attribute("OriginId"));
$mob_id = $id_arr[count($id_arr) - 1];
if ($mob_id > 0) {
$usages[$mob_id] = true;
}
}
// media objects
$xpc = xpath_new_context($doc);
$path = "//MediaObject/MetaData/General/Identifier";
$res =& xpath_eval($xpc, $path);
for ($i = 0; $i < count($res->nodeset); $i++) {
$mob_entry = $res->nodeset[$i]->get_attribute("Entry");
$mob_arr = explode("_", $mob_entry);
$mob_id = $mob_arr[count($mob_arr) - 1];
if ($mob_id > 0) {
$usages[$mob_id] = true;
}
}
// internal links
$xpc = xpath_new_context($doc);
$path = "//IntLink[@Type='MediaObject']";
$res =& xpath_eval($xpc, $path);
for ($i = 0; $i < count($res->nodeset); $i++) {
$mob_target = $res->nodeset[$i]->get_attribute("Target");
$mob_arr = explode("_", $mob_target);
$mob_id = $mob_arr[count($mob_arr) - 1];
if ($mob_id > 0) {
$usages[$mob_id] = true;
}
}
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
ilObjMediaObject::_deleteAllUsages($this->getParentType() . ":pg", $this->getId(), $a_old_nr);
foreach ($usages as $mob_id => $val) {
ilObjMediaObject::_saveUsage($mob_id, $this->getParentType() . ":pg", $this->getId(), $a_old_nr);
}
return $usages;
}
示例11: fromXML
//.........这里部分代码省略.........
foreach ($fmat->material as $material) {
$feedbacks[$ident] = $material;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
$this->object->setTitle($item->getTitle());
$this->object->setNrOfTries($item->getMaxattempts());
$this->object->setComment($item->getComment());
$this->object->setAuthor($item->getAuthor());
$this->object->setOwner($ilUser->getId());
$this->object->setQuestion($this->object->QTIMaterialToString($item->getQuestiontext()));
$this->object->setObjId($questionpool_id);
$this->object->setEstimatedWorkingTime($duration["h"], $duration["m"], $duration["s"]);
$areas = array("2" => "rect", "1" => "circle", "3" => "poly");
$this->object->setImageFilename($questionimage["label"]);
foreach ($answers as $answer) {
$this->object->addAnswer($answer["answerhint"], $answer["points"], $answer["answerorder"], $answer["coordinates"], $areas[$answer["areatype"]]);
}
$this->object->saveToDb();
if (count($item->suggested_solutions)) {
foreach ($item->suggested_solutions as $suggested_solution) {
$this->object->setSuggestedSolution($suggested_solution["solution"]->getContent(), $suggested_solution["gap_index"], true);
}
$this->object->saveToDb();
}
$image =& base64_decode($questionimage["content"]);
$imagepath = $this->object->getImagePath();
if (!file_exists($imagepath)) {
include_once "./Services/Utilities/classes/class.ilUtil.php";
ilUtil::makeDirParents($imagepath);
}
$imagepath .= $questionimage["label"];
$fh = fopen($imagepath, "wb");
if ($fh == false) {
// global $ilErr;
// $ilErr->raiseError($this->object->lng->txt("error_save_image_file") . ": $php_errormsg", $ilErr->MESSAGE);
// return;
} else {
$imagefile = fwrite($fh, $image);
fclose($fh);
}
// handle the import of media objects in XHTML code
foreach ($feedbacks as $ident => $material) {
$m = $this->object->QTIMaterialToString($material);
$feedbacks[$ident] = $m;
}
foreach ($feedbacksgeneric as $correctness => $material) {
$m = $this->object->QTIMaterialToString($material);
$feedbacksgeneric[$correctness] = $m;
}
$questiontext = $this->object->getQuestion();
if (is_array($_SESSION["import_mob_xhtml"])) {
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
include_once "./Services/RTE/classes/class.ilRTE.php";
foreach ($_SESSION["import_mob_xhtml"] as $mob) {
if ($tst_id > 0) {
$importfile = $this->getTstImportArchivDirectory() . '/' . $mob["uri"];
} else {
$importfile = $this->getQplImportArchivDirectory() . '/' . $mob["uri"];
}
$GLOBALS['ilLog']->write(__METHOD__ . ': import mob from dir: ' . $importfile);
$media_object =& ilObjMediaObject::_saveTempFileAsMediaObject(basename($importfile), $importfile, FALSE);
ilObjMediaObject::_saveUsage($media_object->getId(), "qpl:html", $this->object->getId());
$questiontext = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $questiontext);
foreach ($feedbacks as $ident => $material) {
$feedbacks[$ident] = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $material);
}
foreach ($feedbacksgeneric as $correctness => $material) {
$feedbacksgeneric[$correctness] = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $material);
}
}
}
$this->object->setQuestion(ilRTE::_replaceMediaObjectImageSrc($questiontext, 1));
foreach ($feedbacks as $ident => $material) {
$this->object->saveFeedbackSingleAnswer($ident, ilRTE::_replaceMediaObjectImageSrc($material, 1));
}
foreach ($feedbacksgeneric as $correctness => $material) {
$this->object->saveFeedbackGeneric($correctness, ilRTE::_replaceMediaObjectImageSrc($material, 1));
}
$this->object->saveToDb();
if ($tst_id > 0) {
$q_1_id = $this->object->getId();
$question_id = $this->object->duplicate(true, null, null, null, $tst_id);
$tst_object->questions[$question_counter++] = $question_id;
$import_mapping[$item->getIdent()] = array("pool" => $q_1_id, "test" => $question_id);
} else {
$import_mapping[$item->getIdent()] = array("pool" => $this->object->getId(), "test" => 0);
}
}
示例12: fromXML
//.........这里部分代码省略.........
$this->object->setComment($item->getComment());
$this->object->setAuthor($item->getAuthor());
$this->object->setOwner($ilUser->getId());
$this->object->setQuestion($this->object->QTIMaterialToString($item->getQuestiontext()));
$this->object->setObjId($questionpool_id);
$this->object->setEstimatedWorkingTime($duration["h"], $duration["m"], $duration["s"]);
$extended_shuffle = $item->getMetadataEntry("shuffle");
$this->object->setThumbGeometry($item->getMetadataEntry("thumb_geometry"));
$this->object->setElementHeight($item->getMetadataEntry("element_height"));
// save images
foreach ($terms as $term) {
if (count($term['answerimage'])) {
$this->saveImage($term['answerimage']['content'], $term['answerimage']['label']);
}
}
foreach ($definitions as $definition) {
if (count($definition['answerimage'])) {
$this->saveImage($definition['answerimage']['content'], $definition['answerimage']['label']);
}
}
foreach ($terms as $termindex => $term) {
$this->object->addTerm(new assAnswerMatchingTerm($term["term"], $term['answerimage']['label'], $term["ident"]));
}
foreach ($definitions as $definitionindex => $definition) {
$this->object->addDefinition(new assAnswerMatchingDefinition($definition["answertext"], $definition['answerimage']['label'], $definition["answerorder"]));
}
if (strlen($extended_shuffle) > 0) {
$shuffle = $extended_shuffle;
}
$this->object->setShuffle($shuffle);
foreach ($responses as $response) {
$subset = $response["subset"];
foreach ($subset as $ident) {
if (array_key_exists($ident, $definitions)) {
$definition = $definitions[$ident];
}
if (array_key_exists($ident, $terms)) {
$term = $terms[$ident];
}
}
$this->object->addMatchingPair(new assAnswerMatchingTerm('', '', $term["ident"]), new assAnswerMatchingDefinition('', '', $definition["answerorder"]), $response['points']);
}
// additional content editing mode information
$this->object->setAdditionalContentEditingMode($this->fetchAdditionalContentEditingModeInformation($item));
$this->object->saveToDb();
if (count($item->suggested_solutions)) {
foreach ($item->suggested_solutions as $suggested_solution) {
$this->object->setSuggestedSolution($suggested_solution["solution"]->getContent(), $suggested_solution["gap_index"], true);
}
$this->object->saveToDb();
}
foreach ($responses as $response) {
$subset = $response["subset"];
foreach ($subset as $ident) {
if (array_key_exists($ident, $definitions)) {
$definition = $definitions[$ident];
}
if (array_key_exists($ident, $terms)) {
$term = $terms[$ident];
}
}
}
foreach ($feedbacksgeneric as $correctness => $material) {
$m = $this->object->QTIMaterialToString($material);
$feedbacksgeneric[$correctness] = $m;
}
// handle the import of media objects in XHTML code
$questiontext = $this->object->getQuestion();
if (is_array($_SESSION["import_mob_xhtml"])) {
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
include_once "./Services/RTE/classes/class.ilRTE.php";
foreach ($_SESSION["import_mob_xhtml"] as $mob) {
if ($tst_id > 0) {
$importfile = $this->getTstImportArchivDirectory() . '/' . $mob["uri"];
} else {
$importfile = $this->getQplImportArchivDirectory() . '/' . $mob["uri"];
}
$GLOBALS['ilLog']->write(__METHOD__ . ': import mob from dir: ' . $importfile);
$media_object =& ilObjMediaObject::_saveTempFileAsMediaObject(basename($importfile), $importfile, FALSE);
ilObjMediaObject::_saveUsage($media_object->getId(), "qpl:html", $this->object->getId());
$questiontext = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $questiontext);
foreach ($feedbacksgeneric as $correctness => $material) {
$feedbacksgeneric[$correctness] = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $material);
}
}
}
$this->object->setQuestion(ilRTE::_replaceMediaObjectImageSrc($questiontext, 1));
foreach ($feedbacksgeneric as $correctness => $material) {
$this->object->feedbackOBJ->importGenericFeedback($this->object->getId(), $correctness, ilRTE::_replaceMediaObjectImageSrc($material, 1));
}
$this->object->saveToDb();
if ($tst_id > 0) {
$q_1_id = $this->object->getId();
$question_id = $this->object->duplicate(true, null, null, null, $tst_id);
$tst_object->questions[$question_counter++] = $question_id;
$import_mapping[$item->getIdent()] = array("pool" => $q_1_id, "test" => $question_id);
} else {
$import_mapping[$item->getIdent()] = array("pool" => $this->object->getId(), "test" => 0);
}
}
示例13: fromXML
/**
* Creates a question from a QTI file
*
* Receives parameters from a QTI parser and creates a valid ILIAS question object
*
* @param object $item The QTI item object
* @param integer $questionpool_id The id of the parent questionpool
* @param integer $tst_id The id of the parent test if the question is part of a test
* @param object $tst_object A reference to the parent test object
* @param integer $question_counter A reference to a question counter to count the questions of an imported question pool
* @param array $import_mapping An array containing references to included ILIAS objects
* @access public
*/
function fromXML(&$item, $questionpool_id, &$tst_id, &$tst_object, &$question_counter, &$import_mapping)
{
global $ilUser;
// empty session variable for imported xhtml mobs
unset($_SESSION["import_mob_xhtml"]);
$presentation = $item->getPresentation();
$duration = $item->getDuration();
$now = getdate();
$created = sprintf("%04d%02d%02d%02d%02d%02d", $now['year'], $now['mon'], $now['mday'], $now['hours'], $now['minutes'], $now['seconds']);
$feedbacksgeneric = array();
$this->object->setTitle($item->getTitle());
$this->object->setComment($item->getComment());
$this->object->setAuthor($item->getAuthor());
$this->object->setOwner($ilUser->getId());
$this->object->setQuestion($this->object->QTIMaterialToString($item->getQuestiontext()));
$this->object->setObjId($questionpool_id);
$this->object->setEstimatedWorkingTime($duration["h"], $duration["m"], $duration["s"]);
if (preg_match_all("/(\\\$v\\d+)/ims", $this->object->getQuestion(), $matches)) {
foreach ($matches[1] as $variable) {
$data = unserialize($item->getMetadataEntry($variable));
$unit = $this->object->getUnitRepository()->getUnit($data["unitvalue"]);
require_once 'Modules/TestQuestionPool/classes/class.assFormulaQuestionVariable.php';
$varObj = new assFormulaQuestionVariable($variable, $data["rangemin"], $data["rangemax"], $unit, $data["precision"], $data["intprecision"]);
$this->object->addVariable($varObj);
}
}
if (preg_match_all("/(\\\$r\\d+)/ims", $this->object->getQuestion(), $rmatches)) {
foreach ($rmatches[1] as $result) {
$data = unserialize($item->getMetadataEntry($result));
$unit = $this->object->getUnitRepository()->getUnit($data["unitvalue"]);
require_once 'Modules/TestQuestionPool/classes/class.assFormulaQuestionResult.php';
if (!is_array($data["rating"])) {
$resObj = new assFormulaQuestionResult($result, $data["rangemin"], $data["rangemax"], $data["tolerance"], $unit, $data["formula"], $data["points"], $data["precision"], TRUE);
} else {
$resObj = new assFormulaQuestionResult($result, $data["rangemin"], $data["rangemax"], $data["tolerance"], $unit, $data["formula"], $data["points"], $data["precision"], FALSE, $data["rating"]["sign"], $data["rating"]["value"], $data["rating"]["unit"]);
}
$this->object->addResult($resObj);
if (is_array($data["resultunits"])) {
foreach ($data["resultunits"] as $resu) {
$ru = $this->object->getUnitRepository()->getUnit($resu["unitvalue"]);
if (is_object($ru)) {
$this->object->addResultUnit($resObj, $ru);
}
}
}
}
}
$this->object->setPoints($item->getMetadataEntry("points"));
$this->addGeneralMetadata($item);
// additional content editing mode information
$this->object->setAdditionalContentEditingMode($this->fetchAdditionalContentEditingModeInformation($item));
$this->object->saveToDb();
// handle the import of media objects in XHTML code
$questiontext = $this->object->getQuestion();
if (is_array($_SESSION["import_mob_xhtml"])) {
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
include_once "./Services/RTE/classes/class.ilRTE.php";
foreach ($_SESSION["import_mob_xhtml"] as $mob) {
if ($tst_id > 0) {
include_once "./Modules/Test/classes/class.ilObjTest.php";
$importfile = ilObjTest::_getImportDirectory() . "/" . $_SESSION["tst_import_subdir"] . "/" . $mob["uri"];
} else {
include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php";
$importfile = ilObjQuestionPool::_getImportDirectory() . "/" . $_SESSION["qpl_import_subdir"] . "/" . $mob["uri"];
}
$media_object =& ilObjMediaObject::_saveTempFileAsMediaObject(basename($importfile), $importfile, FALSE);
ilObjMediaObject::_saveUsage($media_object->getId(), "qpl:html", $this->object->getId());
$questiontext = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $questiontext);
}
}
$this->object->setQuestion(ilRTE::_replaceMediaObjectImageSrc($questiontext, 1));
// additional content editing mode information
$this->object->setAdditionalContentEditingMode($this->fetchAdditionalContentEditingModeInformation($item));
$this->object->saveToDb();
if (count($item->suggested_solutions)) {
foreach ($item->suggested_solutions as $suggested_solution) {
$this->object->setSuggestedSolution($suggested_solution["solution"]->getContent(), $suggested_solution["gap_index"], true);
}
$this->object->saveToDb();
}
if ($tst_id > 0) {
$q_1_id = $this->object->getId();
$question_id = $this->object->duplicate(true);
$tst_object->questions[$question_counter++] = $question_id;
$import_mapping[$item->getIdent()] = array("pool" => $q_1_id, "test" => $question_id);
} else {
$import_mapping[$item->getIdent()] = array("pool" => $this->object->getId(), "test" => 0);
//.........这里部分代码省略.........
示例14: beforeFinishImport
/**
* Called before finishing import. Fix references inside DataCollections
*
* @param ilImportMapping $a_mapping
*/
public function beforeFinishImport(ilImportMapping $a_mapping)
{
foreach ($this->import_temp_new_mob_ids as $new_mob_id) {
ilObjMediaObject::_saveUsage($new_mob_id, "dcl:html", $a_mapping->getTargetId());
}
foreach ($this->import_temp_refs as $record_field_id => $old_record_id) {
$new_record_id = $a_mapping->getMapping('Modules/DataCollection', 'il_dcl_record', $old_record_id);
$value = $new_record_id ? (int) $new_record_id : NULL;
/** @var ilDataCollectionRecordField $record_field */
$record_field = $this->import_record_field_cache[$record_field_id];
$record_field->setValue($value, true);
$record_field->doUpdate();
}
foreach ($this->import_temp_refs_props as $field_prop_id => $old_field_id) {
$new_field_id = $a_mapping->getMapping('Modules/DataCollection', 'il_dcl_field', $old_field_id);
$value = $new_field_id ? (int) $new_field_id : NULL;
$field_prop = new ilDataCollectionFieldProp($field_prop_id);
$field_prop->setValue($value);
$field_prop->doUpdate();
}
}
示例15: fromXML
//.........这里部分代码省略.........
}
}
}
}
}
// set question properties
$this->addGeneralMetadata($item);
$this->object->setTitle($item->getTitle());
$this->object->setNrOfTries($item->getMaxattempts());
$this->object->setComment($item->getComment());
$this->object->setAuthor($item->getAuthor());
$this->object->setOwner($ilUser->getId());
$this->object->setQuestion($this->object->QTIMaterialToString($item->getQuestiontext()));
$this->object->setObjId($questionpool_id);
$this->object->setEstimatedWorkingTime($duration["h"], $duration["m"], $duration["s"]);
$this->object->setAccountsXML(base64_decode($item->getMetadataEntry('accounts_content')));
$this->object->setPoints($item->getMetadataEntry("points"));
// additional content editing mode information
$this->object->setAdditionalContentEditingMode($this->fetchAdditionalContentEditingModeInformation($item));
// first save the question without its parts (to get a new question id)
$this->object->saveToDb('', false);
// then create the parts
$parts = unserialize($item->getMetadataEntry('booking_parts'));
if (is_array($parts)) {
for ($i = 0; $i < count($parts); $i++) {
$part = $parts[$i];
// since plugin version 1.1.7 the text of the questions parts is added as material to the presentation
// this enables images in the parts text
// the material index 0 is used for the question text
if (isset($item->presentation->material[$i + 1])) {
$part['text'] = $this->object->QTIMaterialToString($item->presentation->material[$i + 1]);
}
// create and add a new part
$part_obj = $this->object->getPart();
$part_obj->setPosition($part['position']);
$part_obj->setText($part['text']);
$part_obj->setMaxPoints($part['max_points']);
$part_obj->setMaxLines($part['max_lines']);
$part_obj->setBookingXML(base64_decode($part['booking_def']));
$part_obj->write();
}
}
// convert the generic feedback
foreach ($feedbacksgeneric as $correctness => $material) {
$m = $this->object->QTIMaterialToString($material);
$feedbacksgeneric[$correctness] = $m;
}
// handle the import of media objects in XHTML code
$questiontext = $this->object->getQuestion();
if (is_array($_SESSION["import_mob_xhtml"])) {
include_once "./Services/MediaObjects/classes/class.ilObjMediaObject.php";
include_once "./Services/RTE/classes/class.ilRTE.php";
foreach ($_SESSION["import_mob_xhtml"] as $mob) {
if ($tst_id > 0) {
$importfile = $this->getTstImportArchivDirectory() . '/' . $mob["uri"];
} else {
$importfile = $this->getQplImportArchivDirectory() . '/' . $mob["uri"];
}
global $ilLog;
$ilLog->write($importfile);
$media_object =& ilObjMediaObject::_saveTempFileAsMediaObject(basename($importfile), $importfile, FALSE);
ilObjMediaObject::_saveUsage($media_object->getId(), "qpl:html", $this->object->getId());
// images in question text
$questiontext = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $questiontext);
// images in question parts
foreach ($this->object->getParts() as $part_obj) {
$part_obj->setText(str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $part_obj->getText()));
}
// images in feedback
foreach ($feedbacksgeneric as $correctness => $material) {
$feedbacksgeneric[$correctness] = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $material);
}
}
}
$this->object->setQuestion(ilRTE::_replaceMediaObjectImageSrc($questiontext, 1));
foreach ($this->object->getParts() as $part_obj) {
$part_obj->setText(ilRTE::_replaceMediaObjectImageSrc($part_obj->getText(), 1));
$part_obj->write();
}
foreach ($feedbacksgeneric as $correctness => $material) {
$this->object->feedbackOBJ->importGenericFeedback($this->object->getId(), $correctness, ilRTE::_replaceMediaObjectImageSrc($material, 1));
}
if (count($item->suggested_solutions)) {
foreach ($item->suggested_solutions as $suggested_solution) {
$this->object->setSuggestedSolution($suggested_solution["solution"]->getContent(), $suggested_solution["gap_index"], true);
}
}
// Now save the question again
// (this also recalculates the maximum points)
$this->object->saveToDb('', true);
// import mapping for tests
if ($tst_id > 0) {
$q_1_id = $this->object->getId();
$question_id = $this->object->duplicate(true, null, null, null, $tst_id);
$tst_object->questions[$question_counter++] = $question_id;
$import_mapping[$item->getIdent()] = array("pool" => $q_1_id, "test" => $question_id);
} else {
$import_mapping[$item->getIdent()] = array("pool" => $this->object->getId(), "test" => 0);
}
}