import v1.1.0_beta1 | 2009-08-21

This commit is contained in:
2019-07-17 22:16:19 +02:00
parent 2c1152f0d3
commit 8dee6b1a10
2306 changed files with 251360 additions and 23428 deletions

View File

@ -0,0 +1,95 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Action_Interface
*/
require_once 'Zend/Tool/Framework/Action/Interface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Action_Base implements Zend_Tool_Framework_Action_Interface
{
/**
* @var string
*/
protected $_name = null;
/**
* constructor -
*
* @param unknown_type $options
*/
public function __construct($options = null)
{
if ($options !== null) {
if (is_string($options)) {
$this->setName($options);
}
// implement $options here in the future if this is needed
}
}
/**
* setName()
*
* @param string $name
* @return Zend_Tool_Framework_Action_Base
*/
public function setName($name)
{
$this->_name = $name;
return $this;
}
/**
* getName()
*
* @return string
*/
public function getName()
{
if ($this->_name == null) {
$this->_name = $this->_parseName();
}
return $this->_name;
}
/**
* _parseName - internal method to determine the name of an action when one is not explicity provided.
*
* @param Zend_Tool_Framework_Action_Interface $action
* @return string
*/
protected function _parseName()
{
$className = get_class($this);
$actionName = substr($className, strrpos($className, '_')+1);
return $actionName;
}
}

View 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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Exception
*/
require_once 'Zend/Tool/Framework/Exception.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Action_Exception extends Zend_Tool_Framework_Exception
{
}

View File

@ -0,0 +1,32 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Framework_Action_Interface
{
public function getName();
}

View File

@ -0,0 +1,135 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Action_Repository
implements Zend_Tool_Framework_Registry_EnabledInterface, IteratorAggregate, Countable
{
/**
* @var Zend_Tool_Framework_Registry_Interface
*/
protected $_registry = null;
/**
* @var array
*/
protected $_actions = array();
/**
* setRegistry()
*
* @param Zend_Tool_Framework_Registry_Interface $registry
*/
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
{
$this->_registry = $registry;
}
/**
* addAction()
*
* @param Zend_Tool_Framework_Action_Interface $action
* @return Zend_Tool_Framework_Action_Repository
*/
public function addAction(Zend_Tool_Framework_Action_Interface $action, $overrideExistingAction = false)
{
$actionName = $action->getName();
if ($actionName == '' || $actionName == 'Base') {
require_once 'Zend/Tool/Framework/Action/Exception.php';
throw new Zend_Tool_Framework_Action_Exception('An action name for the provided action could not be determined.');
}
if (!$overrideExistingAction && array_key_exists(strtolower($actionName), $this->_actions)) {
require_once 'Zend/Tool/Framework/Action/Exception.php';
throw new Zend_Tool_Framework_Action_Exception('An action by the name ' . $actionName
. ' is already registered and $overrideExistingAction is set to false.');
}
$this->_actions[strtolower($actionName)] = $action;
return $this;
}
/**
* process() - this is called when the client is done constructing (after init())
*
* @return unknown
*/
public function process()
{
return null;
}
/**
* getActions() - get all actions in the repository
*
* @return array
*/
public function getActions()
{
return $this->_actions;
}
/**
* getAction() - get an action by a specific name
*
* @param string $actionName
* @return Zend_Tool_Framework_Action_Interface
*/
public function getAction($actionName)
{
if (!array_key_exists(strtolower($actionName), $this->_actions)) {
return null;
}
return $this->_actions[strtolower($actionName)];
}
/**
* count() required by the Countable interface
*
* @return int
*/
public function count()
{
return count($this->_actions);
}
/**
* getIterator() - get all actions, this supports the IteratorAggregate interface
*
* @return array
*/
public function getIterator()
{
return new ArrayIterator($this->_actions);
}
}

View File

@ -0,0 +1,300 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Registry_EnabledInterface
*/
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
/**
* @see Zend_Tool_Framework_Registry
*/
require_once 'Zend/Tool/Framework/Registry.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
abstract class Zend_Tool_Framework_Client_Abstract implements Zend_Tool_Framework_Registry_EnabledInterface
{
/**
* @var Zend_Tool_Framework_Registry
*/
protected $_registry = null;
/**
* @var callback|null
*/
protected $_interactiveCallback = null;
/**
* @var bool
*/
protected $_isInitialized = false;
/**
* @var Zend_Log
*/
protected $_debugLogger = null;
/**
* getName() - Return the client name which can be used to
* query the manifest if need be.
*
* @return string The client name
*/
abstract public function getName();
/**
* initialized() - This will initialize the client for use
*
*/
public function initialize()
{
// if its already initialized, no need to initialize again
if ($this->_isInitialized) {
return;
}
// this might look goofy, but this is setting up the
// registry for dependency injection into the client
$registry = new Zend_Tool_Framework_Registry();
$registry->setClient($this);
// NOTE: at this moment, $this->_registry should contain
// the registry object
// run any preInit
$this->_preInit();
// setup the debug log
if (!$this->_debugLogger instanceof Zend_Log) {
require_once 'Zend/Log.php';
require_once 'Zend/Log/Writer/Null.php';
$this->_debugLogger = new Zend_Log(new Zend_Log_Writer_Null());
}
// let the loader load, then the repositories process whats been loaded
$this->_registry->getLoader()->load();
// process the action repository
$this->_registry->getActionRepository()->process();
// process the provider repository
$this->_registry->getProviderRepository()->process();
// process the manifest repository
$this->_registry->getManifestRepository()->process();
if ($this instanceof Zend_Tool_Framework_Client_Interactive_InputInterface) {
require_once 'Zend/Tool/Framework/Client/Interactive/InputHandler.php';
}
if ($this instanceof Zend_Tool_Framework_Client_Interactive_OutputInterface) {
$this->_registry->getResponse()->setContentCallback(array($this, 'handleInteractiveOutput'));
}
}
/**
* This method should be implemented by the client implementation to
* construct and set custom inflectors, request and response objects.
*/
protected function _preInit()
{
}
/**
* This method *must* be implemented by the client implementation to
* parse out and setup the request objects action, provider and parameter
* information.
*/
abstract protected function _preDispatch();
/**
* This method should be implemented by the client implementation to
* take the output of the response object and return it (in an client
* specific way) back to the Tooling Client.
*/
protected function _postDispatch()
{
}
/**
* setRegistry() - Required by the Zend_Tool_Framework_Registry_EnabledInterface
* interface which ensures proper registry dependency resolution
*
* @param Zend_Tool_Framework_Registry_Interface $registry
* @return Zend_Tool_Framework_Client_Abstract
*/
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
{
$this->_registry = $registry;
return $this;
}
/**
* hasInteractiveInput() - Convienence method for determining if this
* client can handle interactive input, and thus be able to run the
* promptInteractiveInput
*
* @return bool
*/
public function hasInteractiveInput()
{
return ($this instanceof Zend_Tool_Framework_Client_Interactive_InputInterface);
}
public function promptInteractiveInput($inputRequest)
{
if (!$this->hasInteractiveInput()) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('promptInteractive() cannot be called on a non-interactive client.');
}
$inputHandler = new Zend_Tool_Framework_Client_Interactive_InputHandler();
$inputHandler->setClient($this);
$inputHandler->setInputRequest($inputRequest);
return $inputHandler->handle();
}
/**
* This method should be called in order to "handle" a Tooling Client
* request that has come to the client that has been implemented.
*/
public function dispatch()
{
$this->initialize();
try {
$this->_preDispatch();
if ($this->_registry->getRequest()->isDispatchable()) {
if ($this->_registry->getRequest()->getActionName() == null) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('Client failed to setup the action name.');
}
if ($this->_registry->getRequest()->getProviderName() == null) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('Client failed to setup the provider name.');
}
$this->_handleDispatch();
}
} catch (Exception $exception) {
$this->_registry->getResponse()->setException($exception);
}
$this->_postDispatch();
}
public function convertToClientNaming($string)
{
return $string;
}
public function convertFromClientNaming($string)
{
return $string;
}
protected function _handleDispatch()
{
// get the provider repository
$providerRepository = $this->_registry->getProviderRepository();
$request = $this->_registry->getRequest();
// get the dispatchable provider signature
$providerSignature = $providerRepository->getProviderSignature($request->getProviderName());
// get the actual provider
$provider = $providerSignature->getProvider();
// ensure that we can pretend if this is a pretend request
if ($request->isPretend() && (!$provider instanceof Zend_Tool_Framework_Provider_Pretendable)) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('Dispatcher error - provider does not support pretend');
}
// get the action name
$actionName = $this->_registry->getRequest()->getActionName();
if (!$actionableMethod = $providerSignature->getActionableMethodByActionName($actionName)) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('Dispatcher error - actionable method not found');
}
// get the actual method and param information
$methodName = $actionableMethod['methodName'];
$methodParameters = $actionableMethod['parameterInfo'];
// get the provider params
$requestParameters = $this->_registry->getRequest()->getProviderParameters();
// @todo This seems hackish, determine if there is a better way
$callParameters = array();
foreach ($methodParameters as $methodParameterName => $methodParameterValue) {
if (!array_key_exists($methodParameterName, $requestParameters) && $methodParameterValue['optional'] == false) {
if ($this instanceof Zend_Tool_Framework_Client_Interactive_InputInterface) {
$promptSting = $this->getMissingParameterPromptString($provider, $actionableMethod['action'], $methodParameterValue['name']);
$parameterPromptValue = $this->promptInteractiveInput($promptSting)->getContent();
if ($parameterPromptValue == null) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('Value supplied for required parameter "' . $methodParameterValue['name'] . '" is empty');
}
$callParameters[] = $parameterPromptValue;
} else {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('A required parameter "' . $methodParameterValue['name'] . '" was not supplied.');
}
} else {
$callParameters[] = (array_key_exists($methodParameterName, $requestParameters)) ? $requestParameters[$methodParameterName] : $methodParameterValue['default'];
}
}
if (($specialtyName = $this->_registry->getRequest()->getSpecialtyName()) != '_Global') {
$methodName .= $specialtyName;
}
if (method_exists($provider, $methodName)) {
call_user_func_array(array($provider, $methodName), $callParameters);
} elseif (method_exists($provider, $methodName . 'Action')) {
call_user_func_array(array($provider, $methodName . 'Action'), $callParameters);
} else {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('Not a supported method.');
}
}
}

View File

@ -0,0 +1,257 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Loader
*/
require_once 'Zend/Loader.php';
/**
* @see Zend_Tool_Framework_Client_Abstract
*/
require_once 'Zend/Tool/Framework/Client/Abstract.php';
/**
* @see Zend_Tool_Framework_Client_Console_ArgumentParser
*/
require_once 'Zend/Tool/Framework/Client/Console/ArgumentParser.php';
/**
* @see Zend_Tool_Framework_Client_Interactive_InputInterface
*/
require_once 'Zend/Tool/Framework/Client/Interactive/InputInterface.php';
/**
* @see Zend_Tool_Framework_Client_Interactive_OutputInterface
*/
require_once 'Zend/Tool/Framework/Client/Interactive/OutputInterface.php';
/**
* @see Zend_Tool_Framework_Client_Response_ContentDecorator_Separator
*/
require_once 'Zend/Tool/Framework/Client/Response/ContentDecorator/Separator.php';
/**
* Zend_Tool_Framework_Client_Console - the CLI Client implementation for Zend_Tool_Framework
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Console
extends Zend_Tool_Framework_Client_Abstract
implements Zend_Tool_Framework_Client_Interactive_InputInterface,
Zend_Tool_Framework_Client_Interactive_OutputInterface
{
/**
* @var Zend_Filter_Word_CamelCaseToDash
*/
protected $_filterToClientNaming = null;
/**
* @var Zend_Filter_Word_DashToCamelCase
*/
protected $_filterFromClientNaming = null;
/**
* main() - This is typically called from zf.php. This method is a
* self contained main() function.
*
*/
public static function main()
{
ini_set('display_errors', true);
$cliClient = new self();
$cliClient->dispatch();
}
/**
* getName() - return the name of the client, in this case 'console'
*
* @return string
*/
public function getName()
{
return 'console';
}
/**
* _init() - Tasks processed before the constructor, generally setting up objects to use
*
*/
protected function _preInit()
{
// support the changing of the current working directory, necessary for some providers
if (isset($_ENV['ZEND_TOOL_CURRENT_WORKING_DIRECTORY'])) {
chdir($_ENV['ZEND_TOOL_CURRENT_WORKING_DIRECTORY']);
}
// support setting the loader from the environment
if (isset($_ENV['ZEND_TOOL_FRAMEWORK_LOADER_CLASS'])) {
if (class_exists($_ENV['ZEND_TOOL_FRAMEWORK_LOADER_CLASS'])
|| Zend_Loader::loadClass($_ENV['ZEND_TOOL_FRAMEWORK_LOADER_CLASS'])
) {
$this->_registry->setLoader(new $_ENV['ZEND_TOOL_FRAMEWORK_LOADER_CLASS']);
}
}
return;
}
/**
* _preDispatch() - Tasks handed after initialization but before dispatching
*
*/
protected function _preDispatch()
{
$response = $this->_registry->getResponse();
if (function_exists('posix_isatty')) {
require_once 'Zend/Tool/Framework/Client/Console/ResponseDecorator/Colorizer.php';
$response->addContentDecorator(new Zend_Tool_Framework_Client_Console_ResponseDecorator_Colorizer());
}
$response->addContentDecorator(new Zend_Tool_Framework_Client_Response_ContentDecorator_Separator())
->setDefaultDecoratorOptions(array('separator' => true));
$optParser = new Zend_Tool_Framework_Client_Console_ArgumentParser();
$optParser->setArguments($_SERVER['argv'])
->setRegistry($this->_registry)
->parse();
return;
}
/**
* _postDispatch() - Tasks handled after dispatching
*
*/
protected function _postDispatch()
{
$request = $this->_registry->getRequest();
$response = $this->_registry->getResponse();
if ($response->isException()) {
require_once 'Zend/Tool/Framework/Client/Console/HelpSystem.php';
$helpSystem = new Zend_Tool_Framework_Client_Console_HelpSystem();
$helpSystem->setRegistry($this->_registry)
->respondWithErrorMessage($response->getException()->getMessage(), $response->getException())
->respondWithSpecialtyAndParamHelp(
$request->getProviderName(),
$request->getActionName()
);
}
echo PHP_EOL;
return;
}
/**
* handleInteractiveInputRequest() is required by the Interactive InputInterface
*
*
* @param Zend_Tool_Framework_Client_Interactive_InputRequest $inputRequest
* @return string
*/
public function handleInteractiveInputRequest(Zend_Tool_Framework_Client_Interactive_InputRequest $inputRequest)
{
fwrite(STDOUT, $inputRequest->getContent() . PHP_EOL . 'zf> ');
$inputContent = fgets(STDIN);
return rtrim($inputContent); // remove the return from the end of the string
}
/**
* handleInteractiveOutput() is required by the Interactive OutputInterface
*
* This allows us to display output immediately from providers, rather
* than displaying it after the provider is done.
*
* @param string $output
*/
public function handleInteractiveOutput($output)
{
echo $output;
}
/**
* getMissingParameterPromptString()
*
* @param Zend_Tool_Framework_Provider_Interface $provider
* @param Zend_Tool_Framework_Action_Interface $actionInterface
* @param string $missingParameterName
* @return string
*/
public function getMissingParameterPromptString(Zend_Tool_Framework_Provider_Interface $provider, Zend_Tool_Framework_Action_Interface $actionInterface, $missingParameterName)
{
return 'Please provide a value for $' . $missingParameterName;
}
/**
* convertToClientNaming()
*
* Convert words to client specific naming, in this case is lower, dash separated
*
* Filters are lazy-loaded.
*
* @param string $string
* @return string
*/
public function convertToClientNaming($string)
{
if (!$this->_filterToClientNaming) {
require_once 'Zend/Filter.php';
require_once 'Zend/Filter/Word/CamelCaseToDash.php';
require_once 'Zend/Filter/StringToLower.php';
$filter = new Zend_Filter();
$filter->addFilter(new Zend_Filter_Word_CamelCaseToDash());
$filter->addFilter(new Zend_Filter_StringToLower());
$this->_filterToClientNaming = $filter;
}
return $this->_filterToClientNaming->filter($string);
}
/**
* convertFromClientNaming()
*
* Convert words from client specific naming to code naming - camelcased
*
* Filters are lazy-loaded.
*
* @param string $string
* @return string
*/
public function convertFromClientNaming($string)
{
if (!$this->_filterFromClientNaming) {
require_once 'Zend/Filter/Word/DashToCamelCase.php';
$this->_filterFromClientNaming = new Zend_Filter_Word_DashToCamelCase();
}
return $this->_filterFromClientNaming->filter($string);
}
}

View File

