File "category.php"
Full Path: /home/asmplong/www/ancien-site-2019/site/libraries/joomla/html/html/category.php
File size: 3.93 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* @package Joomla.Platform
* @subpackage HTML
*
* @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die;
/**
* Utility class for categories
*
* @package Joomla.Platform
* @subpackage HTML
* @since 11.1
*/
abstract class JHtmlCategory
{
/**
* Cached array of the category items.
*
* @var array
* @since 11.1
*/
protected static $items = array();
/**
* Returns an array of categories for the given extension.
*
* @param string $extension The extension option e.g. com_something.
* @param array $config An array of configuration options. By default, only
* published and unpublished categories are returned.
*
* @return array
*
* @since 11.1
*/
public static function options($extension, $config = array('filter.published' => array(0,1)))
{
$hash = md5($extension.'.'.serialize($config));
if (!isset(self::$items[$hash])) {
$config = (array) $config;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('a.id, a.title, a.level');
$query->from('#__categories AS a');
$query->where('a.parent_id > 0');
// Filter on extension.
$query->where('extension = '.$db->quote($extension));
// Filter on the published state
if (isset($config['filter.published'])) {
if (is_numeric($config['filter.published'])) {
$query->where('a.published = '.(int) $config['filter.published']);
} else if (is_array($config['filter.published'])) {
JArrayHelper::toInteger($config['filter.published']);
$query->where('a.published IN ('.implode(',', $config['filter.published']).')');
}
}
$query->order('a.lft');
$db->setQuery($query);
$items = $db->loadObjectList();
// Assemble the list options.
self::$items[$hash] = array();
foreach ($items as &$item) {
$repeat = ( $item->level - 1 >= 0 ) ? $item->level - 1 : 0;
$item->title = str_repeat('- ', $repeat).$item->title;
self::$items[$hash][] = JHtml::_('select.option', $item->id, $item->title);
}
}
return self::$items[$hash];
}
/**
* Returns an array of categories for the given extension.
*
* @param string The extension option.
* @param array An array of configuration options. By default, only published and unpulbished categories are returned.
*
* @return array
*
* @since 11.1
*/
public static function categories($extension, $config = array('filter.published' => array(0,1)))
{
$hash = md5($extension.'.'.serialize($config));
if (!isset(self::$items[$hash])) {
$config = (array) $config;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('a.id, a.title, a.level, a.parent_id');
$query->from('#__categories AS a');
$query->where('a.parent_id > 0');
// Filter on extension.
$query->where('extension = '.$db->quote($extension));
// Filter on the published state
if (isset($config['filter.published'])) {
if (is_numeric($config['filter.published'])) {
$query->where('a.published = '.(int) $config['filter.published']);
} else if (is_array($config['filter.published'])) {
JArrayHelper::toInteger($config['filter.published']);
$query->where('a.published IN ('.implode(',', $config['filter.published']).')');
}
}
$query->order('a.lft');
$db->setQuery($query);
$items = $db->loadObjectList();
// Assemble the list options.
self::$items[$hash] = array();
foreach ($items as &$item) {
$repeat = ( $item->level - 1 >= 0 ) ? $item->level - 1 : 0;
$item->title = str_repeat('- ', $repeat).$item->title;
self::$items[$hash][] = JHtml::_('select.option', $item->id, $item->title);
}
// Special "Add to root" option:
self::$items[$hash][] = JHtml::_('select.option', '1', JText::_('JLIB_HTML_ADD_TO_ROOT'));
}
return self::$items[$hash];
}
}