diff -r 5e7a0fedabdf -r 877f952ae2bd web/lib/Zend/Tool/Project/Provider/DbTable.php --- a/web/lib/Zend/Tool/Project/Provider/DbTable.php Thu Mar 21 17:31:31 2013 +0100 +++ b/web/lib/Zend/Tool/Project/Provider/DbTable.php Thu Mar 21 19:50:53 2013 +0100 @@ -15,29 +15,29 @@ * @category Zend * @package Zend_Tool * @subpackage Framework - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: DbTable.php 20851 2010-02-02 21:45:51Z ralph $ + * @version $Id: DbTable.php 24593 2012-01-05 20:35:02Z matthew $ */ /** * @category Zend * @package Zend_Tool - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ -class Zend_Tool_Project_Provider_DbTable +class Zend_Tool_Project_Provider_DbTable extends Zend_Tool_Project_Provider_Abstract implements Zend_Tool_Framework_Provider_Pretendable { - + protected $_specialties = array('FromDatabase'); - + /** * @var Zend_Filter */ protected $_nameFilter = null; - + public static function createResource(Zend_Tool_Project_Profile $profile, $dbTableName, $actualTableName, $moduleName = null) { $profileSearchParams = array(); @@ -47,25 +47,25 @@ } $profileSearchParams[] = 'modelsDirectory'; - + $modelsDirectory = $profile->search($profileSearchParams); - + if (!($modelsDirectory instanceof Zend_Tool_Project_Profile_Resource)) { throw new Zend_Tool_Project_Provider_Exception( 'A models directory was not found' . (($moduleName) ? ' for module ' . $moduleName . '.' : '.') ); } - + if (!($dbTableDirectory = $modelsDirectory->search('DbTableDirectory'))) { $dbTableDirectory = $modelsDirectory->createResource('DbTableDirectory'); } - + $dbTableFile = $dbTableDirectory->createResource('DbTableFile', array('dbTableName' => $dbTableName, 'actualTableName' => $actualTableName)); - + return $dbTableFile; } - + public static function hasResource(Zend_Tool_Project_Profile $profile, $dbTableName, $moduleName = null) { $profileSearchParams = array(); @@ -75,20 +75,20 @@ } $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; } - - + + public function create($name, $actualTableName, $module = null, $forceOverwrite = false) { $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); @@ -97,14 +97,14 @@ if (preg_match('#[_-]#', $name)) { throw new Zend_Tool_Project_Provider_Exception('DbTable names should be camel cased.'); } - + $originalName = $name; $name = ucfirst($name); - + if ($actualTableName == '') { throw new Zend_Tool_Project_Provider_Exception('You must provide both the DbTable name as well as the actual db table\'s name.'); } - + if (self::hasResource($this->_loadedProfile, $name, $module)) { throw new Zend_Tool_Project_Provider_Exception('This project already has a DbTable named ' . $name); } @@ -112,10 +112,10 @@ // get request/response object $request = $this->_registry->getRequest(); $response = $this->_registry->getResponse(); - + // alert the user about inline converted names $tense = (($request->isPretend()) ? 'would be' : 'is'); - + if ($name !== $originalName) { $response->appendContent( 'Note: The canonical model name that ' . $tense @@ -124,7 +124,7 @@ array('color' => array('yellow')) ); } - + try { $tableResource = self::createResource($this->_loadedProfile, $name, $actualTableName, $module); } catch (Exception $e) { @@ -142,38 +142,43 @@ $this->_storeProfile(); } } - + + /** + * @param string $module Module name action should be applied to. + * @param bool $forceOverwrite Whether should force overwriting previous classes generated + * @return void + */ public function createFromDatabase($module = null, $forceOverwrite = false) { $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION); - + $bootstrapResource = $this->_loadedProfile->search('BootstrapFile'); - + /* @var $zendApp Zend_Application */ $zendApp = $bootstrapResource->getApplicationInstance(); - + try { $zendApp->bootstrap('db'); } catch (Zend_Application_Exception $e) { throw new Zend_Tool_Project_Provider_Exception('Db resource not available, you might need to configure a DbAdapter.'); return; } - + /* @var $db Zend_Db_Adapter_Abstract */ $db = $zendApp->getBootstrap()->getResource('db'); - + $tableResources = array(); foreach ($db->listTables() as $actualTableName) { - + $dbTableName = $this->_convertTableNameToClassName($actualTableName); - + if (!$forceOverwrite && self::hasResource($this->_loadedProfile, $dbTableName, $module)) { throw new Zend_Tool_Project_Provider_Exception( 'This DbTable resource already exists, if you wish to overwrite it, ' . 'pass the "forceOverwrite" flag to this provider.' ); } - + $tableResources[] = self::createResource( $this->_loadedProfile, $dbTableName, @@ -181,11 +186,11 @@ $module ); } - + if (count($tableResources) == 0) { $this->_registry->getResponse()->appendContent('There are no tables in the selected database to write.'); } - + // do the creation if ($this->_registry->getRequest()->isPretend()) { @@ -202,10 +207,10 @@ $this->_storeProfile(); } - - + + } - + protected function _convertTableNameToClassName($tableName) { if ($this->_nameFilter == null) { @@ -213,8 +218,8 @@ $this->_nameFilter ->addFilter(new Zend_Filter_Word_UnderscoreToCamelCase()); } - + return $this->_nameFilter->filter($tableName); } - + } \ No newline at end of file