git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_WebCongresos/trunk@2 94ccb1af-fd9d-d947-8d90-7f70ea60afc8
287 lines
5.2 KiB
PHP
287 lines
5.2 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: menu.php 14401 2010-01-26 14:10:00Z louis $
|
|
* @package Joomla.Framework
|
|
* @subpackage Application
|
|
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
|
|
* @license GNU/GPL, see LICENSE.php
|
|
* Joomla! is free software. This version may have been modified pursuant
|
|
* to the GNU General Public License, and as distributed it includes or
|
|
* is derivative of works licensed under the GNU General Public License or
|
|
* other free or open source software licenses.
|
|
* See COPYRIGHT.php for copyright notices and details.
|
|
*/
|
|
|
|
// Check to ensure this file is within the rest of the framework
|
|
defined('JPATH_BASE') or die();
|
|
|
|
/**
|
|
* JMenu class
|
|
*
|
|
* @package Joomla.Framework
|
|
* @subpackage Application
|
|
* @since 1.5
|
|
*/
|
|
class JMenu extends JObject
|
|
{
|
|
/**
|
|
* Array to hold the menu items
|
|
*
|
|
* @access private
|
|
* @param array
|
|
*/
|
|
var $_items = array ();
|
|
|
|
/**
|
|
* Identifier of the default menu item
|
|
*
|
|
* @access private
|
|
* @param integer
|
|
*/
|
|
var $_default = 0;
|
|
|
|
/**
|
|
* Identifier of the active menu item
|
|
*
|
|
* @access private
|
|
* @param integer
|
|
*/
|
|
var $_active = 0;
|
|
|
|
|
|
/**
|
|
* Class constructor
|
|
*
|
|
* @access public
|
|
* @return boolean True on success
|
|
*/
|
|
function __construct($options = array())
|
|
{
|
|
$this->load(); //load the menu items
|
|
|
|
foreach ($this->_items as $k => $item)
|
|
{
|
|
if ($item->home) {
|
|
$this->_default = $item->id;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns a reference to a JMenu object
|
|
*
|
|
* This method must be invoked as:
|
|
* <pre> $menu = &JSite::getMenu();</pre>
|
|
*
|
|
* @access public
|
|
* @param string $client The name of the client
|
|
* @param array $options An associative array of options
|
|
* @return JMenu A menu object.
|
|
* @since 1.5
|
|
*/
|
|
function &getInstance($client, $options = array())
|
|
{
|
|
static $instances;
|
|
|
|
if (!isset( $instances )) {
|
|
$instances = array();
|
|
}
|
|
|
|
if (empty($instances[$client]))
|
|
{
|
|
//Load the router object
|
|
$info =& JApplicationHelper::getClientInfo($client, true);
|
|
|
|
$path = $info->path.DS.'includes'.DS.'menu.php';
|
|
if(file_exists($path))
|
|
{
|
|
require_once $path;
|
|
|
|
// Create a JPathway object
|
|
$classname = 'JMenu'.ucfirst($client);
|
|
$instance = new $classname($options);
|
|
}
|
|
else
|
|
{
|
|
//$error = JError::raiseError( 500, 'Unable to load menu: '.$client);
|
|
$error = null; //Jinx : need to fix this
|
|
return $error;
|
|
}
|
|
|
|
$instances[$client] = & $instance;
|
|
}
|
|
|
|
return $instances[$client];
|
|
}
|
|
|
|
/**
|
|
* Get menu item by id
|
|
*
|
|
* @access public
|
|
* @param int The item id
|
|
* @return mixed The item object, or null if not found
|
|
*/
|
|
function &getItem($id)
|
|
{
|
|
$result = null;
|
|
if (isset($this->_items[$id])) {
|
|
$result = &$this->_items[$id];
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Set the default item by id
|
|
*
|
|
* @param int The item id
|
|
* @access public
|
|
* @return True, if succesfull
|
|
*/
|
|
function setDefault($id)
|
|
{
|
|
if(isset($this->_items[$id])) {
|
|
$this->_default = $id;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Get menu item by id
|
|
*
|
|
* @access public
|
|
*
|
|
* @return object The item object
|
|
*/
|
|
function &getDefault()
|
|
{
|
|
$item =& $this->_items[$this->_default];
|
|
return $item;
|
|
}
|
|
|
|
/**
|
|
* Set the default item by id
|
|
*
|
|
* @param int The item id
|
|
* @access public
|
|
* @return If successfull the active item, otherwise null
|
|
*/
|
|
function &setActive($id)
|
|
{
|
|
if(isset($this->_items[$id]))
|
|
{
|
|
$this->_active = $id;
|
|
$result = &$this->_items[$id];
|
|
return $result;
|
|
}
|
|
|
|
$result = null;
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Get menu item by id
|
|
*
|
|
* @access public
|
|
*
|
|
* @return object The item object
|
|
*/
|
|
function &getActive()
|
|
{
|
|
if ($this->_active) {
|
|
$item =& $this->_items[$this->_active];
|
|
return $item;
|
|
}
|
|
|
|
$result = null;
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Gets menu items by attribute
|
|
*
|
|
* @access public
|
|
* @param string The field name
|
|
* @param string The value of the field
|
|
* @param boolean If true, only returns the first item found
|
|
* @return array
|
|
*/
|
|
function getItems($attribute, $value, $firstonly = false)
|
|
{
|
|
$items = null;
|
|
|
|
foreach ($this->_items as $item)
|
|
{
|
|
if ( ! is_object($item) )
|
|
continue;
|
|
|
|
if ($item->$attribute == $value)
|
|
{
|
|
if($firstonly) {
|
|
return $item;
|
|
}
|
|
|
|
$items[] = $item;
|
|
}
|
|
}
|
|
|
|
return $items;
|
|
}
|
|
|
|
/**
|
|
* Gets the parameter object for a certain menu item
|
|
*
|
|
* @access public
|
|
* @param int The item id
|
|
* @return object A JParameter object
|
|
*/
|
|
function &getParams($id)
|
|
{
|
|
$ini = '';
|
|
if ($menu =& $this->getItem($id)) {
|
|
$ini = $menu->params;
|
|
}
|
|
$result = new JParameter( $ini );
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Getter for the menu array
|
|
*
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
function getMenu() {
|
|
return $this->_items;
|
|
}
|
|
|
|
/**
|
|
* Method to check JMenu object authorization against an access control
|
|
* object and optionally an access extension object
|
|
*
|
|
* @access public
|
|
* @param integer $id The menu id
|
|
* @param integer $accessid The users access identifier
|
|
* @return boolean True if authorized
|
|
*/
|
|
function authorize($id, $accessid = 0)
|
|
{
|
|
$menu =& $this->getItem($id);
|
|
return ((isset($menu->access) ? $menu->access : 0) <= $accessid);
|
|
}
|
|
|
|
/**
|
|
* Loads the menu items
|
|
*
|
|
* @abstract
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
function load()
|
|
{
|
|
return array();
|
|
}
|
|
} |