diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 4423b594..d56cf27d 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -5660,16 +5660,6 @@ parameters: count: 2 path: src/PhpSpreadsheet/Writer/Xlsx/Comments.php - - - message: "#^Parameter \\#1 \\$arr1 of function array_diff expects array, array\\|null given\\.$#" - count: 1 - path: src/PhpSpreadsheet/Writer/Xlsx/ContentTypes.php - - - - message: "#^Cannot access offset 2 on array\\|false\\.$#" - count: 1 - path: src/PhpSpreadsheet/Writer/Xlsx/ContentTypes.php - - message: "#^Parameter \\#2 \\$content of method XMLWriter\\:\\:writeElement\\(\\) expects string\\|null, int given\\.$#" count: 1 diff --git a/src/PhpSpreadsheet/Writer/Xlsx/ContentTypes.php b/src/PhpSpreadsheet/Writer/Xlsx/ContentTypes.php index 2cff1a8f..e5cf65c9 100644 --- a/src/PhpSpreadsheet/Writer/Xlsx/ContentTypes.php +++ b/src/PhpSpreadsheet/Writer/Xlsx/ContentTypes.php @@ -141,7 +141,7 @@ class ContentTypes extends WriterPart if ($spreadsheet->hasRibbonBinObjects()) { // Some additional objects in the ribbon ? // we need to write "Extension" but not already write for media content - $tabRibbonTypes = array_diff($spreadsheet->getRibbonBinObjects('types'), array_keys($aMediaContentTypes)); + $tabRibbonTypes = array_diff($spreadsheet->getRibbonBinObjects('types') ?? [], array_keys($aMediaContentTypes)); foreach ($tabRibbonTypes as $aRibbonType) { $mimeType = 'image/.' . $aRibbonType; //we wrote $mimeType like customUI Editor $this->writeDefaultContentType($objWriter, $aRibbonType, $mimeType); @@ -192,7 +192,7 @@ class ContentTypes extends WriterPart if (File::fileExists($pFile)) { $image = getimagesize($pFile); - return image_type_to_mime_type($image[2]); + return image_type_to_mime_type((is_array($image) && count($image) >= 3) ? $image[2] : 0); } throw new WriterException("File $pFile does not exist"); diff --git a/tests/PhpSpreadsheetTests/Writer/Xlsx/WmfTest.php b/tests/PhpSpreadsheetTests/Writer/Xlsx/WmfTest.php new file mode 100644 index 00000000..35ae742c --- /dev/null +++ b/tests/PhpSpreadsheetTests/Writer/Xlsx/WmfTest.php @@ -0,0 +1,34 @@ +load($inputFilename); + $drawings = $spreadsheet->getActiveSheet()->getDrawingCollection(); + self::assertCount(1, $drawings); + $drawing = $drawings[0]; + self::assertSame('wmf', $drawing->getExtension()); + + // Save spreadsheet to file and read it back + $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Xlsx'); + $drawings = $reloadedSpreadsheet->getActiveSheet()->getDrawingCollection(); + self::assertCount(1, $drawings); + $drawing = $drawings[0]; + self::assertSame('wmf', $drawing->getExtension()); + + $spreadsheet->disconnectWorksheets(); + $reloadedSpreadsheet->disconnectWorksheets(); + } +} diff --git a/tests/data/Writer/XLSX/wmffile.xlsx b/tests/data/Writer/XLSX/wmffile.xlsx new file mode 100644 index 00000000..64df51aa Binary files /dev/null and b/tests/data/Writer/XLSX/wmffile.xlsx differ