summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/User.pm22
-rwxr-xr-xcreateaccount.cgi4
-rwxr-xr-xeditusers.cgi6
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 <lance.larsh@oracle.com>
# Justin C. De Vries <judevries@novell.com>
# Dennis Melentyev <dennis.melentyev@infopulse.com.ua>
+# Frédéric Buclin <LpSolit@gmail.com>
################################################################################
# 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');