Nach Einspielung des Magento-Patches SUPEE-9767 ist es nicht mehr möglich, PDFs via WYSIWYG-Editor in das Magento-System per Upload-Funktionalität zu übertragen, auch wenn dieser Dateityp zuvor über eine geeignete config.xml in den Kreis der erlaubten Erweiterungen aufgenommen wurde. Dies liegt an der nun vorhandenen neuen validate()-Funktion, die nach einer erfolglosen Ermittlung des Dateiformats via getimagesize() eine Exception ausgibt. Somit müssen wir verhindern, dass es zu dieser Exception kommt.
Hierzu erzeugen wir die Datei
\app\code\local\Mage\Core\Model\File\Validator\Image.php
als Kopie von
\app\code\core\Mage\Core\Model\File\Validator\Image.php
und verändern die Funktion validate(). Wir erweitern die IF-Abfrage, welche in Zeile 118 endet mit einem ELSE-Fall, den wir auf das PDF-Format ausrichten. Somit verändern wir
imagedestroy($img);
imagedestroy($image);
return null;
} else {
throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid image.'));
}
}
}
zu
imagedestroy($img);
imagedestroy($image);
return null;
} else {
throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid image.'));
}
}
} else {
if (mime_content_type($filePath)=='application/pdf') {
$fileType = IMAGETYPE_PNG;
return null;
}
throw Mage::exception('Mage_Core', Mage::helper('core')->__('Invalid MIME type.').' '.mime_content_type($filePath));
}
Die zusätzlich eingebaute Exception ist hiebei eher eine Spielerei. Danach funktioniert der Upload wieder, wenn wir auch dennoch darauf hingewiesen werden, dass das Bildformat nicht unterstützt wird - macht aber nichts, auch wenn's natürlich stimmt. Getestet in Magento CE 1.9.2.4.