/** * init() * * @return Zend_Tool_Project_Context_Zf_ActionMethod */ public function init() { $this->_actionName = $this->_resource->getAttribute('actionName'); $this->_resource->setAppendable(false); $this->_controllerResource = $this->_resource->getParentResource(); if (!$this->_controllerResource->getContext() instanceof Zend_Tool_Project_Context_Zf_ControllerFile) { // require_once 'Zend/Tool/Project/Context/Exception.php'; throw new Zend_Tool_Project_Context_Exception('ActionMethod must be a sub resource of a ControllerFile'); } // make the ControllerFile node appendable so we can tack on the actionMethod. $this->_resource->getParentResource()->setAppendable(true); $this->_controllerPath = $this->_controllerResource->getContext()->getPath(); /* * This code block is now commented, its doing to much for init() * if ($this->_controllerPath != '' && self::hasActionMethod($this->_controllerPath, $this->_actionName)) { // require_once 'Zend/Tool/Project/Context/Exception.php'; throw new Zend_Tool_Project_Context_Exception('An action named ' . $this->_actionName . 'Action already exists in this controller'); } */ return $this; }
public function getApplicationInstance() { if ($this->_applicationInstance == null) { if ($this->_applicationConfigFile->getContext()->exists()) { define('APPLICATION_PATH', $this->_applicationDirectory->getPath()); $applicationOptions = array(); $applicationOptions['config'] = $this->_applicationConfigFile->getPath(); $this->_applicationInstance = new Zend_Application('development', $applicationOptions); } } return $this->_applicationInstance; }
/** * init() * * @return Zend_Tool_Project_Context_Zf_ActionMethod */ public function init() { $this->_actionName = $this->_resource->getAttribute('actionName'); $this->_resource->setAppendable(false); $this->_controllerResource = $this->_resource->getParentResource(); if (!$this->_controllerResource->getContext() instanceof Zend_Tool_Project_Context_Zf_ControllerFile) { throw new Zend_Tool_Project_Context_Exception('ActionMethod must be a sub resource of a ControllerFile'); } // make the ControllerFile node appendable so we can tack on the actionMethod. $this->_resource->getParentResource()->setAppendable(true); $this->_controllerPath = $this->_controllerResource->getContext()->getPath(); return $this; }
/** * create() * * @return Zend_Tool_Project_Context_Zf_ActionMethod */ public function create() { $file = $this->_testApplicationControllerPath; if (!file_exists($file)) { require_once 'Zend/Tool/Project/Context/Exception.php'; throw new Zend_Tool_Project_Context_Exception( 'Could not create action within test controller ' . $file . ' with action name ' . $this->_forActionName ); } $actionParam = $this->getForActionName(); $controllerParam = $this->_resource->getParentResource()->getForControllerName(); //$moduleParam = null;// /* @var $controllerDirectoryResource Zend_Tool_Project_Profile_Resource */ $controllerDirectoryResource = $this->_resource->getParentResource()->getParentResource(); if ($controllerDirectoryResource->getParentResource()->getName() == 'TestApplicationModuleDirectory') { $moduleParam = $controllerDirectoryResource->getParentResource()->getForModuleName(); } else { $moduleParam = 'default'; } if ($actionParam == 'index' && $controllerParam == 'Index' && $moduleParam == 'default') { $assert = '$this->assertQueryContentContains("div#welcome h3", "This is your project\'s main page");'; } else { $assert = <<<EOS \$this->assertQueryContentContains( 'div#view-content p', 'View script for controller <b>' . \$params['controller'] . '</b> and script/action name <b>' . \$params['action'] . '</b>' ); EOS; } $codeGenFile = Zend_CodeGenerator_Php_File::fromReflectedFileName($file, true, true); $codeGenFile->getClass()->setMethod(array( 'name' => 'test' . ucfirst($actionParam) . 'Action', 'body' => <<<EOS \$params = array('action' => '$actionParam', 'controller' => '$controllerParam', 'module' => '$moduleParam'); \$url = \$this->url(\$this->urlizeOptions(\$params)); \$this->dispatch(\$url); // assertions \$this->assertModule(\$params['module']); \$this->assertController(\$params['controller']); \$this->assertAction(\$params['action']); $assert EOS )); file_put_contents($file, $codeGenFile->generate()); return $this; }
/** * init() * * @return Zend_Tool_Project_Context_Filesystem_Abstract */ public function init() { $parentBaseDirectory = $this->_resource->getParentResource()->getContext()->getPath(); $this->_baseDirectory = $parentBaseDirectory; return $this; }
/** * createResource() * * Method to create a resource with a given context with specific attributes * * @param string $context * @param array $attributes * @return Zend_Tool_Project_Profile_Resource */ public function createResource($context, array $attributes = array()) { if (is_string($context)) { $contextRegistry = Zend_Tool_Project_Context_Repository::getInstance(); if ($contextRegistry->hasContext($context)) { $context = $contextRegistry->getContext($context); } else { require_once 'Zend/Tool/Project/Profile/Exception.php'; throw new Zend_Tool_Project_Profile_Exception('Context by name ' . $context . ' was not found in the context registry.'); } } elseif (!$context instanceof Zend_Tool_Project_Context_Interface) { require_once 'Zend/Tool/Project/Profile/Exception.php'; throw new Zend_Tool_Project_Profile_Exception('Context must be of type string or Zend_Tool_Project_Context_Interface.'); } $newResource = new Zend_Tool_Project_Profile_Resource($context); if ($attributes) { $newResource->setAttributes($attributes); } /** * Interesting logic here: * * First set the parentResource (this will also be done inside append). This will allow * the initialization routine to change the appendability of the parent resource. This * is important to allow specific resources to be appendable by very specific sub-resources. */ $newResource->setParentResource($this); $newResource->initializeContext(); $this->append($newResource); return $newResource; }
/** * _unserializeRecurser() * * This method will be used to traverse the depths of the structure * as needed to *unserialize* the profile from an xmlIterator * * @param SimpleXMLIterator $xmlIterator * @param Zend_Tool_Project_Profile_Resource $resource */ protected function _unserializeRecurser(SimpleXMLIterator $xmlIterator, Zend_Tool_Project_Profile_Resource $resource = null) { foreach ($xmlIterator as $resourceName => $resourceData) { $contextName = $resourceName; $subResource = new Zend_Tool_Project_Profile_Resource($contextName); $subResource->setProfile($this->_profile); if ($resourceAttributes = $resourceData->attributes()) { $attributes = array(); foreach ($resourceAttributes as $attrName => $attrValue) { $attributes[$attrName] = (string) $attrValue; } $subResource->setAttributes($attributes); } if ($resource) { $resource->append($subResource, false); } else { $this->_profile->append($subResource); } if ($this->_contextRepository->isOverwritableContext($contextName) == false) { $subResource->initializeContext(); } if ($xmlIterator->hasChildren()) { self::_unserializeRecurser($xmlIterator->getChildren(), $subResource); } } }