[ Index ]

PHP Cross Reference of Joomla 1.5.26 DE

title

Body

[close]

/libraries/joomla/application/ -> pathway.php (source)

   1  <?php
   2  /**
   3  * @version        $Id: pathway.php 14997 2010-02-22 23:27:02Z ian $
   4  * @package        Joomla.Framework
   5  * @subpackage    Application
   6  * @copyright    Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
   7  * @license        GNU/GPL, see LICENSE.php
   8  * Joomla! is free software. This version may have been modified pursuant
   9  * to the GNU General Public License, and as distributed it includes or
  10  * is derivative of works licensed under the GNU General Public License or
  11  * other free or open source software licenses.
  12  * See COPYRIGHT.php for copyright notices and details.
  13  */
  14  
  15  // Check to ensure this file is within the rest of the framework
  16  defined('JPATH_BASE') or die();
  17  
  18  /**
  19   * Class to maintain a pathway.
  20   *
  21   * Main example of use so far is the mod_breadcrumbs module that keeps track of
  22   * the user's navigated path within the Joomla application.
  23   *
  24   * @abstract
  25   * @package     Joomla.Framework
  26   * @subpackage    Application
  27   * @since        1.5
  28   */
  29  class JPathway extends JObject
  30  {
  31      /**
  32       * Array to hold the pathway item objects
  33       * @access private
  34       */
  35      var $_pathway = null;
  36  
  37      /**
  38       * Integer number of items in the pathway
  39       * @access private
  40       */
  41      var $_count = 0;
  42  
  43      /**
  44       * Class constructor
  45       */
  46  	function __construct($options = array())
  47      {
  48          //Initialise the array
  49          $this->_pathway = array();
  50      }
  51  
  52      /**
  53       * Returns a reference a JPathway object
  54       *
  55       * This method must be invoked as:
  56       *         <pre>  $menu = &JPathway::getInstance();</pre>
  57       *
  58       * @access    public
  59       * @param   string  $client  The name of the client
  60       * @param array     $options An associative array of options
  61       * @return JPathway     A pathway object.
  62       * @since    1.5
  63       */
  64      function &getInstance($client, $options = array())
  65      {
  66          static $instances;
  67  
  68          if (!isset( $instances )) {
  69              $instances = array();
  70          }
  71  
  72          if (empty($instances[$client]))
  73          {
  74              //Load the router object
  75              $info =& JApplicationHelper::getClientInfo($client, true);
  76  
  77              $path = $info->path.DS.'includes'.DS.'pathway.php';
  78              if(file_exists($path))
  79              {
  80                  require_once $path;
  81  
  82                  // Create a JPathway object
  83                  $classname = 'JPathway'.ucfirst($client);
  84                  $instance = new $classname($options);
  85              }
  86              else
  87              {
  88                  $error = JError::raiseError( 500, 'Unable to load pathway: '.$client);
  89                  return $error;
  90              }
  91  
  92              $instances[$client] = & $instance;
  93          }
  94  
  95          return $instances[$client];
  96      }
  97  
  98      /**
  99       * Return the JPathWay items array
 100       *
 101       * @access public
 102       * @return array Array of pathway items
 103       * @since 1.5
 104       */
 105  	function getPathway()
 106      {
 107          $pw = $this->_pathway;
 108  
 109          // Use array_values to reset the array keys numerically
 110          return array_values($pw);
 111      }
 112  
 113      /**
 114       * Set the JPathway items array.
 115       *
 116       * @access    public
 117       * @param    array    $pathway    An array of pathway objects.
 118       * @return    array    The previous pathway data.
 119       * @since    1.5
 120       */
 121  	function setPathway($pathway)
 122      {
 123          $oldPathway    = $this->_pathway;
 124          $pathway    = (array) $pathway;
 125  
 126          // Set the new pathway.
 127          $this->_pathway = array_values($pathway);
 128  
 129          return array_values($oldPathway);
 130      }
 131  
 132      /**
 133       * Create and return an array of the pathway names.
 134       *
 135       * @access public
 136       * @return array Array of names of pathway items
 137       * @since 1.5
 138       */
 139  	function getPathwayNames()
 140      {
 141          // Initialize variables
 142          $names = array (null);
 143  
 144          // Build the names array using just the names of each pathway item
 145          foreach ($this->_pathway as $item) {
 146              $names[] = $item->name;
 147          }
 148  
 149          //Use array_values to reset the array keys numerically
 150          return array_values($names);
 151      }
 152  
 153      /**
 154       * Create and add an item to the pathway.
 155       *
 156       * @access public
 157       * @param string $name
 158       * @param string $link
 159       * @return boolean True on success
 160       * @since 1.5
 161       */
 162  	function addItem($name, $link='')
 163      {
 164          // Initalize variables
 165          $ret = false;
 166  
 167          if ($this->_pathway[] = $this->_makeItem($name, $link)) {
 168              $ret = true;
 169              $this->_count++;
 170          }
 171  
 172          return $ret;
 173      }
 174  
 175      /**
 176       * Set item name.
 177       *
 178       * @access public
 179       * @param integer $id
 180       * @param string $name
 181       * @return boolean True on success
 182       * @since 1.5
 183       */
 184  	function setItemName($id, $name)
 185      {
 186          // Initalize variables
 187          $ret = false;
 188  
 189          if (isset($this->_pathway[$id])) {
 190              $this->_pathway[$id]->name = $name;
 191              $ret = true;
 192          }
 193  
 194          return $ret;
 195      }
 196  
 197      /**
 198       * Create and return a new pathway object.
 199       *
 200       * @access private
 201       * @param string $name Name of the item
 202       * @param string $link Link to the item
 203       * @return object Pathway item object
 204       * @since 1.5
 205       */
 206  	function _makeItem($name, $link)
 207      {
 208          $item = new stdClass();
 209          if((version_compare( phpversion(), '5.0' ) < 0)) {
 210              $item->name = html_entity_decode($name);
 211          } else {
 212              $item->name = html_entity_decode($name, ENT_COMPAT, 'UTF-8');
 213          }
 214          $item->link = $link;
 215  
 216          return $item;
 217      }
 218  }


Generated: Wed Mar 28 15:54:07 2012 Cross-referenced by PHPXref 0.7.1