ForwardFW
[ class tree: ForwardFW ] [ index: ForwardFW ] [ all elements ]

Source for file Application.php

Documentation is available at Application.php

  1. <?php
  2. declare(encoding "utf-8");
  3. /**
  4.  * This file is part of ForwardFW a web application framework.
  5.  *
  6.  * This library is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2.1 of the License, or (at your option) any later version.
  10.  *
  11.  * This library is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public
  17.  * License along with this library; if not, write to the Free Software
  18.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19.  *
  20.  * PHP version 5
  21.  *
  22.  * @category   Application
  23.  * @package    ForwardFW
  24.  * @subpackage Controller
  25.  * @author     Alexander Opitz <opitz.alexander@primacom.net>
  26.  * @copyright  2009-2010 The Authors
  27.  * @license    http://www.gnu.org/copyleft/gpl.html GNU General Public License
  28.  * @version    SVN: $Id: $
  29.  * @link       http://forwardfw.sourceforge.net
  30.  * @since      File available since Release 0.0.1
  31.  */
  32.  
  33. /**
  34.  *
  35.  */
  36. require_once 'ForwardFW/Controller/View.php';
  37. require_once 'ForwardFW/Interface/Application.php';
  38. require_once 'ForwardFW/Request.php';
  39. require_once 'ForwardFW/Response.php';
  40. //require_once 'ForwardFW/Exception/Screen.php';
  41. //require_once 'ForwardFW/Exception/Application.php';
  42.  
  43. /**
  44.  * This Controller over one application.
  45.  *
  46.  * @category   Application
  47.  * @package    ForwardFW
  48.  * @subpackage Controller
  49.  * @author     Alexander Opitz <opitz.alexander@primacom.net>
  50.  * @license    http://www.gnu.org/copyleft/gpl.html GNU General Public License
  51.  * @link       http://forwardfw.sourceforge.net
  52.  */
  53. {
  54.     /**
  55.      * Configuration name of application
  56.      *
  57.      * @var String 
  58.      */
  59.     protected $strName;
  60.  
  61.     /**
  62.      * The request object.
  63.      *
  64.      * @var ForwardFW_Request 
  65.      */
  66.     protected $request;
  67.  
  68.     /**
  69.      * The response object.
  70.      *
  71.      * @var ForwardFW_Response 
  72.      */
  73.     protected $response;
  74.  
  75.     /**
  76.      * screens for this application
  77.      *
  78.      * @var array 
  79.      */
  80.     private $arScreens = array();
  81.  
  82.     /**
  83.      * Constructor
  84.      *
  85.      * @param string             $strName  Name of application
  86.      * @param ForwardFW_Request  $request  The request object.
  87.      * @param ForwardFW_Response $response The request object.
  88.      *
  89.      * @return void 
  90.      */
  91.     public function __construct(
  92.         $strName,
  93.         ForwardFW_Request $request,
  94.         ForwardFW_Response $response
  95.     {
  96.         $this->strName = $strName;
  97.         $this->request            = $request;
  98.         $this->response           = $response;
  99.  
  100.         parent::__construct($this);
  101.  
  102.         $this->arScreens = $this->getConfigParameter('screens');
  103.  
  104.         if (count($this->arScreens=== 0{
  105.             die(
  106.                 'No Screen defined for application: ' $this->strName
  107.             );
  108.         }
  109.     }
  110.  
  111.     /**
  112.      * Run screen and return generated content
  113.      *
  114.      * @return void 
  115.      */
  116.     function run()
  117.     {
  118.         $strProcessScreen $this->getProcessScreen();
  119.  
  120.         try {
  121.             $this->screen $this->getScreen($strProcessScreen);
  122.             if (!is_null($this->screen)) {
  123.                 // @TODO evaluate State of Screen
  124.                 $strResult $this->processView();
  125.             }
  126.         catch (ForwardFW_Exception $e{
  127.             // Todo Inner Exception Logging
  128.             throw $e;
  129.         catch (Exception $e{
  130.             // Todo Logging
  131.             throw $e;
  132.         }
  133.         $this->response->addContent($strResult);
  134.     }
  135.  
  136.     /**
  137.      * Returns name of screen to be processed
  138.      *
  139.      * @return string name of screen to process
  140.      */
  141.     function getProcessScreen()
  142.     {
  143.         $strProcessScreen $this->getParameter('screen');
  144.         if (!isset($this->arScreens[$strProcessScreen])) {
  145.             $strProcessScreen reset(array_keys($this->arScreens));
  146.         }
  147.         return $strProcessScreen;
  148.     }
  149.  
  150.     /**
  151.      * Load and return screen $strScreen
  152.      *
  153.      * @param string $strScreen name of screen
  154.      *
  155.      * @return T3_Controller_Screen 
  156.      */
  157.     function getScreen($strScreen)
  158.     {
  159.         $strFile str_replace('_''/'$this->arScreens[$strScreen]'.php';
  160.  
  161.         $rIncludeFile @fopen($strFile'r'true);
  162.         if ($rIncludeFile{
  163.             fclose($rIncludeFile);
  164.             $ret include_once $strFile;
  165.             //Screen vorhanden?
  166.             if (!$ret{
  167.                 $this->response->addError('Screen not includeable.');
  168.             else {
  169.                 $screenController
  170.                     = new $this->arScreens[$strScreen]($this);
  171.             }
  172.         else {
  173.             $this->response->addError(
  174.                 'Screen Controller File "'.htmlspecialchars($strFile).'" not found'
  175.             );
  176.         }
  177.         return $screenController;
  178.     }
  179.  
  180.     /**
  181.      * Processes the View.
  182.      *
  183.      * @return string what to view
  184.      */
  185.     public function processView()
  186.     {
  187.         $templater ForwardFW_Templater::factory($this->application);
  188.         $templater->setVar('SCREEN'$this->screen->process());
  189.         return parent::processView();
  190.     }
  191.  
  192.     /**
  193.      * Returns the name of the application
  194.      *
  195.      * @return string 
  196.      */
  197.     public function getName()
  198.     {
  199.         return $this->strName;
  200.     }
  201.  
  202.     /**
  203.      * Returns the request object
  204.      *
  205.      * @return ForwardFW_Request 
  206.      */
  207.     public function getRequest()
  208.     {
  209.         return $this->request;
  210.     }
  211.  
  212.     /**
  213.      * Returns the response object
  214.      *
  215.      * @return ForwardFW_Response 
  216.      */
  217.     public function getResponse()
  218.     {
  219.         return $this->response;
  220.     }
  221.  
  222.     /**
  223.      * Returns the screen configuration for this application.
  224.      *
  225.      * @return array With the config entry
  226.      */
  227.     public function getScreens()
  228.     {
  229.         return $this->arScreens;
  230.     }
  231. }
  232. ?>

Documentation generated on Sun, 30 Jan 2011 20:46:37 +0100 by phpDocumentor 1.4.3