]> git.agnieray.net Git - galette.git/commitdiff
Rework getSelectizedMembers to take care of group managers
authorJohan Cwiklinski <johan@x-tnd.be>
Mon, 22 Nov 2021 20:53:39 +0000 (21:53 +0100)
committerJohan Cwiklinski <johan@x-tnd.be>
Mon, 22 Nov 2021 20:53:39 +0000 (21:53 +0100)
galette/includes/routes/ajax.routes.php
galette/lib/Galette/Controllers/Crud/ContributionsController.php
galette/lib/Galette/Controllers/Crud/MembersController.php
galette/lib/Galette/Controllers/Crud/TransactionsController.php
galette/lib/Galette/Middleware/MembersNavigate.php
galette/lib/Galette/Repository/Members.php

index bcfac2d7136079e94604171126c7f1d2f014d03e..4b2deeba7ef113e8506e7fffc99bebd0536fe1db 100644 (file)
@@ -282,7 +282,7 @@ $app->group('/ajax', function () use ($authenticate) {
             }
 
             $m = new Members($filters);
-            $list_members = $m->getSelectizedMembers($this->get('zdb'));
+            $list_members = $m->getSelectizedMembers($this->get('zdb'), $this->get('login'));
 
             $members = [];
             if (count($list_members) > 0) {
index 78f78ae45714454d9c99f013fbe9a3473c4c9700..bb4aa5e07c231feba8792bdc6b535dda23c022f3 100644 (file)
@@ -118,6 +118,7 @@ class ContributionsController extends CrudController
         $m = new Members();
         $members = $m->getSelectizedMembers(
             $this->zdb,
+            $this->login,
             $contrib->member > 0 ? $contrib->member : null
         );
 
index eb7328896c8b3de782ce23155154c165a90ca2b9..1061009e2e94a7553cd1678ab9e7357818986c28 100644 (file)
@@ -140,6 +140,7 @@ class MembersController extends CrudController
         $m = new Members();
         $members = $m->getSelectizedMembers(
             $this->zdb,
+            $this->login,
             $member->hasParent() ? $member->parent->id : null
         );
 
@@ -1156,6 +1157,7 @@ class MembersController extends CrudController
         }
         $members = $m->getSelectizedMembers(
             $this->zdb,
+            $this->login,
             $pid
         );
 
index bc58aa6c67491b3b40ffb589dd8e197d852f1796..6f557249ca7516396c1833677789f926abea8be5 100644 (file)
@@ -173,6 +173,7 @@ class TransactionsController extends ContributionsController
         $m = new Members();
         $members = $m->getSelectizedMembers(
             $this->zdb,
+            $this->login,
             $trans->member > 0 ? $trans->member : null
         );
 
index 2f5fac55a24e4816c2b791be6023fd309d8dac15..f6907fe05b73bebc1c263f9867661dc8bc3a315c 100644 (file)
@@ -110,7 +110,15 @@ class MembersNavigate
             || $this->login->isGroupManager()
         ) {
             $m = new Members($filters);
-            $ids = $m->getList(false, array(Adherent::PK, 'nom_adh', 'prenom_adh'));
+
+            $ids = array();
+            $fields = [Adherent::PK, 'nom_adh', 'prenom_adh'];
+            if ($this->login->isAdmin() || $this->login->isStaff()) {
+                $ids = $m->getMembersList(false, $fields);
+            } else {
+                $ids = $m->getManagedMembersList(false, $fields);
+            }
+
             $ids = $ids->toArray();
             foreach ($ids as $k => $m) {
                 if ($m['id_adh'] == $args['id']) {
index 383f8a4b478d2677eb4f808236d392595080706c..09cb8cdd07fcfd977b18bb5907ef6ebbf9dec56c 100644 (file)
@@ -36,6 +36,7 @@
 
 namespace Galette\Repository;
 
+use Galette\Core\Login;
 use Galette\Entity\Social;
 use Throwable;
 use Galette\DynamicFields\DynamicField;
@@ -1760,11 +1761,12 @@ class Members
      * Get members list to instanciate dropdowns
      *
      * @param Db      $zdb     Database instance
+     * @param Login   $login   Login instance
      * @param integer $current Current member
      *
      * @return array
      */
-    public function getSelectizedMembers(Db $zdb, $current = null)
+    public function getSelectizedMembers(Db $zdb, Login $login, $current = null)
     {
         $members = [];
         $required_fields = array(
@@ -1773,7 +1775,13 @@ class Members
             'prenom_adh',
             'pseudo_adh'
         );
-        $list_members = $this->getList(false, $required_fields);
+
+        $list_members = [];
+        if ($login->isAdmin() || $login->isStaff()) {
+            $list_members = $this->getList(false, $required_fields);
+        } elseif ($login->isGroupManager()) {
+            $list_members = $this->getManagedMembersList(false, $required_fields);
+        }
 
         if (count($list_members) > 0) {
             foreach ($list_members as $member) {