CC-2166: Packaging Improvements. Moved the Zend app into airtime_mvc. It is now installed to /var/www/airtime. Storage is now set to /srv/airtime/stor. Utils are now installed to /usr/lib/airtime/utils/. Added install/airtime-dircheck.php as a simple test to see if everything is install/uninstalled correctly.
This commit is contained in:
parent
514777e8d2
commit
b11cbd8159
4546 changed files with 138 additions and 51 deletions
440
airtime_mvc/library/Zend/Controller/Dispatcher/Abstract.php
Normal file
440
airtime_mvc/library/Zend/Controller/Dispatcher/Abstract.php
Normal file
|
@ -0,0 +1,440 @@
|
|||
<?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_Controller
|
||||
* @subpackage Dispatcher
|
||||
* @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: Abstract.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/** Zend_Controller_Dispatcher_Interface */
|
||||
require_once 'Zend/Controller/Dispatcher/Interface.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Controller
|
||||
* @subpackage Dispatcher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
abstract class Zend_Controller_Dispatcher_Abstract implements Zend_Controller_Dispatcher_Interface
|
||||
{
|
||||
/**
|
||||
* Default action
|
||||
* @var string
|
||||
*/
|
||||
protected $_defaultAction = 'index';
|
||||
|
||||
/**
|
||||
* Default controller
|
||||
* @var string
|
||||
*/
|
||||
protected $_defaultController = 'index';
|
||||
|
||||
/**
|
||||
* Default module
|
||||
* @var string
|
||||
*/
|
||||
protected $_defaultModule = 'default';
|
||||
|
||||
/**
|
||||
* Front Controller instance
|
||||
* @var Zend_Controller_Front
|
||||
*/
|
||||
protected $_frontController;
|
||||
|
||||
/**
|
||||
* Array of invocation parameters to use when instantiating action
|
||||
* controllers
|
||||
* @var array
|
||||
*/
|
||||
protected $_invokeParams = array();
|
||||
|
||||
/**
|
||||
* Path delimiter character
|
||||
* @var string
|
||||
*/
|
||||
protected $_pathDelimiter = '_';
|
||||
|
||||
/**
|
||||
* Response object to pass to action controllers, if any
|
||||
* @var Zend_Controller_Response_Abstract|null
|
||||
*/
|
||||
protected $_response = null;
|
||||
|
||||
/**
|
||||
* Word delimiter characters
|
||||
* @var array
|
||||
*/
|
||||
protected $_wordDelimiter = array('-', '.');
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $params = array())
|
||||
{
|
||||
$this->setParams($params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats a string into a controller name. This is used to take a raw
|
||||
* controller name, such as one stored inside a Zend_Controller_Request_Abstract
|
||||
* object, and reformat it to a proper class name that a class extending
|
||||
* Zend_Controller_Action would use.
|
||||
*
|
||||
* @param string $unformatted
|
||||
* @return string
|
||||
*/
|
||||
public function formatControllerName($unformatted)
|
||||
{
|
||||
return ucfirst($this->_formatName($unformatted)) . 'Controller';
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats a string into an action name. This is used to take a raw
|
||||
* action name, such as one that would be stored inside a Zend_Controller_Request_Abstract
|
||||
* object, and reformat into a proper method name that would be found
|
||||
* inside a class extending Zend_Controller_Action.
|
||||
*
|
||||
* @param string $unformatted
|
||||
* @return string
|
||||
*/
|
||||
public function formatActionName($unformatted)
|
||||
{
|
||||
$formatted = $this->_formatName($unformatted, true);
|
||||
return strtolower(substr($formatted, 0, 1)) . substr($formatted, 1) . 'Action';
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify delimiter
|
||||
*
|
||||
* Verify a delimiter to use in controllers or actions. May be a single
|
||||
* string or an array of strings.
|
||||
*
|
||||
* @param string|array $spec
|
||||
* @return array
|
||||
* @throws Zend_Controller_Dispatcher_Exception with invalid delimiters
|
||||
*/
|
||||
public function _verifyDelimiter($spec)
|
||||
{
|
||||
if (is_string($spec)) {
|
||||
return (array) $spec;
|
||||
} elseif (is_array($spec)) {
|
||||
$allStrings = true;
|
||||
foreach ($spec as $delim) {
|
||||
if (!is_string($delim)) {
|
||||
$allStrings = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$allStrings) {
|
||||
require_once 'Zend/Controller/Dispatcher/Exception.php';
|
||||
throw new Zend_Controller_Dispatcher_Exception('Word delimiter array must contain only strings');
|
||||
}
|
||||
|
||||
return $spec;
|
||||
}
|
||||
|
||||
require_once 'Zend/Controller/Dispatcher/Exception.php';
|
||||
throw new Zend_Controller_Dispatcher_Exception('Invalid word delimiter');
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the word delimiter character(s) used in
|
||||
* controller or action names
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getWordDelimiter()
|
||||
{
|
||||
return $this->_wordDelimiter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set word delimiter
|
||||
*
|
||||
* Set the word delimiter to use in controllers and actions. May be a
|
||||
* single string or an array of strings.
|
||||
*
|
||||
* @param string|array $spec
|
||||
* @return Zend_Controller_Dispatcher_Abstract
|
||||
*/
|
||||
public function setWordDelimiter($spec)
|
||||
{
|
||||
$spec = $this->_verifyDelimiter($spec);
|
||||
$this->_wordDelimiter = $spec;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the path delimiter character(s) used in
|
||||
* controller names
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getPathDelimiter()
|
||||
{
|
||||
return $this->_pathDelimiter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set path delimiter
|
||||
*
|
||||
* Set the path delimiter to use in controllers. May be a single string or
|
||||
* an array of strings.
|
||||
*
|
||||
* @param string $spec
|
||||
* @return Zend_Controller_Dispatcher_Abstract
|
||||
*/
|
||||
public function setPathDelimiter($spec)
|
||||
{
|
||||
if (!is_string($spec)) {
|
||||
require_once 'Zend/Controller/Dispatcher/Exception.php';
|
||||
throw new Zend_Controller_Dispatcher_Exception('Invalid path delimiter');
|
||||
}
|
||||
$this->_pathDelimiter = $spec;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Formats a string from a URI into a PHP-friendly name.
|
||||
*
|
||||
* By default, replaces words separated by the word separator character(s)
|
||||
* with camelCaps. If $isAction is false, it also preserves replaces words
|
||||
* separated by the path separation character with an underscore, making
|
||||
* the following word Title cased. All non-alphanumeric characters are
|
||||
* removed.
|
||||
*
|
||||
* @param string $unformatted
|
||||
* @param boolean $isAction Defaults to false
|
||||
* @return string
|
||||
*/
|
||||
protected function _formatName($unformatted, $isAction = false)
|
||||
{
|
||||
// preserve directories
|
||||
if (!$isAction) {
|
||||
$segments = explode($this->getPathDelimiter(), $unformatted);
|
||||
} else {
|
||||
$segments = (array) $unformatted;
|
||||
}
|
||||
|
||||
foreach ($segments as $key => $segment) {
|
||||
$segment = str_replace($this->getWordDelimiter(), ' ', strtolower($segment));
|
||||
$segment = preg_replace('/[^a-z0-9 ]/', '', $segment);
|
||||
$segments[$key] = str_replace(' ', '', ucwords($segment));
|
||||
}
|
||||
|
||||
return implode('_', $segments);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve front controller instance
|
||||
*
|
||||
* @return Zend_Controller_Front
|
||||
*/
|
||||
public function getFrontController()
|
||||
{
|
||||
if (null === $this->_frontController) {
|
||||
require_once 'Zend/Controller/Front.php';
|
||||
$this->_frontController = Zend_Controller_Front::getInstance();
|
||||
}
|
||||
|
||||
return $this->_frontController;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set front controller instance
|
||||
*
|
||||
* @param Zend_Controller_Front $controller
|
||||
* @return Zend_Controller_Dispatcher_Abstract
|
||||
*/
|
||||
public function setFrontController(Zend_Controller_Front $controller)
|
||||
{
|
||||
$this->_frontController = $controller;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add or modify a parameter to use when instantiating an action controller
|
||||
*
|
||||
* @param string $name
|
||||
* @param mixed $value
|
||||
* @return Zend_Controller_Dispatcher_Abstract
|
||||
*/
|
||||
public function setParam($name, $value)
|
||||
{
|
||||
$name = (string) $name;
|
||||
$this->_invokeParams[$name] = $value;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set parameters to pass to action controller constructors
|
||||
*
|
||||
* @param array $params
|
||||
* @return Zend_Controller_Dispatcher_Abstract
|
||||
*/
|
||||
public function setParams(array $params)
|
||||
{
|
||||
$this->_invokeParams = array_merge($this->_invokeParams, $params);
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a single parameter from the controller parameter stack
|
||||
*
|
||||
* @param string $name
|
||||
* @return mixed
|
||||
*/
|
||||
public function getParam($name)
|
||||
{
|
||||
if(isset($this->_invokeParams[$name])) {
|
||||
return $this->_invokeParams[$name];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve action controller instantiation parameters
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getParams()
|
||||
{
|
||||
return $this->_invokeParams;
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear the controller parameter stack
|
||||
*
|
||||
* By default, clears all parameters. If a parameter name is given, clears
|
||||
* only that parameter; if an array of parameter names is provided, clears
|
||||
* each.
|
||||
*
|
||||
* @param null|string|array single key or array of keys for params to clear
|
||||
* @return Zend_Controller_Dispatcher_Abstract
|
||||
*/
|
||||
public function clearParams($name = null)
|
||||
{
|
||||
if (null === $name) {
|
||||
$this->_invokeParams = array();
|
||||
} elseif (is_string($name) && isset($this->_invokeParams[$name])) {
|
||||
unset($this->_invokeParams[$name]);
|
||||
} elseif (is_array($name)) {
|
||||
foreach ($name as $key) {
|
||||
if (is_string($key) && isset($this->_invokeParams[$key])) {
|
||||
unset($this->_invokeParams[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set response object to pass to action controllers
|
||||
*
|
||||
* @param Zend_Controller_Response_Abstract|null $response
|
||||
* @return Zend_Controller_Dispatcher_Abstract
|
||||
*/
|
||||
public function setResponse(Zend_Controller_Response_Abstract $response = null)
|
||||
{
|
||||
$this->_response = $response;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the registered response object
|
||||
*
|
||||
* @return Zend_Controller_Response_Abstract|null
|
||||
*/
|
||||
public function getResponse()
|
||||
{
|
||||
return $this->_response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the default controller (minus any formatting)
|
||||
*
|
||||
* @param string $controller
|
||||
* @return Zend_Controller_Dispatcher_Abstract
|
||||
*/
|
||||
public function setDefaultControllerName($controller)
|
||||
{
|
||||
$this->_defaultController = (string) $controller;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the default controller name (minus formatting)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDefaultControllerName()
|
||||
{
|
||||
return $this->_defaultController;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the default action (minus any formatting)
|
||||
*
|
||||
* @param string $action
|
||||
* @return Zend_Controller_Dispatcher_Abstract
|
||||
*/
|
||||
public function setDefaultAction($action)
|
||||
{
|
||||
$this->_defaultAction = (string) $action;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the default action name (minus formatting)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDefaultAction()
|
||||
{
|
||||
return $this->_defaultAction;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the default module
|
||||
*
|
||||
* @param string $module
|
||||
* @return Zend_Controller_Dispatcher_Abstract
|
||||
*/
|
||||
public function setDefaultModule($module)
|
||||
{
|
||||
$this->_defaultModule = (string) $module;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the default module
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDefaultModule()
|
||||
{
|
||||
return $this->_defaultModule;
|
||||
}
|
||||
}
|
37
airtime_mvc/library/Zend/Controller/Dispatcher/Exception.php
Normal file
37
airtime_mvc/library/Zend/Controller/Dispatcher/Exception.php
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?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_Controller
|
||||
* @subpackage Dispatcher
|
||||
* @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: Exception.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
|
||||
/** Zend_Controller_Exception */
|
||||
require_once 'Zend/Controller/Exception.php';
|
||||
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Controller
|
||||
* @subpackage Dispatcher
|
||||
* @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_Controller_Dispatcher_Exception extends Zend_Controller_Exception
|
||||
{}
|
||||
|
206
airtime_mvc/library/Zend/Controller/Dispatcher/Interface.php
Normal file
206
airtime_mvc/library/Zend/Controller/Dispatcher/Interface.php
Normal file
|
@ -0,0 +1,206 @@
|
|||
<?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_Controller
|
||||
* @subpackage Dispatcher
|
||||
* @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: Interface.php 20096 2010-01-06 02:05:09Z bkarwin $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Zend_Controller_Request_Abstract
|
||||
*/
|
||||
require_once 'Zend/Controller/Request/Abstract.php';
|
||||
|
||||
/**
|
||||
* Zend_Controller_Response_Abstract
|
||||
*/
|
||||
require_once 'Zend/Controller/Response/Abstract.php';
|
||||
|
||||
/**
|
||||
* @package Zend_Controller
|
||||
* @subpackage Dispatcher
|
||||
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
|
||||
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||||
*/
|
||||
interface Zend_Controller_Dispatcher_Interface
|
||||
{
|
||||
/**
|
||||
* Formats a string into a controller name. This is used to take a raw
|
||||
* controller name, such as one that would be packaged inside a request
|
||||
* object, and reformat it to a proper class name that a class extending
|
||||
* Zend_Controller_Action would use.
|
||||
*
|
||||
* @param string $unformatted
|
||||
* @return string
|
||||
*/
|
||||
public function formatControllerName($unformatted);
|
||||
|
||||
/**
|
||||
* Formats a string into a module name. This is used to take a raw
|
||||
* module name, such as one that would be packaged inside a request
|
||||
* object, and reformat it to a proper directory/class name that a class extending
|
||||
* Zend_Controller_Action would use.
|
||||
*
|
||||
* @param string $unformatted
|
||||
* @return string
|
||||
*/
|
||||
public function formatModuleName($unformatted);
|
||||
|
||||
/**
|
||||
* Formats a string into an action name. This is used to take a raw
|
||||
* action name, such as one that would be packaged inside a request
|
||||
* object, and reformat into a proper method name that would be found
|
||||
* inside a class extending Zend_Controller_Action.
|
||||
*
|
||||
* @param string $unformatted
|
||||
* @return string
|
||||
*/
|
||||
public function formatActionName($unformatted);
|
||||
|
||||
/**
|
||||
* Returns TRUE if an action can be dispatched, or FALSE otherwise.
|
||||
*
|
||||
* @param Zend_Controller_Request_Abstract $request
|
||||
* @return boolean
|
||||
*/
|
||||
public function isDispatchable(Zend_Controller_Request_Abstract $request);
|
||||
|
||||
/**
|
||||
* Add or modify a parameter with which to instantiate an Action Controller
|
||||
*
|
||||
* @param string $name
|
||||
* @param mixed $value
|
||||
* @return Zend_Controller_Dispatcher_Interface
|
||||
*/
|
||||
public function setParam($name, $value);
|
||||
|
||||
/**
|
||||
* Set an array of a parameters to pass to the Action Controller constructor
|
||||
*
|
||||
* @param array $params
|
||||
* @return Zend_Controller_Dispatcher_Interface
|
||||
*/
|
||||
public function setParams(array $params);
|
||||
|
||||
/**
|
||||
* Retrieve a single parameter from the controller parameter stack
|
||||
*
|
||||
* @param string $name
|
||||
* @return mixed
|
||||
*/
|
||||
public function getParam($name);
|
||||
|
||||
/**
|
||||
* Retrieve the parameters to pass to the Action Controller constructor
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getParams();
|
||||
|
||||
/**
|
||||
* Clear the controller parameter stack
|
||||
*
|
||||
* By default, clears all parameters. If a parameter name is given, clears
|
||||
* only that parameter; if an array of parameter names is provided, clears
|
||||
* each.
|
||||
*
|
||||
* @param null|string|array single key or array of keys for params to clear
|
||||
* @return Zend_Controller_Dispatcher_Interface
|
||||
*/
|
||||
public function clearParams($name = null);
|
||||
|
||||
/**
|
||||
* Set the response object to use, if any
|
||||
*
|
||||
* @param Zend_Controller_Response_Abstract|null $response
|
||||
* @return void
|
||||
*/
|
||||
public function setResponse(Zend_Controller_Response_Abstract $response = null);
|
||||
|
||||
/**
|
||||
* Retrieve the response object, if any
|
||||
*
|
||||
* @return Zend_Controller_Response_Abstract|null
|
||||
*/
|
||||
public function getResponse();
|
||||
|
||||
/**
|
||||
* Add a controller directory to the controller directory stack
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $args
|
||||
* @return Zend_Controller_Dispatcher_Interface
|
||||
*/
|
||||
public function addControllerDirectory($path, $args = null);
|
||||
|
||||
/**
|
||||
* Set the directory where controller files are stored
|
||||
*
|
||||
* Specify a string or an array; if an array is specified, all paths will be
|
||||
* added.
|
||||
*
|
||||
* @param string|array $dir
|
||||
* @return Zend_Controller_Dispatcher_Interface
|
||||
*/
|
||||
public function setControllerDirectory($path);
|
||||
|
||||
/**
|
||||
* Return the currently set directory(ies) for controller file lookup
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getControllerDirectory();
|
||||
|
||||
/**
|
||||
* Dispatches a request object to a controller/action. If the action
|
||||
* requests a forward to another action, a new request will be returned.
|
||||
*
|
||||
* @param Zend_Controller_Request_Abstract $request
|
||||
* @param Zend_Controller_Response_Abstract $response
|
||||
* @return void
|
||||
*/
|
||||
public function dispatch(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response);
|
||||
|
||||
/**
|
||||
* Whether or not a given module is valid
|
||||
*
|
||||
* @param string $module
|
||||
* @return boolean
|
||||
*/
|
||||
public function isValidModule($module);
|
||||
|
||||
/**
|
||||
* Retrieve the default module name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDefaultModule();
|
||||
|
||||
/**
|
||||
* Retrieve the default controller name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDefaultControllerName();
|
||||
|
||||
/**
|
||||
* Retrieve the default action
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDefaultAction();
|
||||
}
|
493
airtime_mvc/library/Zend/Controller/Dispatcher/Standard.php
Normal file
493
airtime_mvc/library/Zend/Controller/Dispatcher/Standard.php
Normal file
|
@ -0,0 +1,493 @@
|
|||
<?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_Controller
|
||||
* @subpackage Dispatcher
|
||||
* @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: Standard.php 20244 2010-01-12 21:12:56Z matthew $
|
||||
*/
|
||||
|
||||
/** Zend_Loader */
|
||||
require_once 'Zend/Loader.php';
|
||||
|
||||
/** Zend_Controller_Dispatcher_Abstract */
|
||||
require_once 'Zend/Controller/Dispatcher/Abstract.php';
|
||||
|
||||
/**
|
||||
* @category Zend
|
||||
* @package Zend_Controller
|
||||
* @subpackage Dispatcher
|
||||
* @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_Controller_Dispatcher_Standard extends Zend_Controller_Dispatcher_Abstract
|
||||
{
|
||||
/**
|
||||
* Current dispatchable directory
|
||||
* @var string
|
||||
*/
|
||||
protected $_curDirectory;
|
||||
|
||||
/**
|
||||
* Current module (formatted)
|
||||
* @var string
|
||||
*/
|
||||
protected $_curModule;
|
||||
|
||||
/**
|
||||
* Controller directory(ies)
|
||||
* @var array
|
||||
*/
|
||||
protected $_controllerDirectory = array();
|
||||
|
||||
/**
|
||||
* Constructor: Set current module to default value
|
||||
*
|
||||
* @param array $params
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(array $params = array())
|
||||
{
|
||||
parent::__construct($params);
|
||||
$this->_curModule = $this->getDefaultModule();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a single path to the controller directory stack
|
||||
*
|
||||
* @param string $path
|
||||
* @param string $module
|
||||
* @return Zend_Controller_Dispatcher_Standard
|
||||
*/
|
||||
public function addControllerDirectory($path, $module = null)
|
||||
{
|
||||
if (null === $module) {
|
||||
$module = $this->_defaultModule;
|
||||
}
|
||||
|
||||
$module = (string) $module;
|
||||
$path = rtrim((string) $path, '/\\');
|
||||
|
||||
$this->_controllerDirectory[$module] = $path;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set controller directory
|
||||
*
|
||||
* @param array|string $directory
|
||||
* @return Zend_Controller_Dispatcher_Standard
|
||||
*/
|
||||
public function setControllerDirectory($directory, $module = null)
|
||||
{
|
||||
$this->_controllerDirectory = array();
|
||||
|
||||
if (is_string($directory)) {
|
||||
$this->addControllerDirectory($directory, $module);
|
||||
} elseif (is_array($directory)) {
|
||||
foreach ((array) $directory as $module => $path) {
|
||||
$this->addControllerDirectory($path, $module);
|
||||
}
|
||||
} else {
|
||||
require_once 'Zend/Controller/Exception.php';
|
||||
throw new Zend_Controller_Exception('Controller directory spec must be either a string or an array');
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the currently set directories for Zend_Controller_Action class
|
||||
* lookup
|
||||
*
|
||||
* If a module is specified, returns just that directory.
|
||||
*
|
||||
* @param string $module Module name
|
||||
* @return array|string Returns array of all directories by default, single
|
||||
* module directory if module argument provided
|
||||
*/
|
||||
public function getControllerDirectory($module = null)
|
||||
{
|
||||
if (null === $module) {
|
||||
return $this->_controllerDirectory;
|
||||
}
|
||||
|
||||
$module = (string) $module;
|
||||
if (array_key_exists($module, $this->_controllerDirectory)) {
|
||||
return $this->_controllerDirectory[$module];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a controller directory by module name
|
||||
*
|
||||
* @param string $module
|
||||
* @return bool
|
||||
*/
|
||||
public function removeControllerDirectory($module)
|
||||
{
|
||||
$module = (string) $module;
|
||||
if (array_key_exists($module, $this->_controllerDirectory)) {
|
||||
unset($this->_controllerDirectory[$module]);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format the module name.
|
||||
*
|
||||
* @param string $unformatted
|
||||
* @return string
|
||||
*/
|
||||
public function formatModuleName($unformatted)
|
||||
{
|
||||
if (($this->_defaultModule == $unformatted) && !$this->getParam('prefixDefaultModule')) {
|
||||
return $unformatted;
|
||||
}
|
||||
|
||||
return ucfirst($this->_formatName($unformatted));
|
||||
}
|
||||
|
||||
/**
|
||||
* Format action class name
|
||||
*
|
||||
* @param string $moduleName Name of the current module
|
||||
* @param string $className Name of the action class
|
||||
* @return string Formatted class name
|
||||
*/
|
||||
public function formatClassName($moduleName, $className)
|
||||
{
|
||||
return $this->formatModuleName($moduleName) . '_' . $className;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert a class name to a filename
|
||||
*
|
||||
* @param string $class
|
||||
* @return string
|
||||
*/
|
||||
public function classToFilename($class)
|
||||
{
|
||||
return str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns TRUE if the Zend_Controller_Request_Abstract object can be
|
||||
* dispatched to a controller.
|
||||
*
|
||||
* Use this method wisely. By default, the dispatcher will fall back to the
|
||||
* default controller (either in the module specified or the global default)
|
||||
* if a given controller does not exist. This method returning false does
|
||||
* not necessarily indicate the dispatcher will not still dispatch the call.
|
||||
*
|
||||
* @param Zend_Controller_Request_Abstract $action
|
||||
* @return boolean
|
||||
*/
|
||||
public function isDispatchable(Zend_Controller_Request_Abstract $request)
|
||||
{
|
||||
$className = $this->getControllerClass($request);
|
||||
if (!$className) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (class_exists($className, false)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
$fileSpec = $this->classToFilename($className);
|
||||
$dispatchDir = $this->getDispatchDirectory();
|
||||
$test = $dispatchDir . DIRECTORY_SEPARATOR . $fileSpec;
|
||||
return Zend_Loader::isReadable($test);
|
||||
}
|
||||
|
||||
/**
|
||||
* Dispatch to a controller/action
|
||||
*
|
||||
* By default, if a controller is not dispatchable, dispatch() will throw
|
||||
* an exception. If you wish to use the default controller instead, set the
|
||||
* param 'useDefaultControllerAlways' via {@link setParam()}.
|
||||
*
|
||||
* @param Zend_Controller_Request_Abstract $request
|
||||
* @param Zend_Controller_Response_Abstract $response
|
||||
* @return void
|
||||
* @throws Zend_Controller_Dispatcher_Exception
|
||||
*/
|
||||
public function dispatch(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response)
|
||||
{
|
||||
$this->setResponse($response);
|
||||
|
||||
/**
|
||||
* Get controller class
|
||||
*/
|
||||
if (!$this->isDispatchable($request)) {
|
||||
$controller = $request->getControllerName();
|
||||
if (!$this->getParam('useDefaultControllerAlways') && !empty($controller)) {
|
||||
require_once 'Zend/Controller/Dispatcher/Exception.php';
|
||||
throw new Zend_Controller_Dispatcher_Exception('Invalid controller specified (' . $request->getControllerName() . ')');
|
||||
}
|
||||
|
||||
$className = $this->getDefaultControllerClass($request);
|
||||
} else {
|
||||
$className = $this->getControllerClass($request);
|
||||
if (!$className) {
|
||||
$className = $this->getDefaultControllerClass($request);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the controller class file
|
||||
*/
|
||||
$className = $this->loadClass($className);
|
||||
|
||||
/**
|
||||
* Instantiate controller with request, response, and invocation
|
||||
* arguments; throw exception if it's not an action controller
|
||||
*/
|
||||
$controller = new $className($request, $this->getResponse(), $this->getParams());
|
||||
if (!($controller instanceof Zend_Controller_Action_Interface) &&
|
||||
!($controller instanceof Zend_Controller_Action)) {
|
||||
require_once 'Zend/Controller/Dispatcher/Exception.php';
|
||||
throw new Zend_Controller_Dispatcher_Exception(
|
||||
'Controller "' . $className . '" is not an instance of Zend_Controller_Action_Interface'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the action name
|
||||
*/
|
||||
$action = $this->getActionMethod($request);
|
||||
|
||||
/**
|
||||
* Dispatch the method call
|
||||
*/
|
||||
$request->setDispatched(true);
|
||||
|
||||
// by default, buffer output
|
||||
$disableOb = $this->getParam('disableOutputBuffering');
|
||||
$obLevel = ob_get_level();
|
||||
if (empty($disableOb)) {
|
||||
ob_start();
|
||||
}
|
||||
|
||||
try {
|
||||
$controller->dispatch($action);
|
||||
} catch (Exception $e) {
|
||||
// Clean output buffer on error
|
||||
$curObLevel = ob_get_level();
|
||||
if ($curObLevel > $obLevel) {
|
||||
do {
|
||||
ob_get_clean();
|
||||
$curObLevel = ob_get_level();
|
||||
} while ($curObLevel > $obLevel);
|
||||
}
|
||||
throw $e;
|
||||
}
|
||||
|
||||
if (empty($disableOb)) {
|
||||
$content = ob_get_clean();
|
||||
$response->appendBody($content);
|
||||
}
|
||||
|
||||
// Destroy the page controller instance and reflection objects
|
||||
$controller = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a controller class
|
||||
*
|
||||
* Attempts to load the controller class file from
|
||||
* {@link getControllerDirectory()}. If the controller belongs to a
|
||||
* module, looks for the module prefix to the controller class.
|
||||
*
|
||||
* @param string $className
|
||||
* @return string Class name loaded
|
||||
* @throws Zend_Controller_Dispatcher_Exception if class not loaded
|
||||
*/
|
||||
public function loadClass($className)
|
||||
{
|
||||
$finalClass = $className;
|
||||
if (($this->_defaultModule != $this->_curModule)
|
||||
|| $this->getParam('prefixDefaultModule'))
|
||||
{
|
||||
$finalClass = $this->formatClassName($this->_curModule, $className);
|
||||
}
|
||||
if (class_exists($finalClass, false)) {
|
||||
return $finalClass;
|
||||
}
|
||||
|
||||
$dispatchDir = $this->getDispatchDirectory();
|
||||
$loadFile = $dispatchDir . DIRECTORY_SEPARATOR . $this->classToFilename($className);
|
||||
|
||||
if (Zend_Loader::isReadable($loadFile)) {
|
||||
include_once $loadFile;
|
||||
} else {
|
||||
require_once 'Zend/Controller/Dispatcher/Exception.php';
|
||||
throw new Zend_Controller_Dispatcher_Exception('Cannot load controller class "' . $className . '" from file "' . $loadFile . "'");
|
||||
}
|
||||
|
||||
if (!class_exists($finalClass, false)) {
|
||||
require_once 'Zend/Controller/Dispatcher/Exception.php';
|
||||
throw new Zend_Controller_Dispatcher_Exception('Invalid controller class ("' . $finalClass . '")');
|
||||
}
|
||||
|
||||
return $finalClass;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get controller class name
|
||||
*
|
||||
* Try request first; if not found, try pulling from request parameter;
|
||||
* if still not found, fallback to default
|
||||
*
|
||||
* @param Zend_Controller_Request_Abstract $request
|
||||
* @return string|false Returns class name on success
|
||||
*/
|
||||
public function getControllerClass(Zend_Controller_Request_Abstract $request)
|
||||
{
|
||||
$controllerName = $request->getControllerName();
|
||||
if (empty($controllerName)) {
|
||||
if (!$this->getParam('useDefaultControllerAlways')) {
|
||||
return false;
|
||||
}
|
||||
$controllerName = $this->getDefaultControllerName();
|
||||
$request->setControllerName($controllerName);
|
||||
}
|
||||
|
||||
$className = $this->formatControllerName($controllerName);
|
||||
|
||||
$controllerDirs = $this->getControllerDirectory();
|
||||
$module = $request->getModuleName();
|
||||
if ($this->isValidModule($module)) {
|
||||
$this->_curModule = $module;
|
||||
$this->_curDirectory = $controllerDirs[$module];
|
||||
} elseif ($this->isValidModule($this->_defaultModule)) {
|
||||
$request->setModuleName($this->_defaultModule);
|
||||
$this->_curModule = $this->_defaultModule;
|
||||
$this->_curDirectory = $controllerDirs[$this->_defaultModule];
|
||||
} else {
|
||||
require_once 'Zend/Controller/Exception.php';
|
||||
throw new Zend_Controller_Exception('No default module defined for this application');
|
||||
}
|
||||
|
||||
return $className;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if a given module is valid
|
||||
*
|
||||
* @param string $module
|
||||
* @return bool
|
||||
*/
|
||||
public function isValidModule($module)
|
||||
{
|
||||
if (!is_string($module)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$module = strtolower($module);
|
||||
$controllerDir = $this->getControllerDirectory();
|
||||
foreach (array_keys($controllerDir) as $moduleName) {
|
||||
if ($module == strtolower($moduleName)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve default controller class
|
||||
*
|
||||
* Determines whether the default controller to use lies within the
|
||||
* requested module, or if the global default should be used.
|
||||
*
|
||||
* By default, will only use the module default unless that controller does
|
||||
* not exist; if this is the case, it falls back to the default controller
|
||||
* in the default module.
|
||||
*
|
||||
* @param Zend_Controller_Request_Abstract $request
|
||||
* @return string
|
||||
*/
|
||||
public function getDefaultControllerClass(Zend_Controller_Request_Abstract $request)
|
||||
{
|
||||
$controller = $this->getDefaultControllerName();
|
||||
$default = $this->formatControllerName($controller);
|
||||
$request->setControllerName($controller)
|
||||
->setActionName(null);
|
||||
|
||||
$module = $request->getModuleName();
|
||||
$controllerDirs = $this->getControllerDirectory();
|
||||
$this->_curModule = $this->_defaultModule;
|
||||
$this->_curDirectory = $controllerDirs[$this->_defaultModule];
|
||||
if ($this->isValidModule($module)) {
|
||||
$found = false;
|
||||
if (class_exists($default, false)) {
|
||||
$found = true;
|
||||
} else {
|
||||
$moduleDir = $controllerDirs[$module];
|
||||
$fileSpec = $moduleDir . DIRECTORY_SEPARATOR . $this->classToFilename($default);
|
||||
if (Zend_Loader::isReadable($fileSpec)) {
|
||||
$found = true;
|
||||
$this->_curDirectory = $moduleDir;
|
||||
}
|
||||
}
|
||||
if ($found) {
|
||||
$request->setModuleName($module);
|
||||
$this->_curModule = $this->formatModuleName($module);
|
||||
}
|
||||
} else {
|
||||
$request->setModuleName($this->_defaultModule);
|
||||
}
|
||||
|
||||
return $default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the value of the currently selected dispatch directory (as set by
|
||||
* {@link getController()})
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDispatchDirectory()
|
||||
{
|
||||
return $this->_curDirectory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the action name
|
||||
*
|
||||
* First attempt to retrieve from request; then from request params
|
||||
* using action key; default to default action
|
||||
*
|
||||
* Returns formatted action name
|
||||
*
|
||||
* @param Zend_Controller_Request_Abstract $request
|
||||
* @return string
|
||||
*/
|
||||
public function getActionMethod(Zend_Controller_Request_Abstract $request)
|
||||
{
|
||||
$action = $request->getActionName();
|
||||
if (empty($action)) {
|
||||
$action = $this->getDefaultAction();
|
||||
$request->setActionName($action);
|
||||
}
|
||||
|
||||
return $this->formatActionName($action);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue