Files
totalsport/common/Service/ImageLoader.php

85 lines
2.2 KiB
PHP

<?php
namespace ProVM\TotalSport\Common\Service;
use function Stringy\create as s;
class ImageLoader {
protected $folder;
protected $assets_folder;
public function __construct(string $images_folder, string $images_assets_folder) {
$this->folder = $images_folder;
$this->assets_folder = $images_assets_folder;
}
protected function getFolder($event) {
return implode(DIRECTORY_SEPARATOR, [
$this->folder,
'eventos',
s($event->servicio)->removeLeft('Eventos '),
rtrim(implode(', ', [
$event->titulo,
$event->empresa
]), ', ')
]);
}
public function load($event) {
$folder = $this->getFolder($event);
if (!file_exists($folder)) {
return false;
}
$files = new \DirectoryIterator($folder);
$images = [];
foreach ($files as $file) {
if ($file->isDir()) {
continue;
}
$name = $file->getBasename('.' . $file->getExtension());
$org = false;
$thumb = false;
if (strpos($name, '_') !== false) {
$name = explode('_', $name)[0];
if (strpos($name, '_org') !== false) {
$org = true;
}
if (strpos($name, '_thumb') !== false) {
$thumb = true;
}
}
$images []= implode('/', [
$this->assets_folder,
'eventos',
s($event->servicio)->removeLeft('Eventos '),
rtrim(implode(', ', [
$event->titulo,
$event->empresa
]), ', '),
$file->getFilename()
]);
}
return $images;
}
public function add($event, $file) {
$folder = $this->getFolder($event);
if (!file_exists($folder)) {
mkdir($folder);
chmod($folder, 777);
}
$images = $this->load($event);
$base_name = '01';
if ($images !== false and count($images) > 0) {
$base_name = str_pad(count($images), 2, '0', \STR_PAD_LEFT);
}
$extension = pathinfo($file->getClientFilename(), PATHINFO_EXTENSION);
$filename = implode(DIRECTORY_SEPARATOR, [
$folder,
implode('.', [
implode('_', [
$base_name,
'org'
]),
$extension
])
]);
$file->moveTo($filename);
}
}