--- /dev/null
+<?php
+/**
+ * Adds autoincrement flags
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (GPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ *
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ * @category Horde
+ * @license http://www.fsf.org/copyleft/gpl.html GPL
+ * @package Nag
+ */
+class NagUpgradeAutoIncrement extends Horde_Db_Migration_Base
+{
+ /**
+ * Upgrade.
+ */
+ public function up()
+ {
+ $this->changeColumn('nag_shares', 'share_id', 'integer', array('null' => false, 'autoincrement' => true));
+ }
+
+ /**
+ * Downgrade
+ */
+ public function down()
+ {
+ $this->changeColumn('nag_shares', 'share_id', 'integer', array('null' => false, 'autoincrement' => false));
+ }
+
+}
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (GPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ *
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ * @category Horde
+ * @license http://www.fsf.org/copyleft/gpl.html GPL
+ * @package Nag
+ */
+class NagUpgradeAddAlarmMethods extends Horde_Db_Migration_Base
+{
+ /**
+ * Upgrade.
+ */
+ public function up()
+ {
+ $t = $this->_connection->table('nag_tasks');
+ $cols = $t->getColumns();
+ if (!in_array('task_alarm_methods', array_keys($cols))) {
+ $this->addColumn('nag_tasks', 'task_alarm_methods', 'text');
+ }
+ }
+
+ /**
+ * Downgrade
+ */
+ public function down()
+ {
+ $this->removeColumn('nag_tasks', 'task_alarm_methods');
+ }
+
+}
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (GPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ *
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ * @category Horde
+ * @license http://www.fsf.org/copyleft/gpl.html GPL
+ * @package Nag
+ */
+class NagUpgradeAddColor extends Horde_Db_Migration_Base
+{
+ /**
+ * Upgrade.
+ */
+ public function up()
+ {
+ $t = $this->_connection->table('nag_shares');
+ $cols = $t->getColumns();
+ if (!in_array('attribute_color', array_keys($cols))) {
+ $this->addColumn('nag_shares', 'attribute_color', 'string', array('limit' => 7));
+ }
+ }
+
+ /**
+ * Downgrade
+ */
+ public function down()
+ {
+ $this->removeColumn('nag_shares', 'attribute_color');
+ }
+
+}
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Allows null values in share_owner, needed for system shares.
+ *
+ * Copyright 2010 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (GPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
+ *
+ * @author Michael J. Rubinsky <mrubinsk@horde.org>
+ * @category Horde
+ * @license http://www.fsf.org/copyleft/gpl.html GPL
+ * @package Nag
+ */
+class NagUpgradeSystemShares extends Horde_Db_Migration_Base
+{
+ /**
+ * Upgrade.
+ */
+ public function up()
+ {
+ $this->changeColumn('nag_shares', 'share_owner', 'string', array('limit' => 255));
+ }
+
+ /**
+ * Downgrade
+ */
+ public function down()
+ {
+ $this->changeColumn('nag_shares', 'share_owner', 'string', array('limit' => 255, 'null' => false));
+ }
+
+}
\ No newline at end of file
+++ /dev/null
--- You can simply execute this file in your database.
---
--- Run as:
---
--- $ mysql --user=root --password=<MySQL-root-password> <db name> < 1.1_to_2.0.mysql.sql
-
-ALTER TABLE nag_tasks DROP COLUMN task_modified;
-
-ALTER TABLE nag_tasks CHANGE COLUMN task_category task_category VARCHAR(80);
-ALTER TABLE nag_tasks CHANGE COLUMN task_id task_id VARCHAR(32) NOT NULL;
-ALTER TABLE nag_tasks CHANGE COLUMN task_private task_private SMALLINT DEFAULT 0 NOT NULL;
-
-ALTER TABLE nag_tasks ADD COLUMN task_uid VARCHAR(255) NOT NULL;
-ALTER TABLE nag_tasks ADD COLUMN task_alarm INT NOT NULL;
-
-ALTER TABLE nag_tasks ADD INDEX nag_tasklist_idx (task_owner);
-ALTER TABLE nag_tasks ADD INDEX nag_uid_idx (task_uid);
-
-UPDATE nag_tasks SET task_id = CONCAT(task_owner, task_id);
-UPDATE nag_tasks SET task_uid = CONCAT('nag:', task_id) WHERE task_id NOT LIKE 'nag:%';
-
-ALTER TABLE nag_tasks DROP PRIMARY KEY;
-ALTER TABLE nag_tasks ADD PRIMARY KEY (task_id);
+++ /dev/null
-ALTER TABLE nag_tasks DROP COLUMN task_modified;
-
-ALTER TABLE nag_tasks ADD task_category_new VARCHAR2(80);
-UPDATE nag_tasks SET task_category_new = task_category;
-ALTER TABLE nag_tasks DROP COLUMN task_category;
-ALTER TABLE nag_tasks RENAME COLUMN task_category_new TO task_category;
-
-ALTER TABLE nag_tasks MODIFY task_name VARCHAR2(255);
-ALTER TABLE nag_tasks MODIFY task_private NUMBER(16) DEFAULT 0;
-
-ALTER TABLE nag_tasks ADD task_uid VARCHAR2(255);
-ALTER TABLE nag_tasks ADD task_alarm NUMBER(16) DEFAULT 0 NOT NULL;
-
-CREATE INDEX nag_tasklist_idx ON nag_tasks (task_owner);
-CREATE INDEX nag_uid_idx ON nag_tasks (task_uid);
-
-ALTER TABLE nag_tasks ADD task_id_new VARCHAR2(32);
-UPDATE nag_tasks SET task_id_new = task_id;
-ALTER TABLE nag_tasks ADD task_owner_new VARCHAR2(255);
-UPDATE nag_tasks SET task_owner_new = task_owner;
-ALTER TABLE nag_tasks DROP (task_id, task_owner);
-ALTER TABLE nag_tasks RENAME COLUMN task_id_new to task_id;
-ALTER TABLE nag_tasks RENAME COLUMN task_owner_new to task_owner;
-
-UPDATE nag_tasks SET task_id = CONCAT(task_owner, task_id);
-UPDATE nag_tasks SET task_uid = CONCAT('nag:', task_id) WHERE task_id NOT LIKE 'nag:%';
-
-ALTER TABLE nag_tasks ADD CONSTRAINT task_id PRIMARY KEY (task_id);
+++ /dev/null
--- Update script to update nag 1.1 data to 2.x data for pgsql
--- Converted from mysql version by Daniel E. Markle <lexicon@seul.org>
---
--- You can simply execute this file in your database.
---
--- Run as:
---
--- $ psql <db name> -f < 1.1_to_2.0.pgsql.sql
-
-ALTER TABLE nag_tasks DROP COLUMN task_modified;
-
-BEGIN;
-ALTER TABLE nag_tasks ADD COLUMN task_category_new VARCHAR(80);
-UPDATE nag_tasks SET task_category_new = task_category;
-ALTER TABLE nag_tasks DROP task_category;
-ALTER TABLE nag_tasks RENAME task_category_new TO task_category;
-COMMIT;
-
-BEGIN;
-ALTER TABLE nag_tasks ADD COLUMN task_id_new VARCHAR(32);
-UPDATE nag_tasks SET task_id_new = task_id;
-ALTER TABLE nag_tasks DROP task_id;
-ALTER TABLE nag_tasks RENAME task_id_new TO task_id;
-ALTER TABLE nag_tasks ALTER COLUMN task_id SET NOT NULL;
-COMMIT;
-
-BEGIN;
-ALTER TABLE nag_tasks ADD COLUMN task_private_new SMALLINT;
-UPDATE nag_tasks SET task_private_new = task_private;
-ALTER TABLE nag_tasks DROP task_private;
-ALTER TABLE nag_tasks RENAME task_private_new TO task_private;
-ALTER TABLE nag_tasks ALTER COLUMN task_private SET NOT NULL;
-ALTER TABLE nag_tasks ALTER COLUMN task_private SET DEFAULT 0;
-COMMIT;
-
-BEGIN;
-ALTER TABLE nag_tasks ADD COLUMN task_uid VARCHAR(255);
-UPDATE nag_tasks SET task_uid = '';
-ALTER TABLE nag_tasks ALTER COLUMN task_uid SET NOT NULL;
-COMMIT;
-
-BEGIN;
-ALTER TABLE nag_tasks ADD COLUMN task_alarm INT;
-UPDATE nag_tasks SET task_alarm = 0;
-ALTER TABLE nag_tasks ALTER COLUMN task_alarm SET NOT NULL;
-COMMIT;
-
-ALTER TABLE nag_tasks ADD INDEX nag_tasklist_idx (task_owner);
-ALTER TABLE nag_tasks ADD INDEX nag_uid_idx (task_uid);
-
-UPDATE nag_tasks SET task_id = task_owner || task_id;
-UPDATE nag_tasks SET task_uid = 'nag:' || task_id WHERE task_id NOT LIKE 'nag:%';
-
--- this assumes the default constraint name was used at table creation time
-ALTER TABLE nag_tasks DROP CONSTRAINT nag_tasks_pkey;
-ALTER TABLE nag_tasks ADD CONSTRAINT nag_tasks_pkey PRIMARY KEY (task_id);
-
-CREATE INDEX nag_uid_idx ON nag_tasks (task_uid);
+++ /dev/null
-ALTER TABLE nag_tasks ADD task_estimate FLOAT;
-ALTER TABLE nag_tasks ADD task_completed_date NUMBER(16);
-ALTER TABLE nag_tasks ADD task_start NUMBER(16);
-ALTER TABLE nag_tasks ADD task_parent VARCHAR2(32);
-
-CREATE INDEX nag_start_idx ON nag_tasks (task_start);
-
-CREATE TABLE nag_shares (
- share_id NUMBER(16) NOT NULL,
- share_name VARCHAR2(255) NOT NULL,
- share_owner VARCHAR2(32) NOT NULL,
- share_flags NUMBER(8) DEFAULT 0 NOT NULL,
- perm_creator NUMBER(8) DEFAULT 0 NOT NULL,
- perm_default NUMBER(8) DEFAULT 0 NOT NULL,
- perm_guest NUMBER(8) DEFAULT 0 NOT NULL,
- attribute_name VARCHAR2(255) NOT NULL,
- attribute_desc VARCHAR2(255),
- PRIMARY KEY (share_id)
-);
-
-CREATE INDEX nag_shares_name_idx ON nag_shares (share_name);
-CREATE INDEX nag_shares_owner_idx ON nag_shares (share_owner);
-CREATE INDEX nag_shares_creator_idx ON nag_shares (perm_creator);
-CREATE INDEX nag_shares_default_idx ON nag_shares (perm_default);
-CREATE INDEX nag_shares_guest_idx ON nag_shares (perm_guest);
-
-CREATE TABLE nag_shares_groups (
- share_id NUMBER(16) NOT NULL,
- group_uid NUMBER(16) NOT NULL,
- perm NUMBER(8) NOT NULL
-);
-
-CREATE INDEX nag_groups_share_id_idx ON nag_shares_groups (share_id);
-CREATE INDEX nag_groups_group_uid_idx ON nag_shares_groups (group_uid);
-CREATE INDEX nag_groups_perm_idx ON nag_shares_groups (perm);
-
-CREATE TABLE nag_shares_users (
- share_id NUMBER(16) NOT NULL,
- user_uid VARCHAR2(32) NOT NULL,
- perm NUMBER(8) NOT NULL
-);
-
-CREATE INDEX nag_users_share_id_idx ON nag_shares_users (share_id);
-CREATE INDEX nag_users_user_uid_idx ON nag_shares_users (user_uid);
-CREATE INDEX nag_users_perm_idx ON nag_shares_users (perm);
+++ /dev/null
-ALTER TABLE nag_tasks ADD task_estimate FLOAT;
-ALTER TABLE nag_tasks ADD task_completed_date INT;
-ALTER TABLE nag_tasks ADD task_start INT;
-ALTER TABLE nag_tasks ADD task_parent VARCHAR(32);
-
-CREATE INDEX nag_start_idx ON nag_tasks (task_start);
-
-CREATE TABLE nag_shares (
- share_id INT NOT NULL,
- share_name VARCHAR(255) NOT NULL,
- share_owner VARCHAR(32) NOT NULL,
- share_flags SMALLINT DEFAULT 0 NOT NULL,
- perm_creator SMALLINT DEFAULT 0 NOT NULL,
- perm_default SMALLINT DEFAULT 0 NOT NULL,
- perm_guest SMALLINT DEFAULT 0 NOT NULL,
- attribute_name VARCHAR(255) NOT NULL,
- attribute_desc VARCHAR(255),
- PRIMARY KEY (share_id)
-);
-
-CREATE INDEX nag_shares_share_name_idx ON nag_shares (share_name);
-CREATE INDEX nag_shares_share_owner_idx ON nag_shares (share_owner);
-CREATE INDEX nag_shares_perm_creator_idx ON nag_shares (perm_creator);
-CREATE INDEX nag_shares_perm_default_idx ON nag_shares (perm_default);
-CREATE INDEX nag_shares_perm_guest_idx ON nag_shares (perm_guest);
-
-CREATE TABLE nag_shares_groups (
- share_id INT NOT NULL,
- group_uid INT NOT NULL,
- perm SMALLINT NOT NULL
-);
-
-CREATE INDEX nag_shares_groups_share_id_idx ON nag_shares_groups (share_id);
-CREATE INDEX nag_shares_groups_group_uid_idx ON nag_shares_groups (group_uid);
-CREATE INDEX nag_shares_groups_perm_idx ON nag_shares_groups (perm);
-
-CREATE TABLE nag_shares_users (
- share_id INT NOT NULL,
- user_uid VARCHAR(32) NOT NULL,
- perm SMALLINT NOT NULL
-);
-
-CREATE INDEX nag_shares_users_share_id_idx ON nag_shares_users (share_id);
-CREATE INDEX nag_shares_users_user_uid_idx ON nag_shares_users (user_uid);
-CREATE INDEX nag_shares_users_perm_idx ON nag_shares_users (perm);
+++ /dev/null
-ALTER TABLE nag_shares MODIFY share_owner VARCHAR2(255);
-ALTER TABLE nag_shares_users MODIFY user_uid VARCHAR2(255);
-ALTER TABLE nag_shares_groups MODIFY group_uid VARCHAR2(255);
+++ /dev/null
-ALTER TABLE nag_shares ALTER share_owner TYPE VARCHAR(255);
-ALTER TABLE nag_shares_users ALTER user_uid TYPE VARCHAR(255);
-ALTER TABLE nag_shares_groups ALTER group_uid TYPE VARCHAR(255);
+++ /dev/null
-ALTER TABLE nag_shares CHANGE share_owner share_owner VARCHAR(255);
-ALTER TABLE nag_shares_users CHANGE user_uid user_uid VARCHAR(255);
-ALTER TABLE nag_shares_groups CHANGE group_uid group_uid VARCHAR(255);
+++ /dev/null
--- You can simply execute this file in your database.
-
-ALTER TABLE nag_tasks ADD task_estimate FLOAT;
+++ /dev/null
-#!/usr/bin/php
-<?php
-/**
- * This script adds and fills the creator and assignee fields in the Nag task
- * table.
- *
- * Copyright 2006-2010 The Horde Project (http://www.horde.org/)
- *
- * See the enclosed file COPYING for license information (GPL). If you
- * did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
- *
- * @author Jan Schneider <jan@horde.org>
- */
-
-// Do CLI checks and environment setup first.
-require_once dirname(__FILE__) . '/../../lib/Application.php';
-Horde_Registry::appInit('nag', array('authentication' => 'none', 'cli' => true));
-
-if ($conf['storage']['driver'] != 'sql') {
- exit('No conversion for drivers other than SQL currently.');
-}
-
-$storage = Nag_Driver::singleton('');
-$storage->initialize();
-$db = $storage->_db;
-
-// Add db fields. We don't check for success/failure here in case someone did
-// this manually.
-$result = $db->query('ALTER TABLE nag_tasks ADD task_creator VARCHAR(255)');
-if (is_a($result, 'PEAR_Error')) {
- echo $result->toString() . "\n";
-}
-$result = $db->query('ALTER TABLE nag_tasks ADD task_assignee VARCHAR(255)');
-if (is_a($result, 'PEAR_Error')) {
- echo $result->toString() . "\n";
-}
-
-// Run through every tasklist.
-$sql = 'UPDATE nag_tasks SET task_creator = ? WHERE task_id = ? AND task_owner = ?';
-$sth = $db->prepare($sql);
-$tasklists = $nag_shares->listAllShares();
-foreach ($tasklists as $tasklist => $share) {
- echo "Storing task creators for $tasklist ...\n";
-
- // List all tasks.
- $tasks = Nag::listTasks(null, null, null, $tasklist, 1);
- $owner = $share->get('owner');
-
- $tasks->reset();
- while ($task = $tasks->each()) {
- $values = array($owner, $task->id, $task->tasklist);
- $result = $db->execute($sth, $values);
- if ($result instanceof PEAR_Error) {
- throw new Nag_Exception($result);
- }
- }
-}
-
-echo "\n** Creators successfully stored. ***\n\n".
- "** Please manually apply NOT NULL constraint to 'task_creator' column. ***\n";
+++ /dev/null
--- You can simply execute this file in your database.
-
-ALTER TABLE nag_tasks ADD task_completed_date INT;
+++ /dev/null
-ALTER TABLE nag_tasks ADD task_start INT;
-CREATE INDEX nag_start_idx ON nag_tasks (task_start);
+++ /dev/null
-ALTER TABLE nag_tasks ADD task_parent VARCHAR(32);
+++ /dev/null
-ALTER TABLE nag_shares CHANGE share_owner share_owner VARCHAR(255);
-ALTER TABLE nag_shares_users CHANGE user_uid user_uid VARCHAR(255);
\ No newline at end of file
+++ /dev/null
-ALTER TABLE nag_shares_groups CHANGE group_uid group_uid VARCHAR(255);
+++ /dev/null
-ALTER TABLE nag_tasks ADD task_alarm_methods VARCHAR(MAX);
+++ /dev/null
-ALTER TABLE nag_tasks ADD task_alarm_methods CLOB;
+++ /dev/null
-ALTER TABLE nag_tasks ADD task_alarm_methods TEXT;
+++ /dev/null
-ALTER TABLE nag_shares ADD attribute_color VARCHAR(7);
+++ /dev/null
-ALTER TABLE nag_shares CHANGE share_owner share_owner VARCHAR(255);