diff --git a/public/main/admin/statistics/index.php b/public/main/admin/statistics/index.php
index b5d62d9667..be8ddcc04b 100644
--- a/public/main/admin/statistics/index.php
+++ b/public/main/admin/statistics/index.php
@@ -747,7 +747,7 @@ switch ($report) {
$extraConditions = '';
if (!empty($startDate) && !empty($endDate)) {
// $extraConditions is already cleaned inside the function getUserListExtraConditions
- $extraConditions .= " AND registration_date BETWEEN '$startDate' AND '$endDate' ";
+ $extraConditions .= " AND created_at BETWEEN '$startDate' AND '$endDate' ";
}
$totalCount = UserManager::getUserListExtraConditions(
@@ -856,7 +856,7 @@ switch ($report) {
$item = [];
$item[] = $user['firstname'];
$item[] = $user['lastname'];
- $item[] = api_get_local_time($user['registration_date']);
+ $item[] = api_get_local_time($user['created_at']);
$item[] = $userLanguage;
$item[] = $languageTarget;
$item[] = $contract ? get_lang('Yes') : get_lang('No');
diff --git a/public/main/admin/user_edit.php b/public/main/admin/user_edit.php
index 2177c407aa..05e7553e28 100644
--- a/public/main/admin/user_edit.php
+++ b/public/main/admin/user_edit.php
@@ -93,7 +93,7 @@ $user_data['send_mail'] = 0;
$user_data['old_password'] = $user_data['password'];
//Convert the registration date of the user
-$user_data['registration_date'] = api_get_local_time($user_data['registration_date']);
+$user_data['created_at'] = api_get_local_time($user_data['created_at']);
unset($user_data['password']);
// Create the form
@@ -288,7 +288,7 @@ if (!empty($creatorInfo)) {
get_lang('Create by %s on %s'),
'user_information.php?user_id='.$user_data['creator_id'],
$creatorInfo['username'],
- $user_data['registration_date']
+ $user_data['created_at']
);
$form->addElement('label', get_lang('Registration date'), $date);
}
diff --git a/public/main/admin/user_export.php b/public/main/admin/user_export.php
index 583a996be2..e06d3ad98a 100644
--- a/public/main/admin/user_export.php
+++ b/public/main/admin/user_export.php
@@ -96,7 +96,7 @@ if ($form->validate()) {
u.status AS Status,
u.official_code AS OfficialCode,
u.phone AS Phone,
- u.registration_date AS RegistrationDate";
+ u.created_at AS CreatedAt";
if (strlen($course_code) > 0) {
$sql .= " FROM $user_table u, $course_user_table cu
WHERE
diff --git a/public/main/admin/user_information.php b/public/main/admin/user_information.php
index 519372ac91..63846e459b 100644
--- a/public/main/admin/user_information.php
+++ b/public/main/admin/user_information.php
@@ -166,12 +166,12 @@ $params = [];
$creatorId = $user->getCreatorId();
$creatorInfo = api_get_user_info($creatorId);
if (!empty($creatorId) && !empty($creatorInfo)) {
- $registrationDate = $user->getRegistrationDate()->format('Y-m-d H:i:s');
+ $createdAt = $user->getCreatedAt()->format('Y-m-d H:i:s');
$userInfo['created'] = sprintf(
get_lang('Create by %s on %s'),
'user_information.php?user_id='.$creatorId,
$creatorInfo['username'],
- api_get_utc_datetime($registrationDate)
+ api_get_utc_datetime($createdAt)
);
}
diff --git a/public/main/admin/user_list.php b/public/main/admin/user_list.php
index f8550bcfe7..67116e15cc 100644
--- a/public/main/admin/user_list.php
+++ b/public/main/admin/user_list.php
@@ -186,7 +186,7 @@ function prepare_user_sql_query(bool $getCount, bool $showDeletedUsers = false):
u.email AS col6,
u.status AS col7,
u.active AS col8,
- u.registration_date AS col9,
+ u.created_at AS col9,
u.last_login as col10,
u.id AS col11,
u.expiration_date AS exp,
diff --git a/public/main/admin/user_list_consent.php b/public/main/admin/user_list_consent.php
index 01f7b87f28..096d0cc0b0 100644
--- a/public/main/admin/user_list_consent.php
+++ b/public/main/admin/user_list_consent.php
@@ -54,7 +54,7 @@ function prepare_user_sql_query($getCount)
u.status AS col7,
u.active AS col8,
u.id AS col9,
- u.registration_date AS col10,
+ u.created_at AS col10,
u.expiration_date AS exp,
u.password,
v.field_id,
diff --git a/public/main/inc/ajax/statistics.ajax.php b/public/main/inc/ajax/statistics.ajax.php
index 7504b8dbdf..141c629332 100644
--- a/public/main/inc/ajax/statistics.ajax.php
+++ b/public/main/inc/ajax/statistics.ajax.php
@@ -294,7 +294,7 @@ switch ($action) {
$extraConditions = '';
if (!empty($startDate) && !empty($endDate)) {
- $extraConditions .= " AND registration_date BETWEEN '$startDate' AND '$endDate' ";
+ $extraConditions .= " AND created_at BETWEEN '$startDate' AND '$endDate' ";
}
switch ($filter) {
diff --git a/public/main/inc/lib/api.lib.php b/public/main/inc/lib/api.lib.php
index 971bfd81a8..d74b99bd0e 100644
--- a/public/main/inc/lib/api.lib.php
+++ b/public/main/inc/lib/api.lib.php
@@ -1321,7 +1321,7 @@ function _api_format_user($user, $add_password = false, $loadAvatars = true)
'language',
'locale',
'creator_id',
- 'registration_date',
+ 'created_at',
'hr_dept_id',
'expiration_date',
'last_login',
@@ -1650,7 +1650,7 @@ function api_get_user_info_from_entity(
$result['auth_source'] = $user->getAuthSource();
$result['language'] = $user->getLocale();
$result['creator_id'] = $user->getCreatorId();
- $result['registration_date'] = $user->getRegistrationDate()->format('Y-m-d H:i:s');
+ $result['created_at'] = $user->getCreatedAt()->format('Y-m-d H:i:s');
$result['hr_dept_id'] = $user->getHrDeptId();
$result['expiration_date'] = '';
if ($user->getExpirationDate()) {
@@ -1989,7 +1989,7 @@ function api_get_anonymous_id()
$result = Database::query($sql);
if (empty(Database::num_rows($result))) {
$login = uniqid('anon_');
- $anonList = UserManager::get_user_list(['status' => ANONYMOUS], ['registration_date ASC']);
+ $anonList = UserManager::get_user_list(['status' => ANONYMOUS], ['created_at ASC']);
if (count($anonList) >= $max) {
foreach ($anonList as $userToDelete) {
UserManager::delete_user($userToDelete['user_id']);
diff --git a/public/main/inc/lib/statistics.lib.php b/public/main/inc/lib/statistics.lib.php
index d7c8589a5c..7ed835f305 100644
--- a/public/main/inc/lib/statistics.lib.php
+++ b/public/main/inc/lib/statistics.lib.php
@@ -1585,9 +1585,9 @@ class Statistics
*/
public static function getNewUserRegistrations(string $startDate, string $endDate): array
{
- $sql = "SELECT DATE_FORMAT(registration_date, '%Y-%m-%d') as reg_date, COUNT(*) as user_count
+ $sql = "SELECT DATE_FORMAT(created_at, '%Y-%m-%d') as reg_date, COUNT(*) as user_count
FROM user
- WHERE registration_date BETWEEN '$startDate' AND '$endDate'
+ WHERE created_at BETWEEN '$startDate' AND '$endDate'
GROUP BY reg_date";
$result = Database::query($sql);
@@ -1608,7 +1608,7 @@ class Statistics
$sql = "SELECT u.creator_id, COUNT(u.id) as user_count, c.firstname, c.lastname
FROM user u
LEFT JOIN user c ON u.creator_id = c.id
- WHERE u.registration_date BETWEEN '$startDate' AND '$endDate'
+ WHERE u.created_at BETWEEN '$startDate' AND '$endDate'
AND u.creator_id IS NOT NULL
GROUP BY u.creator_id";
diff --git a/public/main/inc/lib/usermanager.lib.php b/public/main/inc/lib/usermanager.lib.php
index 0b126ae8ec..9f957fddb4 100644
--- a/public/main/inc/lib/usermanager.lib.php
+++ b/public/main/inc/lib/usermanager.lib.php
@@ -279,7 +279,6 @@ class UserManager
->setPhone($phone)
->setAddress($address)
->setLocale($language)
- ->setRegistrationDate($now)
->setHrDeptId($hrDeptId)
->setActive($active)
->setTimezone(api_get_timezone())
@@ -3410,11 +3409,11 @@ class UserManager
if (!empty($dateFrom)) {
$dateFrom = api_get_utc_datetime("$dateFrom 00:00:00");
- $sql .= " AND u.registration_date >= '$dateFrom' ";
+ $sql .= " AND u.created_at >= '$dateFrom' ";
}
if (!empty($dateUntil)) {
$dateUntil = api_get_utc_datetime("$dateUntil 23:59:59");
- $sql .= " AND u.registration_date <= '$dateUntil' ";
+ $sql .= " AND u.created_at <= '$dateUntil' ";
}
$res = Database::query($sql);
diff --git a/public/main/inc/lib/webservices/Rest.php b/public/main/inc/lib/webservices/Rest.php
index 90f2047c56..bc9bc13a90 100644
--- a/public/main/inc/lib/webservices/Rest.php
+++ b/public/main/inc/lib/webservices/Rest.php
@@ -1876,8 +1876,8 @@ class Rest extends WebService
}
$user->setLocale($value);
break;
- case 'registration_date':
- $user->setRegistrationDate($value);
+ case 'created_at':
+ $user->setCreatedAt($value);
break;
case 'expiration_date':
$user->setExpirationDate(
diff --git a/public/main/inc/lib/zombie/zombie_manager.class.php b/public/main/inc/lib/zombie/zombie_manager.class.php
index a9022d1020..8604938de6 100644
--- a/public/main/inc/lib/zombie/zombie_manager.class.php
+++ b/public/main/inc/lib/zombie/zombie_manager.class.php
@@ -41,7 +41,7 @@ class ZombieManager
$column = 'firstname';
}
- $validColumns = ['id', 'official_code', 'firstname', 'lastname', 'username', 'auth_source', 'email', 'status', 'registration_date', 'active', 'login_date'];
+ $validColumns = ['id', 'official_code', 'firstname', 'lastname', 'username', 'auth_source', 'email', 'status', 'created_at', 'active', 'login_date'];
if (!in_array($column, $validColumns)) {
$column = 'firstname';
}
@@ -60,7 +60,7 @@ class ZombieManager
user.auth_source,
user.email,
user.status,
- user.registration_date,
+ user.created_at,
user.active,
access.login_date';
diff --git a/public/main/inc/lib/zombie/zombie_report.class.php b/public/main/inc/lib/zombie/zombie_report.class.php
index 87abcba561..063c26fbad 100644
--- a/public/main/inc/lib/zombie/zombie_report.class.php
+++ b/public/main/inc/lib/zombie/zombie_report.class.php
@@ -208,7 +208,7 @@ class ZombieReport implements Countable
$row[] = $item['email'];
$row[] = $item['status'];
$row[] = $item['auth_source'];
- $row[] = api_format_date($item['registration_date'], DATE_FORMAT_SHORT);
+ $row[] = api_format_date($item['created_at'], DATE_FORMAT_SHORT);
$row[] = api_format_date($item['login_date'], DATE_FORMAT_SHORT);
$row[] = $item['active'];
$result[] = $row;
diff --git a/public/main/tracking/lp_report.php b/public/main/tracking/lp_report.php
index 9d702c8ff1..de2e8cc70e 100644
--- a/public/main/tracking/lp_report.php
+++ b/public/main/tracking/lp_report.php
@@ -53,7 +53,7 @@ function prepare_user_sql_query($getCount)
u.email AS col6,
u.status AS col7,
u.active AS col8,
- u.registration_date AS col9,
+ u.created_at AS col9,
u.last_login as col10,
u.id AS col11,
u.expiration_date AS exp,
diff --git a/public/main/user/user_export.php b/public/main/user/user_export.php
index 5757a5671d..f108fed9a7 100644
--- a/public/main/user/user_export.php
+++ b/public/main/user/user_export.php
@@ -70,7 +70,7 @@ $sql = "SELECT
u.status AS Status,
u.official_code AS OfficialCode,
u.phone AS Phone,
- u.registration_date AS RegistrationDate";
+ u.created_at AS RegistrationDate";
if (strlen($course_code) > 0) {
$sql .= " FROM $userTable u
INNER JOIN $course_user_table cu
diff --git a/public/plugin/migrationmoodle/src/Loader/UsersLoader.php b/public/plugin/migrationmoodle/src/Loader/UsersLoader.php
index 9bcf108e60..9b0e7acf1e 100644
--- a/public/plugin/migrationmoodle/src/Loader/UsersLoader.php
+++ b/public/plugin/migrationmoodle/src/Loader/UsersLoader.php
@@ -76,11 +76,11 @@ class UsersLoader implements LoaderInterface
throw new \Exception('User was not created');
}
- if ($incomingData['registration_date']) {
- $incomingData['registration_date'] = $incomingData['registration_date']->format('Y-m-d H:i:s');
+ if ($incomingData['created_at']) {
+ $incomingData['created_at'] = $incomingData['created_at']->format('Y-m-d H:i:s');
\Database::query(
- "UPDATE $tblUser SET registration_date = '{$incomingData['registration_date']}' WHERE id = $userId"
+ "UPDATE $tblUser SET created_at = '{$incomingData['created_at']}' WHERE id = $userId"
);
}
diff --git a/public/plugin/migrationmoodle/src/Task/UsersTask.php b/public/plugin/migrationmoodle/src/Task/UsersTask.php
index d819c8c90a..a6e861e27c 100644
--- a/public/plugin/migrationmoodle/src/Task/UsersTask.php
+++ b/public/plugin/migrationmoodle/src/Task/UsersTask.php
@@ -59,7 +59,7 @@ class UsersTask extends BaseTask
'class' => AuthLookup::class,
'properties' => ['auth'],
],
- 'registration_date' => [
+ 'created_at' => [
'class' => DateTimeObject::class,
'properties' => ['timecreated'],
],
diff --git a/src/CoreBundle/Entity/User.php b/src/CoreBundle/Entity/User.php
index 60d899494a..3f83ebffb6 100644
--- a/src/CoreBundle/Entity/User.php
+++ b/src/CoreBundle/Entity/User.php
@@ -615,9 +615,6 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
#[ORM\Column(name: 'productions', type: 'string', length: 250, unique: false, nullable: true)]
protected ?string $productions = null;
- #[ORM\Column(name: 'registration_date', type: 'datetime')]
- protected DateTime $registrationDate;
-
#[ORM\Column(name: 'expiration_date', type: 'datetime', unique: false, nullable: true)]
protected ?DateTime $expirationDate = null;
@@ -759,7 +756,6 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
$this->logins = new ArrayCollection();
$this->createdAt = new DateTime();
$this->updatedAt = new DateTime();
- $this->registrationDate = new DateTime();
$this->roles = [];
$this->credentialsExpired = false;
$this->credentialsExpireAt = new DateTime();
@@ -1045,18 +1041,6 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
return $this;
}
- public function getRegistrationDate(): DateTime
- {
- return $this->registrationDate;
- }
-
- public function setRegistrationDate(DateTime $registrationDate): self
- {
- $this->registrationDate = $registrationDate;
-
- return $this;
- }
-
public function getExpirationDate(): ?DateTime
{
return $this->expirationDate;
@@ -1122,11 +1106,6 @@ class User implements UserInterface, EquatableInterface, ResourceInterface, Reso
return $this;
}
- public function getMemberSince(): DateTime
- {
- return $this->registrationDate;
- }
-
public function isOnline(): bool
{
return false;
diff --git a/src/CoreBundle/EventSubscriber/AnonymousUserSubscriber.php b/src/CoreBundle/EventSubscriber/AnonymousUserSubscriber.php
index 9b0c049159..9452138dcd 100644
--- a/src/CoreBundle/EventSubscriber/AnonymousUserSubscriber.php
+++ b/src/CoreBundle/EventSubscriber/AnonymousUserSubscriber.php
@@ -73,7 +73,7 @@ class AnonymousUserSubscriber implements EventSubscriberInterface
'auth_source' => $user->getAuthSource(),
'theme' => $user->getTheme(),
'language' => $user->getLocale(),
- 'registration_date' => $user->getRegistrationDate()->format('Y-m-d H:i:s'),
+ 'created_at' => $user->getCreatedAt()->format('Y-m-d H:i:s'),
'expiration_date' => $user->getExpirationDate() ? $user->getExpirationDate()->format('Y-m-d H:i:s') : null,
'last_login' => $user->getLastLogin() ? $user->getLastLogin()->format('Y-m-d H:i:s') : null,
'is_anonymous' => true,
@@ -98,7 +98,7 @@ class AnonymousUserSubscriber implements EventSubscriberInterface
$anonymousAutoProvisioning = 'true' === $this->settingsManager->getSetting('security.anonymous_autoprovisioning');
if (!$anonymousAutoProvisioning) {
- $anonymousUser = $userRepository->findOneBy(['status' => User::ANONYMOUS], ['registrationDate' => 'ASC']);
+ $anonymousUser = $userRepository->findOneBy(['status' => User::ANONYMOUS], ['createdAt' => 'ASC']);
if ($anonymousUser) {
return $anonymousUser->getId();
}
@@ -110,7 +110,7 @@ class AnonymousUserSubscriber implements EventSubscriberInterface
if (0 === $maxAnonymousUsers) {
$maxAnonymousUsers = self::MAX_ANONYMOUS_USERS;
}
- $anonymousUsers = $userRepository->findBy(['status' => User::ANONYMOUS], ['registrationDate' => 'ASC']);
+ $anonymousUsers = $userRepository->findBy(['status' => User::ANONYMOUS], ['createdAt' => 'ASC']);
// Check in TrackELogin if there is an anonymous user with the same IP
foreach ($anonymousUsers as $user) {
diff --git a/src/CoreBundle/Migrations/Schema/V200/Version20250129120000.php b/src/CoreBundle/Migrations/Schema/V200/Version20250129120000.php
new file mode 100644
index 0000000000..dc21580d46
--- /dev/null
+++ b/src/CoreBundle/Migrations/Schema/V200/Version20250129120000.php
@@ -0,0 +1,32 @@
+addSql('UPDATE user SET created_at = registration_date WHERE created_at IS NULL');
+
+ $this->addSql('ALTER TABLE user DROP COLUMN registration_date');
+ }
+
+ public function down(Schema $schema): void
+ {
+ $this->addSql('ALTER TABLE user ADD registration_date DATETIME DEFAULT NULL');
+
+ $this->addSql('UPDATE user SET registration_date = created_at WHERE registration_date IS NULL');
+ }
+}
diff --git a/tests/CoreBundle/Repository/Node/UserRepositoryTest.php b/tests/CoreBundle/Repository/Node/UserRepositoryTest.php
index bcc26ec6df..535c6c4b73 100644
--- a/tests/CoreBundle/Repository/Node/UserRepositoryTest.php
+++ b/tests/CoreBundle/Repository/Node/UserRepositoryTest.php
@@ -216,7 +216,6 @@ class UserRepositoryTest extends AbstractApiTest
->setFirstname('Joe')
->setUsername('admin2')
->setSalt('')
- ->setRegistrationDate(new DateTime())
->setExpirationDate(new DateTime())
->setOpenid('')
->setSlug('admin2')