adding zend project folders into old campcaster.

This commit is contained in:
naomiaro 2010-12-07 14:19:27 -05:00
parent 56abfaf28e
commit 7ef0c18b26
4045 changed files with 1054952 additions and 0 deletions

View file

@ -0,0 +1,333 @@
<?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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Abstract.php 20967 2010-02-07 18:17:49Z ralph $
*/
/**
* @see Zend_Loader_Autoloader
*/
require_once 'Zend/Loader/Autoloader.php';
/**
* @see Zend_Tool_Framework_Registry_EnabledInterface
*/
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
abstract class Zend_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;
public function __construct($options = array())
{
// require autoloader
Zend_Loader_Autoloader::getInstance();
// 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
if ($options) {
$this->setOptions($options);
}
}
public function setOptions(Array $options)
{
foreach ($options as $optionName => $optionValue) {
$setMethodName = 'set' . $optionName;
if (method_exists($this, $setMethodName)) {
$this->{$setMethodName}($optionValue);
}
}
}
/**
* 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;
}
// run any preInit
$this->_preInit();
$manifest = $this->_registry->getManifestRepository();
$manifest->addManifest(new Zend_Tool_Framework_Client_Manifest());
// 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;
}
/**
* getRegistry();
*
* @return Zend_Tool_Framework_Registry_Interface
*/
public function getRegistry()
{
return $this->_registry;
}
/**
* 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();
$specialtyName = $this->_registry->getRequest()->getSpecialtyName();
if (!$actionableMethod = $providerSignature->getActionableMethodByActionName($actionName, $specialtyName)) {
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'];
}
}
$this->_handleDispatchExecution($provider, $methodName, $callParameters);
}
protected function _handleDispatchExecution($class, $methodName, $callParameters)
{
if (method_exists($class, $methodName)) {
call_user_func_array(array($class, $methodName), $callParameters);
} elseif (method_exists($class, $methodName . 'Action')) {
call_user_func_array(array($class, $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,244 @@
<?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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Config.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Config
{
protected $_configFilepath = null;
/**
* @var Zend_Config
*/
protected $_config = null;
/**
* @param array $options
*/
public function __config($options = array())
{
if ($options) {
$this->setOptions($options);
}
}
/**
* @param array $options
*/
public function setOptions(Array $options)
{
foreach ($options as $optionName => $optionValue) {
$setMethodName = 'set' . $optionName;
if (method_exists($this, $setMethodName)) {
$this->{$setMethodName}($optionValue);
}
}
}
/**
* @param string $configFilepath
* @return Zend_Tool_Framework_Client_Config
*/
public function setConfigFilepath($configFilepath)
{
if (!file_exists($configFilepath)) {
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('Provided path to config ' . $configFilepath . ' does not exist');
}
$this->_configFilepath = $configFilepath;
$this->loadConfig($configFilepath);
return $this;
}
/**
* Load the configuration from the given path.
*
* @param string $configFilepath
*/
protected function loadConfig($configFilepath)
{
$suffix = substr($configFilepath, -4);
switch ($suffix) {
case '.ini':
require_once 'Zend/Config/Ini.php';
$this->_config = new Zend_Config_Ini($configFilepath, null, array('allowModifications' => true));
break;
case '.xml':
require_once 'Zend/Config/Xml.php';
$this->_config = new Zend_Config_Xml($configFilepath, null, array('allowModifications' => true));
break;
case '.php':
require_once 'Zend/Config.php';
$this->_config = new Zend_Config(include $configFilepath, true);
break;
default:
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('Unknown config file type '
. $suffix . ' at location ' . $configFilepath
);
}
}
/**
* Return the filepath of the configuration.
*
* @return string
*/
public function getConfigFilepath()
{
return $this->_configFilepath;
}
/**
* Get a configuration value.
*
* @param string $name
* @param string $defaultValue
* @return mixed
*/
public function get($name, $defaultValue=null)
{
return $this->getConfigInstance()->get($name, $defaultValue);
}
/**
* Get a configuration value
*
* @param string $name
* @return mixed
*/
public function __get($name)
{
return $this->getConfigInstance()->{$name};
}
/**
* Check if a configuration value isset.
*
* @param string $name
* @return boolean
*/
public function __isset($name)
{
if($this->exists() == false) {
return false;
}
return isset($this->getConfigInstance()->{$name});
}
/**
* @param string $name
*/
public function __unset($name)
{
unset($this->getConfigInstance()->$name);
}
/**
* @param string $name
* @param mixed $value
*/
public function __set($name, $value)
{
return $this->getConfigInstance()->$name = $value;
}
/**
* Check if the User profile has a configuration.
*
* @return bool
*/
public function exists()
{
return ($this->_config!==null);
}
/**
* @throws Zend_Tool_Framework_Client_Exception
* @return Zend_Config
*/
public function getConfigInstance()
{
if(!$this->exists()) {
require_once "Zend/Tool/Framework/Client/Exception.php";
throw new Zend_Tool_Framework_Client_Exception("Client has no persistent configuration.");
}
return $this->_config;
}
/**
* Save changes to the configuration into persistence.
*
* @return bool
*/
public function save()
{
if($this->exists()) {
$writer = $this->getConfigWriter();
$writer->write($this->getConfigFilepath(), $this->getConfigInstance(), true);
$this->loadConfig($this->getConfigFilepath());
return true;
}
return false;
}
/**
* Get the config writer that corresponds to the current config file type.
*
* @return Zend_Config_Writer_FileAbstract
*/
protected function getConfigWriter()
{
$suffix = substr($this->getConfigFilepath(), -4);
switch($suffix) {
case '.ini':
require_once "Zend/Config/Writer/Ini.php";
$writer = new Zend_Config_Writer_Ini();
$writer->setRenderWithoutSections();
break;
case '.xml':
require_once "Zend/Config/Writer/Xml.php";
$writer = new Zend_Config_Writer_Xml();
break;
case '.php':
require_once "Zend/Config/Writer/Array.php";
$writer = new Zend_Config_Writer_Array();
break;
default:
require_once 'Zend/Tool/Framework/Client/Exception.php';
throw new Zend_Tool_Framework_Client_Exception('Unknown config file type '
. $suffix . ' at location ' . $this->getConfigFilepath()
);
}
return $writer;
}
}