@ -0,0 +1,503 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Console_GetOpt
*/
require_once 'Zend/Console/Getopt.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Console_ArgumentParser implements Zend_Tool_Framework_Registry_EnabledInterface
{
/**
* @var Zend_Tool_Framework_Registry_Interface
*/
protected $_registry = null;
/**
* @var Zend_Tool_Framework_Client_Request
*/
protected $_request = null;
/**
* @var Zend_Tool_Framework_Client_Response
*/
protected $_response = null;
/**#@+
* @var array
*/
protected $_argumentsOriginal = null;
protected $_argumentsWorking = null;
/**#@-*/
/**
* @var bool
*/
protected $_help = false;
protected $_helpKnownAction = false;
protected $_helpKnownProvider = false;
protected $_helpKnownSpecialty = false;
/**
* setArguments
*
* @param array $arguments
* @return Zend_Tool_Framework_Client_Console_ArgumentParser
*/
public function setArguments(Array $arguments)
{
$this->_argumentsOriginal = $this->_argumentsWorking = $arguments;
return $this;
}
/**
* setRegistry()
*
* @param Zend_Tool_Framework_Registry_Interface $registry
* @return Zend_Tool_Framework_Client_Console_ArgumentParser
*/
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
{
// get the client registry
$this->_registry = $registry;
// set manifest repository, request, response for easy access
$this->_manifestRepository = $this->_registry->getManifestRepository();
$this->_request = $this->_registry->getRequest();
$this->_response = $this->_registry->getResponse();
return $this;
}
/**
* Parse() - This method does the work of parsing the arguments into the enpooint request,
* this will also (during help operations) fill the response in with information as needed
*
* @return null
*/
public function parse()
{
if ($this->_request == null || $this->_response == null) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('The client registry must have both a request and response registered.');
}
// setup the help options
$helpResponseOptions = array();
// check to see if the first cli arg is the script name
if ($this->_argumentsWorking[0] == $_SERVER['SCRIPT_NAME' ]) {
array_shift($this->_argumentsWorking);
}
// process global options
try {
$this->_parseGlobalPart();
} catch (Zend_Tool_Framework_Client_Exception $exception) {
$this->_createHelpResponse(array('error' => $exception->getMessage()));
return;
}
// ensure there are arguments left
if (count($this->_argumentsWorking) == 0) {
$this->_request->setDispatchable(false); // at this point request is not dispatchable
// check to see if this was a help request
if ($this->_help) {
$this->_createHelpResponse();
} else {
$this->_createHelpResponse(array('error' => 'An action and provider is required.'));
}
return;
}
// process the action part of the command line
try {
$this->_parseActionPart();
} catch (Zend_Tool_Framework_Client_Exception $exception) {
$this->_request->setDispatchable(false);
$this->_createHelpResponse(array('error' => $exception->getMessage()));
return;
}
if ($this->_helpKnownAction) {
$helpResponseOptions = array_merge(
$helpResponseOptions,
array('actionName' => $this->_request->getActionName())
);
}
/* @TODO Action Parameter Requirements */
// make sure there are more "words" on the command line
if (count($this->_argumentsWorking) == 0) {
$this->_request->setDispatchable(false); // at this point request is not dispatchable
// check to see if this is a help request
if ($this->_help) {
$this->_createHelpResponse($helpResponseOptions);
} else {
$this->_createHelpResponse(array_merge($helpResponseOptions, array('error' => 'A provider is required.')));
}
return;
}
// process the provider part of the command line
try {
$this->_parseProviderPart();
} catch (Zend_Tool_Framework_Client_Exception $exception) {
$this->_request->setDispatchable(false);
$this->_createHelpResponse(array('error' => $exception->getMessage()));
return;
}
if ($this->_helpKnownProvider) {
$helpResponseOptions = array_merge(
$helpResponseOptions,
array('providerName' => $this->_request->getProviderName())
);
}
if ($this->_helpKnownSpecialty) {
$helpResponseOptions = array_merge(
$helpResponseOptions,
array('specialtyName' => $this->_request->getSpecialtyName())
);
}
// if there are arguments on the command line, lets process them as provider options
if (count($this->_argumentsWorking) != 0) {
$this->_parseProviderOptionsPart();
}
// if there is still arguments lingering around, we can assume something is wrong
if (count($this->_argumentsWorking) != 0) {
$this->_request->setDispatchable(false); // at this point request is not dispatchable
if ($this->_help) {
$this->_createHelpResponse($helpResponseOptions);
} else {
$this->_createHelpResponse(array_merge(
$helpResponseOptions,
array('error' => 'Unknown arguments left on the command line: ' . implode(' ', $this->_argumentsWorking))
));
}
return;
}
// everything was processed and this is a request for help information
if ($this->_help) {
$this->_request->setDispatchable(false); // at this point request is not dispatchable
$this->_createHelpResponse($helpResponseOptions);
}
return;
}
/**
* Internal routine for parsing global options from the command line
*
* @return null
*/
protected function _parseGlobalPart()
{
$getoptOptions = array();
$getoptOptions['help|h'] = 'HELP';
$getoptOptions['verbose|v'] = 'VERBOSE';
$getoptOptions['pretend|p'] = 'PRETEND';
$getoptOptions['debug|d'] = 'DEBUG';
$getoptParser = new Zend_Console_Getopt($getoptOptions, $this->_argumentsWorking, array('parseAll' => false));
// @todo catch any exceptions here
$getoptParser->parse();
foreach ($getoptParser->getOptions() as $option) {
if ($option == 'pretend') {
$this->_request->setPretend(true);
} elseif ($option == 'debug') {
$this->_request->setDebug(true);
} elseif ($option == 'verbose') {
$this->_request->setVerbose(true);
} else {
$property = '_'.$option;
$this->{$property} = true;
}
}
$this->_argumentsWorking = $getoptParser->getRemainingArgs();
return;
}
/**
* Internal routine for parsing the action name from the arguments
*
* @return null
*/
protected function _parseActionPart()
{
// the next "word" should be the action name
$consoleActionName = array_shift($this->_argumentsWorking);
if ($consoleActionName == '?') {
$this->_help = true;
return;
}
// is the action name valid?
$actionMetadata = $this->_manifestRepository->getMetadata(array(
'type' => 'Tool',
'name' => 'actionName',
'value' => $consoleActionName,
'clientName' => 'console'
));
// if no action, handle error
if (!$actionMetadata) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('Action \'' . $consoleActionName . '\' is not a valid action.');
}
// prepare action request name
$this->_helpKnownAction = true;
$this->_request->setActionName($actionMetadata->getActionName());
return;
}
/**
* Internal routine for parsing the provider part of the command line arguments
*
* @return null
*/
protected function _parseProviderPart()
{
// get the cli "word" as the provider name from command line
$consoleProviderFull = array_shift($this->_argumentsWorking);
$consoleSpecialtyName = '_global';
// if there is notation for specialties? If so, break them up
if (strstr($consoleProviderFull, '.')) {
list($consoleProviderName, $consoleSpecialtyName) = explode('.', $consoleProviderFull);
} else {
$consoleProviderName = $consoleProviderFull;
}
if ($consoleProviderName == '?') {
$this->_help = true;
return;
}
// get the cli provider names from the manifest
$providerMetadata = $this->_manifestRepository->getMetadata(array(
'type' => 'Tool',
'name' => 'providerName',
'value' => $consoleProviderName,
'clientName' => 'console'
));
if (!$providerMetadata) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception(
'Provider \'' . $consoleProviderFull . '\' is not a valid provider.'
);
}
$this->_helpKnownProvider = true;
$this->_request->setProviderName($providerMetadata->getProviderName());
if ($consoleSpecialtyName == '?') {
$this->_help = true;
return;
}
$providerSpecialtyMetadata = $this->_manifestRepository->getMetadata(array(
'type' => 'Tool',
'name' => 'specialtyName',
'value' => $consoleSpecialtyName,
'providerName' => $providerMetadata->getProviderName(),
'clientName' => 'console'
));
if (!$providerSpecialtyMetadata) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception(
'Provider \'' . $consoleSpecialtyName . '\' is not a valid specialty.'
);
}
$this->_helpKnownSpecialty = true;
$this->_request->setSpecialtyName($providerSpecialtyMetadata->getSpecialtyName());
return;
}
/**
* Internal routine for parsing the provider options from the command line
*
* @return null
*/
protected function _parseProviderOptionsPart()
{
if (current($this->_argumentsWorking) == '?') {
$this->_help = true;
return;
}
$searchParams = array(
'type' => 'Tool',
'providerName' => $this->_request->getProviderName(),
'actionName' => $this->_request->getActionName(),
'specialtyName' => $this->_request->getSpecialtyName(),
'clientName' => 'console'
);
$actionableMethodLongParamsMetadata = $this->_manifestRepository->getMetadata(
array_merge($searchParams, array('name' => 'actionableMethodLongParams'))
);
$actionableMethodShortParamsMetadata = $this->_manifestRepository->getMetadata(
array_merge($searchParams, array('name' => 'actionableMethodShortParams'))
);
$paramNameShortValues = $actionableMethodShortParamsMetadata->getValue();
$getoptOptions = array();
$wordArguments = array();
$longParamCanonicalNames = array();
$actionableMethodLongParamsMetadataReference = $actionableMethodLongParamsMetadata->getReference();
foreach ($actionableMethodLongParamsMetadata->getValue() as $parameterNameLong => $consoleParameterNameLong) {
$optionConfig = $consoleParameterNameLong . '|';
$parameterInfo = $actionableMethodLongParamsMetadataReference['parameterInfo'][$parameterNameLong];
// process ParameterInfo into array for command line option matching
if ($parameterInfo['type'] == 'string' || $parameterInfo['type'] == 'bool') {
$optionConfig .= $paramNameShortValues[$parameterNameLong]
. (($parameterInfo['optional']) ? '-' : '=') . 's';
} elseif (in_array($parameterInfo['type'], array('int', 'integer', 'float'))) {
$optionConfig .= $paramNameShortValues[$parameterNameLong]
. (($parameterInfo['optional']) ? '-' : '=') . 'i';
} else {
$optionConfig .= $paramNameShortValues[$parameterNameLong] . '-s';
}
$getoptOptions[$optionConfig] = ($parameterInfo['description'] != '') ? $parameterInfo['description'] : 'No description available.';
// process ParameterInfo into array for command line WORD (argument) matching
$wordArguments[$parameterInfo['position']]['parameterName'] = $parameterInfo['name'];
$wordArguments[$parameterInfo['position']]['optional'] = $parameterInfo['optional'];
$wordArguments[$parameterInfo['position']]['type'] = $parameterInfo['type'];
// keep a translation of console to canonical names
$longParamCanonicalNames[$consoleParameterNameLong] = $parameterNameLong;
}
if (!$getoptOptions) {
// no options to parse here, return
return;
}
// if non-option arguments exist, attempt to process them before processing options
$wordStack = array();
while ($wordOnTop = array_shift($this->_argumentsWorking)) {
if (substr($wordOnTop, 0, 1) != '-') {
array_push($wordStack, $wordOnTop);
} else {
// put word back on stack and move on
array_unshift($this->_argumentsWorking, $wordOnTop);
break;
}
if (count($wordStack) == count($wordArguments)) {
// when we get at most the number of arguments we are expecting
// then break out.
break;
}
}
if ($wordStack && $wordArguments) {
for ($wordIndex = 1; $wordIndex <= count($wordArguments); $wordIndex++) {
if (!array_key_exists($wordIndex-1, $wordStack) || !array_key_exists($wordIndex, $wordArguments)) {
break;
}
$this->_request->setProviderParameter($wordArguments[$wordIndex]['parameterName'], $wordStack[$wordIndex-1]);
unset($wordStack[$wordIndex-1]);
}
}
$getoptParser = new Zend_Console_Getopt($getoptOptions, $this->_argumentsWorking, array('parseAll' => false));
$getoptParser->parse();
foreach ($getoptParser->getOptions() as $option) {
$value = $getoptParser->getOption($option);
$providerParamOption = $longParamCanonicalNames[$option];
$this->_request->setProviderParameter($providerParamOption, $value);
}
/*
$this->_metadataProviderOptionsLong = $actionableMethodLongParamsMetadata;
$this->_metadataProviderOptionsShort = $actionableMethodShortParamsMetadata;
*/
$this->_argumentsWorking = $getoptParser->getRemainingArgs();
return;
}
/**
* _createHelpResponse
*
* @param unknown_type $options
*/
protected function _createHelpResponse($options = array())
{
require_once 'Zend/Tool/Framework/Client/Console/HelpSystem.php';
$helpSystem = new Zend_Tool_Framework_Client_Console_HelpSystem();
$helpSystem->setRegistry($this->_registry);
if (isset($options['error'])) {
$helpSystem->respondWithErrorMessage($options['error']);
}
if (isset($options['actionName']) && isset($options['providerName'])) {
$helpSystem->respondWithSpecialtyAndParamHelp($options['providerName'], $options['actionName']);
} elseif (isset($options['actionName'])) {
$helpSystem->respondWithActionHelp($options['actionName']);
} elseif (isset($options['providerName'])) {
$helpSystem->respondWithProviderHelp($options['providerName']);
} else {
$helpSystem->respondWithGeneralHelp();
}
}
}

View File

@ -0,0 +1,373 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Console_HelpSystem
{
/**
* @var Zend_Tool_Framework_Registry_Interface
*/
protected $_registry = null;
/**
* @var Zend_Tool_Framework_Client_Response
*/
protected $_response = null;
/**
* setRegistry()
*
* @param Zend_Tool_Framework_Registry_Interface $registry
* @return Zend_Tool_Framework_Client_Console_HelpSystem
*/
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
{
$this->_registry = $registry;
$this->_response = $registry->getResponse();
return $this;
}
/**
* respondWithErrorMessage()
*
* @param string $errorMessage
* @param Exception $exception
*/
public function respondWithErrorMessage($errorMessage, Exception $exception = null)
{
// break apart the message into wrapped chunks
$errorMessages = explode(PHP_EOL, wordwrap($errorMessage, 70, PHP_EOL, false));
$text = ' An Error Has Occurred ';
$this->_response->appendContent($text, array('color' => array('hiWhite', 'bgRed')));
foreach ($errorMessages as $errorMessage) {
$errorMessage = sprintf('%-70s', $errorMessage);
$this->_response->appendContent(' ' . $errorMessage . ' ', array('color' => array('white', 'bgRed')));
}
if ($exception && $this->_registry->getRequest()->isDebug()) {
$this->_response->appendContent($exception->getTraceAsString());
}
$this->_response->appendContent(null, array('separator' => true));
return $this;
}
/**
* respondWithGeneralHelp()
*
* @return Zend_Tool_Framework_Client_Console_HelpSystem
*/
public function respondWithGeneralHelp()
{
$this->_respondWithHeader();
$noSeparator = array('separator' => false);
$this->_response->appendContent('Usage:', array('color' => 'green'))
->appendContent(' ', $noSeparator)
->appendContent('zf', array_merge(array('color' => 'cyan'), $noSeparator))
->appendContent(' [--global-opts]', $noSeparator)
->appendContent(' action-name', array_merge(array('color' => 'cyan'), $noSeparator))
->appendContent(' [--action-opts]', $noSeparator)
->appendContent(' provider-name', array_merge(array('color' => 'cyan'), $noSeparator))
->appendContent(' [--provider-opts]', $noSeparator)
->appendContent(' [provider parameters ...]')
->appendContent(' Note: You may use "?" in any place of the above usage string to ask for more specific help information.', array('color'=>'yellow'))
->appendContent(' Example: "zf ? version" will list all available actions for the version provider.', array('color'=>'yellow', 'separator' => 2))
->appendContent('Providers and their actions:', array('color' => 'green'));
$this->_respondWithSystemInformation();
return $this;
}
/**
* respondWithActionHelp()
*
* @param string $actionName
* @return Zend_Tool_Framework_Client_Console_HelpSystem
*/
public function respondWithActionHelp($actionName)
{
$this->_respondWithHeader();
$this->_response->appendContent('Providers that support the action "' . $actionName . '"', array('color' => 'green'));
$this->_respondWithSystemInformation(null, $actionName);
return $this;
}
/**
* respondWithSpecialtyAndParamHelp()
*
* @param string $providerName
* @param string $actionName
* @return Zend_Tool_Framework_Client_Console_HelpSystem
*/
public function respondWithSpecialtyAndParamHelp($providerName, $actionName)
{
$this->_respondWithHeader();
$this->_response->appendContent(
'Details for action "' . $actionName . '" and provider "' . $providerName . '"',
array('color' => 'green')
);
$this->_respondWithSystemInformation($providerName, $actionName, true);
return $this;
}
/**
* respondWithProviderHelp()
*
* @param string $providerName
* @return Zend_Tool_Framework_Client_Console_HelpSystem
*/
public function respondWithProviderHelp($providerName)
{
$this->_respondWithHeader();
$this->_response->appendContent('Actions supported by provider "' . $providerName . '"', array('color' => 'green'));
$this->_respondWithSystemInformation($providerName);
return $this;
}
/**
* _respondWithHeader()
*
* @return Zend_Tool_Framework_Client_Console_HelpSystem
*/
protected function _respondWithHeader()
{
/**
* @see Zend_Version
*/
require_once 'Zend/Version.php';
$this->_response->appendContent('Zend Framework', array('color' => array('hiWhite'), 'separator' => false));
$this->_response->appendContent(' Command Line Console Tool v' . Zend_Version::VERSION . '');
return $this;
}
/**
* _respondWithSystemInformation()
*
* @param string $providerNameFilter
* @param string $actionNameFilter
* @param bool $includeAllSpecialties
* @return Zend_Tool_Framework_Client_Console_HelpSystem
*/
protected function _respondWithSystemInformation($providerNameFilter = null, $actionNameFilter = null, $includeAllSpecialties = false)
{
$manifest = $this->_registry->getManifestRepository();
$providerMetadatasSearch = array(
'type' => 'Tool',
'name' => 'providerName',
'clientName' => 'console'
);
if (is_string($providerNameFilter)) {
$providerMetadatasSearch = array_merge($providerMetadatasSearch, array('providerName' => $providerNameFilter));
}
$actionMetadatasSearch = array(
'type' => 'Tool',
'name' => 'actionName',
'clientName' => 'console'
);
if (is_string($actionNameFilter)) {
$actionMetadatasSearch = array_merge($actionMetadatasSearch, array('actionName' => $actionNameFilter));
}
// get the metadata's for the things to display
$displayProviderMetadatas = $manifest->getMetadatas($providerMetadatasSearch);
$displayActionMetadatas = $manifest->getMetadatas($actionMetadatasSearch);
// create index of actionNames
for ($i = 0; $i < count($displayActionMetadatas); $i++) {
$displayActionNames[] = $displayActionMetadatas[$i]->getActionName();
}
foreach ($displayProviderMetadatas as $providerMetadata) {
$providerNameDisplayed = false;
$providerName = $providerMetadata->getProviderName();
$providerSignature = $providerMetadata->getReference();
foreach ($providerSignature->getActions() as $actionInfo) {
$actionName = $actionInfo->getName();
// check to see if this action name is valid
if (($foundActionIndex = array_search($actionName, $displayActionNames)) === false) {
continue;
} else {
$actionMetadata = $displayActionMetadatas[$foundActionIndex];
}
$specialtyMetadata = $manifest->getMetadata(array(
'type' => 'Tool',
'name' => 'specialtyName',
'providerName' => $providerName,
'specialtyName' => '_Global',
'clientName' => 'console'
));
// lets do the main _Global action first
$actionableGlobalLongParamMetadata = $manifest->getMetadata(array(
'type' => 'Tool',
'name' => 'actionableMethodLongParams',
'providerName' => $providerName,
'specialtyName' => '_Global',
'actionName' => $actionName,
'clientName' => 'console'
));
if ($actionableGlobalLongParamMetadata) {
if (!$providerNameDisplayed) {
$this->_respondWithProviderName($providerMetadata);
$providerNameDisplayed = true;
}
$this->_respondWithCommand($providerMetadata, $actionMetadata, $specialtyMetadata, $actionableGlobalLongParamMetadata);
$actionIsGlobal = true;
} else {
$actionIsGlobal = false;
}
$actionableGlobalMetadatas = $manifest->getMetadatas(array(
'type' => 'Tool',
'name' => 'actionableMethodLongParams',
'providerName' => $providerName,
'actionName' => $actionName,
'clientName' => 'console'
));
if (!$actionIsGlobal && count($actionableGlobalMetadatas) == 1) {
$this->_response->appendContent('single special action/provider');
}
if ($includeAllSpecialties) {
foreach ($providerSignature->getSpecialties() as $specialtyName) {
if ($specialtyName == '_Global') {
continue;
}
$specialtyMetadata = $manifest->getMetadata(array(
'type' => 'Tool',
'name' => 'specialtyName',
'providerName' => $providerMetadata->getProviderName(),
'specialtyName' => $specialtyName,
'clientName' => 'console'
));
$actionableSpecialtyLongMetadata = $manifest->getMetadata(array(
'type' => 'Tool',
'name' => 'actionableMethodLongParams',
'providerName' => $providerMetadata->getProviderName(),
'specialtyName' => $specialtyName,
'actionName' => $actionName,
'clientName' => 'console'
));
$this->_respondWithCommand($providerMetadata, $actionMetadata, $specialtyMetadata, $actionableSpecialtyLongMetadata);
}
}
if (!$includeAllSpecialties && count($actionableGlobalMetadatas) > 1) {
$this->_response->appendContent(' Note: There are specialties, use ', array('color' => 'yellow', 'separator' => false));
$this->_response->appendContent(
'zf ' . $actionMetadata->getValue() . ' ' . $providerMetadata->getValue() . '.?',
array('color' => 'cyan', 'separator' => false)
);
$this->_response->appendContent(' to get specific help on them.', array('color' => 'yellow'));
}
}
if ($providerNameDisplayed) {
$this->_response->appendContent(null, array('separator' => true));
}
}
return $this;
}
/**
* _respondWithProviderName()
*
* @param Zend_Tool_Framework_Metadata_Tool $providerMetadata
* @return Zend_Tool_Framework_Client_Console_HelpSystem
*/
protected function _respondWithProviderName(Zend_Tool_Framework_Metadata_Tool $providerMetadata)
{
$this->_response->appendContent(' ' . $providerMetadata->getProviderName());
return $this;
}
/**
* _respondWithCommand()
*
* @param Zend_Tool_Framework_Metadata_Tool $providerMetadata
* @param Zend_Tool_Framework_Metadata_Tool $actionMetadata
* @param Zend_Tool_Framework_Metadata_Tool $specialtyMetadata
* @param Zend_Tool_Framework_Metadata_Tool $parameterLongMetadata
* @return Zend_Tool_Framework_Client_Console_HelpSystem
*/
protected function _respondWithCommand(
Zend_Tool_Framework_Metadata_Tool $providerMetadata,
Zend_Tool_Framework_Metadata_Tool $actionMetadata,
Zend_Tool_Framework_Metadata_Tool $specialtyMetadata,
Zend_Tool_Framework_Metadata_Tool $parameterLongMetadata)//,
//Zend_Tool_Framework_Metadata_Tool $parameterShortMetadata)
{
$this->_response->appendContent(
' zf ' . $actionMetadata->getValue() . ' ' . $providerMetadata->getValue(),
array('color' => 'cyan', 'separator' => false)
);
if ($specialtyMetadata->getSpecialtyName() != '_Global') {
$this->_response->appendContent('.' . $specialtyMetadata->getValue(), array('color' => 'cyan', 'separator' => false));
}
foreach ($parameterLongMetadata->getValue() as $paramName => $consoleParamName) {
$methodInfo = $parameterLongMetadata->getReference();
$paramString = ' ' . $consoleParamName;
if ( ($defaultValue = $methodInfo['parameterInfo'][$paramName]['default']) != null) {
$paramString .= '[=' . $defaultValue . ']';
}
$this->_response->appendContent($paramString . '', array('separator' => false));
}
$this->_response->appendContent(null, array('separator' => true));
return $this;
}
}

