diff --git a/Source/Source.API.php b/Source/Source.API.php index dc12e5a..d3812bd 100644 --- a/Source/Source.API.php +++ b/Source/Source.API.php @@ -457,6 +457,9 @@ $this->save_bugs(); } + /** + * Update changeset relations to affected bugs. + */ function save_bugs() { $t_bug_table = plugin_table( 'bug', 'Source' ); @@ -466,10 +469,10 @@ $this->load_repo(); if ( count( $t_bugs_deleted ) ) { - $t_bugs_deleted = join( ',', $t_bugs_deleted ); + $t_bugs_deleted_str = join( ',', $t_bugs_deleted ); $t_query = "DELETE FROM $t_bug_table WHERE change_id=" . $this->id . - " AND bug_id IN ( $t_bugs_deleted )"; + " AND bug_id IN ( $t_bugs_deleted_str )"; db_query_bound( $t_query ); foreach( $t_bugs_deleted as $t_bug_id ) { diff --git a/Source/lang/strings_english.txt b/Source/lang/strings_english.txt index 799ef41..8ce8a01 100644 --- a/Source/lang/strings_english.txt +++ b/Source/lang/strings_english.txt @@ -53,6 +53,8 @@ $s_plugin_Source_update = 'Update'; $s_plugin_Source_delete = 'Delete'; $s_plugin_Source_search = 'Search'; +$s_plugin_Source_attach = 'Attach'; +$s_plugin_Source_detach = 'Detach'; $s_plugin_Source_modify_search = 'Modify Search'; $s_plugin_Source_new_search = 'New Search'; $s_plugin_Source_permalink = 'Permalink'; @@ -66,6 +68,7 @@ $s_plugin_Source_import_latest = 'Import Latest Data'; $s_plugin_Source_related_changesets = 'Related Changesets'; $s_plugin_Source_affected_issues = 'Affected Issues'; +$s_plugin_Source_attach_to_issue = 'Attach Issues:'; $s_plugin_Source_configuration = 'Configuration'; $s_plugin_Source_allow_remote_checkin = 'Allow Remote Check-In'; diff --git a/Source/pages/attach.php b/Source/pages/attach.php new file mode 100644 index 0000000..215910b --- /dev/null +++ b/Source/pages/attach.php @@ -0,0 +1,40 @@ +load_bugs(); + +$t_bug_ids = split( ',', $f_bug_ids ); +foreach( $t_bug_ids as $t_bug_id ) { + $t_bug_id = (int) $t_bug_id; + + if ( $t_bug_id < 1 || !bug_exists( $t_bug_id ) ) { + continue; + } + + if ( !in_array( $t_bug_id, $t_changeset->bugs ) ) { + $t_changeset->bugs[] = $t_bug_id; + } +} + +$t_changeset->save_bugs(); + +form_security_purge( 'plugin_Source_attach' ); +print_successful_redirect( plugin_page( 'view', true ) . '&id=' . $t_changeset->id ); + diff --git a/Source/pages/detach.php b/Source/pages/detach.php new file mode 100644 index 0000000..e559fab --- /dev/null +++ b/Source/pages/detach.php @@ -0,0 +1,29 @@ +load_bugs(); + +$t_changeset->bugs = array_diff( $t_changeset->bugs, array( $f_bug_id ) ); + +$t_changeset->save_bugs(); + +form_security_purge( 'plugin_Source_detach' ); +print_successful_redirect( plugin_page( 'view', true ) . '&id=' . $t_changeset->id ); + diff --git a/Source/pages/view.php b/Source/pages/view.php index e35a6b0..4a0a330 100644 --- a/Source/pages/view.php +++ b/Source/pages/view.php @@ -123,7 +123,7 @@