<?php
/**
 * @package   DPCalendar
 * @copyright Copyright (C) 2014 Digital Peak GmbH. <https://www.digital-peak.com>
 * @license   https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
 */

namespace DigitalPeak\Component\DPCalendar\Administrator\View\ExtCalendars;

\defined('_JEXEC') or die();

use DigitalPeak\Component\DPCalendar\Administrator\Model\ExtcalendarsModel;
use DigitalPeak\Component\DPCalendar\Administrator\View\BaseView;
use Joomla\CMS\Helper\ContentHelper;
use Joomla\CMS\Pagination\Pagination;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Toolbar\ToolbarHelper;
use Joomla\Registry\Registry;

class HtmlView extends BaseView
{
	/** @var array */
	protected $items;

	/** @var Pagination */
	protected $pagination;

	/** @var Registry */
	protected $pluginParams;

	protected function init(): void
	{
		/** @var ExtcalendarsModel $model */
		$model = $this->getModel();

		$this->items        = $model->getItems();
		$this->pagination   = $model->getPagination();
		$this->pluginParams = new Registry();

		$plugin = PluginHelper::getPlugin('dpcalendar', $this->input->getWord('dpplugin'));
		if ($plugin) {
			$this->pluginParams->loadString($plugin->params);
		}

		if ($errors = $model->getErrors()) {
			throw new \Exception(implode("\n", $errors));
		}
	}

	protected function addToolbar(): void
	{
		$canDo = ContentHelper::getActions('com_dpcalendar');

		if ($canDo->get('core.create') && $this->input->get('import') != '') {
			ToolbarHelper::custom('extcalendars.import', 'refresh', '', 'COM_DPCALENDAR_VIEW_TOOLS_IMPORT', false);
		}
		if ($canDo->get('core.create')) {
			ToolbarHelper::addNew('extcalendar.add');
		}
		if ($canDo->get('core.edit')) {
			ToolbarHelper::editList('extcalendar.edit');
		}
		if ($canDo->get('core.edit.state')) {
			ToolbarHelper::publish('extcalendars.publish', 'JTOOLBAR_PUBLISH', true);
			ToolbarHelper::unpublish('extcalendars.unpublish', 'JTOOLBAR_UNPUBLISH', true);
		}
		if ($canDo->get('core.delete')) {
			ToolbarHelper::deleteList('', 'extcalendars.delete', 'COM_DPCALENDAR_DELETE');
		}
		if ($canDo->get('core.admin', 'com_dpcalendar')) {
			ToolbarHelper::custom('extcalendars.cacheclear', 'lightning', '', 'COM_DPCALENDAR_VIEW_EXTCALENDARS_CACHE_CLEAR_BUTTON', false);
		}
	}
}