View file

@ -0,0 +1,307 @@
<?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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Console.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @see Zend_Tool_Framework_Client_Abstract
*/
require_once 'Zend/Tool/Framework/Client/Abstract.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';
/**
* Zend_Tool_Framework_Client_Console - the CLI Client implementation for Zend_Tool_Framework
*
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Console
extends Zend_Tool_Framework_Client_Abstract
implements Zend_Tool_Framework_Client_Interactive_InputInterface,
Zend_Tool_Framework_Client_Interactive_OutputInterface
{
/**
* @var array
*/
protected $_configOptions = null;
/**
* @var array
*/
protected $_storageOptions = null;
/**
* @var Zend_Filter_Word_CamelCaseToDash
*/
protected $_filterToClientNaming = null;
/**
* @var Zend_Filter_Word_DashToCamelCase
*/
protected $_filterFromClientNaming = null;
/**
* @var array
*/
protected $_classesToLoad = array();
/**
* main() - This is typically called from zf.php. This method is a
* self contained main() function.
*
*/
public static function main($options = array())
{
$cliClient = new self($options);
$cliClient->dispatch();
}
/**
* getName() - return the name of the client, in this case 'console'
*
* @return string
*/
public function getName()
{
return 'console';
}
/**
* setConfigOptions()
*
* @param $configOptions
*/
public function setConfigOptions($configOptions)
{
$this->_configOptions = $configOptions;
return $this;
}
/**
* setStorageOptions()
*
* @param $storageOptions
*/
public function setStorageOptions($storageOptions)
{
$this->_storageOptions = $storageOptions;
return $this;
}
public function setClassesToLoad($classesToLoad)
{
$this->_classesToLoad = $classesToLoad;
return $this;
}
/**
* _init() - Tasks processed before the constructor, generally setting up objects to use
*
*/
protected function _preInit()
{
$config = $this->_registry->getConfig();
if ($this->_configOptions != null) {
$config->setOptions($this->_configOptions);
}
$storage = $this->_registry->getStorage();
if ($this->_storageOptions != null && isset($this->_storageOptions['directory'])) {
$storage->setAdapter(
new Zend_Tool_Framework_Client_Storage_Directory($this->_storageOptions['directory'])
);
}
// which classes are essential to initializing Zend_Tool_Framework_Client_Console
$classesToLoad = array(
'Zend_Tool_Framework_Client_Console_Manifest',
'Zend_Tool_Framework_System_Manifest'
);
if ($this->_classesToLoad) {
if (is_string($this->_classesToLoad)) {
$classesToLoad[] = $this->_classesToLoad;
} elseif (is_array($this->_classesToLoad)) {
$classesToLoad = array_merge($classesToLoad, $this->_classesToLoad);
}
}
// add classes to the basic loader from the config file basicloader.classes.1 ..
if (isset($config->basicloader) && isset($config->basicloader->classes)) {
foreach ($config->basicloader->classes as $classKey => $className) {
array_push($classesToLoad, $className);
}
}
$this->_registry->setLoader(
new Zend_Tool_Framework_Loader_BasicLoader(array('classesToLoad' => $classesToLoad))
);
return;
}
/**
* _preDispatch() - Tasks handed after initialization but before dispatching
*
*/
protected function _preDispatch()
{
$response = $this->_registry->getResponse();
$response->addContentDecorator(new Zend_Tool_Framework_Client_Console_ResponseDecorator_AlignCenter());
$response->addContentDecorator(new Zend_Tool_Framework_Client_Console_ResponseDecorator_Indention());
$response->addContentDecorator(new Zend_Tool_Framework_Client_Console_ResponseDecorator_Blockize());
if (function_exists('posix_isatty')) {
$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()) {
$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) {
$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) {
$this->_filterFromClientNaming = new Zend_Filter_Word_DashToCamelCase();
}
return $this->_filterFromClientNaming->filter($string);
}
}

