Files
server/usr/share/psa-horde/.upgrade/2008-08-29_fix_mdb2_sequences.php
2026-01-07 20:52:11 +01:00

83 lines
2.7 KiB
PHP

#!/usr/bin/env php
<?php
/**
* Fix MDB2 sequence names. Thie script changes the MDB2 sequence names from the
* default of 'sequence' to 'id' to be consistent with all horde apps, and to
* allow automated upgrade scripts to use MDB2_Schema in the future.
*
* $Horde: horde/scripts/upgrades/2008-08-29_fix_mdb2_sequences.php,v 1.1.2.6 2009/06/07 08:56:34 jan Exp $
*
* @author Michael J. Rubinsky <mrubinsk@horde.org>
* @since Horde 3.2.2
*/
@define('AUTH_HANDLER', true);
@define('HORDE_BASE', '/usr/share/psa-horde');
/* These are the table => key names that need to be updated */
$to_upgrade = array('ansel_shares' => 'share_id',
'ansel_images' => 'image_id',
'ansel_tags' => 'tag_id',
'ansel_faces' => 'face_id',
'genie_shares' => 'share_id',
'ingo_shares' => 'share_id',
'klutz_comics' => 'comicpic_id',
'kronolith_shares' => 'share_id',
'mnemo_shares' => 'share_id',
'nag_shares' => 'share_id',
'turba_shares' => 'share_id',
'whups_shares' => 'share_id');
/* Set up the CLI environment */
require_once HORDE_BASE . '/lib/core.php';
require_once 'CLI.php';
if (!Horde_CLI::runningFromCli()) {
exit("Must be run from the command line\n");
}
$cli = &Horde_CLI::singleton();
$cli->init();
/* Grab what we need to steal the DB config */
require_once HORDE_BASE . '/config/conf.php';
@include_once 'MDB2/Schema.php';
@include_once 'MDB2.php';
if (!class_exists('MDB2_Schema', false)) {
exit(0);
}
$config = $config2 = $GLOBALS['conf']['sql'];
unset($config['charset']);
$schema = MDB2_Schema::factory($config, array('seqcol_name' => 'id'));
if (is_a($schema, 'PEAR_Error')) {
$cli->fatal($schema->getMessage());
}
$db = &MDB2::factory($config2);
if (is_a($db, 'PEAR_Error')) {
$cli->fatal($db->getMessage());
}
if (is_a($result = $db->loadModule('Manager'), 'PEAR_Error')) {
$cli->fatal($result->getMessage());
}
$tables = $db->manager->listTables();
if (is_a($tables, 'PEAR_Error')) {
$cli->fatal($tables->getMessage());
}
/* Update any of the tables that we have */
foreach ($to_upgrade as $table => $field) {
if (array_search($table, $tables) !== false) {
$results = $schema->createSequence(
$table, array('on' => array('table' => $table, 'field' => $field)), true);
if (is_a($results, 'PEAR_Error')) {
$cli->fatal(sprintf(_("Unable to modify the sequence for %s: %s"), $table, $results->getMessage()));
}
$cli->message(sprintf(_("Modified sequence for %s"), $table), 'cli.success');
}
}
$cli->message(_("Done"), 'cli.success');