/** * * @param Zend_Tool_Project_Profile $profile * @param type $adapter * @throws Zend_Tool_Project_Exception */ private function _connect(Zend_Tool_Project_Profile $profile, $adapter, $env = 'development') { $applicationConfigResource = $profile->search('ApplicationConfigFile'); if ($env == null || $env == '') { $env = 'development'; } if (!$applicationConfigResource) { throw new Zend_Tool_Project_Exception('A project with an application config file is required to use this provider.'); } //$conn = 'testing'; //$conn = 'development'; $zf = $applicationConfigResource->getAsZendConfig($env); $this->_print('Conectado em ' . $env); #$zf = $applicationConfigResource->getAsZendConfig('testing'); $_configDb = $zf->resources->multidb->{$adapter}; if (!$_configDb) { throw new Zend_Tool_Project_Exception('Adapter not found in config application "resources.multidb.' . $adapter . '" .'); } $configDb = array(); $configDb['host'] = $_configDb->host; $configDb['username'] = $_configDb->username; $configDb['password'] = $_configDb->password; $configDb['dbname'] = $_configDb->dbname; $configDb['adapterNamespace'] = $_configDb->adapterNamespace; $configDb['options']['caseFolding'] = 1; $this->_dbAdapter = Zend_Db::factory($_configDb->adapter, $configDb); }
/** * createResource() * * @param Zend_Tool_Project_Profile $profile * @param string $actionName * @param string $controllerName * @param string $moduleName * @return Zend_Tool_Project_Profile_Resource */ public static function createResource(Zend_Tool_Project_Profile $profile, $actionName, $controllerName, $moduleName = null) { if (!is_string($actionName)) { //require_once 'Zend/Tool/Project/Provider/Exception.php'; throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_View::createResource() expects \\"actionName\\" is the name of a controller resource to create.'); } if (!is_string($controllerName)) { //require_once 'Zend/Tool/Project/Provider/Exception.php'; throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_View::createResource() expects \\"controllerName\\" is the name of a controller resource to create.'); } $profileSearchParams = array(); if ($moduleName) { $profileSearchParams = array('modulesDirectory', 'moduleDirectory' => array('moduleName' => $moduleName)); $noModuleSearch = null; } else { $noModuleSearch = array('modulesDirectory'); } $profileSearchParams[] = 'viewsDirectory'; $profileSearchParams[] = 'viewScriptsDirectory'; if (($viewScriptsDirectory = $profile->search($profileSearchParams, $noModuleSearch)) === false) { //require_once 'Zend/Tool/Project/Provider/Exception.php'; throw new Zend_Tool_Project_Provider_Exception('This project does not have a viewScriptsDirectory resource.'); } $profileSearchParams['viewControllerScriptsDirectory'] = array('forControllerName' => $controllerName); // @todo check if below is failing b/c of above search params if (($viewControllerScriptsDirectory = $viewScriptsDirectory->search($profileSearchParams)) === false) { $viewControllerScriptsDirectory = $viewScriptsDirectory->createResource('viewControllerScriptsDirectory', array('forControllerName' => $controllerName)); } $newViewScriptFile = $viewControllerScriptsDirectory->createResource('ViewScriptFile', array('forActionName' => $actionName)); return $newViewScriptFile; }
/** * create() * * @param string $path */ public function create($path) { if ($path == null) { $path = getcwd(); } else { $path = trim($path); if (!file_exists($path)) { $created = mkdir($path); if (!$created) { require_once 'Zend/Tool/Framework/Client/Exception.php'; throw new Zend_Tool_Framework_Client_Exception('Could not create requested project directory \'' . $path . '\''); } } $path = str_replace('\\', '/', realpath($path)); } $profile = $this->_loadProfile(self::NO_PROFILE_RETURN_FALSE, $path); if ($profile !== false) { require_once 'Zend/Tool/Framework/Client/Exception.php'; throw new Zend_Tool_Framework_Client_Exception('A project already exists here'); } $newProfile = new Zend_Tool_Project_Profile(array('projectDirectory' => $path, 'profileData' => $this->_getDefaultProfile())); $newProfile->loadFromData(); $this->_registry->getResponse()->appendContent('Creating project at ' . $path); foreach ($newProfile->getIterator() as $resource) { $resource->create(); } }
/** * Method returns path to modules directory * * @param Zend_Tool_Project_Profile $profile * @return string */ protected static function _getModulesDirectoryPath(Zend_Tool_Project_Profile $profile) { $modulesDirectory = $profile->search(array('modulesDirectory')); if (!$modulesDirectory instanceof Zend_Tool_Project_Profile_Resource) { throw new Zend_Tool_Project_Provider_Exception("Modules resource undefined."); } return $modulesDirectory->getPath(); }
/** * _getModelsDirectoryResource() * * @param Zend_Tool_Project_Profile $profile * @param string $moduleName * @return Zend_Tool_Project_Profile_Resource */ protected static function _getModelsDirectoryResource(Zend_Tool_Project_Profile $profile, $moduleName = null) { $profileSearchParams = array(); if ($moduleName != null && is_string($moduleName)) { $profileSearchParams = array('modulesDirectory', 'moduleDirectory' => array('moduleName' => $moduleName)); } $profileSearchParams[] = 'modelsDirectory'; return $profile->search($profileSearchParams); }
/** * createResource() * * @param Zend_Tool_Project_Profile $profile * @param string $projectProviderName * @param string $actionNames * @return Zend_Tool_Project_Profile_Resource */ public static function createResource(Zend_Tool_Project_Profile $profile, $projectProviderName, $actionNames = null) { if (!is_string($projectProviderName)) { throw new Zend_Tool_Project_Provider_Exception('Zend_Tool_Project_Provider_Controller::createResource() expects \\"projectProviderName\\" is the name of a project provider resource to create.'); } $profileSearchParams = array(); $profileSearchParams[] = 'projectProvidersDirectory'; $projectProvider = $profile->createResourceAt($profileSearchParams, 'projectProviderFile', array('projectProviderName' => $projectProviderName, 'actionNames' => $actionNames)); return $projectProvider; }
/** * _getControllerFileResource() * * @param Zend_Tool_Project_Profile $profile * @param string $controllerName * @param string $moduleName * @return Zend_Tool_Project_Profile_Resource */ protected static function _getControllerFileResource(Zend_Tool_Project_Profile $profile, $controllerName, $moduleName = null) { $profileSearchParams = array(); if ($moduleName != null && is_string($moduleName)) { $profileSearchParams = array('modulesDirectory', 'moduleDirectory' => array('moduleName' => $moduleName)); } $profileSearchParams[] = 'controllersDirectory'; $profileSearchParams['zfsControllerFile'] = array('controllerName' => $controllerName); return $profile->search($profileSearchParams); }
public static function createResources(Zend_Tool_Project_Profile $profile, $moduleName, Zend_Tool_Project_Profile_Resource $targetModuleResource = null) { // find the appliction directory, it will serve as our module skeleton if ($targetModuleResource == null) { $targetModuleResource = $profile->search('applicationDirectory'); $targetModuleEnabledResources = array('ControllersDirectory', 'ModelsDirectory', 'ViewsDirectory', 'ViewScriptsDirectory', 'ViewHelpersDirectory', 'ViewFiltersDirectory'); } // find the actual modules directory we will use to house our module $modulesDirectory = $profile->search('modulesDirectory'); // if there is a module directory already, except if ($modulesDirectory->search(array('moduleDirectory' => array('moduleName' => $moduleName)))) { throw new Zend_Tool_Project_Provider_Exception('A module named "' . $moduleName . '" already exists.'); } // create the module directory $moduleDirectory = $modulesDirectory->createResource('moduleDirectory', array('moduleName' => $moduleName)); // create a context filter so that we can pull out only what we need from the module skeleton $moduleContextFilterIterator = new Zend_Tool_Project_Profile_Iterator_ContextFilter($targetModuleResource, array('denyNames' => array('ModulesDirectory', 'ViewControllerScriptsDirectory'), 'denyType' => 'Zend_Tool_Project_Context_Filesystem_File')); // the iterator for the module skeleton $targetIterator = new RecursiveIteratorIterator($moduleContextFilterIterator, RecursiveIteratorIterator::SELF_FIRST); // initialize some loop state information $currentDepth = 0; $parentResources = array(); $currentResource = $moduleDirectory; // loop through the target module skeleton foreach ($targetIterator as $targetSubResource) { $depthDifference = $targetIterator->getDepth() - $currentDepth; $currentDepth = $targetIterator->getDepth(); if ($depthDifference === 1) { // if we went down into a child, make note array_push($parentResources, $currentResource); // this will have always been set previously by another loop $currentResource = $currentChildResource; } elseif ($depthDifference < 0) { // if we went up to a parent, make note $i = $depthDifference; do { // if we went out more than 1 parent, get to the correct parent $currentResource = array_pop($parentResources); } while ($i-- > 0); } // get parameters for the newly created module resource $params = $targetSubResource->getAttributes(); $currentChildResource = $currentResource->createResource($targetSubResource->getName(), $params); // based of the provided list (Currently up top), enable specific resources if (isset($targetModuleEnabledResources)) { $currentChildResource->setEnabled(in_array($targetSubResource->getName(), $targetModuleEnabledResources)); } else { $currentChildResource->setEnabled($targetSubResource->isEnabled()); } } return $moduleDirectory; }
public static function hasResource(Zend_Tool_Project_Profile $profile, $dbTableName, $moduleName = null) { $profileSearchParams = array(); if ($moduleName != null && is_string($moduleName)) { $profileSearchParams = array('modulesDirectory', 'moduleDirectory' => array('moduleName' => $moduleName)); } $profileSearchParams[] = 'modelsDirectory'; $modelsDirectory = $profile->search($profileSearchParams); if (!$modelsDirectory instanceof Zend_Tool_Project_Profile_Resource || !($dbTableDirectory = $modelsDirectory->search('DbTableDirectory'))) { return false; } $dbTableFile = $dbTableDirectory->search(array('DbTableFile' => array('dbTableName' => $dbTableName))); return $dbTableFile instanceof Zend_Tool_Project_Profile_Resource ? true : false; }
/** * _storeProfile() * * This method will store the profile into its proper location * */ protected function _storeProfile() { $projectProfileFile = $this->_loadedProfile->search('ProjectProfileFile'); $name = $projectProfileFile->getContext()->getPath(); $this->_registry->getResponse()->appendContent('Updating project profile \'' . $name . '\''); $projectProfileFile->getContext()->save(); }
/** * _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); } } }
public static function createResource(Zend_Tool_Project_Profile $profile, $layoutName = 'layout') { $applicationDirectory = $profile->search('applicationDirectory'); $layoutDirectory = $applicationDirectory->search('layoutsDirectory'); if ($layoutDirectory == false) { $layoutDirectory = $applicationDirectory->createResource('layoutsDirectory'); } $layoutScriptsDirectory = $layoutDirectory->search('layoutScriptsDirectory'); if ($layoutScriptsDirectory == false) { $layoutScriptsDirectory = $layoutDirectory->createResource('layoutScriptsDirectory'); } $layoutScriptFile = $layoutScriptsDirectory->search('layoutScriptFile', array('layoutName' => 'layout')); if ($layoutScriptFile == false) { $layoutScriptFile = $layoutScriptsDirectory->createResource('layoutScriptFile', array('layoutName' => 'layout')); } return $layoutScriptFile; }
/** * create() * * @param string $path * @param string $nameOfProfile shortName=n * @param string $fileOfProfile shortName=f */ public function create($path, $nameOfProfile = null, $fileOfProfile = null) { if ($path == null) { $path = getcwd(); } else { $path = trim($path); if (!file_exists($path)) { $created = mkdir($path); if (!$created) { require_once 'Zend/Tool/Framework/Client/Exception.php'; throw new Zend_Tool_Framework_Client_Exception('Could not create requested project directory \'' . $path . '\''); } } $path = str_replace('\\', '/', realpath($path)); } $profile = $this->_loadProfile(self::NO_PROFILE_RETURN_FALSE, $path); if ($profile !== false) { require_once 'Zend/Tool/Framework/Client/Exception.php'; throw new Zend_Tool_Framework_Client_Exception('A project already exists here'); } $profileData = null; if ($fileOfProfile != null && file_exists($fileOfProfile)) { $profileData = file_get_contents($fileOfProfile); } $storage = $this->_registry->getStorage(); if ($profileData == '' && $nameOfProfile != null && $storage->isEnabled()) { $profileData = $storage->get('project/profiles/' . $nameOfProfile . '.xml'); } if ($profileData == '') { $profileData = $this->_getDefaultProfile(); } $newProfile = new Zend_Tool_Project_Profile(array('projectDirectory' => $path, 'profileData' => $profileData)); $newProfile->loadFromData(); $response = $this->_registry->getResponse(); $response->appendContent('Creating project at ' . $path); $response->appendContent('Note: ', array('separator' => false, 'color' => 'yellow')); $response->appendContent('This command created a web project, ' . 'for more information setting up your VHOST, please see docs/README'); if (!Zend_Tool_Project_Provider_Test::isPHPUnitAvailable()) { $response->appendContent('Testing Note: ', array('separator' => false, 'color' => 'yellow')); $response->appendContent('PHPUnit was not found in your include_path, therefore no testing actions will be created.'); } foreach ($newProfile->getIterator() as $resource) { $resource->create(); } }
/** * * @param Zend_Tool_Project_Profile $profile * @param type $adapter * @throws Zend_Tool_Project_Exception */ private function connect(Zend_Tool_Project_Profile $profile, $adapter) { $applicationConfigResource = $profile->search('ApplicationConfigFile'); if (!$applicationConfigResource) { throw new Zend_Tool_Project_Exception('A project with an application config file is required to use this provider.'); } $zf = $applicationConfigResource->getAsZendConfig(); $_configDb = $zf->resources->multidb->{$adapter}; if (!$_configDb) { throw new Zend_Tool_Project_Exception('Adapter not found in config application "resources.multidb.' . $adapter . '" .'); } $configDb = array(); $configDb['host'] = $_configDb->host; $configDb['username'] = $_configDb->username; $configDb['password'] = $_configDb->password; $configDb['dbname'] = $_configDb->dbname; $this->_dbAdapter = Zend_Db::factory($_configDb->adapter, $configDb); }
public static function hasResource(Zend_Tool_Project_Profile $profile, $controllerName, $actionNameOrSimpleName, $moduleName = 'backoffice') { if ($moduleName == '' || $controllerName == '' || $actionNameOrSimpleName == '') { require_once 'Zend/Tool/Project/Provider/Exception.php'; throw new Zend_Tool_Project_Provider_Exception('ModuleName and/or ControllerName and/or ActionName are empty.'); } $profileSearchParams = array('modulesDirectory', 'moduleDirectory' => array('moduleName' => $moduleName), 'viewsDirectory', 'viewScriptsDirectory'); if (($viewScriptsDirectory = $profile->search($profileSearchParams)) === false) { require_once 'Zend/Tool/Project/Provider/Exception.php'; throw new Zend_Tool_Project_Provider_Exception('This project does not have a viewScriptsDirectory resource.'); } $profileSearchParams['viewControllerScriptsDirectory'] = array('forControllerName' => $controllerName); //@FIXME Search returns false even on existance of search params. if (($viewControllerScriptsDirectory = $viewScriptsDirectory->search($profileSearchParams)) === false) { return false; } $profileSearchParams['zfsViewScriptFile'] = array('forActionName' => $actionNameOrSimpleName); return $viewControllerScriptsDirectory->search($profileSearchParams) instanceof Zend_Tool_Project_Profile_Resource; }
/** * createLibraryResource() * * @param Zend_Tool_Project_Profile $profile * @param string $libraryClassName * @return Zend_Tool_Project_Profile_Resource */ public static function createLibraryResource(Zend_Tool_Project_Profile $profile, $libraryClassName) { $testLibraryDirectoryResource = $profile->search(array('TestsDirectory', 'TestLibraryDirectory')); $fsParts = explode('_', $libraryClassName); $currentDirectoryResource = $testLibraryDirectoryResource; while ($nameOrNamespacePart = array_shift($fsParts)) { if (count($fsParts) > 0) { if (($libraryDirectoryResource = $currentDirectoryResource->search(array('TestLibraryNamespaceDirectory' => array('namespaceName' => $nameOrNamespacePart)))) === false) { $currentDirectoryResource = $currentDirectoryResource->createResource('TestLibraryNamespaceDirectory', array('namespaceName' => $nameOrNamespacePart)); } else { $currentDirectoryResource = $libraryDirectoryResource; } } else { if (($libraryFileResource = $currentDirectoryResource->search(array('TestLibraryFile' => array('forClassName' => $libraryClassName)))) === false) { $libraryFileResource = $currentDirectoryResource->createResource('TestLibraryFile', array('forClassName' => $libraryClassName)); } } } return $libraryFileResource; }
public function testProfileCanDelete() { $this->_standardProfileFromData->loadFromData(); foreach ($this->_standardProfileFromData->getIterator() as $resource) { $resource->getContext()->create(); } $this->assertTrue(file_exists($this->_projectDirectory . 'public/index.php')); $publicIndexFile = $this->_standardProfileFromData->search('publicIndexFile'); $publicIndexFile->getContext()->delete(); $this->assertFalse(file_exists($this->_projectDirectory . 'public/index.php')); $appConfigFile = $this->_standardProfileFromData->search('applicationConfigFile'); $appConfigFile->getContext()->delete(); $configsDirectory = $this->_standardProfileFromData->search('configsDirectory'); $configsDirectory->getContext()->delete(); $this->assertFalse(file_exists($this->_projectDirectory . 'application/configs')); }
/** * _getFormsDirectoryResource() * * @param Zend_Tool_Project_Profile $profile * @return Zend_Tool_Project_Profile_Resource */ protected static function _getFormsDirectoryResource(Zend_Tool_Project_Profile $profile, $module) { $profileSearchParams = array('modulesDirectory', 'moduleDirectory' => array('moduleName' => $module), 'formsDirectory'); return $profile->search($profileSearchParams); }
/** * @inheritdoc * * This code is reproduced from the ZF tool component * @licence http://framework.zend.com/license/new-bsd * * Copyright (c) 2005-2010, Zend Technologies USA, Inc. * All rights reserved. */ protected function _findProfileDirectory($projectDirectory = null, $searchParentDirectories = true) { // use the cwd if no directory was provided if ($projectDirectory == null) { $projectDirectory = getcwd(); } elseif (realpath($projectDirectory) == false) { throw new Zend_Tool_Project_Provider_Exception('The $projectDirectory supplied does not exist.'); } $profile = new Zend_Tool_Project_Profile(); $parentDirectoriesArray = explode(DIRECTORY_SEPARATOR, ltrim($projectDirectory, DIRECTORY_SEPARATOR)); while ($parentDirectoriesArray) { $projectDirectoryAssembled = implode(DIRECTORY_SEPARATOR, $parentDirectoriesArray); if (DIRECTORY_SEPARATOR !== "\\") { $projectDirectoryAssembled = DIRECTORY_SEPARATOR . $projectDirectoryAssembled; } $profile->setAttribute('projectDirectory', $projectDirectoryAssembled); if ($profile->isLoadableFromFile()) { unset($profile); return $projectDirectoryAssembled; } // break after first run if we are not to check upper directories if ($searchParentDirectories == false) { break; } array_pop($parentDirectoriesArray); } return false; }
/** * _getModelsDirectoryResource() * * @param Zend_Tool_Project_Profile $profile * @return Zend_Tool_Project_Profile_Resource */ protected static function _getModelsDirectoryResource(Zend_Tool_Project_Profile $profile) { $profileSearchParams = array('appLibraryDirectory', 'zfsModelDirectory'); return $profile->search($profileSearchParams); }
protected function _getApplicationConfigResource(Zend_Tool_Project_Profile $profile) { $applicationConfigResource = $profile->search('ApplicationConfigFile'); if (!$applicationConfigResource) { throw new Zend_Tool_Project_Exception('A project with an application config file is required to use this provider.'); } return $applicationConfigResource; }
/** * * @expectedException Zend_Tool_Project_Exception */ public function testProfileThrowsExceptionOnLoadFromFileWithBadPathForProfileFile() { $profile = new Zend_Tool_Project_Profile(); $profile->setAttribute('projectProfileFile', '/path/should/not/exist'); // missing file path or project path $profile->loadFromFile(); }