View File

@ -0,0 +1,209 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Manifest_MetadataManifestable
*/
require_once 'Zend/Tool/Framework/Manifest/MetadataManifestable.php';
/**
* @see Zend_Filter
*/
require_once 'Zend/Filter.php';
/**
* @see Zend_Filter_Word_CamelCaseToDash
*/
require_once 'Zend/Filter/Word/CamelCaseToDash.php';
/**
* @see Zend_Filter_StringToLower
*/
require_once 'Zend/Filter/StringToLower.php';
/**
* @see Zend_Tool_Framework_Metadata_Tool
*/
require_once 'Zend/Tool/Framework/Metadata/Tool.php';
/**
* @see Zend_Tool_Framework_Registry_EnabledInterface
*/
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
/**
* Zend_Tool_Framework_Client_ConsoleClient_Manifest
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Console_Manifest
implements Zend_Tool_Framework_Registry_EnabledInterface,
Zend_Tool_Framework_Manifest_MetadataManifestable
{
/**
* @var Zend_Tool_Framework_Registry_Interface
*/
protected $_registry = null;
/**
* setRegistry() - Required for the Zend_Tool_Framework_Registry_EnabledInterface interface
*
* @param Zend_Tool_Framework_Registry_Interface $registry
* @return Zend_Tool_Framework_Client_Console_Manifest
*/
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
{
$this->_registry = $registry;
return $this;
}
/**
* getMetadata() is required by the Manifest Interface.
*
* These are the following metadatas that will be setup:
*
* actionName
* - metadata for actions
* - value will be a dashed name for the action named in 'actionName'
* providerName
* - metadata for providers
* - value will be a dashed-name for the provider named in 'providerName'
* providerSpecialtyNames
* - metadata for providers
* actionableMethodLongParameters
* - metadata for providers
* actionableMethodShortParameters
* - metadata for providers
*
* @return array Array of Metadatas
*/
public function getMetadata()
{
$metadatas = array();
// setup the camelCase to dashed filter to use since cli expects dashed named
$ccToDashedFilter = new Zend_Filter();
$ccToDashedFilter
->addFilter(new Zend_Filter_Word_CamelCaseToDash())
->addFilter(new Zend_Filter_StringToLower());
// get the registry to get the action and provider repository
$actionRepository = $this->_registry->getActionRepository();
$providerRepository = $this->_registry->getProviderRepository();
// loop through all actions and create a metadata for each
foreach ($actionRepository->getActions() as $action) {
// each action metadata will be called
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
'name' => 'actionName',
'value' => $ccToDashedFilter->filter($action->getName()),
'reference' => $action,
'actionName' => $action->getName(),
'clientName' => 'console',
'clientReference' => $this->_registry->getClient()
));
}
foreach ($providerRepository->getProviderSignatures() as $providerSignature) {
// create the metadata for the provider's cliProviderName
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
'name' => 'providerName',
'value' => $ccToDashedFilter->filter($providerSignature->getName()),
'reference' => $providerSignature,
'clientName' => 'console',
'providerName' => $providerSignature->getName(),
'clientReference' => $this->_registry->getClient()
));
// create the metadatas for the per provider specialites in providerSpecaltyNames
foreach ($providerSignature->getSpecialties() as $specialty) {
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
'name' => 'specialtyName',
'value' => $ccToDashedFilter->filter($specialty),
'reference' => $providerSignature,
'clientName' => 'console',
'providerName' => $providerSignature->getName(),
'specialtyName' => $specialty,
'clientReference' => $this->_registry->getClient()
));
}
// $actionableMethod is keyed by the methodName (but not used)
foreach ($providerSignature->getActionableMethods() as $actionableMethodData) {
$methodLongParams = array();
$methodShortParams = array();
// $actionableMethodData get both the long and short names
foreach ($actionableMethodData['parameterInfo'] as $parameterInfoData) {
// filter to dashed
$methodLongParams[$parameterInfoData['name']] = $ccToDashedFilter->filter($parameterInfoData['name']);
// simply lower the character, (its only 1 char after all)
$methodShortParams[$parameterInfoData['name']] = strtolower($parameterInfoData['name'][0]);
}
// create metadata for the long name cliActionableMethodLongParameters
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
'name' => 'actionableMethodLongParams',
'value' => $methodLongParams,
'clientName' => 'console',
'providerName' => $providerSignature->getName(),
'specialtyName' => $actionableMethodData['specialty'],
'actionName' => $actionableMethodData['actionName'],
'reference' => &$actionableMethodData,
'clientReference' => $this->_registry->getClient()
));
// create metadata for the short name cliActionableMethodShortParameters
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
'name' => 'actionableMethodShortParams',
'value' => $methodShortParams,
'clientName' => 'console',
'providerName' => $providerSignature->getName(),
'specialtyName' => $actionableMethodData['specialty'],
'actionName' => $actionableMethodData['actionName'],
'reference' => &$actionableMethodData,
'clientReference' => $this->_registry->getClient()
));
}
}
return $metadatas;
}
public function getIndex()
{
return 10000;
}
}

View File

@ -0,0 +1,67 @@
<?php
class Zend_Tool_Framework_Client_Console_ResponseDecorator_Colorizer
implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface
{
protected $_colorOptions = array(
// blacks
'black' => '30m',
'hiBlack' => '1;30m',
'bgBlack' => '40m',
// reds
'red' => '31m',
'hiRed' => '1:31m',
'bgRed' => '41m',
// greens
'green' => '32m',
'hiGreen' => '1;32m',
'bgGreen' => '42m',
// yellows
'yellow' => '33m',
'hiYellow' => '1;33m',
'bgYellow' => '43m',
// blues
'blue' => '34m',
'hiBlue' => '1;34m',
'bgBlue' => '44m',
// magentas
'magenta' => '35m',
'hiMagenta' => '1;35m',
'bgMagenta' => '45m',
// cyans
'cyan' => '36m',
'hiCyan' => '1;36m',
'bgCyan' => '46m',
// whites
'white' => '37m',
'hiWhite' => '1;37m',
'bgWhite' => '47m'
);
public function getName()
{
return 'color';
}
public function decorate($content, $color)
{
if (is_string($color)) {
$color = array($color);
}
$newContent = '';
foreach ($color as $c) {
if (array_key_exists($c, $this->_colorOptions)) {
$newContent .= "\033[" . $this->_colorOptions[$c];
}
}
$newContent .= $content . "\033[m";
return $newContent;
}
}

View File

@ -0,0 +1,36 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Exception
*/
require_once 'Zend/Tool/Framework/Exception.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Exception extends Zend_Tool_Framework_Exception
{
}

View File

@ -0,0 +1,49 @@
<?php
class Zend_Tool_Framework_Client_Interactive_InputHandler
{
/**
* @var Zend_Tool_Framework_Client_Interactive_InputInterface
*/
protected $_client = null;
protected $_inputRequest = null;
public function setClient(Zend_Tool_Framework_Client_Interactive_InputInterface $client)
{
$this->_client = $client;
return $this;
}
public function setInputRequest($inputRequest)
{
if (is_string($inputRequest)) {
require_once 'Zend/Tool/Framework/Client/Interactive/InputRequest.php';
$inputRequest = new Zend_Tool_Framework_Client_Interactive_InputRequest($inputRequest);
} elseif (!$inputRequest instanceof Zend_Tool_Framework_Client_Interactive_InputRequest) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('promptInteractive() requires either a string or an instance of Zend_Tool_Framework_Client_Interactive_InputRequest.');
}
$this->_inputRequest = $inputRequest;
return $this;
}
public function handle()
{
$inputResponse = $this->_client->handleInteractiveInputRequest($this->_inputRequest);
if (is_string($inputResponse)) {
require_once 'Zend/Tool/Framework/Client/Interactive/InputResponse.php';
$inputResponse = new Zend_Tool_Framework_Client_Interactive_InputResponse($inputResponse);
} elseif (!$inputResponse instanceof Zend_Tool_Framework_Client_Interactive_InputResponse) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('The registered $_interactiveCallback for the client must either return a string or an instance of Zend_Tool_Framework_Client_Interactive_InputResponse.');
}
return $inputResponse;
}
}

View File

@ -0,0 +1,16 @@
<?php
interface Zend_Tool_Framework_Client_Interactive_InputInterface
{
/**
* Handle Interactive Input Request
*
* @param Zend_Tool_Framework_Client_Interactive_InputRequest $inputRequest
* @return Zend_Tool_Framework_Client_Interactive_InputResponse|string
*/
public function handleInteractiveInputRequest(Zend_Tool_Framework_Client_Interactive_InputRequest $inputRequest);
public function getMissingParameterPromptString(Zend_Tool_Framework_Provider_Interface $provider, Zend_Tool_Framework_Action_Interface $actionInterface, $missingParameterName);
}

View File

@ -0,0 +1,29 @@
<?php
class Zend_Tool_Framework_Client_Interactive_InputRequest
{
protected $_content = null;
public function __construct($content = null)
{
if ($content) {
$this->setContent($content);
}
}
public function setContent($content)
{
$this->_content = $content;
return $this;
}
public function getContent()
{
return $this->_content;
}
public function __toString()
{
return $this->_content;
}
}

View File

@ -0,0 +1,27 @@
<?php
class Zend_Tool_Framework_Client_Interactive_InputResponse
{
protected $_content = null;
public function __construct($content = null)
{
if ($content) {
$this->setContent($content);
}
}
public function setContent($content)
{
$this->_content = $content;
return $this;
}
public function getContent()
{
return $this->_content;
}
}

View File

@ -0,0 +1,8 @@
<?php
interface Zend_Tool_Framework_Client_Interactive_OutputInterface
{
public function handleInteractiveOutput($string);
}

View File

@ -0,0 +1,299 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Request
{
/**
* @var string
*/
protected $_providerName = null;
/**
* @var string
*/
protected $_specialtyName = null;
/**
* @var string
*/
protected $_actionName = null;
/**
* @var array
*/
protected $_actionParameters = array();
/**
* @var array
*/
protected $_providerParameters = array();
/**
* @var bool
*/
protected $_isPretend = false;
/**
* @var bool
*/
protected $_isDebug = false;
/**
* @var bool
*/
protected $_isVerbose = false;
/**
* @var bool
*/
protected $_isDispatchable = true;
/**
* setProviderName()
*
* @param string $providerName
* @return Zend_Tool_Framework_Client_Request
*/
public function setProviderName($providerName)
{
$this->_providerName = $providerName;
return $this;
}
/**
* getProviderName()
*
* @return string
*/
public function getProviderName()
{
return $this->_providerName;
}
/**
* setSpecialtyName()
*
* @param string $specialtyName
* @return Zend_Tool_Framework_Client_Request
*/
public function setSpecialtyName($specialtyName)
{
$this->_specialtyName = $specialtyName;
return $this;
}
/**
* getSpecialtyName()
*
* @return string
*/
public function getSpecialtyName()
{
return $this->_specialtyName;
}
/**
* setActionName()
*
* @param string $actionName
* @return Zend_Tool_Framework_Client_Request
*/
public function setActionName($actionName)
{
$this->_actionName = $actionName;
return $this;
}
/**
* getActionName()
*
* @return string
*/
public function getActionName()
{
return $this->_actionName;
}
/**
* setActionParameter()
*
* @param string $parameterName
* @param string $parameterValue
* @return Zend_Tool_Framework_Client_Request
*/
public function setActionParameter($parameterName, $parameterValue)
{
$this->_actionParameters[$parameterName] = $parameterValue;
return $this;
}
/**
* getActionParameters()
*
* @return array
*/
public function getActionParameters()
{
return $this->_actionParameters;
}
/**
* getActionParameter()
*
* @param string $parameterName
* @return string
*/
public function getActionParameter($parameterName)
{
return (isset($this->_actionParameters[$parameterName])) ? $this->_actionParameters[$parameterName] : null;
}
/**
* setProviderParameter()
*
* @param string $parameterName
* @param string $parameterValue
* @return Zend_Tool_Framework_Client_Request
*/
public function setProviderParameter($parameterName, $parameterValue)
{
$this->_providerParameters[$parameterName] = $parameterValue;
return $this;
}
/**
* getProviderParameters()
*
* @return array
*/
public function getProviderParameters()
{
return $this->_providerParameters;
}
/**
* getProviderParameter()
*
* @param string $parameterName
* @return string
*/
public function getProviderParameter($parameterName)
{
return (isset($this->_providerParameters[$parameterName])) ? $this->_providerParameters[$parameterName] : null;
}
/**
* setPretend()
*
* @param bool $pretend
* @return Zend_Tool_Framework_Client_Request
*/
public function setPretend($pretend)
{
$this->_isPretend = (bool) $pretend;
return $this;
}
/**
* isPretend() - Whether or not this is a pretend request
*
* @return bool
*/
public function isPretend()
{
return $this->_isPretend;
}
/**
* setDebug()
*
* @param bool $pretend
* @return Zend_Tool_Framework_Client_Request
*/
public function setDebug($debug)
{
$this->_isDebug = (bool) $debug;
return $this;
}
/**
* isDebug() - Whether or not this is a debug enabled request
*
* @return bool
*/
public function isDebug()
{
return $this->_isDebug;
}
/**
* setVerbose()
*
* @param bool $verbose
* @return Zend_Tool_Framework_Client_Request
*/
public function setVerbose($verbose)
{
$this->_isVerbose = (bool) $verbose;
return $this;
}
/**
* isVerbose() - Whether or not this is a verbose enabled request
*
* @return bool
*/
public function isVerbose()
{
return $this->_isVerbose;
}
/**
* setDispatchable()
*
* @param bool $dispatchable
* @return Zend_Tool_Framework_Client_Request
*/
public function setDispatchable($dispatchable)
{
$this->_isDispatchable = (bool) $dispatchable;
return $this;
}
/**
* isDispatchable() Is this request Dispatchable?
*
* @return bool
*/
public function isDispatchable()
{
return $this->_isDispatchable;
}
}

View File

