Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
13 / 13
AbstractImageAssetFileFilter
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
4 / 4
7
100.00% covered (success)
100.00%
13 / 13
 __construct
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
4 / 4
 filterAssetFile
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
8 / 8
 assetFileShouldBeOptimize
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
1 / 1
 optimizeImage
100.00% covered (success)
100.00%
1 / 1
1
n/a
0 / 0
<?php
namespace AssetsBundle\AssetFile\AssetFileFilter\ImageAssetFileFilter;
abstract class AbstractImageAssetFileFilter extends \AssetsBundle\AssetFile\AssetFileFilter\AbstractAssetFileFilter {
    /**
     * @var boolean
     */
    protected $imagecreatefromstringExists = false;
    /**
     * Constructor
     * @param array $oOptions
     */
    public function __construct($oOptions = null) {
        parent::__construct($oOptions);
        //Check if imagecreatefromstring function exists
        if (function_exists('imagecreatefromstring')) {
            $this->imagecreatefromstringExists = true;
        }
    }
    /**
     * @param string $sImagePath
     * @see \AssetsBundle\Service\Filter\FilterInterface::run()
     * @throws \InvalidArgumentException
     * @throws \RuntimeException
     * @return string
     */
    public function filterAssetFile(\AssetsBundle\AssetFile\AssetFile $oAssetFile) {
        //If asset file should not be optimize, return current content
        if (!$this->assetFileShouldBeOptimize($oAssetFile)) {
            return $oAssetFile->getAssetFileContents();
        }
        //Optimize image
        \Zend\Stdlib\ErrorHandler::start();
        $oImage = imagecreatefromstring($oAssetFile->getAssetFileContents());
        imagealphablending($oImage, false);
        imagesavealpha($oImage, true);
        \Zend\Stdlib\ErrorHandler::stop(true);
        return $this->optimizeImage($oImage);
    }
    /**
     * @param \AssetsBundle\AssetFile\AssetFile $oAssetFile
     * @return boolean
     */
    protected function assetFileShouldBeOptimize(\AssetsBundle\AssetFile\AssetFile $oAssetFile) {
        return $this->imagecreatefromstringExists && !!$oAssetFile->getAssetFileContents();
    }
    /**
     * @param resource $oImage
     * @return string
     */
    protected abstract function optimizeImage($oImage);
}