30 extends Zend_Tool_Project_Provider_Abstract
31 implements Zend_Tool_Framework_Provider_Pretendable
46 public static function createResource(Zend_Tool_Project_Profile $profile, $useSchema)
52 $existingMigrationFile = $profile->search(array(
53 'migrationsDirectory',
54 'migrationFile' => array(
'filesystemName' => $file))
57 if ($existingMigrationFile !==
false) {
58 throw new Zend_Tool_Project_Provider_Exception(
59 'Migration ' . $file .
' already exists.'
63 $newMigration = $profile->createResourceAt(
64 'migrationsDirectory',
66 array(
'filesystemName' => $file,
'useSchema' => $useSchema)
81 'ZendDbSchema_Tool_Project_Context_Migration_File',
82 'ZendDbSchema_Tool_Project_Context_Migration_Directory'
93 public function create($useSchema =
true)
95 $profile = $this->_bootstrap();
99 if ($this->_registry->getRequest()->isPretend()) {
100 $this->_registry->getResponse()->appendContent(
101 'Would create migration at ' . $migrationFile->getPath()
104 $this->_registry->getResponse()->appendContent(
105 'Creating migration at ' . $migrationFile->getPath()
107 $migrationFile->create();
108 $this->_storeProfile();
118 $profile = $this->_bootstrap();
120 $profileSearchParams = array(
'migrationsDirectory');
122 $directory = $profile->search($profileSearchParams);
124 if (!$directory instanceof Zend_Tool_Project_Profile_Resource) {
127 $blockize =
new Zend_Tool_Framework_Client_Console_ResponseDecorator_Blockize;
128 $colorizer =
new Zend_Tool_Framework_Client_Console_ResponseDecorator_Colorizer;
130 $colors = array(
'white',
'yellow',
'green');
132 foreach ($directory as $i => $migrationFile) {
134 $version = $change->getVersion();
136 $version = preg_replace(
'/(\d{4})(\d{2})(\d{2})\_(\d{2})(\d{2})(\d{2})\_(\d{2})/',
'$1-$2-$3 $4:$5:$6.$7', $version);
139 $color = $colors[$i % 2];
140 if ($change->compareVersion($directory->getVersion(),
'=')) {
144 $message .=
"\t" . $blockize->decorate($version, 25) . $change->getDescription();
146 $message = $colorizer->decorate($message, $color);
148 echo $message . PHP_EOL;
152 public function rollup()
154 $profile = $this->_bootstrap();
156 $profileSearchParams = array(
'migrationsDirectory');
158 $directory = $profile->search($profileSearchParams);
160 if (!$directory instanceof Zend_Tool_Project_Profile_Resource) {
164 $directory->getVersion();
166 foreach ($directory as $i => $migrationFile) {
168 if ($change->compareVersion($directory->getVersion(),
'<')) {
170 $directory->setVersion($change->getVersion());
172 $this->_storeProfile();
174 $message =
"Updated to " . $change->getVersion();
175 echo $message . PHP_EOL;
189 $directory = $profile->search($profileSearchParams);
191 if (!$directory instanceof Zend_Tool_Project_Profile_Resource) {
196 $directory->getVersion(),
197 $directory->getChildren()
202 protected function _bootstrap()
204 $profile = $this->_loadProfile(self::NO_PROFILE_THROW_EXCEPTION);
206 $bootstrapResource = $this->_loadedProfile->search(
'BootstrapFile');
209 $zendApp = $bootstrapResource->getApplicationInstance();
212 $zendApp->bootstrap(
'db');
213 Zend_Loader_Autoloader::getInstance()->registerNamespace(
'ZendDbSchema');
214 }
catch (Zend_Application_Exception $e) {
215 throw new Zend_Tool_Project_Provider_Exception(
'Db resource not available, you might need to configure a DbAdapter.');