17include_once
'./Services/Xml/classes/class.ilSaxParser.php';
18include_once
'Modules/File/classes/class.ilFileException.php';
19include_once
'Services/Utilities/classes/class.ilFileUtils.php';
88 parent::ilSaxParser();
92 $this->result =
false;
103 $this->importDirectory = $a_val;
113 return $this->importDirectory;
123 xml_set_object($a_xml_parser,$this);
124 xml_set_element_handler($a_xml_parser,
'handlerBeginTag',
'handlerEndTag');
125 xml_set_character_data_handler($a_xml_parser,
'handlerCharacterData');
146 if (isset($a_attribs[
"obj_id"]))
149 if ($this->obj_id != -1 && (
int) $read_obj_id != -1 && (
int) $this->obj_id != (
int) $read_obj_id)
154 if (isset($a_attribs[
"type"]))
156 $this->file->setFileType($a_attribs[
"type"]);
158 $this->file->setVersion($this->file->getVersion() + 1);
163 $this->isReadingFile =
true;
164#echo $a_attribs["mode"];
165 if (isset($a_attribs[
"mode"]))
167 if($a_attribs[
"mode"] ==
"GZIP")
169 if (!function_exists(
"gzread"))
174 elseif ($a_attribs[
"mode"] ==
"ZLIB")
176 if (!function_exists(
"gzuncompress"))
181 elseif ($a_attribs[
"mode"] ==
"COPY")
186 elseif($a_attribs[
'mode'] ==
'REST')
205 $this->cdata = trim($this->cdata);
207 $GLOBALS[
'ilLog']->write(__METHOD__.
': '.$this->cdata);
212 $this->result =
true;
215 if (strlen($this->cdata) == 0)
218 $this->file->setFilename(basename(self::normalizeRelativePath($this->cdata)));
219 $this->file->setTitle($this->cdata);
223 $this->file->setTitle(trim($this->cdata));
226 $this->file->setDescription(trim($this->cdata));
229 $this->file->setRating((
bool)$this->cdata);
232 $GLOBALS[
'ilLog']->write($this->mode);
233 $this->isReadingFile =
false;
242 include_once
'./Services/WebServices/Rest/classes/class.ilRestFileStorage.php';
244 $this->tmpFilename = $storage->getStoredFilePath(self::normalizeRelativePath($this->cdata));
249 $this->tmpFilename = $baseDecodedFilename;
264 unlink ($baseDecodedFilename);
272 unlink ($baseDecodedFilename);
276 $this->tmpFilename = $baseDecodedFilename;
280 $this->file->setFileSize(filesize($this->tmpFilename));
283 if(!$this->file->getFileType())
287 #$ilLog->write(__METHOD__.': Trying to detect mime type...');
288 include_once(
'./Services/Utilities/classes/class.ilFileUtils.php');
314 $handle = fopen($this->tmpFilename,
"a");
315 fwrite ($handle, $a_data);
318 $this->cdata .= $a_data;
329 if (filesize ($this->tmpFilename) == 0) {
333 $filedir = $this->file->getDirectory($this->file->getVersion());
335 if (!is_dir($filedir))
337 $this->file->createDirectory();
341 $filename = $filedir.
"/".$this->file->getFileName();
346 return rename($this->tmpFilename,
$filename);
359 require_once(
"./Services/History/classes/class.ilHistory.php");
360 ilHistory::_createEntry($this->file->getId(),
"replace", $this->file->getFilename().
",".$this->file->getVersion());
361 $this->file->addNewsNotification(
"file_updated");
374 return $this->result > 0;
393 while (preg_match(
'#\p{C}+|^\./#u',
$path)) {
394 $path = preg_replace(
'#\p{C}+|^\./#u',
'',
$path);
398 foreach (explode(
'/',
$path) as $part) {
412 return implode(
'/', $parts);
Class to report exception.
static $ID_DEFLATE_METHOD_MISMATCH
static $DECOMPRESSION_FAILED
fastGunzip($in, $out)
fast uncompressing the file with the zlib-extension without memory consumption
static _lookupMimeType($a_file)
fastBase64Decode($filein, $fileout)
Exercise XML Parser which completes/updates a given file by an xml string.
getImportDirectory()
Get import directory.
setHandlers($a_xml_parser)
set event handlers
setFileContents()
update file according to filename and version, does not update history has to be called after (!...
updateFileContents()
update file according to filename and version and create history entry has to be called after (!...
handlerEndTag($a_xml_parser, $a_name)
handler for end of element
handlerBeginTag($a_xml_parser, $a_name, $a_attribs)
handler for begin of element
static $CONTENT_ZLIB_COMPRESSED
setImportDirectory($a_val)
Set import directory.
start()
starts parsing an changes object by side effect.
handlerCharacterData($a_xml_parser, $a_data)
handler for character data
ilFileXMLParser(& $file, $a_xml_data, $obj_id=-1, $mode=0)
Constructor.
static $CONTENT_GZ_COMPRESSED
static $CONTENT_NOT_COMPRESSED
static normalizeRelativePath($path)
Normalize relative directories in a path.
_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.
Base class for sax-based expat parsing extended classes need to overwrite the method setHandlers and ...
setXMLContent($a_xml_content)
startParsing()
stores xml data in array
static ilTempnam()
Create a temporary file in an ILIAS writable directory.
static __extractId($ilias_id, $inst_id)
extract ref id from role title, e.g.
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...