public function checkForBadMigration($module, $class = false)
{
echo Yii::t('YupeModule.yupe', "Checking for pending migrations") . '<br />';
$db = $this->getDbConnection();
$data = $db->cache(3600, new CDbCacheDependency('select count(id) from {{migrations}}'))->createCommand()->selectDistinct('version, apply_time')->from('{{migrations}}')->order('id DESC')->where('module = :module', [':module' => $module])->queryAll();
if ($data !== [] || strpos($class, '_base') !== false && ($data[] = ['version' => $class, 'apply_time' => 0])) {
foreach ($data as $migration) {
if ($migration['apply_time'] == 0) {
try {
echo Yii::t('YupeModule.yupe', 'Downgrade {migration} for {module}.', ['{module}' => $module, '{migration}' => $migration['version']]) . '<br />';
Yii::log(Yii::t('YupeModule.yupe', 'Downgrade {migration} for {module}.', ['{module}' => $module, '{migration}' => $migration['version']]));
if ($this->migrateDown($module, $migration['version']) !== false) {
$db->createCommand()->delete($db->tablePrefix . $this->migrationTable, [$db->quoteColumnName('version') . "=" . $db->quoteValue($migration['version']), $db->quoteColumnName('module') . "=" . $db->quoteValue($module)]);
} else {
Yii::log(Yii::t('YupeModule.yupe', 'Can\'t downgrade migrations {migration} for {module}.', ['{module}' => $module, '{migration}' => $migration['version']]));
echo Yii::t('YupeModule.yupe', 'Can\'t downgrade migrations {migration} for {module}.', ['{module}' => $module, '{migration}' => $migration['version']]) . '<br />';
return false;
}
} catch (ErrorException $e) {
Yii::log(Yii::t('YupeModule.yupe', 'There is an error: {error}', ['{error}' => $e]));
echo Yii::t('YupeModule.yupe', 'There is an error: {error}', ['{error}' => $e]);
}
}
}
} else {
Yii::log(Yii::t('YupeModule.yupe', 'No need to downgrade migrations for {module}', ['{module}' => $module]));
echo Yii::t('YupeModule.yupe', 'No need to downgrade migrations for {module}', ['{module}' => $module]) . '<br />';
}
return true;
}