Add composer.json so we can validate php extension requirements
[surrogator.git] / surrogator.php
index 393b0a2bd4e1bfb43f737ecc0f48f4848340ba5d..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';
@@ -115,6 +115,18 @@ foreach ($sizes as $size) {
         mkdir($varDir . '/' . $size, 0755);
     }
 }
+foreach (array('mm.png', 'default.png') as $resFile) {
+    if (!file_exists($rawDir . '/' . $resFile)) {
+        log($resFile . ' missing, copying it from res/', 2);
+        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);
+    }
+}
 
 if (count($files)) {
     $fileInfos = array();
@@ -124,7 +136,7 @@ if (count($files)) {
 } else {
     $fileInfos = new \RegexIterator(
         new \DirectoryIterator($rawDir),
-        '#^.+\.(png|jpg)$#'
+        '#^.+\.(png|jpg|svg|svgz)$#'
     );
 }
 foreach ($fileInfos as $fileInfo) {
@@ -146,6 +158,8 @@ foreach ($fileInfos as $fileInfo) {
 
     if ($fileName == 'default.png') {
         $md5 = $sha256 = 'default';
+    } else if ($fileName == 'mm.png') {
+        $md5 = $sha256 = 'mm';
     } else {
         list($md5, $sha256) = getHashes($fileName);
     }
@@ -188,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));
 
@@ -213,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;
     }