View file

@ -0,0 +1,532 @@
<?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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: ArgumentParser.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @see Zend_Console_GetOpt
*/
require_once 'Zend/Console/Getopt.php';
/**
* @see Zend_Tool_Framework_Registry_EnabledInterface
*/
require_once 'Zend/Tool/Framework/Registry/EnabledInterface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_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;
}
$actionSearchCriteria = array(
'type' => 'Tool',
'name' => 'actionName',
'value' => $consoleActionName,
'clientName' => 'console'
);
// is the action name valid?
$actionMetadata = $this->_manifestRepository->getMetadata($actionSearchCriteria);
// check for normalized names as well (all lower, no separators)
if (!$actionMetadata) {
$actionSearchCriteria['name'] = 'normalizedActionName';
$actionSearchCriteria['value'] = strtolower(str_replace(array('-', '_'), '', $consoleActionName));
$actionSearchCriteria['clientName'] = 'all';
$actionMetadata = $this->_manifestRepository->getMetadata($actionSearchCriteria);
}
// 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;
}
$providerSearchCriteria = array(
'type' => 'Tool',
'name' => 'providerName',
'value' => $consoleProviderName,
'clientName' => 'console'
);
// get the cli provider names from the manifest
$providerMetadata = $this->_manifestRepository->getMetadata($providerSearchCriteria);
// check for normalized names as well (all lower, no separators)
if (!$providerMetadata) {
$providerSearchCriteria['name'] = 'normalizedProviderName';
$providerSearchCriteria['value'] = strtolower(str_replace(array('-', '_'), '', $consoleProviderName));
$providerSearchCriteria['clientName'] = 'all';
$providerMetadata = $this->_manifestRepository->getMetadata($providerSearchCriteria);
}
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;
}
$providerSpecialtySearchCriteria = array(
'type' => 'Tool',
'name' => 'specialtyName',
'value' => $consoleSpecialtyName,
'providerName' => $providerMetadata->getProviderName(),
'clientName' => 'console'
);
$providerSpecialtyMetadata = $this->_manifestRepository->getMetadata($providerSpecialtySearchCriteria);
if (!$providerSpecialtyMetadata) {
$providerSpecialtySearchCriteria['name'] = 'normalizedSpecialtyName';
$providerSpecialtySearchCriteria['value'] = strtolower(str_replace(array('-', '_'), '', $consoleSpecialtyName));
$providerSpecialtySearchCriteria['clientName'] = 'all';
$providerSpecialtyMetadata = $this->_manifestRepository->getMetadata($providerSpecialtySearchCriteria);
}
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->_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,378 @@
<?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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: HelpSystem.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_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'), 'aligncenter' => true));
$this->_response->appendContent($errorMessage, array('indention' => 1, 'blockize' => 72, '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'
));
$actionableGlobalMetadatas = $manifest->getMetadatas(array(
'type' => 'Tool',
'name' => 'actionableMethodLongParams',
'providerName' => $providerName,
'actionName' => $actionName,
'clientName' => 'console'
));
if ($actionableGlobalLongParamMetadata) {
if (!$providerNameDisplayed) {
$this->_respondWithProviderName($providerMetadata);
$providerNameDisplayed = true;
}
$this->_respondWithCommand($providerMetadata, $actionMetadata, $specialtyMetadata, $actionableGlobalLongParamMetadata);
$actionIsGlobal = true;
} else {
$actionIsGlobal = false;
}
// check for providers without a _Global action
$isSingleSpecialProviderAction = false;
if (!$actionIsGlobal && count($actionableGlobalMetadatas) == 1) {
$isSingleSpecialProviderAction = true;
$this->_respondWithProviderName($providerMetadata);
$providerNameDisplayed = true;
}
if ($includeAllSpecialties || $isSingleSpecialProviderAction) {
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'
));
if($actionableSpecialtyLongMetadata) {
$this->_respondWithCommand($providerMetadata, $actionMetadata, $specialtyMetadata, $actionableSpecialtyLongMetadata);
}
}
}
// reset the special flag for single provider action with specialty
$isSingleSpecialProviderAction = false;
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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Manifest.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @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-2010 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,66 @@
<?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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
require_once "Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php";
/**
* Try to align a given text central on the screen.
*
* @category Zend
* @package Zend_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: AlignCenter.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
class Zend_Tool_Framework_Client_Console_ResponseDecorator_AlignCenter
implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface
{
public function getName()
{
return "aligncenter";
}
/**
* @param string $content
* @param integer $lineLength
*/
public function decorate($content, $lineLength)
{
if(!is_numeric($lineLength)) {
$lineLength = 72;
}
if(strlen($content) < $lineLength) {
$append = false;
$len = strlen($content);
for($i = $len; $i < $lineLength; $i++) {
if($append == true) {
$content = $content." ";
$append = false;
} else {
$content = " ".$content;
$append = true;
}
}
}
return $content;
}
}

