From fb4c22207f27dc070149073cde8adb4ed8866250 Mon Sep 17 00:00:00 2001 From: "lpsolit%gmail.com" <> Date: Thu, 8 Jun 2006 03:31:10 +0000 Subject: Bug 312935: User Account Log should start with a creation date - Patch by Frédéric Buclin r=bkor, r=wicked a=myk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Bugzilla/User.pm | 22 +++++++++++++++++----- createaccount.cgi | 4 ++-- editusers.cgi | 6 +++--- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/Bugzilla/User.pm b/Bugzilla/User.pm index f0f8467a7..7bafd688a 100644 --- a/Bugzilla/User.pm +++ b/Bugzilla/User.pm @@ -28,6 +28,7 @@ # Lance Larsh # Justin C. De Vries # Dennis Melentyev +# Frédéric Buclin ################################################################################ # Module Initialization @@ -46,6 +47,7 @@ use Bugzilla::Constants; use Bugzilla::User::Setting; use Bugzilla::Product; use Bugzilla::Classification; +use Bugzilla::Field; use base qw(Exporter); @Bugzilla::User::EXPORT = qw(insert_new_user is_available_username @@ -1321,7 +1323,7 @@ sub insert_new_user { ($username, $realname, $cryptpassword, $disabledtext)); # Turn on all email for the new user - my $userid = $dbh->bz_last_key('profiles', 'userid'); + my $new_userid = $dbh->bz_last_key('profiles', 'userid'); foreach my $rel (RELATIONSHIPS) { foreach my $event (POS_EVENTS, NEG_EVENTS) { @@ -1333,19 +1335,29 @@ sub insert_new_user { next if (($event == EVT_CC) && ($rel != REL_REPORTER)); $dbh->do('INSERT INTO email_setting (user_id, relationship, event) - VALUES (?, ?, ?)', undef, ($userid, $rel, $event)); + VALUES (?, ?, ?)', undef, ($new_userid, $rel, $event)); } } foreach my $event (GLOBAL_EVENTS) { $dbh->do('INSERT INTO email_setting (user_id, relationship, event) - VALUES (?, ?, ?)', undef, ($userid, REL_ANY, $event)); + VALUES (?, ?, ?)', undef, ($new_userid, REL_ANY, $event)); } - my $user = new Bugzilla::User($userid); + my $user = new Bugzilla::User($new_userid); $user->derive_regexp_groups(); - + # Add the creation date to the profiles_activity table. + # $who is the user who created the new user account, i.e. either an + # admin or the new user himself. + my $who = Bugzilla->user->id || $user->id; + my $creation_date_fieldid = get_field_id('creation_ts'); + + $dbh->do('INSERT INTO profiles_activity + (userid, who, profiles_when, fieldid, newvalue) + VALUES (?, ?, NOW(), ?, NOW())', + undef, ($user->id, $who, $creation_date_fieldid)); + # Return the password to the calling code so it can be included # in an email sent to the user. return $password; diff --git a/createaccount.cgi b/createaccount.cgi index edd1c0a66..b50f9d87a 100755 --- a/createaccount.cgi +++ b/createaccount.cgi @@ -69,9 +69,9 @@ if (defined($login)) { $vars->{'login'} = $login; - $dbh->bz_lock_tables('profiles WRITE', 'groups READ', + $dbh->bz_lock_tables('profiles WRITE', 'profiles_activity WRITE', 'user_group_map WRITE', 'email_setting WRITE', - 'tokens READ'); + 'groups READ', 'tokens READ', 'fielddefs READ'); if (!is_available_username($login)) { # Account already exists diff --git a/editusers.cgi b/editusers.cgi index 86174a058..6da000a1b 100755 --- a/editusers.cgi +++ b/editusers.cgi @@ -199,9 +199,9 @@ if ($action eq 'search') { my $disabledtext = trim($cgi->param('disabledtext') || ''); # Lock tables during the check+creation session. - $dbh->bz_lock_tables('profiles WRITE', 'email_setting WRITE', - 'user_group_map WRITE', 'groups READ', - 'tokens READ'); + $dbh->bz_lock_tables('profiles WRITE', 'profiles_activity WRITE', + 'email_setting WRITE', 'user_group_map WRITE', + 'groups READ', 'tokens READ', 'fielddefs READ'); # Validity checks $login || ThrowUserError('user_login_required'); -- cgit v1.2.3-24-g4f1b