@ -0,0 +1,223 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Response
{
/**
* @var callback|null
*/
protected $_callback = null;
/**
* @var array
*/
protected $_content = array();
/**
* @var Zend_Tool_Framework_Exception
*/
protected $_exception = null;
/**
* @var null|array
*/
protected $_decorators = null;
/**
* @var array
*/
protected $_defaultDecoratorOptions = array();
/**
* setContentCallback()
*
* @param callback $callback
* @return Zend_Tool_Framework_Client_Response
*/
public function setContentCallback($callback)
{
if (!is_callable($callback)) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('The callback provided is not callable');
}
$this->_callback = $callback;
return $this;
}
/**
* setContent()
*
* @param string $content
* @return Zend_Tool_Framework_Client_Response
*/
public function setContent($content, Array $decoratorOptions = array())
{
$this->_applyDecorators($content, $decoratorOptions);
$this->_content = array();
$this->appendContent($content);
return $this;
}
/**
* appendCallback
*
* @param string $content
* @return Zend_Tool_Framework_Client_Response
*/
public function appendContent($content, Array $decoratorOptions = array())
{
$content = $this->_applyDecorators($content, $decoratorOptions);
if ($this->_callback !== null) {
call_user_func($this->_callback, $content);
}
$this->_content[] = $content;
return $this;
}
/**
* setDefaultDecoratorOptions()
*
* @param array $decoratorOptions
* @param bool $mergeIntoExisting
* @return Zend_Tool_Framework_Client_Response
*/
public function setDefaultDecoratorOptions(Array $decoratorOptions, $mergeIntoExisting = false)
{
if ($mergeIntoExisting == false) {
$this->_defaultDecoratorOptions = array();
}
$this->_defaultDecoratorOptions = array_merge($this->_defaultDecoratorOptions, $decoratorOptions);
return $this;
}
/**
* getContent()
*
* @return string
*/
public function getContent()
{
return implode('', $this->_content);
}
/**
* isException()
*
* @return bool
*/
public function isException()
{
return isset($this->_exception);
}
/**
* setException()
*
* @param Exception $exception
* @return Zend_Tool_Framework_Client_Response
*/
public function setException(Exception $exception)
{
$this->_exception = $exception;
return $this;
}
/**
* getException()
*
* @return Exception
*/
public function getException()
{
return $this->_exception;
}
/**
* Add Content Decorator
*
* @param Zend_Tool_Framework_Client_Response_ContentDecorator_Interface $contentDecorator
* @return unknown
*/
public function addContentDecorator(Zend_Tool_Framework_Client_Response_ContentDecorator_Interface $contentDecorator)
{
$decoratorName = strtolower($contentDecorator->getName());
$this->_decorators[$decoratorName] = $contentDecorator;
return $this;
}
/**
* getContentDecorators()
*
* @return array
*/
public function getContentDecorators()
{
return $this->_decorators;
}
/**
* __toString() to cast to a string
*
* @return string
*/
public function __toString()
{
return (string) implode('', $this->_content);
}
/**
* _applyDecorators() apply a group of decorators
*
* @param string $content
* @param array $decoratorOptions
* @return string
*/
protected function _applyDecorators($content, Array $decoratorOptions)
{
$options = array_merge($this->_defaultDecoratorOptions, $decoratorOptions);
$options = array_change_key_case($options, CASE_LOWER);
if ($options) {
foreach ($this->_decorators as $decoratorName => $decorator) {
if (array_key_exists($decoratorName, $options)) {
$content = $decorator->decorate($content, $options[$decoratorName]);
}
}
}
return $content;
}
}

View File

@ -0,0 +1,10 @@
<?php
interface Zend_Tool_Framework_Client_Response_ContentDecorator_Interface
{
public function getName();
public function decorate($content, $decoratorValue);
}

View File

@ -0,0 +1,93 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Client_Response_ContentDecorator_Interface
*/
require_once 'Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Response_ContentDecorator_Separator
implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface
{
/**
* @var string
*/
protected $_separator = PHP_EOL;
/**
* getName() - name of the decorator
*
* @return string
*/
public function getName()
{
return 'separator';
}
/**
* setSeparator()
*
* @param string $separator
* @return Zend_Tool_Framework_Client_Response_ContentDecorator_Separator
*/
public function setSeparator($separator)
{
$this->_separator = $separator;
return $this;
}
/**
* getSeparator()
*
* @return string
*/
public function getSeparator()
{
return $this->_separator;
}
public function decorate($content, $decoratorValue)
{
$run = 1;
if (is_bool($decoratorValue) && $decoratorValue === false) {
return $content;
}
if (is_int($decoratorValue)) {
$run = $decoratorValue;
}
for ($i = 0; $i < $run; $i++) {
$content .= $this->_separator;
}
return $content;
}
}

View File

@ -0,0 +1,36 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Exception
*/
require_once 'Zend/Exception.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Exception extends Zend_Exception
{
}

View File

@ -0,0 +1,146 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Registry_EnabledInterface
*/
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
abstract class Zend_Tool_Framework_Loader_Abstract implements Zend_Tool_Framework_Registry_EnabledInterface
{
/**
* @var Zend_Tool_Framework_Repository_Interface
*/
protected $_registry = null;
/**
* @var array
*/
private $_retrievedFiles = array();
/**
* @var array
*/
private $_loadedClasses = array();
/**
* _getFiles
*
* @return array Array Of Files
*/
abstract protected function _getFiles();
/**
* setRegistry() - required by the enabled interface to get an instance of
* the registry
*
* @param Zend_Tool_Framework_Registry_Interface $registry
* @return Zend_Tool_Framework_Loader_Abstract
*/
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
{
$this->_registry = $registry;
return $this;
}
/**
* load() - called by the client initialize routine to load files
*
*/
public function load()
{
$this->_retrievedFiles = $this->getRetrievedFiles();
$this->_loadedClasses = array();
$manifestRegistry = $this->_registry->getManifestRepository();
$providerRegistry = $this->_registry->getProviderRepository();
$loadedClasses = array();
// loop through files and find the classes declared by loading the file
foreach ($this->_retrievedFiles as $file) {
$classesLoadedBefore = get_declared_classes();
$oldLevel = error_reporting(E_ALL | ~E_STRICT); // remove strict so that other packages wont throw warnings
// should we lint the files here? i think so
include_once $file;
error_reporting($oldLevel); // restore old error level
$classesLoadedAfter = get_declared_classes();
$loadedClasses = array_merge($loadedClasses, array_diff($classesLoadedAfter, $classesLoadedBefore));
}
// loop through the loaded classes and ensure that
foreach ($loadedClasses as $loadedClass) {
// reflect class to see if its something we want to load
$reflectionClass = new ReflectionClass($loadedClass);
if ($reflectionClass->implementsInterface('Zend_Tool_Framework_Manifest_Interface')
&& !$reflectionClass->isAbstract())
{
$manifestRegistry->addManifest($reflectionClass->newInstance());
$this->_loadedClasses[] = $loadedClass;
}
if ($reflectionClass->implementsInterface('Zend_Tool_Framework_Provider_Interface')
&& !$reflectionClass->isAbstract()
&& !$providerRegistry->hasProvider($reflectionClass->getName(), false))
{
$providerRegistry->addProvider($reflectionClass->newInstance());
$this->_loadedClasses[] = $loadedClass;
}
}
return $this->_loadedClasses;
}
/**
* getRetrievedFiles()
*
* @return array Array of Files Retrieved
*/
public function getRetrievedFiles()
{
if ($this->_retrievedFiles == null) {
$this->_retrievedFiles = $this->_getFiles();
}
return $this->_retrievedFiles;
}
/**
* getLoadedClasses()
*
* @return array Array of Loaded Classes
*/
public function getLoadedClasses()
{
return $this->_loadedClasses;
}
}

View File

@ -0,0 +1,115 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Loader_Abstract
*/
require_once 'Zend/Tool/Framework/Loader/Abstract.php';
/**
* @see Zend_Tool_Framework_Loader_IncludePathLoader_RecursiveFilterIterator
*/
require_once 'Zend/Tool/Framework/Loader/IncludePathLoader/RecursiveFilterIterator.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Loader_IncludePathLoader extends Zend_Tool_Framework_Loader_Abstract
{
/**
* _getFiles()
*
* @return array Array of files to load
*/
protected function _getFiles()
{
$paths = explode(PATH_SEPARATOR, get_include_path());
// used for checking similarly named files
$relativeItems = array();
$files = array();
$isZendTraversed = false;
foreach ($paths as $path) {
// default patterns to use
$filterDenyDirectoryPattern = '.*(/|\\\\).svn';
$filterAcceptFilePattern = '.*(?:Manifest|Provider)\.php$';
if (!file_exists($path) || $path[0] == '.') {
continue;
}
$realIncludePath = realpath($path);
// ensure that we only traverse a single version of Zend Framework on all include paths
if (file_exists($realIncludePath . '/Zend/Tool/Framework/Loader/IncludePathLoader.php')) {
if ($isZendTraversed === false) {
$isZendTraversed = true;
} else {
// use the deny directory pattern that includes the path to 'Zend', it will not be accepted
$filterDenyDirectoryPattern = '.*((/|\\\\).svn|' . preg_quote($realIncludePath . DIRECTORY_SEPARATOR) . 'Zend)';
}
}
// create recursive directory iterator
$rdi = new RecursiveDirectoryIterator($path);
// pass in the RecursiveDirectoryIterator & the patterns
$filter = new Zend_Tool_Framework_Loader_IncludePathLoader_RecursiveFilterIterator(
$rdi,
$filterDenyDirectoryPattern,
$filterAcceptFilePattern
);
// build the rii with the filter
$iterator = new RecursiveIteratorIterator($filter);
// iterate over the accepted items
foreach ($iterator as $item) {
// ensure that the same named file from separate include_paths is not loaded
$relativeItem = preg_replace('#^' . preg_quote($realIncludePath . DIRECTORY_SEPARATOR, '#') . '#', '', $item->getRealPath());
// no links allowed here for now
if ($item->isLink()) {
continue;
}
// no items that are relavitely the same are allowed
if (in_array($relativeItem, $relativeItems)) {
continue;
}
$relativeItems[] = $relativeItem;
$files[] = $item->getRealPath();
}
}
return $files;
}
}

View File

@ -0,0 +1,91 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Loader_IncludePathLoader_RecursiveFilterIterator extends RecursiveFilterIterator
{
protected $_denyDirectoryPattern = null;
protected $_acceptFilePattern = null;
/**
* constructor
*
* @param RecursiveIterator $iterator
* @param string $denyDirectoryPattern
* @param string $acceptFilePattern
*/
public function __construct(RecursiveIterator $iterator, $denyDirectoryPattern = null, $acceptFilePattern = null)
{
$this->_denyDirectoryPattern = $denyDirectoryPattern;
$this->_acceptFilePattern = $acceptFilePattern;
parent::__construct($iterator);
}
/**
* accept() - Which iterable items to accept or deny, required by FilterInterface
*
* @return unknown
*/
public function accept()
{
$currentNode = $this->current();
$currentNodeRealPath = $currentNode->getRealPath();
// if the current node is a directory AND doesn't match the denyDirectory pattern, accept
if ($currentNode->isDir()
&& !preg_match('#' . $this->_denyDirectoryPattern . '#', $currentNodeRealPath)) {
return true;
}
// if the file matches the accept file pattern, accept
$acceptable = (preg_match('#' . $this->_acceptFilePattern . '#', $currentNodeRealPath)) ? true : false;
return $acceptable;
}
/**
* getChildren() - overridden from RecursiveFilterIterator to allow the persistence of
* the $_denyDirectoryPattern and the $_acceptFilePattern when sub iterators of this filter
* are needed to be created.
*
* @return Zend_Tool_Framework_Loader_IncludePathLoader_RecursiveFilterIterator
*/
public function getChildren()
{
if (empty($this->ref)) {
$this->ref = new ReflectionClass($this);
}
return $this->ref->newInstance(
$this->getInnerIterator()->getChildren(),
$this->_denyDirectoryPattern,
$this->_acceptFilePattern
);
}
}

View File

@ -0,0 +1,47 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Manifest_Interface
*/
require_once 'Zend/Tool/Framework/Manifest/Interface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Framework_Manifest_ActionManifestable extends Zend_Tool_Framework_Manifest_Interface
{
/**
* getActions()
*
* Should either return a single action, or an array
* of actions
*
* @return array|Zend_Tool_Framework_Action_Interface
*/
public function getActions();
}

View 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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Exception
*/
require_once 'Zend/Tool/Framework/Exception.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Manifest_Exception extends Zend_Tool_Framework_Exception
{
}

View File

@ -0,0 +1,42 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Framework_Manifest_Indexable extends Zend_Tool_Framework_Manifest_Interface
{
/**
* getActions()
*
* Should either return a single action, or an array
* of actions
*
* @return array|Zend_Tool_Framework_Action_Interface
*/
public function getIndex();
}

View File

@ -0,0 +1,57 @@
<?php
interface Zend_Tool_Framework_Manifest_Interface
{
/**
* The following methods are completely optional, and any combination of them
* can be used as part of a manifest. The manifest repository will process
* the return values of these actions as specfied in the following method docblocks.
*
* Since these actions are
*
*/
/**
* getMetadata()
*
* Should either return a single metadata object or an array
* of metadata objects
*
* @return array|Zend_Tool_Framework_Manifest_Metadata
**
public function getMetadata();
**/
/**
* getActions()
*
* Should either return a single action, or an array
* of actions
*
* @return array|Zend_Tool_Framework_Action_Interface
**
public function getActions();
**/
/**
* getProviders()
*
* Should either return a single provider or an array
* of providers
*
**
public function getProviders();
**/
}

View File

@ -0,0 +1,47 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Manifest_Interface.php
*/
require_once 'Zend/Tool/Framework/Manifest/Interface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Framework_Manifest_MetadataManifestable extends Zend_Tool_Framework_Manifest_Interface
{
/**
* getMetadata()
*
* Should either return a single metadata object or an array
* of metadata objects
*
* @return array|Zend_Tool_Framework_Manifest_Metadata
*/
public function getMetadata();
}

View File

@ -0,0 +1,47 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Manifest_Interface.php
*/
require_once 'Zend/Tool/Framework/Manifest/Interface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Framework_Manifest_ProviderManifestable extends Zend_Tool_Framework_Manifest_Interface
{
/**
* getProviders()
*
* Should either return a single provider or an array
* of providers
*
* @return array|string|Zend_Tool_Framework_Provider_Interface
*/
public function getProviders();
}

View File

@ -0,0 +1,300 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Registry_EnabledInterface
*/
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Manifest_Repository
implements Zend_Tool_Framework_Registry_EnabledInterface, IteratorAggregate, Countable
{
/**
* @var Zend_Tool_Framework_Provider_Registry_Interface
*/
protected $_registry = null;
/**
* @var array
*/
protected $_manifests = array();
/**
* @var array Array of Zend_Tool_Framework_Metadata_Interface
*/
protected $_metadatas = array();
/**
* setRegistry()
*
* @param Zend_Tool_Framework_Registry_Interface $registry
* @return unknown
*/
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
{
$this->_registry = $registry;
return $this;
}
/**
* addManifest() - Add a manifest for later processing
*
* @param Zend_Tool_Framework_Manifest_Interface $manifest
* @return Zend_Tool_Framework_Manifest_Repository
*/
public function addManifest(Zend_Tool_Framework_Manifest_Interface $manifest)
{
// we need to get an index number so that manifests with
// higher indexes have priority over others
$index = count($this->_manifests);
if ($manifest instanceof Zend_Tool_Framework_Registry_EnabledInterface) {
$manifest->setRegistry($this->_registry);
}
// if the manifest supplies a getIndex() method, use it
if ($manifest instanceof Zend_Tool_Framework_Manifest_Indexable) {
$index = $manifest->getIndex();
}
// get the required objects from the framework registry
$actionRepository = $this->_registry->getActionRepository();
$providerRepository = $this->_registry->getProviderRepository();
// load providers if interface supports that method
if ($manifest instanceof Zend_Tool_Framework_Manifest_ProviderManifestable) {
$providers = $manifest->getProviders();
if (!is_array($providers)) {
$providers = array($providers);
}
foreach ($providers as $provider) {
if (!$provider instanceof Zend_Tool_Framework_Provider_Interface) {
require_once 'Zend/Tool/Framework/Manifest/Exception.php';
throw new Zend_Tool_Framework_Manifest_Exception(
'A provider provided by the ' . get_class($manifest)
. ' does not implement Zend_Tool_Framework_Provider_Interface'
);
}
if (!$providerRepository->hasProvider($provider, false)) {
$providerRepository->addProvider($provider);
}
}
}
// load actions if interface supports that method
if ($manifest instanceof Zend_Tool_Framework_Manifest_ActionManifestable) {
$actions = $manifest->getActions();
if (!is_array($actions)) {
$actions = array($actions);
}
foreach ($actions as $action) {
if (is_string($action)) {
$action = new Zend_Tool_Framework_Action_Base($action);
}
$actionRepository->addAction($action);
}
}
// should we detect collisions here? does it even matter?
$this->_manifests[$index] = $manifest;
ksort($this->_manifests);
return $this;
}
/**
* getManifests()
*
* @return Zend_Tool_Framework_Manifest_Interface[]
*/
public function getManifests()
{
return $this->_manifests;
}
/**
* addMetadata() - add a metadata peice by peice
*
* @param Zend_Tool_Framework_Manifest_Metadata $metadata
* @return Zend_Tool_Framework_Manifest_Repository
*/
public function addMetadata(Zend_Tool_Framework_Metadata_Interface $metadata)
{
$this->_metadatas[] = $metadata;
return $this;
}
/**
* process() - Process is expected to be called at the end of client construction time.
* By this time, the loader has run and loaded any found manifests into the repository
* for loading
*
* @return Zend_Tool_Framework_Manifest_Repository
*/
public function process()
{
foreach ($this->_manifests as $manifest) {
if ($manifest instanceof Zend_Tool_Framework_Manifest_MetadataManifestable) {
$metadatas = $manifest->getMetadata();
if (!is_array($metadatas)) {
$metadatas = array($metadatas);
}
foreach ($metadatas as $metadata) {
if (!$metadata instanceof Zend_Tool_Framework_Metadata_Interface) {
require_once 'Zend/Tool/Framework/Manifest/Exception.php';
throw new Zend_Tool_Framework_Manifest_Exception(
'A Zend_Tool_Framework_Metadata_Interface object was not found in manifest ' . get_class($manifest)
);
}
$this->addMetadata($metadata);
}
}
}
return $this;
}
/**
* getMetadatas() - This is the main search function for the repository.
*
* @example This will retrieve all metadata that matches the following criteria
* $manifestRepo->getMetadatas(array(
* 'providerName' => 'Version',
* 'actionName' => 'show'
* ));
*
* @param array $searchProperties
* @param bool $includeNonExistentProperties
* @return Zend_Tool_Framework_Manifest_Metadata[]
*/
public function getMetadatas(Array $searchProperties = array(), $includeNonExistentProperties = true)
{
$returnMetadatas = array();
// loop through the metadatas so that we can search each individual one
foreach ($this->_metadatas as $metadata) {
// each value will be retrieved from the metadata, each metadata should
// implement a getter method to retrieve the value
foreach ($searchProperties as $searchPropertyName => $searchPropertyValue) {
if (method_exists($metadata, 'get' . $searchPropertyName)) {
if ($metadata->{'get' . $searchPropertyName}() != $searchPropertyValue) {
// if the metadata supports a specific property but the value does not
// match, move on
continue 2;
}
} elseif (!$includeNonExistentProperties) {
// if the option $includeNonExitentProperties is false, then move on as
// we dont want to include this metadata if non existent
// search properties are not inside the target (current) metadata
continue 2;
}
}
// all searching has been accounted for, if we reach this point, then the metadata
// is good and we can return it
$returnMetadatas[] = $metadata;
}
return $returnMetadatas;
}
/**
* getMetadata() - This will proxy to getMetadatas(), but will only return a single metadata. This method
* should be used in situations where the search criteria is known to only find a single metadata object
*
* @param array $searchProperties
* @param bool $includeNonExistentProperties
* @return Zend_Tool_Framework_Manifest_Metadata
*/
public function getMetadata(Array $searchProperties = array(), $includeNonExistentProperties = true)
{
$metadatas = $this->getMetadatas($searchProperties, $includeNonExistentProperties);
return array_shift($metadatas);
}
/**
* __toString() - cast to string
*
* @return string
*/
public function __toString()
{
$metadatasByType = array();
foreach ($this->_metadatas as $metadata) {
if (!array_key_exists($metadata->getType(), $metadatasByType)) {
$metadatasByType[$metadata->getType()] = array();
}
$metadatasByType[$metadata->getType()][] = $metadata;
}
$string = '';
foreach ($metadatasByType as $type => $metadatas) {
$string .= $type . PHP_EOL;
foreach ($metadatas as $metadata) {
$metadataString = ' ' . $metadata->__toString() . PHP_EOL;
//$metadataString = str_replace(PHP_EOL, PHP_EOL . ' ', $metadataString);
$string .= $metadataString;
}
}
return $string;
}
/**
* count() - required by the Countable Interface
*
* @return int
*/
public function count()
{
return count($this->_metadatas);
}
/**
* getIterator() - required by the IteratorAggregate interface
*
* @return ArrayIterator
*/
public function getIterator()
{
return new ArrayIterator($this->_metadatas);
}
}

