/** * Before migration callback * * @param string $direction, up or down direction of migration process * @return boolean Should process continue * @access public */ public function before($direction) { $success = true; if ($direction === 'up') { if (Configure::read('Croogo.installed')) { CakePlugin::load('Install'); $dm = new DataMigration(); $dir = CakePlugin::path('Install') . 'Config' . DS . 'Data' . DS; $dm->loadFile($dir . 'SettingData.php', array('extract' => sprintf('{n}[key=%s]', $this->_assetTimestamp))); CakePlugin::unload('Install'); } } else { $Setting = ClassRegistry::init('Settings.Setting'); $success = $Setting->deleteKey($this->_assetTimestamp); } return $success; }
/** * Before migration callback * * @param string $direction, up or down direction of migration process * @return boolean Should process continue * @access public */ public function before($direction) { $success = true; if ($direction === 'up') { if (Configure::read('Croogo.installed')) { $settingsToUpdate = array('Site.locale', 'Site.admin_theme', 'Site.home_url'); CakePlugin::load('Install'); $dm = new DataMigration(); $dir = CakePlugin::path('Install') . 'Config' . DS . 'Data' . DS; foreach ($settingsToUpdate as $key) { $dm->loadFile($dir . 'SettingData.php', array('extract' => sprintf('{n}[key=%s]', $key))); } CakePlugin::unload('Install'); } } return $success; }
/** * Run Migrations and add data in table * * @return bool True if migrations have succeeded */ public function setupDatabase() { $plugins = Configure::read('Core.corePlugins'); $migrationsSucceed = true; foreach ($plugins as $plugin) { $migrationsSucceed = $this->runMigrations($plugin); if (!$migrationsSucceed) { $this->log('Migrations failed for ' . $plugin, LOG_CRIT); break; } } if ($migrationsSucceed) { $DataMigration = new DataMigration(); $path = App::pluginPath('Install') . DS . 'Config' . DS . 'Data' . DS; $DataMigration->load($path); } return $migrationsSucceed; }
/** * Prepares data in Config/Data/ required for install plugin * * Usage: ./Console/cake extensions.data_migration data table_name_here */ public function data() { if (isset($this->params['plugin'])) { $plugin = $this->params['plugin']; } $connection = 'default'; if (isset($this->params['connection'])) { $connection = $this->params['connection']; } $table = trim($this->args['0']); $name = Inflector::camelize(Inflector::singularize($table)); $root = isset($plugin) ? CakePlugin::path($plugin) : APP; $output = $root . 'Config' . DS . 'Data' . DS . $name . 'Data.php'; $records = array(); $options = array('model' => array('name' => $name, 'table' => $table, 'connection' => $connection), 'output' => $output); $DataMigration = new DataMigration(); $success = $DataMigration->generate('all', array('recursive' => -1), $options); if ($success) { $this->out('<success>New file generated</success>: ' . str_replace(APP, '', $output)); } else { $this->err('<error>Failed generating file for table</error>: ' . $table); } }
<?php require_once "../framework2/Walkntrade.php"; class DataMigration extends Walkntrade { public function __construct() { parent::__construct(); } public function genThreadIndices() { if (!($stmt = $this->getUserConnection()->prepare("SELECT id FROM `users`;"))) { echo "prepare failed"; return; } $stmt->execute(); $stmt->bind_result($uid); while ($stmt->fetch()) { if ($createInboxSTMT = $this->getThread_indexConnection()->prepare("\n\t\t\t\t\tCREATE TABLE `wtonline_thread_index`.`{$uid}` (\n\t\t\t\t `thread_id` VARCHAR(20) NOT NULL,\n\t\t\t\t `last_message` VARCHAR(100) NOT NULL,\n\t\t\t\t `last_user_id` INT(50) NOT NULL,\n\t\t\t\t `post_id` VARCHAR(45) NOT NULL,\n\t\t\t\t `post_title` VARCHAR(100) NULL,\n\t\t\t\t `datetime` DATETIME NOT NULL,\n\t\t\t\t `new_messages` INT(2) NOT NULL,\n\t\t\t\t `associated_with` INT(50) NOT NULL,\n\t\t\t\t `locked` BIT NOT NULL,\n\t\t\t\t `hidden` BIT NOT NULL,\n\t\t\t\t PRIMARY KEY (`thread_id`),\n\t\t\t\t UNIQUE INDEX `thread_id_UNIQUE` (`thread_id` ASC));\n\t\t\t\t")) { $createInboxSTMT->execute(); $createInboxSTMT->close(); } } echo "generated thread indices for each user!"; } } $dm = new DataMigration(); $dm->genThreadIndices();