From e6d88a27e881c318a8435d0b254a7ba2cd2e4275 Mon Sep 17 00:00:00 2001 From: Roman Syroeshko Date: Sun, 10 Aug 2014 20:30:14 +0400 Subject: [PATCH] Refactored usages of "tempnam()" function. --- src/PhpWord/Element/Image.php | 8 +++++++- src/PhpWord/Shared/XMLWriter.php | 4 ++-- src/PhpWord/Writer/AbstractWriter.php | 7 ++----- tests/PhpWord/Tests/_includes/TestHelperDOCX.php | 6 ++++++ 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/PhpWord/Element/Image.php b/src/PhpWord/Element/Image.php index 4a812f6c..ab350e07 100644 --- a/src/PhpWord/Element/Image.php +++ b/src/PhpWord/Element/Image.php @@ -17,6 +17,7 @@ namespace PhpOffice\PhpWord\Element; +use PhpOffice\PhpWord\Exception\CreateTemporaryFileException; use PhpOffice\PhpWord\Exception\InvalidImageException; use PhpOffice\PhpWord\Exception\UnsupportedImageTypeException; use PhpOffice\PhpWord\Settings; @@ -423,13 +424,18 @@ class Image extends AbstractElement * * @param string $source * @return array|null + * @throws \PhpOffice\PhpWord\Exception\CreateTemporaryFileException */ private function getArchiveImageSize($source) { $imageData = null; $source = substr($source, 6); list($zipFilename, $imageFilename) = explode('#', $source); + $tempFilename = tempnam(Settings::getTempDir(), 'PHPWordImage'); + if (false === $tempFilename) { + throw new CreateTemporaryFileException(); + } $zip = new ZipArchive(); if ($zip->open($zipFilename) !== false) { @@ -437,7 +443,7 @@ class Image extends AbstractElement $imageContent = $zip->getFromName($imageFilename); if ($imageContent !== false) { file_put_contents($tempFilename, $imageContent); - $imageData = @getimagesize($tempFilename); + $imageData = getimagesize($tempFilename); unlink($tempFilename); } } diff --git a/src/PhpWord/Shared/XMLWriter.php b/src/PhpWord/Shared/XMLWriter.php index 3d8b8457..2134f62a 100644 --- a/src/PhpWord/Shared/XMLWriter.php +++ b/src/PhpWord/Shared/XMLWriter.php @@ -66,12 +66,12 @@ class XMLWriter $this->xmlWriter->openMemory(); } else { // Create temporary filename - $this->tempFile = @tempnam($tempFolder, 'xml'); + $this->tempFile = tempnam($tempFolder, 'xml'); // Fallback to memory when temporary file cannot be used // @codeCoverageIgnoreStart // Can't find any test case. Uncomment when found. - if ($this->xmlWriter->openUri($this->tempFile) === false) { + if (false === $this->tempFile || false === $this->xmlWriter->openUri($this->tempFile)) { $this->xmlWriter->openMemory(); } // @codeCoverageIgnoreEnd diff --git a/src/PhpWord/Writer/AbstractWriter.php b/src/PhpWord/Writer/AbstractWriter.php index c74819b5..31097b89 100644 --- a/src/PhpWord/Writer/AbstractWriter.php +++ b/src/PhpWord/Writer/AbstractWriter.php @@ -220,13 +220,10 @@ abstract class AbstractWriter implements WriterInterface // Temporary file $this->originalFilename = $filename; if (strtolower($filename) == 'php://output' || strtolower($filename) == 'php://stdout') { - $filename = tempnam(Settings::getTempDir(), 'phpword_'); - // @codeCoverageIgnoreStart - // Can't find any test case. Uncomment when found. - if ($filename == '') { + $filename = tempnam(Settings::getTempDir(), 'PhpWord'); + if (false === $filename) { $filename = $this->originalFilename; } - // @codeCoverageIgnoreEnd } $this->tempFilename = $filename; diff --git a/tests/PhpWord/Tests/_includes/TestHelperDOCX.php b/tests/PhpWord/Tests/_includes/TestHelperDOCX.php index 553a51be..6ca6a14d 100644 --- a/tests/PhpWord/Tests/_includes/TestHelperDOCX.php +++ b/tests/PhpWord/Tests/_includes/TestHelperDOCX.php @@ -17,6 +17,7 @@ namespace PhpOffice\PhpWord\Tests; +use PhpOffice\PhpWord\Exception\CreateTemporaryFileException; use PhpOffice\PhpWord\IOFactory; use PhpOffice\PhpWord\PhpWord; use PhpOffice\PhpWord\Settings; @@ -39,10 +40,15 @@ class TestHelperDOCX * @param \PhpOffice\PhpWord\PhpWord $phpWord * @param string $writerName * @return \PhpOffice\PhpWord\Tests\XmlDocument + * @throws \PhpOffice\PhpWord\Exception\CreateTemporaryFileException */ public static function getDocument(PhpWord $phpWord, $writerName = 'Word2007') { self::$file = tempnam(Settings::getTempDir(), 'PhpWord'); + if (false === self::$file) { + throw new CreateTemporaryFileException(); + } + if (!is_dir(Settings::getTempDir() . '/PhpWord_Unit_Test/')) { mkdir(Settings::getTempDir() . '/PhpWord_Unit_Test/'); }