3
* Create Nag base tables (as of Nag 2.x).
5
* Copyright 2010-2013 Horde LLC (http://www.horde.org/)
7
* See the enclosed file COPYING for license information (GPL). If you
8
* did not receive this file, see http://www.horde.org/licenses/gpl.
10
* @author Chuck Hagenbuch <chuck@horde.org>
12
* @license http://www.horde.org/licenses/gpl GPL
15
class NagBaseTables extends Horde_Db_Migration_Base
22
$tableList = $this->tables();
24
if (!in_array('nag_tasks', $tableList)) {
25
$t = $this->createTable('nag_tasks', array('autoincrementKey' => false));
26
$t->column('task_id', 'string', array('limit' => 32, 'null' => false));
27
$t->column('task_owner', 'string', array('null' => false));
28
$t->column('task_creator', 'string', array('null' => false));
29
$t->column('task_parent', 'string');
30
$t->column('task_assignee', 'string');
31
$t->column('task_name', 'string', array('null' => false));
32
$t->column('task_uid', 'string', array('null' => false));
33
$t->column('task_desc', 'text');
34
$t->column('task_start', 'integer');
35
$t->column('task_due', 'integer');
36
$t->column('task_priority', 'integer', array('default' => 0, 'null' => false));
37
$t->column('task_estimate', 'float');
38
$t->column('task_category', 'string', array('limit' => 80));
39
$t->column('task_completed', 'integer', array('limit' => 1, 'default' => 0, 'null' => false));
40
$t->column('task_completed_date', 'integer');
41
$t->column('task_alarm', 'integer', array('default' => 0, 'null' => false));
42
$t->column('task_alarm_methods', 'text');
43
$t->column('task_private', 'integer', array('limit' => 1, 'default' => 0, 'null' => false));
44
$t->primaryKey(array('task_id'));
47
$this->addIndex('nag_tasks', array('task_owner'));
48
$this->addIndex('nag_tasks', array('task_uid'));
49
$this->addIndex('nag_tasks', array('task_start'));
52
if (!in_array('nag_shares', $tableList)) {
53
$t = $this->createTable('nag_shares', array('autoincrementKey' => 'share_id'));
54
$t->column('share_id', 'integer', array('null' => false));
55
$t->column('share_name', 'string', array('null' => false));
56
$t->column('share_owner', 'string');
57
$t->column('share_flags', 'integer', array('limit' => 2, 'default' => 0, 'null' => false));
58
$t->column('perm_creator', 'integer', array('limit' => 2, 'default' => 0, 'null' => false));
59
$t->column('perm_default', 'integer', array('limit' => 2, 'default' => 0, 'null' => false));
60
$t->column('perm_guest', 'integer', array('limit' => 2, 'default' => 0, 'null' => false));
61
$t->column('attribute_name', 'string', array('null' => false));
62
$t->column('attribute_desc', 'string');
63
$t->column('attribute_color', 'string', array('limit' => 7));
64
$t->primaryKey(array('share_id'));
67
$this->addIndex('nag_shares', array('share_name'));
68
$this->addIndex('nag_shares', array('share_owner'));
69
$this->addIndex('nag_shares', array('perm_creator'));
70
$this->addIndex('nag_shares', array('perm_default'));
71
$this->addIndex('nag_shares', array('perm_guest'));
74
if (!in_array('nag_shares_groups', $tableList)) {
75
$t = $this->createTable('nag_shares_groups', array('autoincrementKey' => false));
76
$t->column('share_id', 'integer', array('null' => false));
77
$t->column('group_uid', 'string', array('null' => false));
78
$t->column('perm', 'integer', array('limit' => 2, 'null' => false));
81
$this->addIndex('nag_shares_groups', array('share_id'));
82
$this->addIndex('nag_shares_groups', array('group_uid'));
83
$this->addIndex('nag_shares_groups', array('perm'));
86
if (!in_array('nag_shares_users', $tableList)) {
87
$t = $this->createTable('nag_shares_users', array('autoincrementKey' => false));
88
$t->column('share_id', 'integer', array('null' => false));
89
$t->column('user_uid', 'string', array('limit' => 255, 'null' => false));
90
$t->column('perm', 'integer', array('limit' => 2, 'null' => false));
93
$this->addIndex('nag_shares_users', array('share_id'));
94
$this->addIndex('nag_shares_users', array('user_uid'));
95
$this->addIndex('nag_shares_users', array('perm'));
102
public function down()
104
$this->dropTable('nag_tasks');
105
$this->dropTable('nag_shares');
106
$this->dropTable('nag_shares_groups');
107
$this->dropTable('nag_shares_users');