Server : LiteSpeed System : Linux server 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : alsaif ( 1057) PHP Version : 7.4.33 Disable Function : show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/alsaif/domains/alsaif.group/private_html/components/com_content/views/category/ |
<?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
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\Registry\Registry;
/**
* HTML View class for the Content component
*
* @since 1.5
*/
class ContentViewCategory extends JViewCategory
{
/**
* @var array Array of leading items for blog display
* @since 3.2
*/
protected $lead_items = array();
/**
* @var array Array of intro (multicolumn display) items for blog display
* @since 3.2
*/
protected $intro_items = array();
/**
* @var array Array of links in blog display
* @since 3.2
*/
protected $link_items = array();
/**
* @var integer Number of columns in a multi column display
* @since 3.2
* @deprecated 4.0
*/
protected $columns = 1;
/**
* @var string The name of the extension for the category
* @since 3.2
*/
protected $extension = 'com_content';
/**
* @var string Default title to use for page title
* @since 3.2
*/
protected $defaultPageTitle = 'JGLOBAL_ARTICLES';
/**
* @var string The name of the view to link individual items to
* @since 3.2
*/
protected $viewName = 'article';
/**
* Execute and display a template script.
*
* @param string $tpl The name of the template file to parse; automatically searches through the template paths.
*
* @return mixed A string if successful, otherwise an Error object.
*/
public function display($tpl = null)
{
parent::commonCategoryDisplay();
// Flag indicates to not add limitstart=0 to URL
$this->pagination->hideEmptyLimitstart = true;
// Prepare the data
// Get the metrics for the structural page layout.
$params = $this->params;
$numLeading = $params->def('num_leading_articles', 1);
$numIntro = $params->def('num_intro_articles', 4);
$numLinks = $params->def('num_links', 4);
$this->vote = PluginHelper::isEnabled('content', 'vote');
PluginHelper::importPlugin('content');
$dispatcher = JEventDispatcher::getInstance();
// Compute the article slugs and prepare introtext (runs content plugins).
foreach ($this->items as $item)
{
$item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id;
$item->parent_slug = $item->parent_alias ? ($item->parent_id . ':' . $item->parent_alias) : $item->parent_id;
// No link for ROOT category
if ($item->parent_alias === 'root')
{
$item->parent_slug = null;
}
$item->catslug = $item->category_alias ? ($item->catid . ':' . $item->category_alias) : $item->catid;
$item->event = new stdClass;
// Old plugins: Ensure that text property is available
if (!isset($item->text))
{
$item->text = $item->introtext;
}
$dispatcher->trigger('onContentPrepare', array ('com_content.category', &$item, &$item->params, 0));
// Old plugins: Use processed text as introtext
$item->introtext = $item->text;
$results = $dispatcher->trigger('onContentAfterTitle', array('com_content.category', &$item, &$item->params, 0));
$item->event->afterDisplayTitle = trim(implode("\n", $results));
$results = $dispatcher->trigger('onContentBeforeDisplay', array('com_content.category', &$item, &$item->params, 0));
$item->event->beforeDisplayContent = trim(implode("\n", $results));
$results = $dispatcher->trigger('onContentAfterDisplay', array('com_content.category', &$item, &$item->params, 0));
$item->event->afterDisplayContent = trim(implode("\n", $results));
}
// For blog layouts, preprocess the breakdown of leading, intro and linked articles.
// This makes it much easier for the designer to just interrogate the arrays.
if ($params->get('layout_type') === 'blog' || $this->getLayout() === 'blog')
{
foreach ($this->items as $i => $item)
{
if ($i < $numLeading)
{
$this->lead_items[] = $item;
}
elseif ($i >= $numLeading && $i < $numLeading + $numIntro)
{
$this->intro_items[] = $item;
}
elseif ($i < $numLeading + $numIntro + $numLinks)
{
$this->link_items[] = $item;
}
else
{
continue;
}
}
$this->columns = max(1, $params->def('num_columns', 1));
$order = $params->def('multi_column_order', 1);
if ($order == 0 && $this->columns > 1)
{
// Call order down helper
$this->intro_items = ContentHelperQuery::orderDownColumns($this->intro_items, $this->columns);
}
}
// Because the application sets a default page title,
// we need to get it from the menu item itself
$app = Factory::getApplication();
$active = $app->getMenu()->getActive();
if ($active
&& $active->component == 'com_content'
&& isset($active->query['view'], $active->query['id'])
&& $active->query['view'] == 'category'
&& $active->query['id'] == $this->category->id)
{
$this->params->def('page_heading', $this->params->get('page_title', $active->title));
$title = $this->params->get('page_title', $active->title);
}
else
{
$this->params->def('page_heading', $this->category->title);
$title = $this->category->title;
$this->params->set('page_title', $title);
}
// Check for empty title and add site name if param is set
if (empty($title))
{
$title = $app->get('sitename');
}
elseif ($app->get('sitename_pagetitles', 0) == 1)
{
$title = JText::sprintf('JPAGETITLE', $app->get('sitename'), $title);
}
elseif ($app->get('sitename_pagetitles', 0) == 2)
{
$title = JText::sprintf('JPAGETITLE', $title, $app->get('sitename'));
}
if (empty($title))
{
$title = $this->category->title;
}
$this->document->setTitle($title);
if ($this->category->metadesc)
{
$this->document->setDescription($this->category->metadesc);
}
elseif ($this->params->get('menu-meta_description'))
{
$this->document->setDescription($this->params->get('menu-meta_description'));
}
if ($this->category->metakey)
{
$this->document->setMetadata('keywords', $this->category->metakey);
}
elseif ($this->params->get('menu-meta_keywords'))
{
$this->document->setMetadata('keywords', $this->params->get('menu-meta_keywords'));
}
if ($this->params->get('robots'))
{
$this->document->setMetadata('robots', $this->params->get('robots'));
}
if (!is_object($this->category->metadata))
{
$this->category->metadata = new Registry($this->category->metadata);
}
if (($app->get('MetaAuthor') == '1') && $this->category->get('author', ''))
{
$this->document->setMetaData('author', $this->category->get('author', ''));
}
$mdata = $this->category->metadata->toArray();
foreach ($mdata as $k => $v)
{
if ($v)
{
$this->document->setMetadata($k, $v);
}
}
return parent::display($tpl);
}
/**
* Prepares the document
*
* @return void
*/
protected function prepareDocument()
{
parent::prepareDocument();
$menu = $this->menu;
$id = (int) @$menu->query['id'];
if ($menu && (!isset($menu->query['option']) || $menu->query['option'] !== 'com_content' || $menu->query['view'] === 'article'
|| $id != $this->category->id))
{
$path = array(array('title' => $this->category->title, 'link' => ''));
$category = $this->category->getParent();
while ($category !== null && $category->id !== 'root'
&& (!isset($menu->query['option']) || $menu->query['option'] !== 'com_content' || $menu->query['view'] === 'article' || $id != $category->id))
{
$path[] = array('title' => $category->title, 'link' => ContentHelperRoute::getCategoryRoute($category->id));
$category = $category->getParent();
}
$path = array_reverse($path);
foreach ($path as $item)
{
$this->pathway->addItem($item['title'], $item['link']);
}
}
parent::addFeed();
}
}