View file

@ -0,0 +1,69 @@
<?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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
require_once "Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php";
/**
* Take a text and block it into several lines of a fixed length.
*
* @category Zend
* @package Zend_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Blockize.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
class Zend_Tool_Framework_Client_Console_ResponseDecorator_Blockize
implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface
{
public function getName()
{
return 'blockize';
}
/**
*
* @param string $content
* @param int $lineLength
* @return string
*/
public function decorate($content, $lineLength)
{
if(intval(strval($lineLength)) != $lineLength) {
$lineLength = 72;
}
// break apart the message into wrapped chunks
$lines = explode(PHP_EOL, wordwrap($content, $lineLength, PHP_EOL, false));
$content = array();
foreach($lines AS $line) {
if(strlen(trim($line)) == 0) {
continue;
}
if(strlen($line) < $lineLength) {
$line .= str_repeat(" ", $lineLength-strlen($line));
}
$content[] = $line;
}
return implode(PHP_EOL, $content);
}
}

View file

@ -0,0 +1,92 @@
<?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
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Colorizer.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_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,56 @@
<?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
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Indention.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
require_once "Zend/Tool/Framework/Client/Response/ContentDecorator/Interface.php";
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Console_ResponseDecorator_Indention
implements Zend_Tool_Framework_Client_Response_ContentDecorator_Interface
{
public function getName()
{
return 'indention';
}
/**
* @param string $content
* @param integer $indention
*/
public function decorate($content, $indention)
{
if(strval(intval($indention)) != $indention) {
return $content;
}
$newContent = "";
$lines = preg_split('((\r\n|\r|\n)+)', $content);
$lineIndention = str_repeat(' ', $indention);
foreach($lines AS $line) {
$newContent .= $lineIndention.$line.PHP_EOL;
}
return rtrim($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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Exception.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @see Zend_Tool_Framework_Exception
*/
require_once 'Zend/Tool/Framework/Exception.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Exception extends Zend_Tool_Framework_Exception
{
}

View file

@ -0,0 +1,74 @@
<?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
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: InputHandler.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_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,41 @@
<?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
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: InputInterface.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_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,54 @@
<?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
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: InputRequest.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_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,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
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: InputResponse.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_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,33 @@
<?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
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: OutputInterface.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Framework_Client_Interactive_OutputInterface
{
public function handleInteractiveOutput($string);
}

View file

@ -0,0 +1,206 @@
<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Tool
* @subpackage Framework
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Manifest.php 18386 2009-09-23 20:44:43Z ralph $
*/
/**
* @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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_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:
*
* normalizedActionName
* - metadata for actions
* - value will be a dashed name for the action named in 'actionName'
* normalizedProviderName
* - metadata for providers
* - value will be a dashed-name for the provider named in 'providerName'
* normalizedProviderSpecialtyNames
* - metadata for providers
* normalizedActionableMethodLongParameters
* - metadata for providers
* normalizedActionableMethodShortParameters
* - 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
$lowerFilter = new Zend_Filter();
$lowerFilter->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' => 'normalizedActionName',
'value' => $lowerFilter->filter($action->getName()),
'reference' => $action,
'actionName' => $action->getName(),
'clientName' => 'all'
));
}
foreach ($providerRepository->getProviderSignatures() as $providerSignature) {
// create the metadata for the provider's cliProviderName
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
'name' => 'normalizedProviderName',
'value' => $lowerFilter->filter($providerSignature->getName()),
'reference' => $providerSignature,
'clientName' => 'all',
'providerName' => $providerSignature->getName()
));
// create the metadatas for the per provider specialites in providerSpecaltyNames
foreach ($providerSignature->getSpecialties() as $specialty) {
if ($specialty == '_Global') {
continue;
}
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
'name' => 'normalizedSpecialtyName',
'value' => $lowerFilter->filter($specialty),
'reference' => $providerSignature,
'clientName' => 'all',
'providerName' => $providerSignature->getName(),
'specialtyName' => $specialty
));
}
// $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']] = $lowerFilter->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' => 'normalizedActionableMethodLongParams',
'value' => $methodLongParams,
'clientName' => 'console',
'providerName' => $providerSignature->getName(),
'specialtyName' => $actionableMethodData['specialty'],
'actionName' => $actionableMethodData['actionName'],
'reference' => &$actionableMethodData
));
// create metadata for the short name cliActionableMethodShortParameters
$metadatas[] = new Zend_Tool_Framework_Metadata_Tool(array(
'name' => 'normalizedActionableMethodShortParams',
'value' => $methodShortParams,
'clientName' => 'console',
'providerName' => $providerSignature->getName(),
'specialtyName' => $actionableMethodData['specialty'],
'actionName' => $actionableMethodData['actionName'],
'reference' => &$actionableMethodData
));
}
}
return $metadatas;
}
public function getIndex()
{
return 100000;
}
}

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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Request.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Response.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Response
{
/**
* @var callback|null
*/
protected $_callback = null;
/**
* @var array
*/
protected $_content = array();
/**
* @var Zend_Tool_Framework_Exception
*/
protected $_exception = null;
/**
* @var array
*/
protected $_decorators = array();
/**
* @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,35 @@
<?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
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Interface.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Separator.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @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-2010 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,117 @@
<?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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Storage.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @see Zend_Tool_Framework_Client_Storage_AdapterInterface
*/
require_once 'Zend/Tool/Framework/Client/Storage/AdapterInterface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Storage
{
/**
* @var Zend_Tool_Framework_Client_Storage_AdapterInterface
*/
protected $_adapter = null;
public function __construct($options = array())
{
if (isset($options['adapter'])) {
$this->setAdapter($options['adapter']);
}
}
public function setAdapter($adapter)
{
if (is_string($adapter)) {
$storageAdapterClass = 'Zend_Tool_Framework_Client_Storage_' . ucfirst($adapter);
Zend_Loader::loadClass($storageAdapterClass);
$adapter = new $storageAdapterClass();
}
$this->_adapter = $adapter;
}
public function isEnabled()
{
return ($this->_adapter instanceof Zend_Tool_Framework_Client_Storage_AdapterInterface);
}
public function put($name, $value)
{
if (!$this->_adapter) {
return false;
}
$this->_adapter->put($name, $value);
return $this;
}
public function get($name, $defaultValue = false)
{
if (!$this->_adapter) {
return false;
}
if ($this->_adapter->has($name)) {
return $this->_adapter->get($name);
} else {
return $defaultValue;
}
}
public function has($name)
{
if (!$this->_adapter) {
return false;
}
return $this->_adapter->has($name);
}
public function remove($name)
{
if (!$this->_adapter) {
return false;
}
$this->_adapter->remove($name);
return $this;
}
public function getStreamUri($name)
{
if (!$this->_adapter) {
return false;
}
return $this->_adapter->getStreamUri($name);
}
}

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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: AdapterInterface.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
interface Zend_Tool_Framework_Client_Storage_AdapterInterface
{
public function put($name, $value);
public function get($name);
public function has($name);
public function remove($name);
public function getStreamUri($name);
}

View file

@ -0,0 +1,73 @@
<?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-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: Directory.php 20096 2010-01-06 02:05:09Z bkarwin $
*/
/**
* @see Zend_Tool_Framework_Client_Storage_AdapterInterface
*/
require_once 'Zend/Tool/Framework/Client/Storage/AdapterInterface.php';
/**
* @category Zend
* @package Zend_Tool
* @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Tool_Framework_Client_Storage_Directory
implements Zend_Tool_Framework_Client_Storage_AdapterInterface
{
protected $_directoryPath = null;
public function __construct($directoryPath)
{
if (!file_exists($directoryPath)) {
throw new Zend_Tool_Framework_Client_Exception(__CLASS__ . ': the supplied directory does not exist');
}
$this->_directoryPath = $directoryPath;
}
public function put($name, $value)
{
return file_put_contents($this->_directoryPath . DIRECTORY_SEPARATOR . $name, $value);
}
public function get($name)
{
return file_get_contents($this->_directoryPath . DIRECTORY_SEPARATOR . $name);
}
public function has($name)
{
return file_exists($this->_directoryPath . DIRECTORY_SEPARATOR . $name);
}
public function remove($name)
{
return unlink($this->_directoryPath . DIRECTORY_SEPARATOR . $name);
}
public function getStreamUri($name)
{
return $this->_directoryPath . DIRECTORY_SEPARATOR . $name;
}
}