Răsfoiți Sursa

added identicon library, including license, regenerated autoloader

El RIDO 10 ani în urmă
părinte
comite
461aed8573

+ 25 - 2
LICENSE.md

@@ -4,8 +4,9 @@ PrivateBin consists of PHP and JS code which was originally written by Sébastie
 Sauvage in 2012 and falls unter the Zlib/libpng license. Also included are
 Sauvage in 2012 and falls unter the Zlib/libpng license. Also included are
 libraries that fall under the GPLv2 (SJCL, rawinflate, rawdeflate), BSD
 libraries that fall under the GPLv2 (SJCL, rawinflate, rawdeflate), BSD
 2-clause (SJCL), BSD 3-clause (base64.js version 2.1.9, Showdown), MIT
 2-clause (SJCL), BSD 3-clause (base64.js version 2.1.9, Showdown), MIT
-(base64.js version 1.7, Bootstrap), Apache (prettify.js) and CC-BY (favicon,
-icon, logo) licenses. All of these license terms can be found here below:
+(base64.js version 1.7, Bootstrap, Identicon), Apache (prettify.js) and CC-BY
+(favicon, icon, logo) licenses. All of these license terms can be found here
+below:
 
 
 ## Zlib/libpng license for PrivateBin
 ## Zlib/libpng license for PrivateBin
 
 
@@ -440,6 +441,28 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 THE SOFTWARE.
 
 
+## MIT License for Identicon
+
+Copyright © 2013 Benjamin Laugueux <benjamin@yzalis.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
 ## Apache License for prettify.js
 ## Apache License for prettify.js
 
 
 _Version 2.0, January 2004_
 _Version 2.0, January 2004_

+ 26 - 1
vendor/composer/autoload_classmap.php

@@ -5,4 +5,29 @@
 $vendorDir = dirname(dirname(__FILE__));
 $vendorDir = dirname(dirname(__FILE__));
 $baseDir = dirname($vendorDir);
 $baseDir = dirname($vendorDir);
 
 
-return array();
+return array(
+    'Identicon\\Generator\\BaseGenerator' => $vendorDir . '/yzalis/identicon/src/Identicon/Generator/BaseGenerator.php',
+    'Identicon\\Generator\\GdGenerator' => $vendorDir . '/yzalis/identicon/src/Identicon/Generator/GdGenerator.php',
+    'Identicon\\Generator\\GeneratorInterface' => $vendorDir . '/yzalis/identicon/src/Identicon/Generator/GeneratorInterface.php',
+    'Identicon\\Generator\\ImageMagickGenerator' => $vendorDir . '/yzalis/identicon/src/Identicon/Generator/ImageMagickGenerator.php',
+    'Identicon\\Identicon' => $vendorDir . '/yzalis/identicon/src/Identicon/Identicon.php',
+    'PrivateBin\\Configuration' => $baseDir . '/lib/Configuration.php',
+    'PrivateBin\\Data\\AbstractData' => $baseDir . '/lib/Data/AbstractData.php',
+    'PrivateBin\\Data\\Database' => $baseDir . '/lib/Data/Database.php',
+    'PrivateBin\\Data\\Filesystem' => $baseDir . '/lib/Data/Filesystem.php',
+    'PrivateBin\\Filter' => $baseDir . '/lib/Filter.php',
+    'PrivateBin\\I18n' => $baseDir . '/lib/I18n.php',
+    'PrivateBin\\Model' => $baseDir . '/lib/Model.php',
+    'PrivateBin\\Model\\AbstractModel' => $baseDir . '/lib/Model/AbstractModel.php',
+    'PrivateBin\\Model\\Comment' => $baseDir . '/lib/Model/Comment.php',
+    'PrivateBin\\Model\\Paste' => $baseDir . '/lib/Model/Paste.php',
+    'PrivateBin\\Persistence\\AbstractPersistence' => $baseDir . '/lib/Persistence/AbstractPersistence.php',
+    'PrivateBin\\Persistence\\PurgeLimiter' => $baseDir . '/lib/Persistence/PurgeLimiter.php',
+    'PrivateBin\\Persistence\\ServerSalt' => $baseDir . '/lib/Persistence/ServerSalt.php',
+    'PrivateBin\\Persistence\\TrafficLimiter' => $baseDir . '/lib/Persistence/TrafficLimiter.php',
+    'PrivateBin\\PrivateBin' => $baseDir . '/lib/PrivateBin.php',
+    'PrivateBin\\Request' => $baseDir . '/lib/Request.php',
+    'PrivateBin\\Sjcl' => $baseDir . '/lib/Sjcl.php',
+    'PrivateBin\\View' => $baseDir . '/lib/View.php',
+    'PrivateBin\\Vizhash16x16' => $baseDir . '/lib/Vizhash16x16.php',
+);

