--- /dev/null
+<?php
+class HordeSyncmlBaseTables extends Horde_Db_Migration_Base
+{
+ public function up()
+ {
+ if (!in_array('horde_syncml_map', $this->tables())) {
+ $t = $this->createTable('horde_syncml_map', array('primaryKey' => false));
+ $t->column('syncml_syncpartner', 'string', array('limit' => 255, 'null' => false));
+ $t->column('syncml_db', 'string', array('limit' => 255, 'null' => false));
+ $t->column('syncml_uid', 'string', array('limit' => 255, 'null' => false));
+ $t->column('syncml_cuid', 'string', array('limit' => 255));
+ $t->column('syncml_suid', 'string', array('limit' => 255));
+ $t->column('syncml_timestamp', 'integer');
+ $t->end();
+ $this->addIndex('horde_syncml_map', array('syncml_syncpartner'));
+ $this->addIndex('horde_syncml_map', array('syncml_db'));
+ $this->addIndex('horde_syncml_map', array('syncml_uid'));
+ $this->addIndex('horde_syncml_map', array('syncml_cuid'));
+ $this->addIndex('horde_syncml_map', array('syncml_suid'));
+ }
+ if (!in_array('horde_syncml_anchors', $this->tables())) {
+ $t = $this->createTable('horde_syncml_anchors', array('primaryKey' => false));
+ $t->column('syncml_syncpartner', 'string', array('limit' => 255, 'null' => false));
+ $t->column('syncml_db', 'string', array('limit' => 255, 'null' => false));
+ $t->column('syncml_uid', 'string', array('limit' => 255, 'null' => false));
+ $t->column('syncml_clientanchor', 'string', array('limit' => 255));
+ $t->column('syncml_serveranchor', 'string', array('limit' => 255));
+ $t->end();
+ $this->addIndex('horde_syncml_anchors', array('syncml_syncpartner'));
+ $this->addIndex('horde_syncml_anchors', array('syncml_db'));
+ $this->addIndex('horde_syncml_anchors', array('syncml_uid'));
+ }
+ }
+
+ public function down()
+ {
+ $this->dropTable('horde_syncml_anchors');
+ $this->dropTable('horde_syncml_map');
+ }
+}
+++ /dev/null
-CREATE TABLE horde_syncml_map (
- syncml_syncpartner VARCHAR(255) NOT NULL,
- syncml_db VARCHAR(255) NOT NULL,
- syncml_uid VARCHAR(255) NOT NULL,
- syncml_cuid VARCHAR(255),
- syncml_suid VARCHAR(255),
- syncml_timestamp INTEGER
-);
-
-CREATE INDEX syncml_syncpartner_idx ON horde_syncml_map (syncml_syncpartner);
-CREATE INDEX syncml_db_idx ON horde_syncml_map (syncml_db);
-CREATE INDEX syncml_uid_idx ON horde_syncml_map (syncml_uid);
-CREATE INDEX syncml_cuid_idx ON horde_syncml_map (syncml_cuid);
-CREATE INDEX syncml_suid_idx ON horde_syncml_map (syncml_suid);
-
-CREATE TABLE horde_syncml_anchors(
- syncml_syncpartner VARCHAR(255) NOT NULL,
- syncml_db VARCHAR(255) NOT NULL,
- syncml_uid VARCHAR(255) NOT NULL,
- syncml_clientanchor VARCHAR(255),
- syncml_serveranchor VARCHAR(255)
-);
-
-CREATE INDEX syncml_anchors_syncpartner_idx ON horde_syncml_anchors (syncml_syncpartner);
-CREATE INDEX syncml_anchors_db_idx ON horde_syncml_anchors (syncml_db);
-CREATE INDEX syncml_anchors_uid_idx ON horde_syncml_anchors (syncml_uid);
-
--- delete old map entries from datatree
-DELETE FROM horde_datatree WHERE group_uid = 'syncml';
+++ /dev/null
-DROP INDEX syncml_cuid_idx;
-DROP INDEX syncml_suid_idx;
-
-ALTER TABLE horde_syncml_map RENAME syncml_syncpartner TO syncml_syncpartner_copy;
-ALTER TABLE horde_syncml_map ADD COLUMN syncml_syncpartner VARCHAR(255);
-ALTER TABLE horde_syncml_map ALTER syncml_syncpartner SET NOT NULL;
-UPDATE horde_syncml_map SET syncml_syncpartner = syncml_syncpartner_copy;
-ALTER TABLE horde_syncml_map DROP COLUMN syncml_syncpartner_copy;
-
-ALTER TABLE horde_syncml_map RENAME syncml_db TO syncml_db_copy;
-ALTER TABLE horde_syncml_map ADD COLUMN syncml_db VARCHAR(255);
-ALTER TABLE horde_syncml_map ALTER syncml_db SET NOT NULL;
-UPDATE horde_syncml_map SET syncml_db = syncml_db_copy;
-ALTER TABLE horde_syncml_map DROP COLUMN syncml_db_copy;
-
-ALTER TABLE horde_syncml_map RENAME syncml_uid TO syncml_uid_copy;
-ALTER TABLE horde_syncml_map ADD COLUMN syncml_uid VARCHAR(255);
-ALTER TABLE horde_syncml_map ALTER syncml_uid SET NOT NULL;
-UPDATE horde_syncml_map SET syncml_uid = syncml_uid_copy;
-ALTER TABLE horde_syncml_map DROP COLUMN syncml_uid_copy;
-
-ALTER TABLE horde_syncml_map RENAME syncml_cuid TO syncml_cuid_copy;
-ALTER TABLE horde_syncml_map ADD COLUMN syncml_cuid VARCHAR(255);
-UPDATE horde_syncml_map SET syncml_cuid = syncml_cuid_copy;
-ALTER TABLE horde_syncml_map DROP COLUMN syncml_cuid_copy;
-
-ALTER TABLE horde_syncml_map RENAME syncml_suid TO syncml_suid_copy;
-ALTER TABLE horde_syncml_map ADD COLUMN syncml_suid VARCHAR(255);
-UPDATE horde_syncml_map SET syncml_suid = syncml_suid_copy;
-ALTER TABLE horde_syncml_map DROP COLUMN syncml_suid_copy;
-
-CREATE INDEX syncml_syncpartner_idx ON horde_syncml_map (syncml_syncpartner);
-CREATE INDEX syncml_db_idx ON horde_syncml_map (syncml_db);
-CREATE INDEX syncml_uid_idx ON horde_syncml_map (syncml_uid);
-CREATE INDEX syncml_cuid_idx ON horde_syncml_map (syncml_cuid);
-CREATE INDEX syncml_suid_idx ON horde_syncml_map (syncml_suid);
+++ /dev/null
-ALTER TABLE horde_syncml_map DROP INDEX syncml_cuid_idx;
-ALTER TABLE horde_syncml_map DROP INDEX syncml_suid_idx;
-
-ALTER TABLE horde_syncml_map CHANGE COLUMN syncml_syncpartner syncml_syncpartner VARCHAR(255) NOT NULL;
-ALTER TABLE horde_syncml_map CHANGE COLUMN syncml_db syncml_db VARCHAR(255) NOT NULL;
-ALTER TABLE horde_syncml_map CHANGE COLUMN syncml_uid syncml_uid VARCHAR(255) NOT NULL;
-ALTER TABLE horde_syncml_map CHANGE COLUMN syncml_cuid syncml_cuid VARCHAR(255);
-ALTER TABLE horde_syncml_map CHANGE COLUMN syncml_suid syncml_suid VARCHAR(255);
-
-CREATE INDEX syncml_syncpartner_idx ON horde_syncml_map (syncml_syncpartner);
-CREATE INDEX syncml_db_idx ON horde_syncml_map (syncml_db);
-CREATE INDEX syncml_uid_idx ON horde_syncml_map (syncml_uid);
-CREATE INDEX syncml_cuid_idx ON horde_syncml_map (syncml_cuid);
-CREATE INDEX syncml_suid_idx ON horde_syncml_map (syncml_suid);
+++ /dev/null
-#!/usr/bin/env php
-<?php
-/**
- * This is a script to migrate SyncML anchor information out of the datatree
- * tables and into its own database table.
- */
-
-require_once dirname(__FILE__) . '/../../lib/Application.php';
-Horde_Registry::appInit('horde', array('cli' => true));
-
-require_once 'Horde/DataTree.php';
-$datatree = DataTree::factory('sql',
- array_merge(
- Horde::getDriverConfig('datatree', 'sql'),
- array('group' => 'horde.syncml')));
-$db = &$datatree->_db;
-$stmt = $db->prepare('INSERT INTO horde_syncml_anchors (syncml_syncpartner, syncml_db, syncml_uid, syncml_clientanchor, syncml_serveranchor) VALUES (?, ?, ?, ?, ?)');
-
-$cli->writeln('Processing all users:');
-$users = $datatree->getById(DATATREE_FORMAT_FLAT, DATATREE_ROOT, false,
- DATATREE_ROOT, 1);
-if (is_a($users, 'PEAR_Error')) {
- $cli->fatal($users->toString());
-}
-foreach ($users as $user_id => $user) {
- if ($user_id == DATATREE_ROOT) {
- continue;
- }
- $cli->writeln($user);
- $devices = $datatree->getById(DATATREE_FORMAT_FLAT, $user_id, false,
- DATATREE_ROOT, 1);
- foreach ($devices as $device_id => $device) {
- if ($device_id == $user_id) {
- continue;
- }
- $device = $datatree->getShortName($device);
- echo ' device ' . $device . ':';
- $databases = $datatree->getById(DATATREE_FORMAT_FLAT, $device_id,
- false, DATATREE_ROOT, 1);
- foreach ($databases as $database_id => $database) {
- if ($database_id == $device_id) {
- continue;
- }
- $database = $datatree->getShortName($database);
- echo ' ' . $database;
- $data = $datatree->getData($database_id);
- $result = $db->execute($stmt, array($device, $database, $user,
- (string)$data['ClientAnchor'],
- (string)$data['ServerAnchor']));
- if (is_a($result, 'PEAR_Error')) {
- $cli->fatal($result->toString());
- }
- }
- $cli->writeln();
- }
-
- $datatree->remove($user, true);
-}
+++ /dev/null
-CREATE TABLE horde_syncml_anchors(
- syncml_syncpartner VARCHAR(255),
- syncml_db VARCHAR(255),
- syncml_uid VARCHAR(255),
- syncml_clientanchor VARCHAR(255),
- syncml_serveranchor VARCHAR(255)
-);
-
-CREATE INDEX syncml_anchors_syncpartner_idx ON horde_syncml_anchors (syncml_syncpartner);
-CREATE INDEX syncml_anchors_db_idx ON horde_syncml_anchors (syncml_db);
-CREATE INDEX syncml_anchors_uid_idx ON horde_syncml_anchors (syncml_uid);