View File

@ -0,0 +1,221 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Metadata_Interface
*/
require_once 'Zend/Tool/Framework/Metadata/Interface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Metadata_Basic implements Zend_Tool_Framework_Metadata_Interface
{
/**#@+
* Search constants
*/
const ATTRIBUTES_ALL = 'attributesAll';
const ATTRIBUTES_NO_PARENT = 'attributesParent';
/**#@-*/
/**#@+
* @var string
*/
protected $_type = 'Basic';
protected $_name = null;
protected $_value = null;
/**#@-*/
/**
* @var mixed
*/
protected $_reference = null;
/**
* Constructor - allows for the setting of options
*
* @param array $options
*/
public function __construct(Array $options = array())
{
if ($options) {
$this->setOptions($options);
}
}
/**
* setOptions() - standard issue implementation, this will set any
* options that are supported via a set method.
*
* @param array $options
* @return Zend_Tool_Framework_Metadata_Basic
*/
public function setOptions(Array $options)
{
foreach ($options as $optionName => $optionValue) {
$setMethod = 'set' . $optionName;
if (method_exists($this, $setMethod)) {
$this->{$setMethod}($optionValue);
}
}
return $this;
}
/**
* getType()
*
* @return string
*/
public function getType()
{
return $this->_type;
}
/**
* setType()
*
* @param string $type
* @return Zend_Tool_Framework_Metadata_Basic
*/
public function setType($type)
{
$this->_type = $type;
return $this;
}
/**
* getName()
*
* @return string
*/
public function getName()
{
return $this->_name;
}
/**
* setName()
*
* @param string $name
* @return Zend_Tool_Framework_Metadata_Basic
*/
public function setName($name)
{
$this->_name = $name;
return $this;
}
/**
* getValue()
*
* @return mixed
*/
public function getValue()
{
return $this->_value;
}
/**
* setValue()
*
* @param unknown_type $Value
* @return Zend_Tool_Framework_Metadata_Basic
*/
public function setValue($value)
{
$this->_value = $value;
return $this;
}
/**
* setReference()
*
* @param mixed $reference
* @return Zend_Tool_Framework_Metadata_Basic
*/
public function setReference($reference)
{
$this->_reference = $reference;
return $this;
}
/**
* getReference()
*
* @return mixed
*/
public function getReference()
{
return $this->_reference;
}
/**
* getAttributes() - this will retrieve any attributes of this object that exist as properties
* This is most useful for printing metadata.
*
* @param const $type
* @return array
*/
public function getAttributes($type = self::ATTRIBUTES_ALL, $stringRepresentationOfNonScalars = false)
{
$thisReflection = new ReflectionObject($this);
$metadataPairValues = array();
foreach (get_object_vars($this) as $varName => $varValue) {
if ($type == self::ATTRIBUTES_NO_PARENT && ($thisReflection->getProperty($varName)->getDeclaringClass()->getName() == 'Zend_Tool_Framework_Metadata_Basic')) {
continue;
}
if ($stringRepresentationOfNonScalars) {
if (is_object($varValue)) {
$varValue = '(object)';
}
if (is_null($varValue)) {
$varValue = '(null)';
}
}
$metadataPairValues[ltrim($varName, '_')] = $varValue;
}
return $metadataPairValues;
}
/**
* __toString() - string representation of this object
*
* @return string
*/
public function __toString()
{
return 'Type: ' . $this->_type . ', Name: ' . $this->_name . ', Value: ' . (is_array($this->_value) ? http_build_query($this->_value) : (string) $this->_value);
}
}

View File

@ -0,0 +1,107 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Manifest_Metadata
*/
require_once 'Zend/Tool/Framework/Manifest/Metadata.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Metadata_Dynamic implements Zend_Tool_Framework_Metadata_Interface
{
/**
* @var string
*/
protected $_type = 'Dynamic';
/**
* @var array
*/
protected $_dynamicAttributes = array();
/**
* __isset()
*
* Check if an attrbute is set
*
* @param string $name
* @return bool
*/
public function __isset($name)
{
return isset($this->_dynamicAttributes[$name]);
}
/**
* __unset()
*
* @param string $name
* @return null
*/
public function __unset($name)
{
unset($this->_dynamicAttributes[$name]);
return;
}
/**
* __get() - Get a property via property call $metadata->foo
*
* @param string $name
* @return mixed
*/
public function __get($name)
{
if (method_exists($this, 'get' . $name)) {
return $this->{'get' . $name}();
} elseif (array_key_exists($name, $this->_dynamicAttributes)) {
return ;
} else {
require_once 'Zend/Tool/Framework/Registry/Exception.php';
throw new Zend_Tool_Framework_Registry_Exception('Property ' . $name . ' was not located in this metadata.');
}
}
/**
* __set() - Set a property via the magic set $metadata->foo = 'foo'
*
* @param string $name
* @param mixed $value
*/
public function __set($name, $value)
{
if (method_exists($this, 'set' . $name)) {
$this->{'set' . $name}($value);
return;
} else {
require_once 'Zend/Tool/Framework/Registry/Exception.php';
throw new Zend_Tool_Framework_Registry_Exception('Property ' . $name . ' was not located in this registry.');
}
}
}

View File

@ -0,0 +1,52 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Framework_Metadata_Interface
{
/**
* getType()
*
* The type of metadata this describes
*
*/
public function getType();
/**
* getName()
*
*/
public function getName();
/**
* getValue()
*
*/
public function getValue();
}

View File

@ -0,0 +1,218 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Metadata_Basic
*/
require_once 'Zend/Tool/Framework/Metadata/Basic.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Metadata_Tool extends Zend_Tool_Framework_Metadata_Basic
{
/**
* @var string
*/
protected $_type = 'Tool';
/**#@+
* @var string
*/
protected $_clientName = null;
protected $_actionName = null;
protected $_providerName = null;
protected $_specialtyName = null;
/**#@-*/
/**#@+
* @var string
*/
protected $_clientReference = null;
protected $_actionReference = null;
protected $_providerReference = null;
/**#@-*/
public function setClientName($clientName)
{
$this->_clientName = $clientName;
return $this;
}
public function getClientName()
{
return $this->_clientName;
}
/**
* setActionName()
*
* @param string $actionName
* @return Zend_Tool_Framework_Metadata_Tool
*/
public function setActionName($actionName)
{
$this->_actionName = $actionName;
return $this;
}
/**
* getActionName()
*
* @return string
*/
public function getActionName()
{
return $this->_actionName;
}
/**
* setProviderName()
*
* @param string $providerName
* @return Zend_Tool_Framework_Metadata_Tool
*/
public function setProviderName($providerName)
{
$this->_providerName = $providerName;
return $this;
}
/**
* getProviderName()
*
* @return string
*/
public function getProviderName()
{
return $this->_providerName;
}
/**
* setSpecialtyName()
*
* @param string $specialtyName
* @return Zend_Tool_Framework_Metadata_Tool
*/
public function setSpecialtyName($specialtyName)
{
$this->_specialtyName = $specialtyName;
return $this;
}
/**
* getSpecialtyName()
*
* @return string
*/
public function getSpecialtyName()
{
return $this->_specialtyName;
}
/**
* setClientReference()
*
* @param Zend_Tool_Framework_Client_Abstract $client
* @return Zend_Tool_Framework_Metadata_Tool
*/
public function setClientReference(Zend_Tool_Framework_Client_Abstract $client)
{
$this->_clientReference = $client;
return $this;
}
/**
* getClientReference()
*
* @return Zend_Tool_Framework_Client_Abstract
*/
public function getClientReference()
{
return $this->_clientReference;
}
/**
* setActionReference()
*
* @param Zend_Tool_Framework_Action_Interface $action
* @return Zend_Tool_Framework_Metadata_Tool
*/
public function setActionReference(Zend_Tool_Framework_Action_Interface $action)
{
$this->_actionReference = $action;
return $this;
}
/**
* getActionReference()
*
* @return Zend_Tool_Framework_Action_Interface
*/
public function getActionReference()
{
return $this->_actionReference;
}
/**
* setProviderReference()
*
* @param Zend_Tool_Framework_Provider_Interface $provider
* @return Zend_Tool_Framework_Metadata_Tool
*/
public function setProviderReference(Zend_Tool_Framework_Provider_Interface $provider)
{
$this->_providerReference = $provider;
return $this;
}
/**
* getProviderReference()
*
* @return Zend_Tool_Framework_Provider_Interface
*/
public function getProviderReference()
{
return $this->_providerReference;
}
/**
* __toString() cast to string
*
* @return string
*/
public function __toString()
{
$string = parent::__toString();
$string .= ' (ProviderName: ' . $this->_providerName
. ', ActionName: ' . $this->_actionName
. ', SpecialtyName: ' . $this->_specialtyName
. ')';
return $string;
}
}

View File

@ -0,0 +1,68 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Provider_Interface
*/
require_once 'Zend/Tool/Framework/Provider/Interface.php';
/**
* @see Zend_Tool_Framework_Registry_EnabledInterface
*/
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
/**
* This is a convenience class.
*
* At current it will return the request and response from the client registry
* as they are the more common things that will be needed by providers
*
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
abstract class Zend_Tool_Framework_Provider_Abstract
implements Zend_Tool_Framework_Provider_Interface, Zend_Tool_Framework_Registry_EnabledInterface
{
/**
* @var Zend_Tool_Framework_Registry_Interface
*/
protected $_registry = null;
/**
* setRegistry() - required by Zend_Tool_Framework_Registry_EnabledInterface
*
* @param Zend_Tool_Framework_Registry_Interface $registry
* @return Zend_Tool_Framework_Provider_Abstract
*/
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
{
$this->_registry = $registry;
return $this;
}
}

View File

@ -0,0 +1,5 @@
<?php
interface Zend_Tool_Framework_Provider_DocblockManifestInterface
{
}

View 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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Exception
*/
require_once 'Zend/Tool/Framework/Exception.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Provider_Exception extends Zend_Tool_Framework_Exception
{
}

View File

@ -0,0 +1,5 @@
<?php
interface Zend_Tool_Framework_Provider_Interactable
{
}

View File

@ -0,0 +1,31 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Framework_Provider_Interface
{
}

View File

@ -0,0 +1,31 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Framework_Provider_Pretendable
{
}

View File

@ -0,0 +1,262 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Provider_Signature
*/
require_once 'Zend/Tool/Framework/Provider/Signature.php';
/**
* @see Zend_Tool_Framework_Registry_EnabledInterface
*/
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Provider_Repository
implements Zend_Tool_Framework_Registry_EnabledInterface, IteratorAggregate, Countable
{
/**
* @var Zend_Tool_Framework_Registry
*/
protected $_registry = null;
/**
* @var bool
*/
protected $_processOnAdd = false;
/**
* @var Zend_Tool_Framework_Provider_Interface[]
*/
protected $_unprocessedProviders = array();
/**
* @var Zend_Tool_Framework_Provider_Signature[]
*/
protected $_providerSignatures = array();
/**
* @var array Array of Zend_Tool_Framework_Provider_Inteface
*/
protected $_providers = array();
/**
* setRegistry()
*
* @param Zend_Tool_Framework_Registry_Interface $registry
* @return unknown
*/
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
{
$this->_registry = $registry;
return $this;
}
/**
* Set the ProcessOnAdd flag
*
* @param unknown_type $processOnAdd
* @return unknown
*/
public function setProcessOnAdd($processOnAdd = true)
{
$this->_processOnAdd = (bool) $processOnAdd;
return $this;
}
/**
* Add a provider to the repository for processing
*
* @param Zend_Tool_Framework_Provider_Interface $provider
* @return Zend_Tool_Framework_Provider_Repository
*/
public function addProvider(Zend_Tool_Framework_Provider_Interface $provider, $overwriteExistingProvider = false)
{
if ($provider instanceof Zend_Tool_Framework_Registry_EnabledInterface) {
$provider->setRegistry($this->_registry);
}
if (method_exists($provider, 'getName')) {
$providerName = $provider->getName();
} else {
$providerName = $this->_parseName($provider);
}
// if a provider by the given name already exist, and its not set as overwritable, throw exception
if (!$overwriteExistingProvider &&
(array_key_exists($providerName, $this->_unprocessedProviders)
|| array_key_exists($providerName, $this->_providers)))
{
require_once 'Zend/Tool/Framework/Provider/Exception.php';
throw new Zend_Tool_Framework_Provider_Exception('A provider by the name ' . $providerName
. ' is already registered and $overrideExistingProvider is set to false.');
}
$this->_unprocessedProviders[$providerName] = $provider;
// if process has already been called, process immediately.
if ($this->_processOnAdd) {
$this->process();
}
return $this;
}
public function hasProvider($providerOrClassName, $processedOnly = true)
{
if ($providerOrClassName instanceof Zend_Tool_Framework_Provider_Interface) {
$targetProviderClassName = get_class($providerOrClassName);
} else {
$targetProviderClassName = (string) $providerOrClassName;
}
if (!$processedOnly) {
foreach ($this->_unprocessedProviders as $unprocessedProvider) {
if (get_class($unprocessedProvider) == $targetProviderClassName) {
return true;
}
}
}
foreach ($this->_providers as $processedProvider) {
if (get_class($processedProvider) == $targetProviderClassName) {
return true;
}
}
return false;
}
/**
* Process all of the unprocessed providers
*
*/
public function process()
{
// process all providers in the unprocessedProviders array
foreach ($this->_unprocessedProviders as $providerName => $provider) {
// create a signature for the provided provider
$providerSignature = new Zend_Tool_Framework_Provider_Signature($provider);
if ($providerSignature instanceof Zend_Tool_Framework_Registry_EnabledInterface) {
$providerSignature->setRegistry($this->_registry);
}
$providerSignature->process();
// ensure the name is lowercased for easier searching
$providerName = strtolower($providerName);
// add to the appropraite place
$this->_providerSignatures[$providerName] = $providerSignature;
$this->_providers[$providerName] = $providerSignature->getProvider();
// remove from unprocessed array
unset($this->_unprocessedProviders[$providerName]);
}
}
/**
* getProviders() Get all the providers in the repository
*
* @return array
*/
public function getProviders()
{
return $this->_providers;
}
/**
* getProviderSignatures() Get all the provider signatures
*
* @return array
*/
public function getProviderSignatures()
{
return $this->_providerSignatures;
}
/**
* getProvider()
*
* @param string $providerName
* @return Zend_Tool_Framework_Provider_Interface
*/
public function getProvider($providerName)
{
return $this->_providers[strtolower($providerName)];
}
/**
* getProviderSignature()
*
* @param string $providerName
* @return Zend_Tool_Framework_Provider_Signature
*/
public function getProviderSignature($providerName)
{
return $this->_providerSignatures[strtolower($providerName)];
}
/**
* count() - return the number of providers
*
* @return int
*/
public function count()
{
return count($this->_providers);
}
/**
* getIterator() - Required by the IteratorAggregate Interface
*
* @return ArrayIterator
*/
public function getIterator()
{
return new ArrayIterator($this->getProviders());
}
/**
* _parseName - internal method to determine the name of an action when one is not explicity provided.
*
* @param Zend_Tool_Framework_Action_Interface $action
* @return string
*/
protected function _parseName(Zend_Tool_Framework_Provider_Interface $provider)
{
$className = get_class($provider);
$providerName = substr($className, strrpos($className, '_')+1);
return $providerName;
}
}

View File