+ 0 - 8
vendor/composer/autoload_files.php

@@ -1,8 +0,0 @@
-<?php
-
-// autoload_files.php @generated by Composer
-
-$vendorDir = dirname(dirname(__FILE__));
-$baseDir = dirname($vendorDir);
-
-return array();

+ 1 - 6
vendor/composer/autoload_namespaces.php

@@ -6,10 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
 $baseDir = dirname($vendorDir);
 $baseDir = dirname($vendorDir);
 
 
 return array(
 return array(
-    'Psr\\Log\\' => array($vendorDir . '/psr/log'),
-    'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src'),
-    'Guzzle\\Tests' => array($vendorDir . '/guzzle/guzzle/tests'),
-    'Guzzle' => array($vendorDir . '/guzzle/guzzle/src'),
-    'CodeClimate\\Component' => array($vendorDir . '/codeclimate/php-test-reporter/src'),
-    'CodeClimate\\Bundle' => array($vendorDir . '/codeclimate/php-test-reporter/src'),
+    'Identicon' => array($vendorDir . '/yzalis/identicon/src'),
 );
 );

+ 0 - 18
vendor/composer/autoload_real.php

@@ -47,24 +47,6 @@ class ComposerAutoloaderInitDontChange
 
 
         $loader->register(true);
         $loader->register(true);
 
 
-        if ($useStaticLoader) {
-            $includeFiles = Composer\Autoload\ComposerStaticInitDontChange::$files;
-        } else {
-            $includeFiles = require __DIR__ . '/autoload_files.php';
-        }
-        foreach ($includeFiles as $fileIdentifier => $file) {
-            composerRequireDontChange($fileIdentifier, $file);
-        }
-
         return $loader;
         return $loader;
     }
     }
 }
 }
-
-function composerRequireDontChange($fileIdentifier, $file)
-{
-    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
-        require $file;
-
-        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
-    }
-}

+ 35 - 4
vendor/composer/autoload_static.php

