/** * handler for end of element * * @param resource $a_xml_parser xml parser * @param string $a_name element name */ function handlerEndTag($a_xml_parser, $a_name) { $this->cdata = trim($this->cdata); $GLOBALS['ilLog']->write(__METHOD__ . ': ' . $this->cdata); switch ($a_name) { case 'File': $this->result = true; break; case 'Filename': if (strlen($this->cdata) == 0) { throw new ilFileException("Filename ist missing!"); } $this->file->setFilename($this->cdata); $this->file->setTitle($this->cdata); break; case 'Title': $this->file->setTitle(trim($this->cdata)); break; case 'Description': $this->file->setDescription(trim($this->cdata)); break; case 'Content': $GLOBALS['ilLog']->write($this->mode); $this->isReadingFile = false; $baseDecodedFilename = ilUtil::ilTempnam(); if ($this->mode == ilFileXMLParser::$CONTENT_COPY) { $this->tmpFilename = $this->getImportDirectory() . "/" . $this->cdata; } elseif ($this->mode == ilFileXMLParser::$CONTENT_REST) { include_once './Services/WebServices/Rest/classes/class.ilRestFileStorage.php'; $storage = new ilRestFileStorage(); $this->tmpFilename = $storage->getStoredFilePath($this->cdata); if (!ilFileUtils::fastBase64Decode($this->tmpFilename, $baseDecodedFilename)) { throw new ilFileException("Base64-Decoding failed", ilFileException::$DECOMPRESSION_FAILED); } $this->tmpFilename = $baseDecodedFilename; } else { if (!ilFileUtils::fastBase64Decode($this->tmpFilename, $baseDecodedFilename)) { throw new ilFileException("Base64-Decoding failed", ilFileException::$DECOMPRESSION_FAILED); } if ($this->mode == ilFileXMLParser::$CONTENT_GZ_COMPRESSED) { if (!ilFileUtils::fastGunzip($baseDecodedFilename, $this->tmpFilename)) { throw new ilFileException("Deflating with fastzunzip failed", ilFileException::$DECOMPRESSION_FAILED); } unlink($baseDecodedFilename); } elseif ($this->mode == ilFileXMLParser::$CONTENT_ZLIB_COMPRESSED) { if (!ilFileUtils::fastGunzip($baseDecodedFilename, $this->tmpFilename)) { throw new ilFileException("Deflating with fastDecompress failed", ilFileException::$DECOMPRESSION_FAILED); } unlink($baseDecodedFilename); } else { $this->tmpFilename = $baseDecodedFilename; } } //$this->content = $content; $this->file->setFileSize(filesize($this->tmpFilename)); // strlen($this->content)); // if no file type is given => lookup mime type if (!$this->file->getFileType()) { global $ilLog; #$ilLog->write(__METHOD__.': Trying to detect mime type...'); include_once './Services/Utilities/classes/class.ilFileUtils.php'; $this->file->setFileType(ilFileUtils::_lookupMimeType($this->tmpFilename)); } break; } $this->cdata = ''; return; }