@ -0,0 +1,390 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Reflection_Class
*/
require_once 'Zend/Reflection/Class.php';
/**
* @see Zend_Tool_Framework_Registry
*/
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
/**
* @see Zend_Tool_Framework_Action_Base
*/
require_once 'Zend/Tool/Framework/Action/Base.php';
/**
* The purpose of Zend_Tool_Framework_Provider_Signature is to derive
* callable signatures from the provided provider.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Provider_Signature implements Zend_Tool_Framework_Registry_EnabledInterface
{
/**
* @var Zend_Tool_Framework_Registry
*/
protected $_registry = null;
/**
* @var Zend_Tool_Framework_Provider_Interface
*/
protected $_provider = null;
/**
* @var string
*/
protected $_name = null;
/**
* @var array
*/
protected $_specialties = array();
/**
* @var array
*/
protected $_actionableMethods = array();
/**
* @var unknown_type
*/
protected $_actions = array();
/**
* @var Zend_Reflection_Class
*/
protected $_providerReflection = null;
/**
* @var bool
*/
protected $_isProcessed = false;
/**
* Constructor
*
* @param Zend_Tool_Framework_Provider_Interface $provider
*/
public function __construct(Zend_Tool_Framework_Provider_Interface $provider)
{
$this->_provider = $provider;
$this->_providerReflection = new Zend_Reflection_Class($provider);
}
/**
* setRegistry()
*
* @param Zend_Tool_Framework_Registry_Interface $registry
* @return Zend_Tool_Framework_Provider_Signature
*/
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
{
$this->_registry = $registry;
return $this;
}
public function process()
{
if ($this->_isProcessed) {
return;
}
$this->_process();
}
/**
* getName() of the provider
*
* @return unknown
*/
public function getName()
{
return $this->_name;
}
/**
* Get the provider for this signature
*
* @return Zend_Tool_Framework_Provider_Interface
*/
public function getProvider()
{
return $this->_provider;
}
/**
* getProviderReflection()
*
* @return Zend_Reflection_Class
*/
public function getProviderReflection()
{
return $this->_providerReflection;
}
/**
* getSpecialities()
*
* @return array
*/
public function getSpecialties()
{
return $this->_specialties;
}
/**
* getActions()
*
* @return array Array of Actions
*/
public function getActions()
{
return $this->_actions;
}
/**
* getActionableMethods()
*
* @return array
*/
public function getActionableMethods()
{
return $this->_actionableMethods;
}
/**
* getActionableMethod() - Get an actionable method by name, this will return an array of
* useful information about what can be exectued on this provider
*
* @param string $methodName
* @return array
*/
public function getActionableMethod($methodName)
{
if (isset($this->_actionableMethods[$methodName])) {
return $this->_actionableMethods[$methodName];
}
return false;
}
/**
* getActionableMethodByActionName() - Get an actionable method by its action name, this
* will return an array of useful information about what can be exectued on this provider
*
* @param string $actionName
* @return array
*/
public function getActionableMethodByActionName($actionName)
{
foreach ($this->_actionableMethods as $actionableMethod) {
if ($actionName == $actionableMethod['actionName']) {
return $actionableMethod;
}
}
return false;
}
/**
* _process() is called at construction time and is what will build the signature information
* for determining what is actionable
*
*/
protected function _process()
{
$this->_isProcessed = true;
$this->_processName();
$this->_processSpecialties();
$this->_processActionableMethods();
}
/**
* _processName();
*
*/
protected function _processName()
{
if (method_exists($this->_provider, 'getName')) {
$this->_name = $this->_provider->getName();
}
if ($this->_name == null) {
$className = get_class($this->_provider);
$name = substr($className, strrpos($className, '_')+1);
$name = preg_replace('#(Provider|Manifest)$#', '', $name);
$this->_name = $name;
}
}
/**
* _processSpecialties() - Break out the specialty names for this provider
*
*/
protected function _processSpecialties()
{
$specialties = array();
if ($this->_providerReflection->hasMethod('getSpecialties')) {
$specialties = $this->_provider->getSpecialties();
if (!is_array($specialties)) {
require_once 'Zend/Tool/Framework/Provider/Exception.php';
throw new Zend_Tool_Framework_Provider_Exception(
'Provider ' . get_class($this->_provider) . ' must return an array for method getSpecialties().'
);
}
} else {
$defaultProperties = $this->_providerReflection->getDefaultProperties();
$specialties = (isset($defaultProperties['_specialties'])) ? $defaultProperties['_specialties'] : array();
if (!is_array($specialties)) {
require_once 'Zend/Tool/Framework/Provider/Exception.php';
throw new Zend_Tool_Framework_Provider_Exception(
'Provider ' . get_class($this->_provider) . '\'s property $_specialties must be an array.'
);
}
}
$this->_specialties = array_merge(array('_Global'), $specialties);
}
/**
* _processActionableMethods() - process all methods that can be called on this provider.
*
*/
protected function _processActionableMethods()
{
$specialtyRegex = '#(.*)(' . implode('|', $this->_specialties) . ')$#i';
$methods = $this->_providerReflection->getMethods();
$actionableMethods = array();
foreach ($methods as $method) {
$methodName = $method->getName();
/**
* the following will determine what methods are actually actionable
* public, non-static, non-underscore prefixed, classes that dont
* contain the name "
*/
if (!$method->getDeclaringClass()->isInstantiable()
|| !$method->isPublic()
|| $methodName[0] == '_'
|| $method->isStatic()
|| in_array($methodName, array('getContextClasses', 'getName')) // other protected public methods will nee to go here
) {
continue;
}
/**
* check to see if the method was a required method by a Zend_Tool_* interface
*/
foreach ($method->getDeclaringClass()->getInterfaces() as $methodDeclaringClassInterface) {
if (strpos($methodDeclaringClassInterface->getName(), 'Zend_Tool_') === 0
&& $methodDeclaringClassInterface->hasMethod($methodName)) {
continue 2;
}
}
$actionableName = ucfirst($methodName);
if (substr($actionableName, -6) == 'Action') {
$actionableName = substr($actionableName, 0, -6);
}
$actionableMethods[$methodName]['methodName'] = $methodName;
$matches = null;
if (preg_match($specialtyRegex, $actionableName, $matches)) {
$actionableMethods[$methodName]['actionName'] = $matches[1];
$actionableMethods[$methodName]['specialty'] = $matches[2];
} else {
$actionableMethods[$methodName]['actionName'] = $actionableName;
$actionableMethods[$methodName]['specialty'] = '_Global';
}
// get the action, and create non-existent actions when they dont exist (the true part below)
$action = $this->_registry->getActionRepository()->getAction($actionableMethods[$methodName]['actionName']);
if ($action == null) {
$action = new Zend_Tool_Framework_Action_Base($actionableMethods[$methodName]['actionName']);
$this->_registry->getActionRepository()->addAction($action);
}
$actionableMethods[$methodName]['action'] = $action;
if (!in_array($actionableMethods[$methodName]['action'], $this->_actions)) {
$this->_actions[] = $actionableMethods[$methodName]['action'];
}
$parameterInfo = array();
$position = 1;
foreach ($method->getParameters() as $parameter) {
$currentParam = $parameter->getName();
$parameterInfo[$currentParam]['position'] = $position++;
$parameterInfo[$currentParam]['optional'] = $parameter->isOptional();
$parameterInfo[$currentParam]['default'] = ($parameter->isOptional()) ? $parameter->getDefaultValue() : null;
$parameterInfo[$currentParam]['name'] = $currentParam;
$parameterInfo[$currentParam]['type'] = 'string';
$parameterInfo[$currentParam]['description'] = null;
}
$matches = null;
if (($docComment = $method->getDocComment()) != '' &&
(preg_match_all('/@param\s+(\w+)+\s+(\$\S+)\s+(.*?)(?=(?:\*\s*@)|(?:\*\/))/s', $docComment, $matches)))
{
for ($i=0; $i <= count($matches[0])-1; $i++) {
$currentParam = ltrim($matches[2][$i], '$');
if ($currentParam != '' && isset($parameterInfo[$currentParam])) {
$parameterInfo[$currentParam]['type'] = $matches[1][$i];
$descriptionSource = $matches[3][$i];
if ($descriptionSource != '') {
$parameterInfo[$currentParam]['description'] = trim($descriptionSource);
}
}
}
}
$actionableMethods[$methodName]['parameterInfo'] = $parameterInfo;
}
$this->_actionableMethods = $actionableMethods;
}
}

View File

@ -0,0 +1,355 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Registry_Interface
*/
require_once 'Zend/Tool/Framework/Registry/Interface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Registry implements Zend_Tool_Framework_Registry_Interface
{
/**
* @var Zend_Tool_Framework_Loader_Abstract
*/
protected $_loader = null;
/**
* @var Zend_Tool_Framework_Client_Abstract
*/
protected $_client = null;
/**
* @var Zend_Tool_Framework_Action_Repository
*/
protected $_actionRepository = null;
/**
* @var Zend_Tool_Framework_Provider_Repository
*/
protected $_providerRepository = null;
/**
* @var Zend_Tool_Framework_Manifest_Repository
*/
protected $_manifestRepository = null;
/**
* @var Zend_Tool_Framework_Client_Request
*/
protected $_request = null;
/**
* @var Zend_Tool_Framework_Client_Response
*/
protected $_response = null;
/**
* reset() - Reset all internal properties
*
*/
public function reset()
{
unset($this->_client);
unset($this->_loader);
unset($this->_actionRepository);
unset($this->_providerRepository);
unset($this->_request);
unset($this->_response);
}
// public function __construct()
// {
// // no instantiation from outside
// }
/**
* Enter description here...
*
* @param Zend_Tool_Framework_Client_Abstract $client
* @return Zend_Tool_Framework_Registry
*/
public function setClient(Zend_Tool_Framework_Client_Abstract $client)
{
$this->_client = $client;
if ($this->isObjectRegistryEnablable($this->_client)) {
$this->enableRegistryOnObject($this->_client);
}
return $this;
}
/**
* getClient() return the client in the registry
*
* @return Zend_Tool_Framework_Client_Abstract
*/
public function getClient()
{
return $this->_client;
}
/**
* setLoader()
*
* @param Zend_Tool_Framework_Loader_Abstract $loader
* @return Zend_Tool_Framework_Registry
*/
public function setLoader(Zend_Tool_Framework_Loader_Abstract $loader)
{
$this->_loader = $loader;
if ($this->isObjectRegistryEnablable($this->_loader)) {
$this->enableRegistryOnObject($this->_loader);
}
return $this;
}
/**
* getLoader()
*
* @return Zend_Tool_Framework_Loader_Abstract
*/
public function getLoader()
{
if ($this->_loader === null) {
require_once 'Zend/Tool/Framework/Loader/IncludePathLoader.php';
$this->setLoader(new Zend_Tool_Framework_Loader_IncludePathLoader());
}
return $this->_loader;
}
/**
* setActionRepository()
*
* @param Zend_Tool_Framework_Action_Repository $actionRepository
* @return Zend_Tool_Framework_Registry
*/
public function setActionRepository(Zend_Tool_Framework_Action_Repository $actionRepository)
{
$this->_actionRepository = $actionRepository;
if ($this->isObjectRegistryEnablable($this->_actionRepository)) {
$this->enableRegistryOnObject($this->_actionRepository);
}
return $this;
}
/**
* getActionRepository()
*
* @return Zend_Tool_Framework_Action_Repository
*/
public function getActionRepository()
{
if ($this->_actionRepository == null) {
require_once 'Zend/Tool/Framework/Action/Repository.php';
$this->setActionRepository(new Zend_Tool_Framework_Action_Repository());
}
return $this->_actionRepository;
}
/**
* setProviderRepository()
*
* @param Zend_Tool_Framework_Provider_Repository $providerRepository
* @return Zend_Tool_Framework_Registry
*/
public function setProviderRepository(Zend_Tool_Framework_Provider_Repository $providerRepository)
{
$this->_providerRepository = $providerRepository;
if ($this->isObjectRegistryEnablable($this->_providerRepository)) {
$this->enableRegistryOnObject($this->_providerRepository);
}
return $this;
}
/**
* getProviderRepository()
*
* @return Zend_Tool_Framework_Provider_Repository
*/
public function getProviderRepository()
{
if ($this->_providerRepository == null) {
require_once 'Zend/Tool/Framework/Provider/Repository.php';
$this->setProviderRepository(new Zend_Tool_Framework_Provider_Repository());
}
return $this->_providerRepository;
}
/**
* setManifestRepository()
*
* @param Zend_Tool_Framework_Manifest_Repository $manifestRepository
* @return Zend_Tool_Framework_Registry
*/
public function setManifestRepository(Zend_Tool_Framework_Manifest_Repository $manifestRepository)
{
$this->_manifestRepository = $manifestRepository;
if ($this->isObjectRegistryEnablable($this->_manifestRepository)) {
$this->enableRegistryOnObject($this->_manifestRepository);
}
return $this;
}
/**
* getManifestRepository()
*
* @return Zend_Tool_Framework_Manifest_Repository
*/
public function getManifestRepository()
{
if ($this->_manifestRepository == null) {
require_once 'Zend/Tool/Framework/Manifest/Repository.php';
$this->setManifestRepository(new Zend_Tool_Framework_Manifest_Repository());
}
return $this->_manifestRepository;
}
/**
* setRequest()
*
* @param Zend_Tool_Framework_Client_Request $request
* @return Zend_Tool_Framework_Registry
*/
public function setRequest(Zend_Tool_Framework_Client_Request $request)
{
$this->_request = $request;
return $this;
}
/**
* getRequest()
*
* @return Zend_Tool_Framework_Client_Request
*/
public function getRequest()
{
if ($this->_request == null) {
require_once 'Zend/Tool/Framework/Client/Request.php';
$this->setRequest(new Zend_Tool_Framework_Client_Request());
}
return $this->_request;
}
/**
* setResponse()
*
* @param Zend_Tool_Framework_Client_Response $response
* @return Zend_Tool_Framework_Registry
*/
public function setResponse(Zend_Tool_Framework_Client_Response $response)
{
$this->_response = $response;
return $this;
}
/**
* getResponse()
*
* @return Zend_Tool_Framework_Client_Response
*/
public function getResponse()
{
if ($this->_response == null) {
require_once 'Zend/Tool/Framework/Client/Response.php';
$this->setResponse(new Zend_Tool_Framework_Client_Response());
}
return $this->_response;
}
/**
* __get() - Get a property via property call $registry->foo
*
* @param string $name
* @return mixed
*/
public function __get($name)
{
if (method_exists($this, 'get' . $name)) {
return $this->{'get' . $name}();
} else {
require_once 'Zend/Tool/Framework/Registry/Exception.php';
throw new Zend_Tool_Framework_Registry_Exception('Property ' . $name . ' was not located in this registry.');
}
}
/**
* __set() - Set a property via the magic set $registry->foo = 'foo'
*
* @param string $name
* @param mixed $value
*/
public function __set($name, $value)
{
if (method_exists($this, 'set' . $name)) {
$this->{'set' . $name}($value);
return;
} else {
require_once 'Zend/Tool/Framework/Registry/Exception.php';
throw new Zend_Tool_Framework_Registry_Exception('Property ' . $name . ' was not located in this registry.');
}
}
/**
* isObjectRegistryEnablable() - Check whether an object is registry enablable
*
* @param object $object
* @return bool
*/
public function isObjectRegistryEnablable($object)
{
if (!is_object($object)) {
require_once 'Zend/Tool/Framework/Registry/Exception.php';
throw new Zend_Tool_Framework_Registry_Exception('isObjectRegistryEnablable() expects an object.');
}
return ($object instanceof Zend_Tool_Framework_Registry_EnabledInterface);
}
/**
* enableRegistryOnObject() - make an object registry enabled
*
* @param object $object
* @return Zend_Tool_Framework_Registry
*/
public function enableRegistryOnObject($object)
{
if (!$this->isObjectRegistryEnablable($object)) {
require_once 'Zend/Tool/Framework/Registry/Exception.php';
throw new Zend_Tool_Framework_Registry_Exception('Object provided is not registry enablable, check first with Zend_Tool_Framework_Registry::isObjectRegistryEnablable()');
}
$object->setRegistry($this);
return $this;
}
}

View File

@ -0,0 +1,40 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* This is a convenience class.
*
* At current it will return the request and response from the client registry
* as they are the more common things that will be needed by providers
*
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Framework_Registry_EnabledInterface
{
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry);
}

View File

@ -0,0 +1,8 @@
<?php
require_once 'Zend/Tool/Framework/Exception.php';
class Zend_Tool_Framework_Registry_Exception extends Zend_Tool_Framework_Exception
{
}

View File

@ -0,0 +1,112 @@
<?php
interface Zend_Tool_Framework_Registry_Interface
{
/**
* setClient()
*
* @param Zend_Tool_Framework_Client_Abstract $client
* @return Zend_Tool_Framework_Registry
*/
public function setClient(Zend_Tool_Framework_Client_Abstract $client);
/**
* getClient() return the client in the registry
*
* @return Zend_Tool_Framework_Client_Abstract
*/
public function getClient();
/**
* setLoader()
*
* @param Zend_Tool_Framework_Loader_Abstract $loader
* @return Zend_Tool_Framework_Registry
*/
public function setLoader(Zend_Tool_Framework_Loader_Abstract $loader);
/**
* getLoader()
*
* @return Zend_Tool_Framework_Loader_Abstract
*/
public function getLoader();
/**
* setActionRepository()
*
* @param Zend_Tool_Framework_Action_Repository $actionRepository
* @return Zend_Tool_Framework_Registry
*/
public function setActionRepository(Zend_Tool_Framework_Action_Repository $actionRepository);
/**
* getActionRepository()
*
* @return Zend_Tool_Framework_Action_Repository
*/
public function getActionRepository();
/**
* setProviderRepository()
*
* @param Zend_Tool_Framework_Provider_Repository $providerRepository
* @return Zend_Tool_Framework_Registry
*/
public function setProviderRepository(Zend_Tool_Framework_Provider_Repository $providerRepository);
/**
* getProviderRepository()
*
* @return Zend_Tool_Framework_Provider_Repository
*/
public function getProviderRepository();
/**
* setManifestRepository()
*
* @param Zend_Tool_Framework_Manifest_Repository $manifestRepository
* @return Zend_Tool_Framework_Registry
*/
public function setManifestRepository(Zend_Tool_Framework_Manifest_Repository $manifestRepository);
/**
* getManifestRepository()
*
* @return Zend_Tool_Framework_Manifest_Repository
*/
public function getManifestRepository();
/**
* setRequest()
*
* @param Zend_Tool_Framework_Client_Request $request
* @return Zend_Tool_Framework_Registry
*/
public function setRequest(Zend_Tool_Framework_Client_Request $request);
/**
* getRequest()
*
* @return Zend_Tool_Framework_Client_Request
*/
public function getRequest();
/**
* setResponse()
*
* @param Zend_Tool_Framework_Client_Response $response
* @return Zend_Tool_Framework_Registry
*/
public function setResponse(Zend_Tool_Framework_Client_Response $response);
/**
* getResponse()
*
* @return Zend_Tool_Framework_Client_Response
*/
public function getResponse();
}

View File

