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

namespace Evsmash\Events\Http;

use Evsmash\Core\Http\Base;

use Evsmash\Core\Dec\Thumb;
use Evsmash\Core\Helpers\Str;
use Evsmash\Core\Input\Flash;
use Evsmash\Core\Simpy\Element;
use Evsmash\Core\System\Trans;

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

class Events extends Base {

	// index
	public function index() {

		// elements
		$elements = Event::upcoming()->params()->published()->with('type')->with('categories')->paginate($this->settings->limit);

		// trans
		Trans::get($elements, 'events');

		// view
		$this->viewTitle('Events');
		$this->view(compact(['elements']));

	}

	// type
	public function type() {

		// type
		$type = Element::check(new EventsType);

		// element
		$elements = Event::upcoming()->params()->published()->where('type_id', $type->id)->with('type')->with('categories')->paginate($this->settings->limit);

		// trans
		Trans::get($type, 'events_types');
		Trans::get($elements, 'events');

		// flash
		Flash::set('type', $type->id);

		// view
		$this->viewTitle($type->name);
		$this->view(compact(['elements']), 'evsmash/events/events/index');

	}

	// category
	public function category() {

		// category
		$category = Element::check(new EventsCategory);

		// elements
		$elements = $category->events()->upcoming()->params()->published()->with('type')->with('categories')->paginate($this->settings->limit);

		// trans
		Trans::get($category, 'events_categories');
		Trans::get($elements, 'events');

		// flash
		Flash::set('categories', [$category->id => $category->name]);

		// view
		$this->viewTitle($category->name);
		$this->view(compact(['elements']), 'evsmash/events/events/index');

	}

	// promoted
	public function promoted() {

		// elements
		$elements = Event::upcoming()->params()->promoted()->published()->with('type')->with('categories')->paginate($this->settings->limit);

		// trans
		Trans::get($elements, 'events');

		// view
		$this->viewTitle('Promoted events');
		$this->view(compact(['elements']), 'evsmash/events/events/index');

	}

	// show
	public function show() {

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

		// allowed
		Element::allowed($element, 'published');

		// stats
		Element::stats($element);

		// trans
		Trans::get($element, 'events');

		// flash
		Flash::set('type', $element->type_id);
		Flash::set('categories', $element->categories->pluck('name', 'id'));

		// view
		$this->viewTitle($element->name);
		$this->viewDescription($element->sneak);
		$this->viewPhoto(Thumb::url($element->photo, '1000xauto', ['upsize' => true]));
		$this->view(compact(['element']));

	}

}