diff -Nur mantis-0.19.1.orig/bug_report_mail.php mantis-0.19.1/bug_report_mail.php --- mantis-0.19.1.orig/bug_report_mail.php Thu Jan 1 01:00:00 1970 +++ mantis-0.19.1/bug_report_mail.php Wed Sep 15 18:59:59 2004 @@ -0,0 +1,33 @@ + + diff -Nur mantis-0.19.1.orig/config_defaults_inc.php mantis-0.19.1/config_defaults_inc.php --- mantis-0.19.1.orig/config_defaults_inc.php Sat Nov 6 12:54:14 2004 +++ mantis-0.19.1/config_defaults_inc.php Sat Nov 6 19:59:13 2004 @@ -1470,4 +1470,20 @@ # NOTE: These are meaningless under Windows! Just ignore them! $g_dot_tool = '/usr/bin/dot'; $g_neato_tool = '/usr/bin/neato'; + + ###################### + # Mail Reporting + ###################### + + # --- mail reporting settings ----- + # This tells Mantis to report all the Mail with only one account + $g_mail_use_reporter = ON; + + # The account's name for mail reporting + # Also used for fallback if a user is not found in database + $g_mail_reporter = 'Mail'; + + # Signup new users automatically (possible security risk!) + # Default is OFF, ignored if mail_use_reporter is ON + $g_mail_auto_signup = OFF; ?> diff -Nur mantis-0.19.1.orig/core/category_api.php mantis-0.19.1/core/category_api.php --- mantis-0.19.1.orig/core/category_api.php Thu Apr 8 21:04:52 2004 +++ mantis-0.19.1/core/category_api.php Sat Nov 6 19:41:45 2004 @@ -206,7 +206,7 @@ $t_project_category_table = config_get( 'mantis_project_category_table' ); - $query = "SELECT category, user_id + $query = "SELECT category, user_id, pop3_host, pop3_user, pop3_pass FROM $t_project_category_table WHERE project_id='$c_project_id' ORDER BY category"; diff -Nur mantis-0.19.1.orig/core/mail_api.php mantis-0.19.1/core/mail_api.php --- mantis-0.19.1.orig/core/mail_api.php Thu Jan 1 01:00:00 1970 +++ mantis-0.19.1/core/mail_api.php Sat Nov 6 18:27:31 2004 @@ -0,0 +1,341 @@ +connect($t_pop3_host, 110); + $t_pop3->login($t_pop3_user, $t_pop3_password); + + for ($i = 1; $i <= $t_pop3->numMsg(); $i++) { + $t_mail = $t_pop3->getParsedHeaders($i); + $t_mail['X-Mantis-Body'] = $t_pop3->getBody($i); + $t_mail['X-Mantis-Complete'] = $t_pop3->getMsg($i); + array_push($v_mails, $t_mail); + $t_pop3->deleteMsg($i); + } + + $t_pop3->disconnect(); + return $v_mails; + } + + # -------------------- + # return the mailadress from the mail's 'From' + function mail_parse_address ( $p_mailaddress ) { + if (preg_match("/<(.*?)>/", $p_mailaddress, $matches)) { + $c_mailaddress = $matches[1]; + } + + return $c_mailaddress; + } + + # -------------------- + # return the a valid username from an email address + function mail_user_name_from_address ( $p_mailaddress ) { + + return preg_replace("/[@\.-]/", '_', $p_mailaddress); + } + + # -------------------- + # return true if there is a valid mantis bug referernce in subject + function mail_is_a_bugnote ($p_mail_subject) { + return preg_match("/\[([A-Za-z0-9-_\.]*\s[0-9]{7})\]/", $p_mail_subject); + } + + # -------------------- + # return the bug's id from the subject + function mail_get_bug_id_from_subject ( $p_mail_subject) { + preg_match("/\[([A-Za-z0-9-_\.]*\s([0-9]{7}?))\]/", $p_mail_subject, $v_matches); + + return $v_matches[2]; + } + + # -------------------- + # return the user id for the mail reporting user + function mail_get_user ($p_mailaddress) { + $t_mail_use_reporter = config_get( 'mail_use_reporter' ); + $t_mail_auto_signup = config_get( 'mail_auto_signup' ); + $t_mail_reporter = config_get( 'mail_reporter' ); + + $c_mailaddress = mail_parse_address( $p_mailaddress ); + + if ( $t_mail_use_reporter ) { + // Always report as mail_reporter + $t_reporter_id = user_get_id_by_name( $t_mail_reporter ); + } else { + // Try to get the reporting users id + $t_reporter_id = user_get_id_by_mail ( $c_mailaddress ); + if ( ! $t_reporter_id && $t_mail_auto_signup ) { + // So, we've to sign up a new user... + $t_user_name = mail_user_name_from_address ( $c_mailaddress ); + user_signup($t_user_name, $c_mailaddress); + $t_reporter_id = user_get_id_by_name($t_user_name); + } elseif ( ! $t_reporter_id ) { + // Fall back to the default mail_reporter + $t_reporter_id = user_get_id_by_name( $t_mail_reporter ); + } + } + + return $t_reporter_id; + } + + # -------------------- + # Adds a bug which is reported via email + # Taken from bug_report.php and + function mail_add_bug( $p_mail, $p_account ) { + $t_bug_data = new BugData; + $t_bug_data->build = gpc_get_string( 'build', '' ); + $t_bug_data->platform = gpc_get_string( 'platform', '' ); + $t_bug_data->os = gpc_get_string( 'os', '' ); + $t_bug_data->os_build = gpc_get_string( 'os_build', '' ); + $t_bug_data->version = gpc_get_string( 'product_version', '' ); + $t_bug_data->profile_id = gpc_get_int( 'profile_id', 0 ); + $t_bug_data->handler_id = gpc_get_int( 'handler_id', 0 ); + $t_bug_data->view_state = gpc_get_int( 'view_state', config_get( 'default_bug_view_status' ) ); + + if ( $p_account['category']) { + $t_bug_data->category = gpc_get_string( 'category', $p_account['category'] ); + } else { + $t_bug_data->category = gpc_get_string( 'category', '' ); + } + $t_bug_data->reproducibility = 10; + $t_bug_data->severity = 50; + $t_bug_data->priority = gpc_get_int( 'priority', NORMAL ); + $t_bug_data->summary = $p_mail['Subject']; + $t_bug_data->description = $p_mail['X-Mantis-Body']; + $t_bug_data->steps_to_reproduce = gpc_get_string( 'steps_to_reproduce', '' ); + $t_bug_data->additional_information = $p_mail['X-Mantis-Complete']; + + $t_bug_data->project_id = $p_account['id']; + + $t_bug_data->reporter_id = mail_get_user( $p_mail['From'] ); + + if (mail_is_a_bugnote($p_mail['Subject'])) + { + # Add a bug note + $t_bug_id = mail_get_bug_id_from_subject( $p_mail['Subject'] ); + if ( ! bug_is_readonly( $t_bug_id ) ) { + bugnote_add ( $t_bug_id, $p_mail['X-Mantis-Body'] ); + email_bugnote_add ( $t_bug_id ); + } + } + else + { + # Create the bug + $t_bug_id = bug_create( $t_bug_data ); + email_new_bug( $t_bug_id ); + } + + } + +?> diff -Nur mantis-0.19.1.orig/core/user_api.php mantis-0.19.1/core/user_api.php --- mantis-0.19.1.orig/core/user_api.php Mon Aug 23 17:13:34 2004 +++ mantis-0.19.1/core/user_api.php Sat Nov 6 19:43:10 2004 @@ -477,6 +477,27 @@ } } + # get a user id from an mail address + # return false if the mail address does not exist + function user_get_id_by_mail( $p_mailaddress ) { + + $c_mailaddress = db_prepare_string( $p_mailaddress ); + + $t_user_table = config_get( 'mantis_user_table' ); + + $query = "SELECT id + FROM $t_user_table + WHERE email='$c_mailaddress'"; + $result = db_query( $query ); + + if ( 0 == db_num_rows( $result ) ) { + return false; + } else { + return db_result( $result ); + } + } + + # -------------------- # -------------------- # return all data associated with a particular user name # return false if the username does not exist diff -Nur mantis-0.19.1.orig/manage_proj_cat_edit_page.php mantis-0.19.1/manage_proj_cat_edit_page.php --- mantis-0.19.1.orig/manage_proj_cat_edit_page.php Tue Apr 13 00:04:34 2004 +++ mantis-0.19.1/manage_proj_cat_edit_page.php Sat Nov 6 19:55:07 2004 @@ -15,6 +15,7 @@ $t_core_path = config_get( 'core_path' ); require_once( $t_core_path.'category_api.php' ); + require_once( $t_core_path.'mail_api.php' ); ?> @@ -83,5 +88,60 @@ + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+
+
+ +
+
+ + + +
+
+ diff -Nur mantis-0.19.1.orig/manage_proj_cat_mail_delete.php mantis-0.19.1/manage_proj_cat_mail_delete.php --- mantis-0.19.1.orig/manage_proj_cat_mail_delete.php Thu Jan 1 01:00:00 1970 +++ mantis-0.19.1/manage_proj_cat_mail_delete.php Wed Sep 15 18:26:08 2004 @@ -0,0 +1,43 @@ + + +
+
+'; + + print_bracket_link( $t_redirect_url, lang_get( 'proceed' ) ); +?> +
+ + diff -Nur mantis-0.19.1.orig/manage_proj_cat_mail_update.php mantis-0.19.1/manage_proj_cat_mail_update.php --- mantis-0.19.1.orig/manage_proj_cat_mail_update.php Thu Jan 1 01:00:00 1970 +++ mantis-0.19.1/manage_proj_cat_mail_update.php Wed Sep 15 18:14:39 2004 @@ -0,0 +1,58 @@ + + +
+
+'; + + print_bracket_link( $t_redirect_url, lang_get( 'proceed' ) ); +?> +
+ + diff -Nur mantis-0.19.1.orig/manage_proj_edit_page.php mantis-0.19.1/manage_proj_edit_page.php --- mantis-0.19.1.orig/manage_proj_edit_page.php Wed Sep 22 13:15:32 2004 +++ mantis-0.19.1/manage_proj_edit_page.php Sat Nov 6 19:54:10 2004 @@ -18,6 +18,7 @@ require_once( $t_core_path . 'version_api.php' ); require_once( $t_core_path . 'custom_field_api.php' ); require_once( $t_core_path . 'icon_api.php' ); + require_once( $t_core_path . 'mail_api.php' ); ?> @@ -551,4 +553,74 @@ + + +
+
+
+ + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + +
+ + + +
+ +
+
+
+ +
+
+ + +
+
+
+ +
+
+ + + +
+
+ + +
+
+ + + +
+
+ diff -Nur mantis-0.19.1.orig/manage_proj_mail_categories.php mantis-0.19.1/manage_proj_mail_categories.php --- mantis-0.19.1.orig/manage_proj_mail_categories.php Thu Jan 1 01:00:00 1970 +++ mantis-0.19.1/manage_proj_mail_categories.php Wed Sep 15 18:03:32 2004 @@ -0,0 +1,43 @@ + + +
+
+'; + + print_bracket_link( $t_redirect_url, lang_get( 'proceed' ) ); +?> +
+ + diff -Nur mantis-0.19.1.orig/manage_proj_mail_delete.php mantis-0.19.1/manage_proj_mail_delete.php --- mantis-0.19.1.orig/manage_proj_mail_delete.php Thu Jan 1 01:00:00 1970 +++ mantis-0.19.1/manage_proj_mail_delete.php Wed Sep 15 17:50:34 2004 @@ -0,0 +1,42 @@ + + +
+
+'; + + print_bracket_link( $t_redirect_url, lang_get( 'proceed' ) ); +?> +
+ + diff -Nur mantis-0.19.1.orig/manage_proj_mail_update.php mantis-0.19.1/manage_proj_mail_update.php --- mantis-0.19.1.orig/manage_proj_mail_update.php Thu Jan 1 01:00:00 1970 +++ mantis-0.19.1/manage_proj_mail_update.php Wed Sep 15 17:50:31 2004 @@ -0,0 +1,58 @@ + + +
+
+'; + + print_bracket_link( $t_redirect_url, lang_get( 'proceed' ) ); +?> +
+ +