HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers33/bbec.nl/workbench/komma/kms/src/Komma/Kms/Core/Attributes/KmsImages.php
<?php
/**
 * Short description for the file.
 *
 * @author      Komma <info@komma.pro>
 * @copyright   (c) 2012-2015, Komma Mediadesign
 */

namespace Komma\Kms\Core\Attributes;

use Komma\Kms\Images\Models\Image;
use View;
use File;
use Gregwar\Image\Image as ImageCropper;

class KmsImages extends KmsAttribute{

    public $label;
    public $placeholder;
    public $subfolder;
    public $maxImages;
    public $uploadRules =[];
    //possible rules max-height(x),min-height(x),max-width(x),min-width(x),max-size(xMB), min-size(xMB)
    public $uploadSizes = [];

    function __construct($key, $value, array $options = [], array $errors = [], $languageId = null, $section = null)
    {
        parent::__construct($key, $value, $options, $errors, $languageId, $section);
        $this->label = $this->getOption('label', $key);
        $this->placeholder = $this->getOption('placeholder', $key);
        $this->subFolder = $this->getOption('subFolder', null);
        $this->maxImages = $this->getOption('maxImages', null);
        $this->uploadRules =$this->getOption('uploadRules', ['max-height'=>"4000", 'max-size'=> '5MB']);

        $this->uploadSizes =  json_encode($this->getOption('uploadSizes', null));

    }

    public function process()
    {
        $this->uploadImages();
    }

    public function render()
    {
        $this->uploadImages();

        return View::make('kms::attributes.images', ['attribute' => $this]);
    }

    public function getValue()
    {
        return $this->value;
    }

    public function getValueAsJson(){
        return $this->getValue() ? json_encode($this->getValue()) : '[]';
    }

    public function delete()
    {
        $this->deleteImages();
    }

    protected function deleteImages()
    {
        $images = (is_array($this->value)) ? $this->value : json_decode($this->value);
        //dd($images);

        if( ! isset($images)) return;

        foreach($images as $image)
        {
            //dd($image);
            if(File::exists(public_path().$image['original_image_url']))
                File::delete(public_path().$image['original_image_url']);
            if(File::exists(public_path().$image['large_image_url']))
                File::delete(public_path().$image['large_image_url']);
            if(File::exists(public_path().$image['medium_image_url']))
                File::delete(public_path().$image['medium_image_url']);
            if(File::exists(public_path().$image['small_image_url']))
                File::delete(public_path().$image['small_image_url']);
            if(File::exists(public_path().$image['thumb_image_url']))
                File::delete(public_path().$image['thumb_image_url']);

            if(isset($image->id)) \Komma\Kms\Images\Models\Image::destroy($image->id);
        }
    }

    protected function uploadImages()
    {

        if($this->value)
        {
            $images = (is_array($this->value)) ? $this->value : json_decode($this->value);
            if(! $images)
            {
                $this->value = '';
                return;
            }

            foreach ($images as $key => $image)
            {
                if (isset($image->name))
                {
                    // When the name is set, we can upload the photo
                    //Upload Image
                    $file = \Input::file($image->name);
                    $image = ImageCropper::open($file);

                    $originalFilename = \Str::slug(basename($file->getClientOriginalName(),$file->getClientOriginalExtension())).'.'.$file->getClientOriginalExtension();
                    $fullPath = $this->subfolder == null ? \Config::get('kms::paths.full_path_images') : \Config::get('kms::paths.full_path_images').'/'.$this->subfolder;
                    $path = $this->subfolder == null ? \Config::get('kms::paths.path_images') : \Config::get('kms::paths.path_images').'/'.$this->subfolder;

                    // Save Original
                    $filename = time() . '-' . $originalFilename;
                    $image->enableProgressive()->save($fullPath . '/' . $filename, 'guess', 100);
                    $images[$key]->original = $path .'/'.$filename;


                    // Save Large
                    if(isset($this->options['large'])){
                        $image = ImageCropper::open($file);
                        $filename = time() . '-large-' . $originalFilename;
                        if($this->options['large']['method'] == 'fit'){
                            $image->cropResize($this->options['large']['width'],$this->options['large']['height']);
                        }else{
                            $image->zoomCrop($this->options['large']['width'],$this->options['large']['height']);
                        }
                        $image->enableProgressive()->save($fullPath . '/' . $filename, 'guess', 100);
                        $images[$key]->large = $path .'/'.$filename;
                    }else{
                        $images[$key]->large = '';
                    }
                    // Save Medium
                    if(isset($this->options['medium'])){
                        $image = ImageCropper::open($file);
                        $filename = time() . '-medium-' . $originalFilename;
                        if($this->options['medium']['method'] == 'fit'){
                            $image->cropResize($this->options['medium']['width'], $this->options['medium']['height']);
                        }else{
                            $image->zoomCrop($this->options['medium']['width'], $this->options['medium']['height']);
                        }
                        $image->enableProgressive()->save($fullPath . '/' . $filename, 'guess', 100);
                        $images[$key]->medium = $path .'/'.$filename;
                    }else{
                        $images[$key]->medium = '';
                    }
                    // Save Small
                    if(isset($this->options['small'])){
                        $image = ImageCropper::open($file);
                        $filename = time() . '-small-' . $originalFilename;
                        if($this->options['small']['method'] == 'fit'){
                            $image->cropResize($this->options['small']['width'],$this->options['small']['height']);
                        }else{
                            $image->zoomCrop($this->options['small']['width'],$this->options['small']['height']);
                        }
                        $image->enableProgressive()->save($fullPath . '/' . $filename, 'guess', 100);
                        $images[$key]->small = $path .'/'.$filename;
                    }else{
                        $images[$key]->small = '';
                    }
                    // Save Thumb
                    $image = ImageCropper::open($file);
                    $filename = time() . '-thumb-' . $originalFilename;
                    $image->zoomCrop(128,128)->save($fullPath . '/' . $filename, 'guess', 100);
                    $images[$key]->thumb = $path .'/'.$filename;

                }
                // Delete images on update
                if (isset($image->id) && isset($image->delete)) {
                    $image = Image::Find($image->id);
                    //if(isset($image->original_image_url)) \File::delete(public_path().$image->original_image_url);
                    if(isset($image->large_image_url)) \File::delete(public_path().$image->large_image_url);
                    if(isset($image->medium_image_url)) \File::delete(public_path().$image->medium_image_url);
                    if(isset($image->small_image_url)) \File::delete(public_path().$image->small_image_url);
                    if(isset($image->thumb_image_url)) \File::delete(public_path().$image->thumb_image_url);
                }
            }
            $this->value = $images;
        }
    }



}