From 3ba3f41d9ddbb446ea741fd0bfefb67713348b05 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?ANDRE=20s=C3=A9bastien?= <sandre@afi-sa.fr>
Date: Fri, 20 Oct 2023 15:03:07 +0000
Subject: [PATCH] hotline : #186186 : with var at 0 created uers datefin with
 currenttime - 1

---
 VERSIONS_HOTLINE/186186                       |  1 +
 library/Class/User/ILSSubscription.php        |  7 +++-
 .../PortalBorrowersFrontTest.php              | 39 +++++++++++++++++++
 3 files changed, 46 insertions(+), 1 deletion(-)
 create mode 100644 VERSIONS_HOTLINE/186186

diff --git a/VERSIONS_HOTLINE/186186 b/VERSIONS_HOTLINE/186186
new file mode 100644
index 00000000000..ad4b6ca5c7c
--- /dev/null
+++ b/VERSIONS_HOTLINE/186186
@@ -0,0 +1 @@
+ - correctif #186186 : Abonnés portail : Un abonnement ne sera plus valide avec une PORTAL_BORROWERS_VALIDATION_DELAY = 0.
\ No newline at end of file
diff --git a/library/Class/User/ILSSubscription.php b/library/Class/User/ILSSubscription.php
index 741e2c9c79f..545bd265f7f 100644
--- a/library/Class/User/ILSSubscription.php
+++ b/library/Class/User/ILSSubscription.php
@@ -193,7 +193,12 @@ class Class_User_ILSSubscription {
     $this->_user->beAbonnePortail();
 
     $date = new DateTime($this->getTimeSource()->dateYmd());
-    $date->modify('+' . $days . ' day');
+
+    if ($days > 0)
+      $date->modify('+' . $days . ' day');
+
+    if ($days <= 0)
+      $date->modify('-1 day');
 
     $this->_user->setDateFin($date->format('Y-m-d'));
     return $this;
diff --git a/tests/scenarios/PortalBorrowers/PortalBorrowersFrontTest.php b/tests/scenarios/PortalBorrowers/PortalBorrowersFrontTest.php
index 8344ef568e7..6487f070651 100644
--- a/tests/scenarios/PortalBorrowers/PortalBorrowersFrontTest.php
+++ b/tests/scenarios/PortalBorrowers/PortalBorrowersFrontTest.php
@@ -242,6 +242,45 @@ class PortalBorrowersFrontRegisterActivationTest extends PortalBorrowersActivate
 
 
 
+/* hotline : https://forge.afi-sa.net/issues/186186 */
+class PortalBorrowersFrontRegisterActivationWithValidationDelayZeroTest
+  extends PortalBorrowersActivatedTestCase {
+
+  public function setUp() {
+    parent::setUp();
+
+    Class_AdminVar::set('PORTAL_BORROWERS_LIBRARIES_IDS', '1');
+    Class_AdminVar::set('PORTAL_BORROWERS_VALIDATION_DELAY', '0');
+
+    $time_source = (new TimeSourceForTest('2022-10-21 10:43:04'));
+    Class_User_ILSSubscription::setTimeSource($time_source);
+
+    $activation_key = 'zzhz';
+    $this->fixture(Class_UsersNonValid::class,
+                   ['id' => 188,
+                    'login' => 'newuser',
+                    'password' => 'pass',
+                    'mail' => 'user@server.io',
+                    'date' => $time_source->time(),
+                    'id_site' => '1',
+                    'civilite' => '1',
+                    'naissance' => '1977-08-18',
+                    'cle' => $activation_key]);
+
+    $this->dispatch('/opac/auth/activeuser?c=' . $activation_key);
+  }
+
+
+  /** @test */
+  public function createdUserDateFinShouldBeCurrentDayLessOne() {
+    $this->assertEquals('2022-10-20',
+                        Class_Users::findFirstBy(['login' => 'newuser'])->getDateFin());
+  }
+}
+
+
+
+
 class PortalBorrowersFrontDisabledRegisterTest extends PortalBorrowersDisabledTestCase {
   public function setUp() {
     parent::setUp();
-- 
GitLab