Source for file Breadcrumb.php

Documentation is available at Breadcrumb.php

  1. <?php
  2.     /**
  3.      * Contains the Breadcrumb class
  4.      * 
  5.      * @copyright Copyright (c) 2003-2007 Mirchev Ideas Ltd. All rights reserved.
  6.      * @package MIPHPF
  7.      */
  8.     
  9.     /**
  10.      * Class for displaying the breadcrumb showing the hierarchical structure of the website
  11.      * 
  12.      * @copyright Copyright (c) 2003-2007 Mirchev Ideas Ltd. All rights reserved.
  13.      * @package MIPHPF
  14.      */
  15.     class miBreadcrumb {
  16.         
  17.         /**
  18.          * Tree containing all pages and the hierarchy between them.
  19.          * A page can be in both as a key or as a value. If it is as a key it might have
  20.          * an array of subpages.
  21.          * @access protected
  22.          */
  23.         protected $_pages = array();
  24.         
  25.         
  26.         /**
  27.          * Array with the names of all pages
  28.          * @access protected
  29.          */
  30.         protected $_pageNames = array();
  31.         
  32.         
  33.         /**
  34.          * Contains the separator that is put between the breadcrumb links
  35.          * @access protected
  36.          */
  37.         protected $_separator = '&nbsp;->&nbsp;';
  38.         
  39.         
  40.         /**
  41.          * Contains the link template for each breadcrumb link
  42.          * The %%LINK%% and %%NAME%% params are replaced within it
  43.          * @access protected
  44.          */
  45.         protected $_linkTemplate = '<a href="%%LINK%%">%%NAME%%</a>';
  46.         
  47.         
  48.         /**
  49.          * Contains all index pages names
  50.          * @access protected
  51.          */
  52.         protected $_indexPages = array('/index.html''/index.htm''/index.php''/index.phtml');
  53.         
  54.         
  55.         /**
  56.          * Returns the breadcrumb as HTML
  57.          * 
  58.          * @access public
  59.          * @param string $page 
  60.          * @return string 
  61.          */
  62.         public function getBreadcrumbHtml($page)
  63.         {
  64.             $page $this->stripIndexPage($page);
  65.             
  66.             $path $this->findPage($page$this->_pages);
  67.             if ($path === false)
  68.                 $path array($page);
  69.             
  70.             $html array();
  71.             $t new miTemplateParser;
  72.             $t->setContents($this->_linkTemplate);
  73.             foreach ($path as $page{
  74.                 $t->assign('%%LINK%%'$page);
  75.                 if (isset($this->_pageNames[$page]))
  76.                     $t->assign('%%NAME%%'$this->_pageNames[$page]);
  77.                 else
  78.                     $t->assign('%%NAME%%'$page);
  79.                 $html[$t->templateParse();
  80.             }
  81.             return implode($this->_separator$html);
  82.         }
  83.         
  84.         
  85.         /**
  86.          * If the page ends with an index page name, that index page name is stripped.
  87.          * Otherwise returns the $page unaltered
  88.          * 
  89.          * @access protected
  90.          * @param string $page 
  91.          * @return string 
  92.          */
  93.         protected function stripIndexPage($page)
  94.         {
  95.             foreach ($this->_indexPages as $indexPage)
  96.                 if (strstr($page$indexPage)) {
  97.                     return substr($page0strlen($pagestrlen($indexPage1);
  98.                 }
  99.             return $page;
  100.         }
  101.         
  102.         
  103.         /**
  104.          * Sets the separator between the items in the breadcrumb
  105.          * 
  106.          * @access public
  107.          * @param string $separator 
  108.          */
  109.         public function setSeparator($separator)
  110.         {
  111.             $this->_separator = $separator;
  112.         }
  113.         
  114.         
  115.         /**
  116.          * Sets the link template for each breadcrumb link
  117.          * 
  118.          * @access public
  119.          * @param string $linkTemplate 
  120.          */
  121.         public function setLinkTemplate($linkTemplate)
  122.         {
  123.             $this->_linkTemplate = $linkTemplate;
  124.         }
  125.         
  126.         
  127.         /**
  128.          * Finds the $page in the $pages array and returns array containing the path to it
  129.          * 
  130.          * @access protected
  131.          * @param string $page 
  132.          * @param array $pages 
  133.          * @return array|boolean
  134.          */
  135.         protected function findPage($page$pages)
  136.         {
  137.             if (is_array($pages)) {
  138.                 foreach ($pages as $key => $value{
  139.                     
  140.                     // Check if it the key
  141.                     if ($page === $key{
  142.                         return array($key);
  143.                     }
  144.                     
  145.                     $result $this->findPage($page$value);
  146.                     if (is_array($result)) {
  147.                         array_unshift($result$key);
  148.                         return $result;
  149.                     }
  150.                     if ($result === true{
  151.                         return array($value);
  152.                     }
  153.                 }
  154.             else {
  155.                 if ($page === $pages{
  156.                     return true;
  157.                 }
  158.             }
  159.             return false;
  160.         }
  161.     }
  162. ?>

Documentation generated on Thu, 08 May 2008 16:57:12 +0300 by phpDocumentor 1.4.1