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

namespace Evsmash\Events\Http\Admin;

use Evsmash\Core\Http\Base;

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

use Evsmash\Events\Event;
use Evsmash\Events\EventsCategory;
use Evsmash\Events\EventsParameter;
use Evsmash\Events\EventsType;

class Events extends Base {

	// index
	public function index() {

		// elements
		if(!Route::get('category')) {
		
			// standard		
			$elements = Event::params()->paginate(Route::limit(100));

		} else {

			// category
			$category = Element::check(new EventsCategory, Route::get('category'));
			$elements = $category->events()->params()->published()->orderBy('created_at', 'desc')->paginate(Route::limit(100));
		}

		// bar
		$bar = [
			'create' => '/events/create',
			'search' => true,
			'params' => [
				['Type', 'type', Element::flat(new EventsType)],
				['Category', 'category', EventsCategory::where('depth', '>', 0)->orderBy('name', 'asc')->pluck('name', 'id')],
				['Promoted', 'promoted', ['true' => 'Yes', 'false' => 'No']],
				['Published', 'published', ['true' => 'Yes', 'false' => 'No']]
			],
			'order' => ['id', 'name'],
			'summary' => $elements,
			'stats' => [
				'views' => $elements->sum('views')
			]
		];

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

	}

	// create
	public function create() {

		// view
		$this->view();

	}

	// insert
	public function insert() {

		// slug
		Post::set('slug', Str::slug(Post::get('name')));

		// insert
		Element::insert(new Event, ['name', 'slug', 'date', 'time', 'date_end', 'place', 'type_id'], ['time' => 'nullable', 'date_end' => 'nullable']);

	}

	// edit
	public function edit() {

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

		// parameters
		$parameters = EventsParameter::form($element);

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

	}

	// update
	public function update() {

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

		// categories
		Element::updatem2m(new Event, 'categories');

		// parameters
		EventsParameter::set($element, Post::get('parameters', 'none'));
		
		// photo
		if(Post::get('remove_photo')) {
			$element = Element::check(new Event);
			$element->photo = '';
			$element->save();
		} 

		// slug
		Post::set('slug', Str::slug(Post::get('slug')));

		// sneak
		if(empty(Post::get('sneak'))) {
			Post::set('sneak', Str::words(Post::get('content'), 100));
		}
		
		// update
		Element::update(new Event, ['name', 'slug', 'content', 'sneak', 'date', 'time', 'date_end', 'place', 'type_id'], ['content' => 'html', 'time' => 'nullable', 'date_end' => 'nullable']);

	}

	// photo
	public function photo() {

		// upload
		$file = Upload::file(cfg('upload-images'));

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

	}

	// thick
	public function thick() {

		Element::thick(new Event, ['promoted', 'published']);

	}

	// delete
	public function delete() {

		Element::delete(new Event);

	}

}