@ -0,0 +1,44 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Action_Base
*/
require_once 'Zend/Tool/Framework/Action/Base.php';
/**
* This is a convenience class.
*
* At current it will return the request and response from the client registry
* as they are the more common things that will be needed by providers
*
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_System_Action_Create extends Zend_Tool_Framework_Action_Base
{
}

View File

@ -0,0 +1,44 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Action_Base
*/
require_once 'Zend/Tool/Framework/Action/Base.php';
/**
* This is a convenience class.
*
* At current it will return the request and response from the client registry
* as they are the more common things that will be needed by providers
*
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_System_Action_Delete extends Zend_Tool_Framework_Action_Base
{
}

View File

@ -0,0 +1,61 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
require_once 'Zend/Tool/Framework/Manifest/ProviderManifestable.php';
require_once 'Zend/Tool/Framework/Manifest/ActionManifestable.php';
require_once 'Zend/Tool/Framework/System/Provider/Version.php';
require_once 'Zend/Tool/Framework/System/Provider/Phpinfo.php';
require_once 'Zend/Tool/Framework/System/Provider/Manifest.php';
require_once 'Zend/Tool/Framework/System/Action/Create.php';
require_once 'Zend/Tool/Framework/System/Action/Delete.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_System_Manifest
implements Zend_Tool_Framework_Manifest_ProviderManifestable, Zend_Tool_Framework_Manifest_ActionManifestable
{
public function getProviders()
{
$providers = array(
new Zend_Tool_Framework_System_Provider_Version(),
new Zend_Tool_Framework_System_Provider_Phpinfo(),
new Zend_Tool_Framework_System_Provider_Manifest()
);
return $providers;
}
public function getActions()
{
$actions = array(
new Zend_Tool_Framework_System_Action_Create(),
new Zend_Tool_Framework_System_Action_Delete()
);
return $actions;
}
}

View File

@ -0,0 +1,114 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Framework_Registry_EnabledInterface
*/
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
/**
* @see Zend_Tool_Framework_Provider_Interface
*/
require_once 'Zend/Tool/Framework/Provider/Interface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_System_Provider_Manifest
implements Zend_Tool_Framework_Provider_Interface, Zend_Tool_Framework_Registry_EnabledInterface
{
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
{
$this->_registry = $registry;
}
public function getName()
{
return 'Manifest';
}
public function show()
{
$manifestRepository = $this->_registry->getManifestRepository();
$response = $this->_registry->getResponse();
$metadataTree = array();
$longestAttrNameLen = 50;
foreach ($manifestRepository as $metadata) {
$metadataType = $metadata->getType();
$metadataName = $metadata->getName();
$metadataAttrs = $metadata->getAttributes('attributesParent');
if (!$metadataAttrs) {
$metadataAttrs = '(None)';
} else {
$metadataAttrs = urldecode(http_build_query($metadataAttrs, null, ', '));
}
if (!array_key_exists($metadataType, $metadataTree)) {
$metadataTree[$metadataType] = array();
}
if (!array_key_exists($metadataName, $metadataTree[$metadataType])) {
$metadataTree[$metadataType][$metadataName] = array();
}
if (!array_key_exists($metadataAttrs, $metadataTree[$metadataType][$metadataName])) {
$metadataTree[$metadataType][$metadataName][$metadataAttrs] = array();
}
$longestAttrNameLen = (strlen($metadataAttrs) > $longestAttrNameLen) ? strlen($metadataAttrs) : $longestAttrNameLen;
$metadataValue = $metadata->getValue();
if (is_array($metadataValue) && count($metadataValue) > 0) {
$metadataValue = urldecode(http_build_query($metadataValue, null, ', '));
} elseif (is_array($metadataValue)) {
$metadataValue = '(empty array)';
}
$metadataTree[$metadataType][$metadataName][$metadataAttrs][] = $metadataValue;
}
foreach ($metadataTree as $metadataType => $metadatasByName) {
$response->appendContent($metadataType);
foreach ($metadatasByName as $metadataName => $metadatasByAttributes) {
$response->appendContent(" " . $metadataName);
foreach ($metadatasByAttributes as $metadataAttributeName => $metadataValues) {
foreach ($metadataValues as $metadataValue) {
$string = sprintf(" %-{$longestAttrNameLen}.{$longestAttrNameLen}s : ", $metadataAttributeName)
. $metadataValue;
$response->appendContent($string);
}
}
}
}
}
}

View File

@ -0,0 +1,13 @@
<?php
require_once 'Zend/Tool/Framework/Provider/Interface.php';
class Zend_Tool_Framework_System_Provider_Phpinfo implements Zend_Tool_Framework_Provider_Interface
{
public function showAction()
{
phpinfo();
}
}

View File

@ -0,0 +1,88 @@
<?php
require_once 'Zend/Tool/Framework/Registry.php';
require_once 'Zend/Tool/Framework/Provider/Interface.php';
require_once 'Zend/Version.php';
/**
* Version Provider
*
*/
class Zend_Tool_Framework_System_Provider_Version
implements Zend_Tool_Framework_Provider_Interface, Zend_Tool_Framework_Registry_EnabledInterface
{
/**
* @var Zend_Tool_Framework_Registry_Interface
*/
protected $_registry = null;
const MODE_MAJOR = 'major';
const MODE_MINOR = 'minor';
const MODE_MINI = 'mini';
protected $_specialties = array('MajorPart', 'MinorPart', 'MiniPart');
public function setRegistry(Zend_Tool_Framework_Registry_Interface $registry)
{
$this->_registry = $registry;
return $this;
}
/**
* Show Action
*
* @param string $mode The mode switch can be one of: major, minor, or mini (default)
* @param bool $nameincluded
*/
public function show($mode = self::MODE_MINI, $nameIncluded = true)
{
$versionInfo = $this->_splitVersion();
switch($mode) {
case self::MODE_MINOR:
unset($versionInfo['mini']);
break;
case self::MODE_MAJOR:
unset($versionInfo['mini'], $versionInfo['minor']);
break;
}
$output = implode('.', $versionInfo);
if ($nameIncluded) {
$output = 'Zend Framework Version: ' . $output;
}
$this->_registry->response->appendContent($output);
}
public function showMajorPart($nameIncluded = true)
{
$versionNumbers = $this->_splitVersion();
$output = (($nameIncluded == true) ? 'ZF Major Version: ' : null) . $versionNumbers['major'];
$this->_registry->response->appendContent($output);
}
public function showMinorPart($nameIncluded = true)
{
$versionNumbers = $this->_splitVersion();
$output = (($nameIncluded == true) ? 'ZF Minor Version: ' : null) . $versionNumbers['minor'];
$this->_registry->response->appendContent($output);
}
public function showMiniPart($nameIncluded = true)
{
$versionNumbers = $this->_splitVersion();
$output = (($nameIncluded == true) ? 'ZF Mini Version: ' : null) . $versionNumbers['mini'];
$this->_registry->response->appendContent($output);
}
protected function _splitVersion()
{
list($major, $minor, $mini) = explode('.', Zend_Version::VERSION);
return array('major' => $major, 'minor' => $minor, 'mini' => $mini);
}
}

View File

@ -0,0 +1,8 @@
<?php
require_once 'Zend/Tool/Project/Exception.php';
class Zend_Tool_Project_Context_Exception extends Zend_Tool_Project_Exception
{
}

View File

@ -0,0 +1,165 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Interface
*/
require_once 'Zend/Tool/Project/Context/Interface.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
abstract class Zend_Tool_Project_Context_Filesystem_Abstract implements Zend_Tool_Project_Context_Interface
{
/**
* @var Zend_Tool_Project_Profile_Resource
*/
protected $_resource = null;
/**
* @var string
*/
protected $_baseDirectory = null;
/**
* @var string
*/
protected $_filesystemName = null;
/**
* init()
*
* @return Zend_Tool_Project_Context_Filesystem_Abstract
*/
public function init()
{
$parentBaseDirectory = $this->_resource->getParentResource()->getContext()->getPath();
$this->_baseDirectory = $parentBaseDirectory;
return $this;
}
/**
* setResource()
*
* @param Zend_Tool_Project_Profile_Resource $resource
* @return Zend_Tool_Project_Context_Filesystem_Abstract
*/
public function setResource(Zend_Tool_Project_Profile_Resource $resource)
{
$this->_resource = $resource;
return $this;
}
/**
* setBaseDirectory()
*
* @param string $baseDirectory
* @return Zend_Tool_Project_Context_Filesystem_Abstract
*/
public function setBaseDirectory($baseDirectory)
{
$this->_baseDirectory = rtrim(str_replace('\\', '/', $baseDirectory), '/');
return $this;
}
/**
* getBaseDirectory()
*
* @return string
*/
public function getBaseDirectory()
{
return $this->_baseDirectory;
}
/**
* setFilesystemName()
*
* @param string $filesystemName
* @return Zend_Tool_Project_Context_Filesystem_Abstract
*/
public function setFilesystemName($filesystemName)
{
$this->_filesystemName = $filesystemName;
return $this;
}
/**
* getFilesystemName()
*
* @return string
*/
public function getFilesystemName()
{
return $this->_filesystemName;
}
/**
* getPath()
*
* @return string
*/
public function getPath()
{
$path = $this->_baseDirectory;
if ($this->_filesystemName) {
$path .= '/' . $this->_filesystemName;
}
return $path;
}
/**
* exists()
*
* @return bool
*/
public function exists()
{
return file_exists($this->getPath());
}
/**
* create()
*
* Create this resource/context
*
*/
abstract public function create();
/**
* delete()
*
* Delete this resouce/context
*
*/
abstract public function delete();
}

View File

@ -0,0 +1,77 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Abstract
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Abstract.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
abstract class Zend_Tool_Project_Context_Filesystem_Directory extends Zend_Tool_Project_Context_Filesystem_Abstract
{
/**
* create()
*
* @return Zend_Tool_Project_Context_Filesystem_Directory;
*/
public function create()
{
// check to ensure the parent exists, if not, call it and create it
if (($parentResource = $this->_resource->getParentResource()) instanceof Zend_Tool_Project_Profile_Resource) {
if ((($parentContext = $parentResource->getContext()) instanceof Zend_Tool_Project_Context_Filesystem_Abstract)
&& (!$parentContext->exists())) {
$parentResource->create();
}
}
if (!file_exists($this->getPath())) {
mkdir($this->getPath());
}
return $this;
}
/**
* delete()
*
* @return Zend_Tool_Project_Context_Filesystem_Directory
*/
public function delete()
{
$this->_resource->setDeleted(true);
rmdir($this->getPath());
return $this;
}
}

View File

@ -0,0 +1,112 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Abstract
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Abstract.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
abstract class Zend_Tool_Project_Context_Filesystem_File extends Zend_Tool_Project_Context_Filesystem_Abstract
{
/**
* init()
*
* @return Zend_Tool_Project_Context_Filesystem_File
*/
public function init()
{
// @todo check to ensure that this 'file' resource has no children
parent::init();
return $this;
}
/**
* setResource()
*
* @param unknown_type $resource
*/
public function setResource(Zend_Tool_Project_Profile_Resource $resource)
{
$this->_resource = $resource;
$this->_resource->setAppendable(false);
return $this;
}
/**
* create()
*
* @return Zend_Tool_Project_Context_Filesystem_File
*/
public function create()
{
// check to ensure the parent exists, if not, call it and create it
if (($parentResource = $this->_resource->getParentResource()) instanceof Zend_Tool_Project_Profile_Resource) {
if ((($parentContext = $parentResource->getContext()) instanceof Zend_Tool_Project_Context_Filesystem_Abstract)
&& (!$parentContext->exists())) {
$parentResource->create();
}
}
if (file_exists($this->getPath())) {
// @todo propt user to determine if its ok to overwrite file
}
file_put_contents($this->getPath(), $this->getContents());
return $this;
}
/**
* delete()
*
* @return Zend_Tool_Project_Context_Filesystem_File
*/
public function delete()
{
unlink($this->getPath());
$this->_resource->setDeleted(true);
return $this;
}
/**
* getContents()
*
* @return null
*/
public function getContents()
{
return null;
}
}

View File

@ -0,0 +1,15 @@
<?php
/**
* Interface for contexts
*
* setResource() is an optional method that if the context supports
* will be set with the resource at construction time
*
*/
interface Zend_Tool_Project_Context_Interface
{
public function getName();
}

View File

@ -0,0 +1,160 @@
<?php
require_once 'Zend/Tool/Project/Context/System/Interface.php';
require_once 'Zend/Tool/Project/Context/System/TopLevelRestrictable.php';
require_once 'Zend/Tool/Project/Context/System/NotOverwritable.php';
class Zend_Tool_Project_Context_Repository implements Countable
{
protected static $_instance = null;
protected static $_isInitialized = false;
protected $_shortContextNames = array();
protected $_contexts = array();
/**
* Enter description here...
*
* @return Zend_Tool_Project_Context_Repository
*/
public static function getInstance()
{
if (self::$_instance == null) {
self::$_instance = new self();
}
return self::$_instance;
}
public static function resetInstance()
{
self::$_instance = null;
self::$_isInitialized = false;
}
protected function __construct()
{
if (self::$_isInitialized == false) {
$this->addContextClass('Zend_Tool_Project_Context_System_ProjectDirectory')
->addContextClass('Zend_Tool_Project_Context_System_ProjectProfileFile')
->addContextClass('Zend_Tool_Project_Context_System_ProjectProvidersDirectory');
self::$_isInitialized = true;
}
}
public function addContextsFromDirectory($directory, $prefix)
{
$prefix = trim($prefix, '_') . '_';
foreach (new DirectoryIterator($directory) as $directoryItem) {
if ($directoryItem->isDot() || (substr($directoryItem->getFilename(), -4) !== '.php')) {
continue;
}
$class = $prefix . substr($directoryItem->getFilename(), 0, -4);
$this->addContextClass($class);
}
}
public function addContextClass($contextClass)
{
if (!class_exists($contextClass)) {
require_once 'Zend/Loader.php';
Zend_Loader::loadClass($contextClass);
}
$context = new $contextClass();
return $this->addContext($context);
}
/**
* Enter description here...
*
* @param Zend_Tool_Project_Context_Interface $context
* @return Zend_Tool_Project_Context_Repository
*/
public function addContext(Zend_Tool_Project_Context_Interface $context)
{
$isSystem = ($context instanceof Zend_Tool_Project_Context_System_Interface);
$isTopLevel = ($context instanceof Zend_Tool_Project_Context_System_TopLevelRestrictable);
$isOverwritable = !($context instanceof Zend_Tool_Project_Context_System_NotOverwritable);
$index = (count($this->_contexts)) ? max(array_keys($this->_contexts)) + 1 : 1;
$normalName = $this->_normalizeName($context->getName());
if (isset($this->_shortContextNames[$normalName]) && ($this->_contexts[$this->_shortContextNames[$normalName]]['isOverwritable'] === false) ) {
require_once 'Zend/Tool/Project/Context/Exception.php';
throw new Zend_Tool_Project_Context_Exception('Context ' . $context->getName() . ' is not overwriteable.');
}
$this->_shortContextNames[$normalName] = $index;
$this->_contexts[$index] = array(
'isTopLevel' => $isTopLevel,
'isSystem' => $isSystem,
'isOverwritable' => $isOverwritable,
'normalName' => $normalName,
'context' => $context
);
return $this;
}
public function getContext($name)
{
if (!$this->hasContext($name)) {
require_once 'Zend/Tool/Project/Context/Exception.php';
throw new Zend_Tool_Project_Context_Exception('Context by name ' . $name . ' does not exist in the registry.');
}
$name = $this->_normalizeName($name);
return clone $this->_contexts[$this->_shortContextNames[$name]]['context'];
}
public function hasContext($name)
{
$name = $this->_normalizeName($name);
return (isset($this->_shortContextNames[$name]) ? true : false);
}
public function isSystemContext($name)
{
if (!$this->hasContext($name)) {
return false;
}
$name = $this->_normalizeName($name);
$index = $this->_shortContextNames[$name];
return $this->_contexts[$index]['isSystemContext'];
}
public function isTopLevelContext($name)
{
if (!$this->hasContext($name)) {
return false;
}
$name = $this->_normalizeName($name);
$index = $this->_shortContextNames[$name];
return $this->_contexts[$index]['isTopLevel'];
}
public function isOverwritableContext($name)
{
if (!$this->hasContext($name)) {
return false;
}
$name = $this->_normalizeName($name);
$index = $this->_shortContextNames[$name];
return $this->_contexts[$index]['isOverwritable'];
}
public function count()
{
return count($this->_contexts);
}
protected function _normalizeName($name)
{
return strtolower($name);
}
}

View 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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Project_Context_System_Interface
{
}

View 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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Project_Context_System_NotOverwritable
{
}

View File

@ -0,0 +1,128 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* @see Zend_Tool_Project_Context_System_Interface
*/
require_once 'Zend/Tool/Project/Context/System/Interface.php';
/**
* @see Zend_Tool_Project_Context_System_TopLevelRestrictable
*/
require_once 'Zend/Tool/Project/Context/System/TopLevelRestrictable.php';
/**
* @see Zend_Tool_Project_Context_System_NotOverwritable
*/
require_once 'Zend/Tool/Project/Context/System/NotOverwritable.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_System_ProjectDirectory
extends Zend_Tool_Project_Context_Filesystem_Directory
implements Zend_Tool_Project_Context_System_Interface,
Zend_Tool_Project_Context_System_NotOverwritable,
Zend_Tool_Project_Context_System_TopLevelRestrictable
{
/**
* @var string
*/
protected $_filesystemName = null;
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ProjectDirectory';
}
/**
* init()
*
* @return Zend_Tool_Project_Context_System_ProjectDirectory
*/
public function init()
{
// get base path from attributes (would be in path attribute)
$projectDirectory = $this->_resource->getAttribute('path');
// if not, get from profile
if ($projectDirectory == null) {
$projectDirectory = $this->_resource->getProfile()->getAttribute('projectDirectory');
}
// if not, exception.
if ($projectDirectory == null) {
require_once 'Zend/Tool/Project/Exception.php';
throw new Zend_Tool_Project_Exception('projectDirectory cannot find the directory for this project.');
}
$this->_baseDirectory = rtrim($projectDirectory, '\\/');
return $this;
}
/**
* create()
*
* @return Zend_Tool_Project_Context_System_ProjectDirectory
*/
public function create()
{
if (file_exists($this->getPath())) {
/*
foreach (new DirectoryIterator($this->getPath()) as $item) {
if (!$item->isDot()) {
if ($registry->getClient()->isInteractive()) {
// @todo prompt for override
} else {
require_once 'Zend/Tool/Project/Context/Exception.php';
throw new Zend_Tool_Project_Context_Exception('This directory is not empty, project creation aborted.');
}
break;
}
}
*/
}
parent::create();
return $this;
}
}

View File

@ -0,0 +1,118 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_File
*/
require_once 'Zend/Tool/Project/Context/Filesystem/File.php';
/**
* @see Zend_Tool_Project_Context_System_Interface
*/
require_once 'Zend/Tool/Project/Context/System/Interface.php';
/**
* @see Zend_Tool_Project_Context_System_NotOverwritable
*/
require_once 'Zend/Tool/Project/Context/System/NotOverwritable.php';
/**
* @see Zend_Tool_Project_Profile_FileParser_Xml
*/
require_once 'Zend/Tool/Project/Profile/FileParser/Xml.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_System_ProjectProfileFile
extends Zend_Tool_Project_Context_Filesystem_File
implements Zend_Tool_Project_Context_System_Interface,
Zend_Tool_Project_Context_System_NotOverwritable
{
/**
* @var string
*/
protected $_filesystemName = '.zfproject.xml';
/**
* @var Zend_Tool_Project_Profile
*/
protected $_profile = null;
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ProjectProfileFile';
}
/**
* setProfile()
*
* @param Zend_Tool_Project_Profile $profile
* @return Zend_Tool_Project_Context_System_ProjectProfileFile
*/
public function setProfile($profile)
{
$this->_profile = $profile;
return $this;
}
/**
* save()
*
* Proxy to create
*
* @return Zend_Tool_Project_Context_System_ProjectProfileFile
*/
public function save()
{
parent::create();
return $this;
}
/**
* getContents()
*
* @return string
*/
public function getContents()
{
$parser = new Zend_Tool_Project_Profile_FileParser_Xml();
$profile = $this->_resource->getProfile();
$xml = $parser->serialize($profile);
return $xml;
}
}

View File

