/** * Import XML * * @param * @return */ function importXmlRepresentation($a_entity, $a_id, $a_xml, $a_mapping) { include_once './Modules/File/classes/class.ilObjFile.php'; // case i container if ($new_id = $a_mapping->getMapping('Services/Container', 'objs', $a_id)) { $newObj = ilObjectFactory::getInstanceByObjId($new_id, false); } else { $newObj = new ilObjFile(); $newObj->create(true); } include_once "./Modules/File/classes/class.ilFileXMLParser.php"; $parser = new ilFileXMLParser($newObj, $a_xml); $parser->setImportDirectory($this->getImportDirectory()); $parser->startParsing(); $newObj->createProperties(false, false); $parser->setFileContents(); $this->current_obj = $newObj; $newObj->update(); // this is necessary for case ii (e.g. wiki import) $a_mapping->addMapping("Modules/File", "file", $a_id, $newObj->getId()); $a_mapping->addMapping("Services/MetaData", "md", $a_id . ":0:file", $newObj->getId() . ":0:file"); }
/** * update a File with id. * * @param string $session_id current session * @param int $ref_id refid id of File in repository * @param string $file_xml qti xml description of test * * @return boolean true, if update successful, false otherwise */ function updateFile($sid, $ref_id, $file_xml) { $this->initAuth($sid); $this->initIlias(); if (!$this->__checkSession($sid)) { return $this->__raiseError($this->__getMessage(), $this->__getMessageCode()); } global $rbacsystem, $tree, $ilLog, $ilAccess; if (ilObject::_isInTrash($ref_id)) { return $this->__raiseError('Cannot perform update since file has been deleted.', 'CLIENT_OBJECT_DELETED'); } // get obj_id if (!($obj_id = ilObject::_lookupObjectId($ref_id))) { return $this->__raiseError('No File found for id: ' . $ref_id, 'Client'); } // Check access $permission_ok = false; foreach ($ref_ids = ilObject::_getAllReferences($obj_id) as $ref_id) { if ($ilAccess->checkAccess('write', '', $ref_id)) { $permission_ok = true; break; } } if (!$permission_ok) { return $this->__raiseError('No permission to edit the File with id: ' . $ref_id, 'Server'); } $file = ilObjectFactory::getInstanceByObjId($obj_id, false); if (!is_object($file) || $file->getType() != "file") { return $this->__raiseError('Wrong obj id or type for File with id ' . $ref_id, 'Server'); } include_once './Modules/File/classes/class.ilFileXMLParser.php'; include_once './Modules/File/classes/class.ilFileException.php'; $fileXMLParser = new ilFileXMLParser($file, $file_xml, $obj_id); try { if ($fileXMLParser->start()) { $fileXMLParser->updateFileContents(); return $file->update(); } } catch (ilFileException $exception) { return $this->__raiseError($exception->getMessage(), $exception->getCode() == ilFileException::$ID_MISMATCH ? "Client" : "Server"); } return false; }