/home/preegmxb/byeaglytics-co.com/components/com_content/src/View/Archive/HtmlView.php
<?php
/**
* @package Joomla.Site
* @subpackage com_content
*
* @copyright (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace Joomla\Component\Content\Site\View\Archive;
\defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\View\GenericDataException;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
use Joomla\CMS\Plugin\PluginHelper;
/**
* HTML View class for the Content component
*
* @since 1.5
*/
class HtmlView extends BaseHtmlView
{
/**
* The model state
*
* @var \JObject
*/
protected $state = null;
/**
* An array containing archived articles
*
* @var \stdClass[]
*/
protected $items = array();
/**
* The pagination object
*
* @var \JPagination|null
*/
protected $pagination = null;
/**
* The years that are available to filter on.
*
* @var array
* @since 3.6.0
*/
protected $years = array();
/**
* Object containing the year, month and limit field to be displayed
*
* @var \stdClass|null
* @since 4.0.0
*/
protected $form = null;
/**
* The page parameters
*
* @var \Joomla\Registry\Registry|null
* @since 4.0.0
*/
protected $params = null;
/**
* The search query used on any archived articles (note this may not be displayed depending on the value of the
* filter_field component parameter)
*
* @var string
* @since 4.0.0
*/
protected $filter = '';
/**
* The user object
*
* @var \JUser
* @since 4.0.0
*/
protected $user = null;
/**
* The page class suffix
*
* @var string
* @since 4.0.0
*/
protected $pageclass_sfx = '';
/**
* Execute and display a template script.
*
* @param string $tpl The name of the template file to parse; automatically searches through the template paths.
*
* @return void
*
* @throws GenericDataException
*/
public function display($tpl = null)
{
$user = Factory::getUser();
$state = $this->get('State');
$items = $this->get('Items');
$pagination = $this->get('Pagination');
if ($errors = $this->getModel()->getErrors())
{
throw new GenericDataException(implode("\n", $errors), 500);
}
// Flag indicates to not add limitstart=0 to URL
$pagination->hideEmptyLimitstart = true;
// Get the page/component configuration
$params = &$state->params;
PluginHelper::importPlugin('content');
foreach ($items as $item)
{
$item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id;
// No link for ROOT category
if ($item->parent_alias === 'root')
{
$item->parent_id = null;
}
$item->event = new \stdClass;
// Old plugins: Ensure that text property is available
if (!isset($item->text))
{
$item->text = $item->introtext;
}
Factory::getApplication()->triggerEvent('onContentPrepare', array('com_content.archive', &$item, &$item->params, 0));
// Old plugins: Use processed text as introtext
$item->introtext = $item->text;
$results = Factory::getApplication()->triggerEvent('onContentAfterTitle', array('com_content.archive', &$item, &$item->params, 0));
$item->event->afterDisplayTitle = trim(implode("\n", $results));
$results = Factory::getApplication()->triggerEvent('onContentBeforeDisplay', array('com_content.archive', &$item, &$item->params, 0));
$item->event->beforeDisplayContent = trim(implode("\n", $results));
$results = Factory::getApplication()->triggerEvent('onContentAfterDisplay', array('com_content.archive', &$item, &$item->params, 0));
$item->event->afterDisplayContent = trim(implode("\n", $results));
}
$form = new \stdClass;
// Month Field
$months = array(
'' => Text::_('COM_CONTENT_MONTH'),
'1' => Text::_('JANUARY_SHORT'),
'2' => Text::_('FEBRUARY_SHORT'),
'3' => Text::_('MARCH_SHORT'),
'4' => Text::_('APRIL_SHORT'),
'5' => Text::_('MAY_SHORT'),
'6' => Text::_('JUNE_SHORT'),
'7' => Text::_('JULY_SHORT'),
'8' => Text::_('AUGUST_SHORT'),
'9' => Text::_('SEPTEMBER_SHORT'),
'10' => Text::_('OCTOBER_SHORT'),
'11' => Text::_('NOVEMBER_SHORT'),
'12' => Text::_('DECEMBER_SHORT')
);
$form->monthField = HTMLHelper::_(
'select.genericlist',
$months,
'month',
array(
'list.attr' => 'class="form-select"',
'list.select' => $state->get('filter.month'),
'option.key' => null
)
);
// Year Field
$this->years = $this->getModel()->getYears();
$years = array();
$years[] = HTMLHelper::_('select.option', null, Text::_('JYEAR'));
for ($i = 0, $iMax = count($this->years); $i < $iMax; $i++)
{
$years[] = HTMLHelper::_('select.option', $this->years[$i], $this->years[$i]);
}
$form->yearField = HTMLHelper::_(
'select.genericlist',
$years,
'year',
array('list.attr' => 'class="form-select"', 'list.select' => $state->get('filter.year'))
);
$form->limitField = $pagination->getLimitBox();
// Escape strings for HTML output
$this->pageclass_sfx = htmlspecialchars($params->get('pageclass_sfx'));
$this->filter = $state->get('list.filter');
$this->form = &$form;
$this->items = &$items;
$this->params = &$params;
$this->user = &$user;
$this->pagination = &$pagination;
$this->pagination->setAdditionalUrlParam('month', $state->get('filter.month'));
$this->pagination->setAdditionalUrlParam('year', $state->get('filter.year'));
$this->_prepareDocument();
parent::display($tpl);
}
/**
* Prepares the document
*
* @return void
*/
protected function _prepareDocument()
{
// Because the application sets a default page title,
// we need to get it from the menu item itself
$menu = Factory::getApplication()->getMenu()->getActive();
if ($menu)
{
$this->params->def('page_heading', $this->params->get('page_title', $menu->title));
}
else
{
$this->params->def('page_heading', Text::_('JGLOBAL_ARTICLES'));
}
$this->setDocumentTitle($this->params->get('page_title', ''));
if ($this->params->get('menu-meta_description'))
{
$this->document->setDescription($this->params->get('menu-meta_description'));
}
if ($this->params->get('robots'))
{
$this->document->setMetaData('robots', $this->params->get('robots'));
}
}
}