Repository URL to install this package:
|
Version:
3.2.0 ▾
|
<?php
namespace Evsmash\Files;
use Evsmash\Core\Files\Dir;
use Evsmash\Core\Files\File;
use Evsmash\Core\Helpers\Str;
class Asset {
// dir
static public function dir($route) {
// root
if(!$route) {
$dir = new \stdClass;
$dir->name = 'root';
$dir->path = app.'/assets/img';
$dir->key = false;
$dir->parent = false;
return $dir;
}
// route
$route = str_replace('--', '/', $route);
// current
$dir = new \stdClass;
$dir->name = $route;
$dir->path = app.'/assets/img/'.$route;
$dir->key = str_replace('/', '--', explode('app/assets/img/', $dir->path)[1]);
$dir->parent = explode('--', $dir->key);
array_pop($dir->parent);
$dir->parent = implode('--', $dir->parent);
return $dir;
}
// dirs
static public function dirs($dir) {
// scan
$elements = Dir::scan($dir->path, 'dir');
$elements = $elements->sortBy('path');
// output
$output = [];
foreach($elements as $row) {
// key/value
$key = str_replace('/', '--', explode('app/assets/img/', $row->path)[1]);
$value = $row->name;
// assign
$output[$key] = $value;
}
// output
return $output;
}
// images
static public function images($dir) {
// scan
$elements = Dir::scan($dir->path);
// data
foreach($elements as $key => $row) {
$row->id = $key + 1;
$row->dir = str_replace([app.'/assets/img', $row->name], '', $row->path);
$row->ext = File::ext($row->path);
$size = getimagesize($row->path);
$row->size = $size[0].'x'.$size[1];
}
// sort by path
$elements = $elements->sortBy('path');
// output
return $elements;
}
// image
static public function image($directory, $id) {
// scan
$elements = Asset::images($directory);
// find
if(isset($elements[$id - 1])) {
return $elements[$id - 1];
}
return NULL;
}
}