@ -0,0 +1,97 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* @see Zend_Tool_Project_Context_System_Interface
*/
require_once 'Zend/Tool/Project/Context/System/Interface.php';
/**
* @see Zend_Tool_Project_Context_System_NotOverwritable
*/
require_once 'Zend/Tool/Project/Context/System/NotOverwritable.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_System_ProjectProvidersDirectory
extends Zend_Tool_Project_Context_Filesystem_Directory
implements Zend_Tool_Project_Context_System_Interface,
Zend_Tool_Project_Context_System_NotOverwritable
{
/**
* @var string
*/
protected $_filesystemName = 'providers';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ProjectProvidersDirectory';
}
/**
* init()
*
* @return Zend_Tool_Project_Context_System_ProjectProvidersDirectory
*/
public function init()
{
parent::init();
if (file_exists($this->getPath())) {
foreach (new DirectoryIterator($this->getPath()) as $item) {
if ($item->isFile()) {
$loadableFiles[] = $item->getPathname();
}
}
if ($loadableFiles) {
// @todo process and add the files to the system for usage.
}
}
return $this;
}
}

View 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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Project_Context_System_TopLevelRestrictable
{
}

View File

@ -0,0 +1,224 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Interface
*/
require_once 'Zend/Tool/Project/Context/Interface.php';
/**
* @see Zend_Reflection_File
*/
require_once 'Zend/Reflection/File.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ActionMethod implements Zend_Tool_Project_Context_Interface
{
/**
* @var Zend_Tool_Project_Profile_Resource
*/
protected $_resource = null;
/**
* @var Zend_Tool_Project_Profile_Resource
*/
protected $_controllerResource = null;
/**
* @var string
*/
protected $_controllerPath = '';
/**
* @var string
*/
protected $_actionName = null;
/**
* init()
*
* @return Zend_Tool_Project_Context_Zf_ActionMethod
*/
public function init()
{
$this->_actionName = $this->_resource->getAttribute('actionName');
$this->_resource->setAppendable(false);
$this->_controllerResource = $this->_resource->getParentResource();
if (!$this->_controllerResource->getContext() instanceof Zend_Tool_Project_Context_Zf_ControllerFile) {
require_once 'Zend/Tool/Project/Context/Exception.php';
throw new Zend_Tool_Project_Context_Exception('ActionMethod must be a sub resource of a ControllerFile');
}
// make the ControllerFile node appendable so we can tack on the actionMethod.
$this->_resource->getParentResource()->setAppendable(true);
$this->_controllerPath = $this->_controllerResource->getContext()->getPath();
/*
* This code block is now commented, its doing to much for init()
*
if ($this->_controllerPath != '' && self::hasActionMethod($this->_controllerPath, $this->_actionName)) {
require_once 'Zend/Tool/Project/Context/Exception.php';
throw new Zend_Tool_Project_Context_Exception('An action named ' . $this->_actionName . 'Action already exists in this controller');
}
*/
return $this;
}
/**
* getPersistentAttributes
*
* @return array
*/
public function getPersistentAttributes()
{
return array(
'actionName' => $this->getActionName()
);
}
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ActionMethod';
}
/**
* setResource()
*
* @param Zend_Tool_Project_Profile_Resource $resource
* @return Zend_Tool_Project_Context_Zf_ActionMethod
*/
public function setResource(Zend_Tool_Project_Profile_Resource $resource)
{
$this->_resource = $resource;
return $this;
}
/**
* setActionName()
*
* @param string $actionName
* @return Zend_Tool_Project_Context_Zf_ActionMethod
*/
public function setActionName($actionName)
{
$this->_actionName = $actionName;
return $this;
}
/**
* getActionName()
*
* @return string
*/
public function getActionName()
{
return $this->_actionName;
}
/**
* create()
*
* @return Zend_Tool_Project_Context_Zf_ActionMethod
*/
public function create()
{
if (self::createActionMethod($this->_controllerPath, $this->_actionName) === false) {
require_once 'Zend/Tool/Project/Context/Exception.php';
throw new Zend_Tool_Project_Context_Exception(
'Could not create action within controller ' . $this->_controllerPath
. ' with action name ' . $this->_actionName
);
}
return $this;
}
/**
* delete()
*
* @return Zend_Tool_Project_Context_Zf_ActionMethod
*/
public function delete()
{
// @todo do this
return $this;
}
/**
* createAcionMethod()
*
* @param string $controllerPath
* @param string $actionName
* @param string $body
* @return true
*/
public static function createActionMethod($controllerPath, $actionName, $body = ' // action body')
{
if (!file_exists($controllerPath)) {
return false;
}
$controllerCodeGenFile = Zend_CodeGenerator_Php_File::fromReflectedFileName($controllerPath, true, true);
$controllerCodeGenFile->getClass()->setMethod(array(
'name' => $actionName . 'Action',
'body' => $body
));
file_put_contents($controllerPath, $controllerCodeGenFile->generate());
return true;
}
/**
* hasActionMethod()
*
* @param string $controllerPath
* @param string $actionName
* @return bool
*/
public static function hasActionMethod($controllerPath, $actionName)
{
if (!file_exists($controllerPath)) {
return false;
}
$controllerCodeGenFile = Zend_CodeGenerator_Php_File::fromReflectedFileName($controllerPath, true, true);
return $controllerCodeGenFile->getClass()->hasMethod($actionName . 'Action');
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ApisDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'apis';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ApisDirectory';
}
}

View File

@ -0,0 +1,108 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_File
*/
require_once 'Zend/Tool/Project/Context/Filesystem/File.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ApplicationConfigFile extends Zend_Tool_Project_Context_Filesystem_File
{
/**
* @var string
*/
protected $_filesystemName = 'application.ini';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ApplicationConfigFile';
}
/**
* init()
*
* @return Zend_Tool_Project_Context_Zf_ApplicationConfigFile
*/
public function init()
{
$this->_type = $this->_resource->getAttribute('type');
parent::init();
return $this;
}
/**
* getPersistentAttributes()
*
* @return array
*/
public function getPersistentAttributes()
{
return array('type' => $this->_type);
}
/**
* getContents()
*
* @return string
*/
public function getContents()
{
$contents =<<<EOS
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
EOS;
return $contents;
}
}

View File

@ -0,0 +1,49 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ApplicationDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
protected $_filesystemName = 'application';
public function getName()
{
return 'ApplicationDirectory';
}
}

View File

@ -0,0 +1,103 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_File
*/
require_once 'Zend/Tool/Project/Context/Filesystem/File.php';
require_once 'Zend/Application.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_BootstrapFile extends Zend_Tool_Project_Context_Filesystem_File
{
/**
* @var string
*/
protected $_filesystemName = 'Bootstrap.php';
protected $_applicationInstance = null;
protected $_bootstrapInstance = null;
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'BootstrapFile';
}
public function init()
{
parent::init();
$applicationConfigFile = $this->_resource->getProfile()->search('ApplicationConfigFile');
$applicationDirectory = $this->_resource->getProfile()->search('ApplicationDirectory');
if (($applicationConfigFile === false) || ($applicationDirectory === false)) {
throw new Exception('To use the BootstrapFile context, your project requires the use of both the "ApplicationConfigFile" and "ApplicationDirectory" contexts.');
}
if ($applicationConfigFile->getContext()->exists()) {
define('APPLICATION_PATH', $applicationDirectory->getPath());
$applicationOptions = array();
$applicationOptions['config'] = $applicationConfigFile->getPath();
$this->_applicationInstance = new Zend_Application(
'development',
$applicationOptions
);
}
}
/**
* getContents()
*
* @return array
*/
public function getContents()
{
$codeGenFile = new Zend_CodeGenerator_Php_File(array(
'classes' => array(
new Zend_CodeGenerator_Php_Class(array(
'name' => 'Bootstrap',
'extendedClass' => 'Zend_Application_Bootstrap_Bootstrap',
)),
)
));
return $codeGenFile->generate();
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_CacheDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'cache';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'CacheDirectory';
}
}

View File

@ -0,0 +1,67 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_File
*/
require_once 'Zend/Tool/Project/Context/Filesystem/File.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ConfigFile extends Zend_Tool_Project_Context_Filesystem_File
{
/**
* @var string
*/
protected $_filesystemName = 'bootstrap.php';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ConfigFile';
}
/**
* getContents()
*
* @return string
*/
public function getContents()
{
return '';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ConfigsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'configs';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ConfigsDirectory';
}
}

View File

@ -0,0 +1,197 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_File
*/
require_once 'Zend/Tool/Project/Context/Filesystem/File.php';
/**
* @see Zend_CodeGenerator_Php_File
*/
require_once 'Zend/CodeGenerator/Php/File.php';
/**
* @see Zend_Filter_Word_DashToCamelCase
*/
require_once 'Zend/Filter/Word/DashToCamelCase.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ControllerFile extends Zend_Tool_Project_Context_Filesystem_File
{
/**
* @var string
*/
protected $_controllerName = 'index';
/**
* @var string
*/
protected $_filesystemName = 'controllerName';
/**
* init()
*
* @return Zend_Tool_Project_Context_Zf_ControllerFile
*/
public function init()
{
$this->_controllerName = $this->_resource->getAttribute('controllerName');
$this->_filesystemName = ucfirst($this->_controllerName) . 'Controller.php';
parent::init();
return $this;
}
/**
* getPersistentAttributes
*
* @return array
*/
public function getPersistentAttributes()
{
return array(
'controllerName' => $this->getControllerName()
);
}
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ControllerFile';
}
/**
* getControllerName()
*
* @return string
*/
public function getControllerName()
{
return $this->_controllerName;
}
/**
* getContents()
*
* @return string
*/
public function getContents()
{
$filter = new Zend_Filter_Word_DashToCamelCase();
$className = $filter->filter($this->_controllerName) . 'Controller';
$codeGenFile = new Zend_CodeGenerator_Php_File(array(
'fileName' => $this->getPath(),
'classes' => array(
new Zend_CodeGenerator_Php_Class(array(
'name' => $className,
'extendedClass' => 'Zend_Controller_Action',
'methods' => array(
new Zend_CodeGenerator_Php_Method(array(
'name' => 'init',
'body' => '/* Initialize action controller here */',
))
)
))
)
));
if ($className == 'ErrorController') {
$codeGenFile = new Zend_CodeGenerator_Php_File(array(
'fileName' => $this->getPath(),
'classes' => array(
new Zend_CodeGenerator_Php_Class(array(
'name' => $className,
'extendedClass' => 'Zend_Controller_Action',
'methods' => array(
new Zend_CodeGenerator_Php_Method(array(
'name' => 'errorAction',
'body' => <<<EOS
\$errors = \$this->_getParam('error_handler');
switch (\$errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
// 404 error -- controller or action not found
\$this->getResponse()->setHttpResponseCode(404);
\$this->view->message = 'Page not found';
break;
default:
// application error
\$this->getResponse()->setHttpResponseCode(500);
\$this->view->message = 'Application error';
break;
}
\$this->view->exception = \$errors->exception;
\$this->view->request = \$errors->request;
EOS
))
)
))
)
));
}
// store the generator into the registry so that the addAction command can use the same object later
Zend_CodeGenerator_Php_File::registerFileCodeGenerator($codeGenFile); // REQUIRES filename to be set
return $codeGenFile->generate();
}
/**
* addAction()
*
* @param string $actionName
*/
public function addAction($actionName)
{
//require_once $this->getPath();
//$codeGenFile = Zend_CodeGenerator_Php_File::fromReflection(new Zend_Reflection_File($this->getPath()));
$codeGenFile = Zend_CodeGenerator_Php_File::fromReflectedFileName($this->getPath());
$codeGenFileClasses = $codeGenFile->getClasses();
$class = array_shift($codeGenFileClasses);
$class->setMethod(array('name' => $actionName . 'Action', 'body' => ' // action body here'));
file_put_contents($this->getPath(), $codeGenFile->generate());
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ControllersDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'controllers';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ControllersDirectory';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_DataDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'data';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'DataDirectory';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_DbTableDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'DbTable';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'DbTableDirectory';
}
}

View File

@ -0,0 +1,72 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_File
*/
require_once 'Zend/Tool/Project/Context/Filesystem/File.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_DbTableFile extends Zend_Tool_Project_Context_Filesystem_File
{
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'DbTableFile';
}
/*
protected $_dbTableName;
public function getPersistentAttributes()
{
return array('dbTableName' => $this->_dbTableName);
}
public function setDbTableName($dbTableName)
{
$this->_dbTableName = $dbTableName;
$this->_filesystemName = $dbTableName . '.php';
}
public function getDbTableName()
{
return $this->_dbTableName;
}
*/
}

View File

@ -0,0 +1,52 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_File
*/
require_once 'Zend/Tool/Project/Context/Filesystem/File.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_FormFile extends Zend_Tool_Project_Context_Filesystem_File
{
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'FormFile';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_FormsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'forms';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'FormsDirectory';
}
}

View File

@ -0,0 +1,78 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_File
*/
require_once 'Zend/Tool/Project/Context/Filesystem/File.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_HtaccessFile extends Zend_Tool_Project_Context_Filesystem_File
{
/**
* @var string
*/
protected $_filesystemName = '.htaccess';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'HtaccessFile';
}
/**
* getContents()
*
* @return string
*/
public function getContents()
{
$output = <<<EOS
SetEnv APPLICATION_ENV development
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
EOS;
return $output;
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_LayoutsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'layouts';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'LayoutsDirectory';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_LibraryDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'library';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'LibraryDirectory';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_LocalesDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'locales';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'LocalesDirectory';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_LogsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'logs';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'LogsDirectory';
}
}

View File

@ -0,0 +1,52 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_File
*/
require_once 'Zend/Tool/Project/Context/Filesystem/File.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ModelFile extends Zend_Tool_Project_Context_Filesystem_File
{
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ModelFile';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ModelsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'models';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ModelsDirectory';
}
}

View File

@ -0,0 +1,97 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ModuleDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_moduleName = null;
/**
* @var string
*/
protected $_filesystemName = 'moduleDirectory';
/**
* init()
*
* @return Zend_Tool_Project_Context_Zf_ControllerFile
*/
public function init()
{
$this->_filesystemName = $this->_moduleName = $this->_resource->getAttribute('moduleName');
parent::init();
return $this;
}
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ModuleDirectory';
}
/**
* getPersistentAttributes
*
* @return array
*/
public function getPersistentAttributes()
{
return array(
'moduleName' => $this->getModuleName()
);
}
/**
* getModuleName()
*
* @return string
*/
public function getModuleName()
{
return $this->_moduleName;
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ModulesDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'modules';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ModulesDirectory';
}
}

View File

@ -0,0 +1,152 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_File
*/
require_once 'Zend/Tool/Project/Context/Filesystem/File.php';
/**
* @see Zend_CodeGenerator_Php_File
*/
require_once 'Zend/CodeGenerator/Php/File.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_ProjectProviderFile extends Zend_Tool_Project_Context_Filesystem_File
{
/**
* @var string
*/
protected $_projectProviderName = null;
/**
* @var array
*/
protected $_actionNames = array();
/**
* init()
*
* @return Zend_Tool_Project_Context_Zf_ProjectProviderFile
*/
public function init()
{
$this->_projectProviderName = $this->_resource->getAttribute('projectProviderName');
$this->_actionNames = $this->_resource->getAttribute('actionNames');
$this->_filesystemName = ucfirst($this->_projectProviderName) . 'Provider.php';
if (strpos($this->_actionNames, ',')) {
$this->_actionNames = explode(',', $this->_actionNames);
} else {
$this->_actionNames = ($this->_actionNames) ? array($this->_actionNames) : array();
}
parent::init();
return $this;
}
/**
* getPersistentAttributes()
*
* @return array
*/
public function getPersistentAttributes()
{
return array(
'projectProviderName' => $this->getProjectProviderName(),
'actionNames' => implode(',', $this->_actionNames)
);
}
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'ProjectProviderFile';
}
/**
* getProjectProviderName()
*
* @return string
*/
public function getProjectProviderName()
{
return $this->_projectProviderName;
}
/**
* getContents()
*
* @return string
*/
public function getContents()
{
$filter = new Zend_Filter_Word_DashToCamelCase();
$className = $filter->filter($this->_projectProviderName) . 'Provider';
$class = new Zend_CodeGenerator_Php_Class(array(
'name' => $className,
'extendedClass' => 'Zend_Tool_Project_Provider_Abstract'
));
$methods = array();
foreach ($this->_actionNames as $actionName) {
$methods[] = new Zend_CodeGenerator_Php_Method(array(
'name' => $actionName,
'body' => ' /** @todo Implementation */'
));
}
if ($methods) {
$class->setMethods($methods);
}
$codeGenFile = new Zend_CodeGenerator_Php_File(array(
'requiredFiles' => array(
'Zend/Tool/Project/Provider/Abstract.php',
'Zend/Tool/Project/Provider/Exception.php'
),
'classes' => array($class)
));
return $codeGenFile->generate();
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_PublicDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'public';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'PublicDirectory';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_PublicImagesDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'images';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'PublicImagesDirectory';
}
}

View File

@ -0,0 +1,95 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_File
*/
require_once 'Zend/Tool/Project/Context/Filesystem/File.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_PublicIndexFile extends Zend_Tool_Project_Context_Filesystem_File
{
/**
* @var string
*/
protected $_filesystemName = 'index.php';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'PublicIndexFile';
}
/**
* getContents()
*
* @return string
*/
public function getContents()
{
$codeGenerator = new Zend_CodeGenerator_Php_File(array(
'body' => <<<EOS
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
\$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
\$application->bootstrap()
->run();
EOS
));
return $codeGenerator->generate();
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_PublicScriptsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'js';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'PublicScriptsDirectory';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_PublicStylesheetsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'styles';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'PublicStylesheetsDirectory';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_SearchIndexesDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'search-indexes';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'SearchIndexesDirectory';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_SessionsDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'sessions';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'SessionsDirectory';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_TemporaryDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'temp';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'TemporaryDirectory';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_File
*/
require_once 'Zend/Tool/Project/Context/Filesystem/File.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_TestApplicationBootstrapFile extends Zend_Tool_Project_Context_Filesystem_File
{
/**
* @var string
*/
protected $_filesystemName = 'bootstrap.php';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'TestApplicationBootstrapFile';
}
}

View File

@ -0,0 +1,57 @@
<?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_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id$
*/
/**
* @see Zend_Tool_Project_Context_Filesystem_Directory
*/
require_once 'Zend/Tool/Project/Context/Filesystem/Directory.php';
/**
* This class is the front most class for utilizing Zend_Tool_Project
*
* A profile is a hierarchical set of resources that keep track of
* items within a specific project.
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Project_Context_Zf_TestApplicationControllerDirectory extends Zend_Tool_Project_Context_Filesystem_Directory
{
/**
* @var string
*/
protected $_filesystemName = 'controllers';
/**
* getName()
*
* @return string
*/
public function getName()
{
return 'TestApplicationControllerDirectory';
}
}

Some files were not shown because too many files have changed in this diff Show More