Add composer.json so we can validate php extension requirements
[surrogator.git] / surrogator.php
index 8d387d59701c0a071d403305b256da38ad035bb8..b397042d1603d24c129ee9adaa94fed8aea2a8de 100755 (executable)
@@ -11,7 +11,7 @@
  * @package  Surrogator
  * @author   Christian Weiske <cweiske@cweiske.de>
  * @license  http://www.gnu.org/licenses/agpl.html AGPLv3 or later
- * @link     http://git.cweiske.de/?p=surrogator.git
+ * @link     https://sourceforge.net/p/surrogator/
  */
 namespace surrogator;
 $cfgFile = __DIR__ . '/data/surrogator.config.php';
@@ -118,7 +118,13 @@ foreach ($sizes as $size) {
 foreach (array('mm.png', 'default.png') as $resFile) {
     if (!file_exists($rawDir . '/' . $resFile)) {
         log($resFile . ' missing, copying it from res/', 2);
-        copy(__DIR__ . '/res/' . $resFile, $rawDir . '/' . $resFile);
+        copy($resDir . '/' . $resFile, $rawDir . '/' . $resFile);
+    }
+}
+foreach (array('index.html', 'robots.txt', 'favicon.ico') as $resFile) {
+    if (!file_exists($wwwDir . '/' . $resFile) && is_writable($wwwDir)) {
+        log('no www/' . $resFile . ' found, copying default over', 1);
+        copy($resDir . '/www/' . $resFile, $wwwDir . '/' . $resFile);
     }
 }
 
@@ -130,7 +136,7 @@ if (count($files)) {
 } else {
     $fileInfos = new \RegexIterator(
         new \DirectoryIterator($rawDir),
-        '#^.+\.(png|jpg)$#'
+        '#^.+\.(png|jpg|svg|svgz)$#'
     );
 }
 foreach ($fileInfos as $fileInfo) {
@@ -196,6 +202,9 @@ foreach ($fileInfos as $fileInfo) {
  */
 function getHashes($fileName)
 {
+    //OpenIDs have their slashes "/" url-encoded
+    $fileName = rawurldecode($fileName);
+
     $fileNameNoExt = substr($fileName, 0, -strlen(strrpos($fileName, '.')) - 2);
     $emailAddress  = trim(strtolower($fileNameNoExt));
 
@@ -221,8 +230,15 @@ function createSquare($origPath, $ext, $targetPath, $maxSize)
         $imgOrig = imagecreatefrompng($origPath);
     } else if ($ext == 'jpg' || $ext == 'jpeg') {
         $imgOrig = imagecreatefromjpeg($origPath);
+    } else if ($ext == 'svg' || $ext == 'svgz') {
+        $imagickImg = new \Imagick();
+        $imagickImg->setBackgroundColor(new \ImagickPixel('transparent'));
+        $imagickImg->readImage($origPath);
+        $imagickImg->setImageFormat('png32');
+        $imgOrig = imagecreatefromstring($imagickImg->getImageBlob());
     } else {
         //unsupported format
+        logErr('Unsupported image format: ' . $origPath);
         return false;
     }