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 @@
+
+
+
+
+