Source for file Page.php

Documentation is available at Page.php

  1. <?php
  2.     /**
  3.      * The page class
  4.      * @copyright Copyright (c) 2006-2007 Mirchev Ideas Ltd. All rights reserved.
  5.      * @package MIPHPF
  6.      */
  7.     
  8.     /**
  9.      * Handles page control and display
  10.      * There could be multiple views on one page
  11.      * 
  12.      * @copyright Copyright (c) 2006-2007 Mirchev Ideas Ltd. All rights reserved.
  13.      * @package MIPHPF
  14.      */
  15.     class miPage {
  16.         /**
  17.          * @access protected
  18.          */
  19.         protected $_views = array();
  20.         
  21.         /**
  22.          * @access protected
  23.          */
  24.         protected $_headerFileName;
  25.         
  26.         /**
  27.          * @access protected
  28.          */
  29.         protected $_footerFileName;
  30.         
  31.         /**
  32.          * The dispatcher object
  33.          *
  34.          * @var miDispatcher 
  35.          */
  36.         protected $_dispatcher;
  37.         
  38.         /**
  39.          * Initializes the page object
  40.          * 
  41.          * @access public
  42.          * @param miView|array$views view or array of views
  43.          */
  44.         public function __construct($views)
  45.         {
  46.             if (is_array($views))
  47.                 $this->_views = $views;
  48.             else
  49.                 $this->_views = array($views);
  50.         }
  51.         
  52.         /**
  53.          * Sets the header file
  54.          * 
  55.          * @param string $headerFileName 
  56.          */
  57.         public function setHeader($headerFileName)
  58.         {
  59.             $this->_headerFileName = $headerFileName;
  60.         }
  61.         
  62.         /**
  63.          * Sets the footer file
  64.          * 
  65.          * @param string $footerFileName 
  66.          */
  67.         public function setFooter($footerFileName)
  68.         {
  69.             $this->_footerFileName = $footerFileName;
  70.         }
  71.         
  72.         /**
  73.          * Process the controller commands
  74.          * 
  75.          * @param array $controllerCommands array of controller command objects
  76.          */
  77.         public function processControllerCommands($controllerCommands)
  78.         {
  79.             foreach ($controllerCommands as $controllerCommand{
  80.                 switch ($controllerCommand->getCommandType()) {
  81.                     case miControllerCommand::CONTROLLER_COMMAND_HTML:
  82.                         echo $controllerCommand->getParam();
  83.                         break;
  84.                     
  85.                     case miControllerCommand::CONTROLLER_COMMAND_REDIRECT:
  86.                         header('Location: ' $controllerCommand->getParam());
  87.                         break;
  88.                 }
  89.             }
  90.         }
  91.         
  92.         /**
  93.          * Shows the page
  94.          * 
  95.          * @access public
  96.          */
  97.         public function showPage()
  98.         {
  99.             if ($this->_headerFileName)
  100.                 require_once($this->_headerFileName);
  101.             
  102.             foreach ($this->_views as $view{
  103.                 $this->processControllerCommands($view->getControllerCommands());
  104.             }
  105.             
  106.             if ($this->_footerFileName)
  107.                 require_once($this->_footerFileName);
  108.         }
  109.         
  110.         /**
  111.          * Returns the dispatcher object
  112.          * Instantiates a miDefaultDispatcher object, if needed
  113.          *
  114.          * @return miDispatcher 
  115.          */
  116.         public function getDispatcher()
  117.         {
  118.             if (count($this->_views!= 1)
  119.                 throw new miException('miPage->getDispatcher() supports only one view.');
  120.             
  121.             if (!isset($this->_dispatcher))
  122.                 $this->_dispatcher = new miDefaultDispatcher($this->_views[0]);
  123.             return $this->_dispatcher;
  124.         }
  125.         
  126.         /**
  127.          * Dispatch an action and show a page with a one view
  128.          */
  129.         public function dispatchAndShow()
  130.         {
  131.             foreach ($this->_views as $view)
  132.                 $view->setController($this);
  133.             
  134.             $this->getDispatcher()->process();
  135.             $this->showPage();
  136.         }
  137.         
  138.         /**
  139.          * Allows runtime changing of the dispatcher object
  140.          * 
  141.          * @param miDispatcher $dispatcher 
  142.          * @return void 
  143.          */
  144.         public function setDispatcher(miDispatcher $dispatcher)
  145.         {
  146.             $this->_dispatcher = $dispatcher;
  147.         }
  148.     }
  149. ?>

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