From c4cc64a51f31d540cdcb1f639e31935cafdb234f Mon Sep 17 00:00:00 2001
From: Alex Arnaud <alex.arnaud@biblibre.com>
Date: Wed, 12 Mar 2025 15:33:15 +0100
Subject: [PATCH] hotline#218050 : Session activity form : don't show queue
 message if total max is over 0

---
 VERSIONS_HOTLINE/218050                       |  1 +
 library/Class/SessionActivity.php             |  1 +
 ...ActivitiesWithQueueAndZeroTotalMaxTest.php | 88 +++++++++++++++++++
 3 files changed, 90 insertions(+)
 create mode 100644 VERSIONS_HOTLINE/218050
 create mode 100644 tests/scenarios/Activities/ActivitiesWithQueueAndZeroTotalMaxTest.php

diff --git a/VERSIONS_HOTLINE/218050 b/VERSIONS_HOTLINE/218050
new file mode 100644
index 00000000000..021670660d8
--- /dev/null
+++ b/VERSIONS_HOTLINE/218050
@@ -0,0 +1 @@
+ - correctif #218050 : Formulaire d'inscritpion à une session : n'affiche pas le message de placement en attente si le total max est à 0.
\ No newline at end of file
diff --git a/library/Class/SessionActivity.php b/library/Class/SessionActivity.php
index 088161eb624..9843734d635 100644
--- a/library/Class/SessionActivity.php
+++ b/library/Class/SessionActivity.php
@@ -763,6 +763,7 @@ class Class_SessionActivity extends Storm_Model_Abstract {
   public function acceptAttendeesOnlyInQueue(): bool
   {
     return $this->getQueueAttendees()
+      && $this->getEffectifTotalMax() > 0
       && ($this->getTotalRegistered() >= $this->getEffectifTotalMax());
   }
 
diff --git a/tests/scenarios/Activities/ActivitiesWithQueueAndZeroTotalMaxTest.php b/tests/scenarios/Activities/ActivitiesWithQueueAndZeroTotalMaxTest.php
new file mode 100644
index 00000000000..c35dfe881a2
--- /dev/null
+++ b/tests/scenarios/Activities/ActivitiesWithQueueAndZeroTotalMaxTest.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * Copyright (c) 2012-2025, Agence Française Informatique (AFI). All rights reserved.
+ *
+ * BOKEH is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE as published by
+ * the Free Software Foundation.
+ *
+ * There are special exceptions to the terms and conditions of the AGPL as it
+ * is applied to this software (see README file).
+ *
+ * BOKEH is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * along with BOKEH; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
+ */
+
+
+class ActivitiesWithQueueAndZeroTotalMaxTest extends AbstractControllerTestCase
+{
+  public function setUp(): void
+  {
+    parent::setUp();
+    $this->_buildTemplateProfil(['id' => 1]);
+    $time = new TimeSourceForTest('2024-04-01 14:00:00');
+
+    Class_Activity::setTimeSource($time);
+    Class_SessionActivity::setTimeSource($time);
+    Class_SessionActivityInscription::setTimeSource($time);
+
+    Class_AdminVar::set('ACTIVITY', '1');
+    Class_AdminVar::set('ACTIVITY_SESSION_QUOTAS', '1');
+
+    $groupe = $this->fixture(Class_UserGroup::class,
+                             ['id' => 12,
+                              'libelle' => 'Stagiaires',
+                              'rights' => [Class_UserGroup::RIGHT_SUIVRE_ACTIVITY]]);
+
+    $user = $this->fixture(Class_Users::class,
+                           ['id' => 435,
+                            'prenom' => 'Chichi',
+                            'nom' => 'Ro',
+                            'login' => 'Chichiro',
+                            'password' => 'pwd',
+                            'mail' => 'chichi@ro.fr',
+                            'id_site' => 12,
+                            'user_groups' => [$groupe]]);
+
+    ZendAfi_Auth::getInstance()->logUser($user);
+
+    $this->fixture(Class_Activity::class,
+                   ['id' => 33,
+                    'libelle' => 'Apprendre à nager']);
+
+    $this->fixture(Class_SessionActivity::class,
+                   ['id' => 35,
+                    'activity_id' => 33,
+                    'date_debut' => '2024-04-20',
+                    'date_fin' => '2024-04-20',
+                    'effectif_min' => 0,
+                    'effectif_max' => 3,
+                    'effectif_child_min' => 0,
+                    'effectif_child_max' => 0,
+                    'age_child_max' => 0,
+                    'effectif_inscription_max' => 2,
+                    'effectif_inscription_child_max' => 0,
+                    'effectif_total_min' => 0,
+                    'effectif_total_max' => 0,
+                    'duree'=> 2,
+                    'contenu' => 'Intro à la natation',
+                    'horaires' => '9h',
+                    'date_limite_inscription'=>'2024-04-19',
+                    'queue_attendees' => true
+                   ]);
+
+    $this->dispatch('/opac/abonne/inscrire-session/id/35');
+  }
+
+  /** @test */
+  public function messageYouWillBePutInQueueShouldNotBeDisplayed()
+  {
+    $this->assertNotXpathContentContains('//div', 'Vous serez placé.e en liste d\'attente');
+  }
+}
-- 
GitLab