@@ -6,8 +6,6 @@ namespace Composer\Autoload;
 
 
 class ComposerStaticInitDontChange
 class ComposerStaticInitDontChange
 {
 {
-    public static $files = array ();
-
     public static $prefixLengthsPsr4 = array (
     public static $prefixLengthsPsr4 = array (
         'P' => 
         'P' => 
         array (
         array (
@@ -22,9 +20,42 @@ class ComposerStaticInitDontChange
         ),
         ),
     );
     );
 
 
-    public static $prefixesPsr0 = array ();
+    public static $prefixesPsr0 = array (
+        'I' => 
+        array (
+            'Identicon' => 
+            array (
+                0 => __DIR__ . '/..' . '/yzalis/identicon/src',
+            ),
+        ),
+    );
 
 
-    public static $classMap = array ();
+    public static $classMap = array (
+        'Identicon\\Generator\\BaseGenerator' => __DIR__ . '/..' . '/yzalis/identicon/src/Identicon/Generator/BaseGenerator.php',
+        'Identicon\\Generator\\GdGenerator' => __DIR__ . '/..' . '/yzalis/identicon/src/Identicon/Generator/GdGenerator.php',
+        'Identicon\\Generator\\GeneratorInterface' => __DIR__ . '/..' . '/yzalis/identicon/src/Identicon/Generator/GeneratorInterface.php',
+        'Identicon\\Generator\\ImageMagickGenerator' => __DIR__ . '/..' . '/yzalis/identicon/src/Identicon/Generator/ImageMagickGenerator.php',
+        'Identicon\\Identicon' => __DIR__ . '/..' . '/yzalis/identicon/src/Identicon/Identicon.php',
+        'PrivateBin\\Configuration' => __DIR__ . '/../..' . '/lib/Configuration.php',
+        'PrivateBin\\Data\\AbstractData' => __DIR__ . '/../..' . '/lib/Data/AbstractData.php',
+        'PrivateBin\\Data\\Database' => __DIR__ . '/../..' . '/lib/Data/Database.php',
+        'PrivateBin\\Data\\Filesystem' => __DIR__ . '/../..' . '/lib/Data/Filesystem.php',
+        'PrivateBin\\Filter' => __DIR__ . '/../..' . '/lib/Filter.php',
+        'PrivateBin\\I18n' => __DIR__ . '/../..' . '/lib/I18n.php',
+        'PrivateBin\\Model' => __DIR__ . '/../..' . '/lib/Model.php',
+        'PrivateBin\\Model\\AbstractModel' => __DIR__ . '/../..' . '/lib/Model/AbstractModel.php',
+        'PrivateBin\\Model\\Comment' => __DIR__ . '/../..' . '/lib/Model/Comment.php',
+        'PrivateBin\\Model\\Paste' => __DIR__ . '/../..' . '/lib/Model/Paste.php',
+        'PrivateBin\\Persistence\\AbstractPersistence' => __DIR__ . '/../..' . '/lib/Persistence/AbstractPersistence.php',
+        'PrivateBin\\Persistence\\PurgeLimiter' => __DIR__ . '/../..' . '/lib/Persistence/PurgeLimiter.php',
+        'PrivateBin\\Persistence\\ServerSalt' => __DIR__ . '/../..' . '/lib/Persistence/ServerSalt.php',
+        'PrivateBin\\Persistence\\TrafficLimiter' => __DIR__ . '/../..' . '/lib/Persistence/TrafficLimiter.php',
+        'PrivateBin\\PrivateBin' => __DIR__ . '/../..' . '/lib/PrivateBin.php',
+        'PrivateBin\\Request' => __DIR__ . '/../..' . '/lib/Request.php',
+        'PrivateBin\\Sjcl' => __DIR__ . '/../..' . '/lib/Sjcl.php',
+        'PrivateBin\\View' => __DIR__ . '/../..' . '/lib/View.php',
+        'PrivateBin\\Vizhash16x16' => __DIR__ . '/../..' . '/lib/Vizhash16x16.php',
+    );
 
 
     public static function getInitializer(ClassLoader $loader)
     public static function getInitializer(ClassLoader $loader)
     {
     {

+ 54 - 1
vendor/composer/installed.json

@@ -1 +1,54 @@
-[]
+[
+    {
+        "name": "yzalis/identicon",
+        "version": "1.1.0",
+        "version_normalized": "1.1.0.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/yzalis/Identicon.git",
+            "reference": "a99fc2a3d018512f7914bc6f972952536c0f309b"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/yzalis/Identicon/zipball/a99fc2a3d018512f7914bc6f972952536c0f309b",
+            "reference": "a99fc2a3d018512f7914bc6f972952536c0f309b",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.0"
+        },
+        "require-dev": {
+            "fzaninotto/faker": "1.2.*@dev"
+        },
+        "time": "2014-07-13 09:19:12",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.1-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "psr-0": {
+                "Identicon": "src/"
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "MIT"
+        ],
+        "authors": [
+            {
+                "name": "Benjamin Laugueux",
+                "email": "benjamin@yzalis.com"
+            }
+        ],
+        "description": "Create awesome unique avatar.",
+        "homepage": "http://identicon-php.org",
+        "keywords": [
+            "avatar",
+            "identicon",
+            "image"
+        ]
+    }
+]

+ 241 - 0
vendor/yzalis/identicon/src/Identicon/Generator/BaseGenerator.php

@@ -0,0 +1,241 @@
+<?php
+
+namespace Identicon\Generator;
+
+use Identicon\Generator\GeneratorInterface;
+
+/**
+ * @author Benjamin Laugueux <benjamin@yzalis.com>
+ */
+class BaseGenerator
+{
+    /**
+     * @var mixed
+     */
+    protected $generatedImage;
+
+    /**
+     * @var integer
+     */
+    protected $color;
+
+    /**
+     * @var integer
+     */
+    protected $backgroundColor;
+
+    /**
+     * @var integer
+     */
+    protected $size;
+
+    /**
+     * @var integer
+     */
+    protected $pixelRatio;
+
+    /**
+     * @var string
+     */
+    private $hash;
+
+    /**
+     * @var array
+     */
+    private $arrayOfSquare = array();
+
+    /**
+     * Set the image color
+     *
+     * @param string|array $color The color in hexa (6 chars) or rgb array
+     *
+     * @return this
+     */
+    public function setColor($color)
+    {
+        if (null === $color) {
+            return $this;
+        }
+
+        $this->color = $this->convertColor($color);
+
+        return $this;
+    }
+
+    /**
+     * Set the image background color
+     *
+     * @param string|array $backgroundColor The color in hexa (6 chars) or rgb array
+     *
+     * @return this
+     */
+    public function setBackgroundColor($backgroundColor)
+    {
+        if (null === $backgroundColor) {
+            return $this;
+        }
+
+        $this->backgroundColor = $this->convertColor($backgroundColor);
+
+        return $this;
+    }
+
+    private function convertColor($color)
+    {
+        $convertedColor = array();
+        if (is_array($color)) {
+            $convertedColor[0] = $color[0];
+            $convertedColor[1] = $color[1];
+            $convertedColor[2] = $color[2];
+        } else {
+            if (false !== strpos($color, '#')) {
+                $color = substr($color, 1);
+            }
+            $convertedColor[0] = hexdec(substr($color, 0, 2));
+            $convertedColor[1] = hexdec(substr($color, 2, 2));
+            $convertedColor[2] = hexdec(substr($color, 4, 2));
+        }
+
+        return $convertedColor;
+    }
+
+    /**
+     * Get the color
+     *
+     * @return array
+     */
+    public function getColor()
+    {
+        return $this->color;
+    }
+
+
+    /**
+     * Get the background color
+     *
+     * @return array
+     */
+    public function getBackgroundColor()
+    {
+        return $this->backgroundColor;
+    }
+
+    /**
+     * Convert the hash into an multidimensionnal array of boolean
+     *
+     * @return this
+     */
+    private function convertHashToArrayOfBoolean()
+    {
+        preg_match_all('/(\w)(\w)/', $this->hash, $chars);
+        foreach ($chars[1] as $i => $char) {
+            if ($i % 3 == 0) {
+                $this->arrayOfSquare[$i/3][0] = $this->convertHexaToBoolean($char);
+                $this->arrayOfSquare[$i/3][4] = $this->convertHexaToBoolean($char);
+            } elseif ($i % 3 == 1) {
+                $this->arrayOfSquare[$i/3][1] = $this->convertHexaToBoolean($char);
+                $this->arrayOfSquare[$i/3][3] = $this->convertHexaToBoolean($char);
+            } else {
+                $this->arrayOfSquare[$i/3][2] = $this->convertHexaToBoolean($char);
+            }
+            ksort($this->arrayOfSquare[$i/3]);
+        }
+
+        $this->color[0] = hexdec(array_pop($chars[1]))*16;
+        $this->color[1] = hexdec(array_pop($chars[1]))*16;
+        $this->color[2] = hexdec(array_pop($chars[1]))*16;
+
+        return $this;
+    }
+
+    /**
+     * Convert an heaxecimal number into a boolean
+     *
+     * @param string $hexa
+     *
+     * @return boolean
+     */
+    private function convertHexaToBoolean($hexa)
+    {
+        return (bool) intval(round(hexdec($hexa)/10));
+    }
+
+    /**
+     *
+     *
+     * @return array
+     */
+    public function getArrayOfSquare()
+    {
+        return $this->arrayOfSquare;
+    }
+
+    /**
+     * Get the identicon string hash
+     *
+     * @return string
+     */
+    public function getHash()
+    {
+        return $this->hash;
+    }
+
+    /**
+     * Generate a hash fron the original string
+     *
+     * @param string $string
+     *
+     * @return this
+     */
+    public function setString($string)
+    {
+        if (null === $string) {
+            throw new \Exception('The string cannot be null.');
+        }
+
+        $this->hash = md5($string);
+
+        $this->convertHashToArrayOfBoolean();
+
+        return $this;
+    }
+
+    /**
+     * Set the image size
+     *
+     * @param integer $size
+     *
+     * @return this
+     */
+    public function setSize($size)
+    {
+        if (null === $size) {
+            return $this;
+        }
+
+        $this->size = $size;
+        $this->pixelRatio = round($size / 5);
+
+        return $this;
+    }
+
+    /**
+     * Get the image size
+     *
+     * @return integer
+     */
+    public function getSize()
+    {
+        return $this->size;
+    }
+
+    /**
+     * Get the pixel ratio
+     *
+     * @return array
+     */
+    public function getPixelRatio()
+    {
+        return $this->pixelRatio;
+    }
+}

+ 76 - 0
vendor/yzalis/identicon/src/Identicon/Generator/GdGenerator.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace Identicon\Generator;
+
+use Identicon\Generator\GeneratorInterface;
+
+/**
+ * @author Benjamin Laugueux <benjamin@yzalis.com>
+ */
+class GdGenerator extends BaseGenerator implements GeneratorInterface
+{
+    public function __construct()
+    {
+        if (!extension_loaded('gd')) {
+            throw new \Exception('GD does not appear to be avaliable in your PHP installation. Please try another generator');
+        }
+    }
+
+    private function generateImage()
+    {
+        // prepare image
+        $this->generatedImage = imagecreatetruecolor($this->getPixelRatio() * 5, $this->getPixelRatio() * 5);
+
+        $rgbBackgroundColor = $this->getBackgroundColor();
+        if (null === $rgbBackgroundColor) {
+            $background = imagecolorallocate($this->generatedImage, 0, 0, 0);
+            imagecolortransparent($this->generatedImage, $background);
+        } else {
+            $background = imagecolorallocate($this->generatedImage, $rgbBackgroundColor[0], $rgbBackgroundColor[1], $rgbBackgroundColor[2]);
+            imagefill($this->generatedImage, 0, 0, $background);
+        }
+
+        // prepage color
+        $rgbColor = $this->getColor();
+        $gdColor = imagecolorallocate($this->generatedImage, $rgbColor[0], $rgbColor[1], $rgbColor[2]);
+
+        // draw content
+        foreach ($this->getArrayOfSquare() as $lineKey => $lineValue) {
+            foreach ($lineValue as $colKey => $colValue) {
+                if (true === $colValue) {
+                    imagefilledrectangle($this->generatedImage, $colKey * $this->getPixelRatio(), $lineKey * $this->getPixelRatio(), ($colKey + 1) * $this->getPixelRatio(), ($lineKey + 1) * $this->getPixelRatio(), $gdColor);
+                }
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function getImageBinaryData($string, $size = null, $color = null, $backgroundColor = null)
+    {
+        ob_start();
+        imagepng($this->getImageResource($string, $size, $color, $backgroundColor));
+        $imageData = ob_get_contents();
+        ob_end_clean();
+
+        return $imageData;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function getImageResource($string, $size = null, $color = null, $backgroundColor = null)
+    {
+        $this
+            ->setString($string)
+            ->setSize($size)
+            ->setColor($color)
+            ->setBackgroundColor($backgroundColor)
+            ->generateImage();
+
+        return $this->generatedImage;
+    }
+}

+ 33 - 0
vendor/yzalis/identicon/src/Identicon/Generator/GeneratorInterface.php

@@ -0,0 +1,33 @@
+<?php
+
+namespace Identicon\Generator;
+
+/**
+ * @author Benjamin Laugueux <benjamin@yzalis.com>
+ */
+interface GeneratorInterface
+{
+    /**
+     *
+     *
+     * @param  string       $string
+     * @param  integer      $size
+     * @param  array|string $color
+     * @param  array|string $backgroundColor
+     *
+     * @return mixed
+     */
+    function getImageBinaryData($string, $size = null, $color = null, $backgroundColor = null);
+
+    /**
+     *
+     *
+     * @param  string       $string
+     * @param  integer      $size
+     * @param  array|string $color
+     * @param  array|string $backgroundColor
+     *
+     * @return string
+     */
+    function getImageResource($string, $size = null, $color = null, $backgroundColor = null);
+}

+ 80 - 0
vendor/yzalis/identicon/src/Identicon/Generator/ImageMagickGenerator.php

@@ -0,0 +1,80 @@
+<?php
+
+namespace Identicon\Generator;
+
+use Identicon\Generator\GeneratorInterface;
+
+/**
+ * @author Francis Chuang <francis.chuang@gmail.com>
+ */
+class ImageMagickGenerator extends BaseGenerator implements GeneratorInterface
+{
+    public function __construct()
+    {
+        if (!extension_loaded('imagick')) {
+            throw new \Exception('ImageMagick does not appear to be avaliable in your PHP installation. Please try another generator');
+        }
+    }
+
+    private function generateImage()
+    {
+        $this->generatedImage = new \Imagick();
+        $rgbBackgroundColor = $this->getBackgroundColor();
+
+        if (null === $rgbBackgroundColor) {
+            $background = 'none';
+        } else {
+            $background = new \ImagickPixel("rgb($rgbBackgroundColor[0],$rgbBackgroundColor[1],$rgbBackgroundColor[2])");
+        }
+
+        $this->generatedImage->newImage($this->pixelRatio * 5, $this->pixelRatio * 5, $background, 'png');
+
+        // prepare color
+        $rgbColor = $this->getColor();
+        $color = new \ImagickPixel("rgb($rgbColor[0],$rgbColor[1],$rgbColor[2])");
+
+        $draw = new \ImagickDraw();
+        $draw->setFillColor($color);
+
+        // draw the content
+        foreach ($this->getArrayOfSquare() as $lineKey => $lineValue) {
+            foreach ($lineValue as $colKey => $colValue) {
+                if (true === $colValue) {
+                    $draw->rectangle( $colKey * $this->pixelRatio, $lineKey * $this->pixelRatio, ($colKey + 1) * $this->pixelRatio, ($lineKey + 1) * $this->pixelRatio);
+                }
+            }
+        }
+
+        $this->generatedImage->drawImage($draw);
+
+        return $this;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function getImageBinaryData($string, $size = null, $color = null, $backgroundColor = null)
+    {
+        ob_start();
+        echo $this->getImageResource($string, $size, $color, $backgroundColor);
+        $imageData = ob_get_contents();
+        ob_end_clean();
+
+        return $imageData;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function getImageResource($string, $size = null, $color = null, $backgroundColor = null)
+    {
+        $this
+            ->setString($string)
+            ->setSize($size)
+            ->setColor($color)
+            ->setBackgroundColor($backgroundColor)
+            ->generateImage();
+
+        return $this->generatedImage;
+    }
+}

+ 100 - 0
vendor/yzalis/identicon/src/Identicon/Identicon.php

@@ -0,0 +1,100 @@
+<?php
+
+namespace Identicon;
+
+use Identicon\Generator\GdGenerator;
+use Identicon\Generator\GeneratorInterface;
+
+/**
+ * @author Benjamin Laugueux <benjamin@yzalis.com>
+ */
+class Identicon
+{
+    /**
+     * @var GeneratorInterface
+     */
+    private $generator;
+
+    public function __construct($generator = null)
+    {
+        if (null === $generator) {
+            $this->generator = new GdGenerator();
+        } else {
+            $this->generator = $generator;
+        }
+
+    }
+
+    /**
+     * Set the image generetor
+     *
+     * @param GeneratorInterface $generator
+     *
+     * @throws \Exception
+     */
+    public function setGenerator(GeneratorInterface $generator)
+    {
+        $this->generator = $generator;
+
+        return $this;
+    }
+
+    /**
+     * Display an Identicon image
+     *
+     * @param string  $string
+     * @param integer $size
+     * @param string  $color
+     * @param string  $backgroundColor
+     */
+    public function displayImage($string, $size = 64, $color = null, $backgroundColor = null)
+    {
+        header("Content-Type: image/png");
+        echo $this->getImageData($string, $size, $color, $backgroundColor);
+    }
+
+    /**
+     * Get an Identicon PNG image data
+     *
+     * @param string  $string
+     * @param integer $size
+     * @param string  $color
+     * @param string  $backgroundColor
+     *
+     * @return string
+     */
+    public function getImageData($string, $size = 64, $color = null, $backgroundColor = null)
+    {
+        return $this->generator->getImageBinaryData($string, $size, $color, $backgroundColor);
+    }
+
+    /**
+     * Get an Identicon PNG image resource
+     *
+     * @param string  $string
+     * @param integer $size
+     * @param string  $color
+     * @param string  $backgroundColor
+     *
+     * @return string
+     */
+    public function getImageResource($string, $size = 64, $color = null, $backgroundColor = null)
+    {
+        return $this->generator->getImageResource($string, $size, $color, $backgroundColor);
+    }
+
+    /**
+     * Get an Identicon PNG image data as base 64 encoded
+     *
+     * @param string  $string
+     * @param integer $size
+     * @param string  $color
+     * @param string  $backgroundColor
+     *
+     * @return string
+     */
+    public function getImageDataUri($string, $size = 64, $color = null, $backgroundColor = null)
+    {
+        return sprintf('data:image/png;base64,%s', base64_encode($this->getImageData($string, $size, $color, $backgroundColor)));
+    }
+}