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 / Banners.php
Size: Mime:
<?php

namespace Evsmash\Banners\Http\Admin;

use Evsmash\Core\Http\Base as Base;

use Evsmash\Core\Files\Upload;
use Evsmash\Core\Helpers\Redirect;
use Evsmash\Core\Input\Post;
use Evsmash\Core\Input\Route;
use Evsmash\Core\Simpy\Element;

use Evsmash\Banners\Banner;
use Evsmash\Banners\Exts\Bar;

class Banners extends Base {

	// index
	public function index() {

		// elements
		$elements = Banner::params()->paginate(Route::limit(100));

		// bar
		$bar = Bar::banners($elements);

		// view
		$this->view(compact(['elements', 'bar']));

	}

	// add
	public function add() {

		// upload
		if($_FILES['file']['type'] == 'video/mp4') {
			$file = Upload::video(cfg('evsmash-banners-upload'));
		} else {
			$file = Upload::file(cfg('evsmash-banners-upload'));
		}

		// update
		$element = new Banner;
		$element->banner = $file->path;
		$element->name = $file->name;
		$element->sort = 1000;
		if(Route::get('group') !== false) {
			$element->group_id = Route::get('group');
		}
		$element->save();

	}

	// edit
	public function edit() {

		// element
		$element = Element::check(new Banner);

		// bar
		$bar = Bar::banner($element);

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

	}

	// update
	public function update() {

		// validate
		Post::validate(new Banner);

		// element
		$item = Element::check(new Banner);

		// update
		$item->name = Post::get('name');
		$item->link = Post::get('link', 'domain');
		$item->description = Post::get('description', 'html');
		if(cfg('evsmash-banners-scheduler-publish')) {
			$item->start = Post::get('start', 'nullable');
			$item->end = Post::get('end', 'nullable');
		}
		$item->group_id = Post::get('group_id');
		$item->language = Post::get('language');
		$item->save();

		// finish
		Redirect::msg('Updated', 'success');
		Redirect::post($item->id);

	}

	// file
	public function file() {

		// upload
		if($_FILES['file']['type'] == 'video/mp4') {
			$file = Upload::video(cfg('evsmash-banners-upload'));
		} else {
			$file = Upload::file(cfg('evsmash-banners-upload'));
		}

		// update
		$element = Element::check(new Banner);
		$element->banner = $file->path;
		$element->save();

	}

	// inline
	public function inline() {

		Element::inline(new Banner, ['name', 'link'], ['link' => 'domain']);

	}

	// thick
	public function thick() {

		Element::thick(new Banner, ['external', 'published']);

	}

	// sort
	public function sort() {

		Element::sort(new Banner);

	}

	// delete
	public function delete() {

		Element::delete(new Banner);

	}

	// stats reset
	public function statsReset() {

		// element
		$element = Element::check(new Banner);

		// reset
		$element->clicks = 0;
		$element->save();

		// redirect
		Redirect::back();

	}

}