diff --git a/src/IDF/IssueRelation.php b/src/IDF/IssueRelation.php new file mode 100644 index 0000000..f918631 --- /dev/null +++ b/src/IDF/IssueRelation.php @@ -0,0 +1,93 @@ +_a['table'] = 'idf_issuerelations'; + $this->_a['model'] = __CLASS__; + $this->_a['cols'] = array( + // It is mandatory to have an "id" column. + 'id' => + array( + 'type' => 'Pluf_DB_Field_Sequence', + 'blank' => true, + ), + 'issue' => + array( + 'type' => 'Pluf_DB_Field_Foreignkey', + 'model' => 'IDF_Issue', + 'blank' => false, + 'verbose' => __('issue'), + 'relate_name' => 'issues', + ), + 'verb' => + array( + 'type' => 'Pluf_DB_Field_Text', + 'blank' => false, + 'verbose' => __('verb'), + ), + 'other_issue' => + array( + 'type' => 'Pluf_DB_Field_Foreignkey', + 'model' => 'IDF_Issue', + 'blank' => false, + 'verbose' => __('other issue'), + 'relate_name' => 'other_issues', + ), + 'submitter' => + array( + 'type' => 'Pluf_DB_Field_Foreignkey', + 'model' => 'Pluf_User', + 'blank' => false, + 'verbose' => __('submitter'), + ), + 'creation_dtime' => + array( + 'type' => 'Pluf_DB_Field_Datetime', + 'blank' => true, + 'verbose' => __('creation date'), + ), + ); + $this->_a['idx'] = array( + 'creation_dtime_idx' => + array( + 'col' => 'creation_dtime', + 'type' => 'normal', + ), + ); + } + + function preSave($create=false) + { + if ($this->id == '') { + $this->creation_dtime = gmdate('Y-m-d H:i:s'); + } + } +} diff --git a/src/IDF/Migrations/17AddIssueRelations.php b/src/IDF/Migrations/17AddIssueRelations.php new file mode 100644 index 0000000..0bf7700 --- /dev/null +++ b/src/IDF/Migrations/17AddIssueRelations.php @@ -0,0 +1,44 @@ +model = new IDF_IssueRelation(); + $schema->createTables(); +} + +function IDF_Migrations_17AddIssueRelations_down($params=null) +{ + $db = Pluf::db(); + $schema = new Pluf_DB_Schema($db); + $schema->model = new IDF_IssueRelation(); + $schema->dropTables(); +} + diff --git a/src/IDF/Migrations/Backup.php b/src/IDF/Migrations/Backup.php index 406b086..32fcb9e 100644 --- a/src/IDF/Migrations/Backup.php +++ b/src/IDF/Migrations/Backup.php @@ -54,6 +54,7 @@ function IDF_Migrations_Backup_run($folder, $name=null) 'IDF_Queue', 'IDF_Gconf', 'IDF_EmailAddress', + 'IDF_IssueRelation', ); $db = Pluf::db(); // Now, for each table, we dump the content in json, this is a @@ -100,6 +101,7 @@ function IDF_Migrations_Backup_restore($folder, $name) 'IDF_Queue', 'IDF_Gconf', 'IDF_EmailAddress', + 'IDF_IssueRelation', ); $db = Pluf::db(); $schema = new Pluf_DB_Schema($db); diff --git a/src/IDF/Migrations/Install.php b/src/IDF/Migrations/Install.php index 98c62fc..aea5f00 100644 --- a/src/IDF/Migrations/Install.php +++ b/src/IDF/Migrations/Install.php @@ -51,6 +51,7 @@ function IDF_Migrations_Install_setup($params=null) 'IDF_Queue', 'IDF_Gconf', 'IDF_EmailAddress', + 'IDF_IssueRelation', ); $db = Pluf::db(); $schema = new Pluf_DB_Schema($db); @@ -109,6 +110,7 @@ function IDF_Migrations_Install_teardown($params=null) 'IDF_Commit', 'IDF_Project', 'IDF_EmailAddress', + 'IDF_IssueRelation', ); $db = Pluf::db(); $schema = new Pluf_DB_Schema($db); diff --git a/src/IDF/relations.php b/src/IDF/relations.php index dc951e7..38f0ea1 100644 --- a/src/IDF/relations.php +++ b/src/IDF/relations.php @@ -45,6 +45,7 @@ $m['IDF_Scm_Cache_Git'] = array('relate_to' => array('IDF_Project')); $m['IDF_UserData'] = array('relate_to' => array('Pluf_User')); $m['IDF_EmailAddress'] = array('relate_to' => array('Pluf_User')); +$m['IDF_IssueRelation'] = array('relate_to' => array('IDF_Issue', 'Pluf_User')); Pluf_Signal::connect('Pluf_Template_Compiler::construct_template_tags_modifiers', array('IDF_Middleware', 'updateTemplateTagsModifiers'));