web/Zend/Application/Resource/Frontcontroller.php
changeset 0 4eba9c11703f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/web/Zend/Application/Resource/Frontcontroller.php	Mon Dec 13 18:29:26 2010 +0100
@@ -0,0 +1,163 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category   Zend
+ * @package    Zend_Application
+ * @subpackage Resource
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ * @version    $Id: Frontcontroller.php 23378 2010-11-18 21:48:27Z bittarman $
+ */
+
+/**
+ * @see Zend_Application_Resource_ResourceAbstract
+ */
+require_once 'Zend/Application/Resource/ResourceAbstract.php';
+
+
+/**
+ * Front Controller resource
+ *
+ * @category   Zend
+ * @package    Zend_Application
+ * @subpackage Resource
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Application_Resource_Frontcontroller extends Zend_Application_Resource_ResourceAbstract
+{
+    /**
+     * @var Zend_Controller_Front
+     */
+    protected $_front;
+
+    /**
+     * Initialize Front Controller
+     *
+     * @return Zend_Controller_Front
+     */
+    public function init()
+    {
+        $front = $this->getFrontController();
+
+        foreach ($this->getOptions() as $key => $value) {
+            switch (strtolower($key)) {
+                case 'controllerdirectory':
+                    if (is_string($value)) {
+                        $front->setControllerDirectory($value);
+                    } elseif (is_array($value)) {
+                        foreach ($value as $module => $directory) {
+                            $front->addControllerDirectory($directory, $module);
+                        }
+                    }
+                    break;
+
+                case 'modulecontrollerdirectoryname':
+                    $front->setModuleControllerDirectoryName($value);
+                    break;
+
+                case 'moduledirectory':
+                    if (is_string($value)) {
+                        $front->addModuleDirectory($value);
+                    } elseif (is_array($value)) {
+                        foreach($value as $moduleDir) {
+                            $front->addModuleDirectory($moduleDir);
+                        }
+                    }
+                    break;
+
+                case 'defaultcontrollername':
+                    $front->setDefaultControllerName($value);
+                    break;
+
+                case 'defaultaction':
+                    $front->setDefaultAction($value);
+                    break;
+
+                case 'defaultmodule':
+                    $front->setDefaultModule($value);
+                    break;
+
+                case 'baseurl':
+                    if (!empty($value)) {
+                        $front->setBaseUrl($value);
+                    }
+                    break;
+
+                case 'params':
+                    $front->setParams($value);
+                    break;
+
+                case 'plugins':
+                    foreach ((array) $value as $pluginClass) {
+                    	$stackIndex = null;
+                    	if(is_array($pluginClass)) {
+                    	    $pluginClass = array_change_key_case($pluginClass, CASE_LOWER);
+                            if(isset($pluginClass['class']))
+                            {
+                                if(isset($pluginClass['stackindex'])) {
+                                    $stackIndex = $pluginClass['stackindex'];
+                                }
+
+                                $pluginClass = $pluginClass['class'];
+                            }
+                        }
+
+                        $plugin = new $pluginClass();
+                        $front->registerPlugin($plugin, $stackIndex);
+                    }
+                    break;
+
+                case 'returnresponse':
+                    $front->returnResponse((bool) $value);
+                    break;
+
+                case 'throwexceptions':
+                    $front->throwExceptions((bool) $value);
+                    break;
+
+                case 'actionhelperpaths':
+                    if (is_array($value)) {
+                        foreach ($value as $helperPrefix => $helperPath) {
+                            Zend_Controller_Action_HelperBroker::addPath($helperPath, $helperPrefix);
+                        }
+                    }
+                    break;
+
+                default:
+                    $front->setParam($key, $value);
+                    break;
+            }
+        }
+
+        if (null !== ($bootstrap = $this->getBootstrap())) {
+            $this->getBootstrap()->frontController = $front;
+        }
+
+        return $front;
+    }
+
+    /**
+     * Retrieve front controller instance
+     *
+     * @return Zend_Controller_Front
+     */
+    public function getFrontController()
+    {
+        if (null === $this->_front) {
+            $this->_front = Zend_Controller_Front::getInstance();
+        }
+        return $this->_front;
+    }
+}