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;
}
}
}