<?php

/**
 * Pageimage for Contao
 *
 * Copyright (c) 2015 Benjamin Roth
 *
 * @license LGPL-3.0+
 */

namespace eSM_pageimage;

 
class HookPageimage extends Pageimage
{

    public function piReplaceInsertTags($strTag, $blnCache, $arrCache, $flags)
    {
        $elements = explode('::', $strTag);
        $images = static::getImages();

        if (!count($images) || !in_array($elements[0],array('sb_images','sb_image','sb_image_url','sb_image_css')))
        {
            return false;
        }


        if (!isset($elements[1]) || !$elements[1])
        {
            $elements[1] = 0;
        } else if (count($images)-1 < --$elements[1])
        {
            $elements[1] = count($images)-1;
        }

        if ($elements[0] == 'sb_image_url' || $elements[0] == 'sb_image_css')
        {
            if (count($images))
            {
                $image = $images[$elements[1]];
                $width = null;
                $height = null;
                $mode = null;

                if (is_array($image['size'] = deserialize($image['size'])))
                {
                    $width = intval($image['size'][0]) > 0 ? $image['size'][0] : null;
                    $height = intval($image['size'][1]) > 0 ? $image['size'][1] : null;
                    $mode = strlen($image['size'][2]) ? $image['size'][2] : null;
                }

                $strBuffer = \Image::get($image['singleSRC'], $width, $height, $mode);

                if ($elements[0] == 'sb_image_css')
                {
                    return 'background-image: url(\'' . $this->Environment->path . '/' . $strBuffer . '\');';
                }

                return $strBuffer;
            }
        }

        if ($elements[0] == 'sb_images' && count($images) > 0)
        {
            $arrImageTplObjects = array();
            $strBuffer = '';

            foreach($images as $image)
            {
                $objImage = new \stdClass();
                $this->addImageToTemplate($objImage, $image);

                $arrImageTplObjects[] = $objImage;
            }

            if (in_array('single',$flags))
            {
                foreach ($arrImageTplObjects as $objImage)
                {
                    $objTemplate = new \FrontendTemplate('eSM_pageimage_container');
                    $objTemplate->pictures = array($objImage);
                    $strBuffer .= $objTemplate->parse();
                }
            } else
            {
                $objTemplate = new \FrontendTemplate('eSM_pageimage_container');
                $objTemplate->pictures = $arrImageTplObjects;
                $strBuffer .= $objTemplate->parse();
            }

            return $strBuffer;

        } else if ($elements[0] == 'sb_image')
        {

            $arrImageTplObjects = array();

            $objImage = new \stdClass();
            $this->addImageToTemplate($objImage, $images[$elements[1]]);
            $arrImageTplObjects[] = $objImage;

            $objTemplate = new \FrontendTemplate('eSM_pageimage_container');
            $objTemplate->pictures = $arrImageTplObjects;

            return $objTemplate->parse();
        }

        return false;
    }
}