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/banners / libs / Http / Admin / Imgmaps.php
Size: Mime:
<?php

namespace Evsmash\Banners\Http\Admin;

use Evsmash\Core\Http\Base as Base;

use Evsmash\Core\Database\Query;
use Evsmash\Core\Dec\Bar;
use Evsmash\Core\Dec\Thumb;
use Evsmash\Core\Helpers\Redirect;
use Evsmash\Core\Helpers\Str;
use Evsmash\Core\Helpers\Sanitize;
use Evsmash\Core\Helpers\View;
use Evsmash\Core\Input\Route;
use Evsmash\Core\Simpy\Element;

use Evsmash\Banners\Imgmap;

class Imgmaps extends Base {

	// index
	public function index() {

		// rel
		$rel = explode('-', Route::get('rel'));
		$table = Sanitize::alpha($rel[0]);
		if(!isset($rel[1])) {
			die();
		}
		$id = Sanitize::int($rel[1]);

		// element
		$element = null;
		$photo_field = 'photo';
		if($rel[0] == 'banners') {
			$photo_field = 'banner';
		}
		if(in_array($table, cfg('evsmash-banners-imgmaps-tables'))) {
			$element = Query::table($table)->where('id', $id)->select(['id', 'name', $photo_field])->first();
			if(!isset($element->photo)) {
				$element->photo = $element->banner;
			}
		}

		// check
		Element::exists($element);

		// searchin
		$searchin = Route::get('searchin');

		// relation
		$relation = Route::get('rel');

		// dots
		$dots = Imgmap::where('rel', $relation)->get();

		// bar
		$bar = Bar::shared();

		// view
		$this->view(compact(['element', 'searchin', 'relation', 'dots', 'bar']));

	}

	// search
	public function search() {

		// validate
		Route::validate([
			'searchin' => 'req|min:3|max:30',
			'phrase' => 'req|min:3|max:30'
		]);

		// table
		$table = Sanitize::alpha(Route::get('searchin'));

		// check
		$data = [];
		if(in_array($table, cfg('evsmash-banners-imgmaps-tables'))) {

			// phrase
			$phrase = Str::phrase(Route::get('phrase'));

			// elements
			$elements = Query::table($table)->where(cfg('evsmash-banners-imgmaps-searchby'), 'LIKE', '%'.$phrase.'%')->select(['id', 'name', 'photo'])->take(30)->orderBy('id', 'desc')->get();
			foreach($elements as $row) {

				// item
				$item = [];
				$item['id'] = $row->id;
				$item['name'] = Str::words($row->name, 6, '...');
				$item['slug'] = Str::slug($row->name);

				// thumb
				$item['thumb'] = '';
				if(!empty($row->photo)) {
					$item['thumb'] = Thumb::url($row->photo, '75xauto');
				}

				// assign
				$data[] = $item;

			}

		}

		// view
		View::json(['data' => $data]);

	}

	// add
	public function add() {

		// validate
		Route::validate(Imgmap::validate());

		// insert
		$item = new Imgmap;
		$item->rel = Route::get('rel');
		$item->item = Route::get('item');
		$item->name = Route::get('name');
		$item->left = Route::get('left');
		$item->top = Route::get('top');
		$item->save();

		// finish
		Redirect::msg('Added', 'success');
		Redirect::back();

	}

	// delete
	public function delete() {

		Element::delete(new Imgmap);

	}

}