16 include_once
'./Services/Xml/classes/class.ilSaxParser.php';
17 include_once
'Modules/File/classes/class.ilFileException.php';
18 include_once
'Services/Utilities/classes/class.ilFileUtils.php';
80 parent::__construct();
84 $this->result =
false;
96 $this->importDirectory = $a_val;
107 return $this->importDirectory;
120 xml_set_object($a_xml_parser, $this);
121 xml_set_element_handler($a_xml_parser,
'handlerBeginTag',
'handlerEndTag');
122 xml_set_character_data_handler($a_xml_parser,
'handlerCharacterData');
146 if (isset($a_attribs[
"obj_id"])) {
148 if ($this->obj_id != -1 && (
int) $read_obj_id != -1 && (
int) $this->obj_id != (
int) $read_obj_id) {
152 if (isset($a_attribs[
"type"])) {
153 $this->
file->setFileType($a_attribs[
"type"]);
155 $this->
file->setVersion($this->
file->getVersion() + 1);
160 $this->isReadingFile =
true;
161 #echo $a_attribs["mode"]; 162 if (isset($a_attribs[
"mode"])) {
163 if ($a_attribs[
"mode"] ==
"GZIP") {
164 if (!function_exists(
"gzread")) {
169 } elseif ($a_attribs[
"mode"] ==
"ZLIB") {
170 if (!function_exists(
"gzuncompress")) {
175 } elseif ($a_attribs[
"mode"] ==
"COPY") {
178 elseif ($a_attribs[
'mode'] ==
'REST') {
195 $this->cdata = trim($this->cdata);
197 $GLOBALS[
'DIC'][
'ilLog']->write(__METHOD__ .
': ' . $this->cdata);
201 $this->result =
true;
204 if (strlen($this->cdata) == 0) {
208 $this->
file->setFilename(basename(self::normalizeRelativePath($this->cdata)));
209 $this->
file->setTitle($this->cdata);
213 $this->
file->setTitle(trim($this->cdata));
216 $this->
file->setDescription(trim($this->cdata));
219 $this->
file->setRating((
bool) $this->cdata);
222 $GLOBALS[
'DIC'][
'ilLog']->write($this->mode);
223 $this->isReadingFile =
false;
226 $this->tmpFilename = $this->
getImportDirectory() .
"/" . self::normalizeRelativePath($this->cdata);
229 include_once
'./Services/WebServices/Rest/classes/class.ilRestFileStorage.php';
231 $this->tmpFilename = $storage->getStoredFilePath(self::normalizeRelativePath($this->cdata));
235 $this->tmpFilename = $baseDecodedFilename;
245 unlink($baseDecodedFilename);
250 unlink($baseDecodedFilename);
252 $this->tmpFilename = $baseDecodedFilename;
257 if (is_file($this->tmpFilename)) {
258 $this->
file->setFileSize(filesize($this->tmpFilename));
262 if (!$this->
file->getFileType()) {
266 #$ilLog->write(__METHOD__.': Trying to detect mime type...'); 267 include_once(
'./Services/Utilities/classes/class.ilFileUtils.php');
288 if ($a_data !=
"\n") {
291 $handle = fopen($this->tmpFilename,
"a");
292 fwrite($handle, $a_data);
295 $this->cdata .= $a_data;
308 if (!file_exists($this->tmpFilename)) {
314 if (filesize($this->tmpFilename) == 0) {
318 $filedir = $this->
file->getDirectory($this->
file->getVersion());
320 if (!is_dir($filedir)) {
321 $this->
file->createDirectory();
343 require_once(
"./Services/History/classes/class.ilHistory.php");
345 $this->
file->addNewsNotification(
"file_updated");
361 return $this->result > 0;
381 while (preg_match(
'#\p{C}+|^\./#u',
$path)) {
382 $path = preg_replace(
'#\p{C}+|^\./#u',
'',
$path);
386 foreach (explode(
'/',
$path) as $part) {
400 return implode(
'/', $parts);
setImportDirectory($a_val)
Set import directory.
static $DECOMPRESSION_FAILED
static normalizeRelativePath($path)
Normalize relative directories in a path.
startParsing()
stores xml data in array
__construct(&$file, $a_xml_data, $obj_id=-1, $mode=0)
Constructor.
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
Exercise XML Parser which completes/updates a given file by an xml string.
static _createEntry( $a_obj_id, $a_action, $a_info_params="", $a_obj_type="", $a_user_comment="", $a_update_last=false)
Creates a new history entry for an object.
handlerEndTag($a_xml_parser, $a_name)
handler for end of element
Base class for sax-based expat parsing extended classes need to overwrite the method setHandlers and ...
start()
starts parsing an changes object by side effect.
static _lookupMimeType($a_file)
static rename($a_source, $a_target)
Rename a file.
handlerCharacterData($a_xml_parser, $a_data)
handler for character data
static $CONTENT_ZLIB_COMPRESSED
Class to report exception.
Reload workbook from saved file
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
static $ID_DEFLATE_METHOD_MISMATCH
setHandlers($a_xml_parser)
set event handlers
static ilTempnam($a_temp_path=null)
Create a temporary file in an ILIAS writable directory.
static fastBase64Decode($filein, $fileout)
decodes base encoded file row by row to prevent memory exhaust
static $CONTENT_GZ_COMPRESSED
updateFileContents()
update file according to filename and version and create history entry has to be called after (!) fil...
static getLogger($a_component_id)
Get component logger.
fastGunzip($in, $out)
fast uncompressing the file with the zlib-extension without memory consumption
getImportDirectory()
Get import directory.
setXMLContent($a_xml_content)
static __extractId($ilias_id, $inst_id)
extract ref id from role title, e.g.
static $CONTENT_NOT_COMPRESSED
handlerBeginTag($a_xml_parser, $a_name, $a_attribs)
handler for begin of element
setFileContents()
update file according to filename and version, does not update history has to be called after (!) fil...