Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
evsmash/files / libs / Asset.php
Size: Mime:
<?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;

	}

}