<?php
namespace PhpOffice\PhpSpreadsheet\Shared;
class XMLWriter extends \XMLWriter
{
public static $debugEnabled = false;
/** Temporary storage method */
const STORAGE_MEMORY = 1;
const STORAGE_DISK = 2;
/**
* Temporary filename.
*
* @var string
*/
private $tempFileName = '';
/**
* Create a new XMLWriter instance.
*
< * @param int $pTemporaryStorage Temporary storage location
< * @param string $pTemporaryStorageFolder Temporary storage folder
> * @param int $temporaryStorage Temporary storage location
> * @param string $temporaryStorageFolder Temporary storage folder
*/
< public function __construct($pTemporaryStorage = self::STORAGE_MEMORY, $pTemporaryStorageFolder = null)
> public function __construct($temporaryStorage = self::STORAGE_MEMORY, $temporaryStorageFolder = null)
{
// Open temporary storage
< if ($pTemporaryStorage == self::STORAGE_MEMORY) {
> if ($temporaryStorage == self::STORAGE_MEMORY) {
$this->openMemory();
} else {
// Create temporary filename
< if ($pTemporaryStorageFolder === null) {
< $pTemporaryStorageFolder = File::sysGetTempDir();
> if ($temporaryStorageFolder === null) {
> $temporaryStorageFolder = File::sysGetTempDir();
}
< $this->tempFileName = @tempnam($pTemporaryStorageFolder, 'xml');
> $this->tempFileName = @tempnam($temporaryStorageFolder, 'xml');
// Open storage
if ($this->openUri($this->tempFileName) === false) {
// Fallback to memory...
$this->openMemory();
}
}
// Set default values
if (self::$debugEnabled) {
$this->setIndent(true);
}
}
/**
* Destructor.
*/
public function __destruct()
{
// Unlink temporary files
if ($this->tempFileName != '') {
@unlink($this->tempFileName);
}
}
/**
* Get written data.
*
* @return string
*/
public function getData()
{
if ($this->tempFileName == '') {
return $this->outputMemory(true);
}
$this->flush();
return file_get_contents($this->tempFileName);
}
/**
* Wrapper method for writeRaw.
*
< * @param string|string[] $text
> * @param null|string|string[] $rawTextData
*
* @return bool
*/
< public function writeRawData($text)
> public function writeRawData($rawTextData)
{
< if (is_array($text)) {
< $text = implode("\n", $text);
> if (is_array($rawTextData)) {
> $rawTextData = implode("\n", $rawTextData);
}
< return $this->writeRaw(htmlspecialchars($text));
> return $this->writeRaw(htmlspecialchars($rawTextData ?? ''));
}
}