diff --git a/EmailReporting.php b/EmailReporting.php index 7507951..e3e38c9 100644 --- a/EmailReporting.php +++ b/EmailReporting.php @@ -51,6 +51,9 @@ class EmailReportingPlugin extends MantisPlugin # Is this plugin allowed to process and add bugnotes to existing issues 'mail_add_bugnotes' => ON, + # Add email subject as the first line of a note (alctive only for notes) + 'mail_save_note_subject' => OFF, + # Add complete email into the attachments 'mail_add_complete_email' => OFF, @@ -493,6 +496,13 @@ class EmailReportingPlugin extends MantisPlugin plugin_config_set( 'config_version', 10 ); } + if ( $t_config_version <= 10 ) + { + plugin_config_set( 'mail_save_note_subject', ON ); + plugin_config_set( 'config_version', 11 ); + } + + } /* diff --git a/core/mail_api.php b/core/mail_api.php index f4f5486..d714bf6 100644 --- a/core/mail_api.php +++ b/core/mail_api.php @@ -58,6 +58,7 @@ class ERP_mailbox_api private $_mail_removed_reply_text; private $_mail_reporter_id; private $_mail_save_from; + private $_mail_save_note_subject; private $_mail_use_bug_priority; private $_mail_use_reporter; @@ -109,6 +110,7 @@ class ERP_mailbox_api $this->_mail_removed_reply_text = plugin_config_get( 'mail_removed_reply_text' ); $this->_mail_reporter_id = plugin_config_get( 'mail_reporter_id' ); $this->_mail_save_from = plugin_config_get( 'mail_save_from' ); + $this->_mail_save_note_subject = plugin_config_get( 'mail_save_note_subject'); $this->_mail_use_bug_priority = plugin_config_get( 'mail_use_bug_priority' ); $this->_mail_use_reporter = plugin_config_get( 'mail_use_reporter' ); @@ -610,8 +612,10 @@ class ERP_mailbox_api $t_description = $p_email[ 'X-Mantis-Body' ]; $t_description = $this->identify_replies( $t_description ); - $t_description = $this->apply_mail_save_from( $p_email[ 'From' ], $t_description ); + $t_description = $this->apply_mail_save_from( $p_email[ 'From' ], $t_description ); + $t_description = $this->apply_mail_subject( $p_email[ 'Subject' ], $t_description ); + # Event integration # Core mantis event already exists within bugnote_add function $t_bugnote_text = event_signal( 'EVENT_ERP_BUGNOTE_DATA', $t_description, $t_bug_id ); @@ -1023,6 +1027,7 @@ class ERP_mailbox_api private function mail_is_a_bugnote( $p_mail_subject ) { $t_bug_id = $this->get_bug_id_from_subject( $p_mail_subject ); + print("recognized t_bug_id=[".$t_bug_id."], subject=[".$p_mail_subject."]"); if ( $t_bug_id !== FALSE ) { @@ -1039,7 +1044,7 @@ class ERP_mailbox_api # return the bug's id from the subject private function get_bug_id_from_subject( $p_mail_subject ) { - preg_match( "/\[.*?\s([0-9]{1,7}?)\]/u", $p_mail_subject, $v_matches ); + preg_match( "/.*\[.*?(0*[0-9]{1,7}?)\s*\]/u", $p_mail_subject, $v_matches ); if ( isset( $v_matches[ 1 ] ) ) { @@ -1131,6 +1136,21 @@ class ERP_mailbox_api } # -------------------- + # Add the save from text if enabled + private function apply_mail_subject( $p_subject, $p_description ) + { + if ( $this->_mail_save_note_subject ) + { + return( 'Subject: ' . $p_subject . "\n" . $p_description ); + } + + return( $p_description ); + } + + + + + # -------------------- # Show memory usage in debug mode private function show_memory_usage( $p_location ) { diff --git a/lang/strings_english.txt b/lang/strings_english.txt index d6c6d88..95fd212 100644 --- a/lang/strings_english.txt +++ b/lang/strings_english.txt @@ -36,6 +36,7 @@ $s_plugin_EmailReporting_directory_unwritable = 'Warning: directory not writable $s_plugin_EmailReporting_mail_add_bug_reports = 'Create new issues'; $s_plugin_EmailReporting_mail_add_bugnotes = 'Add bugnotes'; +$s_plugin_EmailReporting_mail_save_note_subject = 'Write the email subject as the first line of the bugnote (only if [Add bugnotes]=Yes)'; $s_plugin_EmailReporting_mail_add_complete_email = 'Add the complete email into the attachments'; $s_plugin_EmailReporting_mail_auto_signup = 'Signup new users automatically (possible security risk!, see documentation)'; $s_plugin_EmailReporting_mail_bug_priority = 'Classify bug priorities'; @@ -56,7 +57,7 @@ $s_plugin_EmailReporting_mail_remove_replies_after = 'Use this text to identify $s_plugin_EmailReporting_mail_removed_reply_text = 'Use this text if replies have been removed from the email'; $s_plugin_EmailReporting_mail_reporter_id = 'The default / fallback reporter user for issues created by email'; $s_plugin_EmailReporting_mail_rule_system = 'Rule system'; -$s_plugin_EmailReporting_mail_save_from = 'Write the sender of the email into the issue report'; +$s_plugin_EmailReporting_mail_save_from = 'Write the sender of the email into the issue/bugnote'; $s_plugin_EmailReporting_mail_secured_script = 'Block this script from running via a webserver (recommended = "Yes")'; $s_plugin_EmailReporting_mail_use_bug_priority = 'Look for priority header field'; $s_plugin_EmailReporting_mail_use_reporter = 'Use only default reporter user for issues created by email'; diff --git a/pages/manage_config.php b/pages/manage_config.php index 6f2911c..561414b 100644 --- a/pages/manage_config.php +++ b/pages/manage_config.php @@ -59,12 +59,15 @@ ERP_output_config_option( NULL, 'empty' ); ERP_output_config_option( 'feature_options', 'header' ); ERP_output_config_option( 'mail_add_bug_reports', 'boolean' ); ERP_output_config_option( 'mail_add_bugnotes', 'boolean' ); -ERP_output_config_option( 'mail_rule_system', 'boolean' ); -ERP_output_config_option( 'mail_parse_html', 'boolean' ); +ERP_output_config_option( 'mail_save_from', 'boolean' ); +ERP_output_config_option( 'mail_save_note_subject', 'boolean' ); ERP_output_config_option( 'mail_remove_mantis_email', 'boolean' ); ERP_output_config_option( 'mail_remove_replies', 'boolean' ); +ERP_output_config_option( 'mail_rule_system', 'boolean' ); +ERP_output_config_option( 'mail_parse_html', 'boolean' ); ERP_output_config_option( 'mail_email_receive_own', 'boolean' ); -ERP_output_config_option( 'mail_save_from', 'boolean' ); + + ERP_output_config_option( NULL, 'empty' ); ERP_output_config_option( 'priority_feature_options', 'header' ); diff --git a/pages/manage_config_edit.php b/pages/manage_config_edit.php index 52066a8..4f6f943 100644 --- a/pages/manage_config_edit.php +++ b/pages/manage_config_edit.php @@ -27,6 +27,7 @@ $f_gpc = array( 'mail_reporter_id' => gpc_get_int( 'mail_reporter_id' ), 'mail_rule_system' => gpc_get_bool( 'mail_rule_system' ), 'mail_save_from' => gpc_get_bool( 'mail_save_from' ), + 'mail_save_note_subject' => gpc_get_bool( 'mail_save_note_subject'), 'mail_secured_script' => gpc_get_bool( 'mail_secured_script' ), 'mail_use_bug_priority' => gpc_get_bool( 'mail_use_bug_priority' ), 'mail_use_reporter' => gpc_get_bool( 'mail_use_reporter' ),