Browse code

[Bugfix] Consider no assigned groups for members

Sebastian Zoglowek authored on23/05/2022 22:40:54
Showing1 changed files
... ...
@@ -83,30 +83,30 @@ class ModuleMemberList extends ModuleMemberExtension
83 83
             return;
84 84
         }
85 85
 
86
+        $objTemplate = new FrontendTemplate($this->memberListTpl ?: $this->strMemberTemplate);
87
+
86 88
         $objMembers = $this->getMembers();
87 89
         $arrMembers = [];
88 90
 
89
-        if($objMembers->count())
91
+        if(null !== $objMembers)
90 92
         {
91 93
             while($objMembers->next())
92 94
             {
93
-                $memberGroups = StringUtil::deserialize($objMembers->groups);
95
+                $objMember = $objMembers->current();
94 96
 
95
-                if(!\count(array_intersect($arrGroups, $memberGroups)))
97
+                if(!$this->checkMemberGroups($arrGroups, $objMember))
96 98
                 {
97 99
                     continue;
98 100
                 }
99 101
 
100 102
                 $arrMemberFields = StringUtil::deserialize($this->memberFields, true);
103
+                $objTemplate->setData($objMember->row());
101 104
 
102
-                $objTemplate = new FrontendTemplate($this->memberListTpl ?: $this->strMemberTemplate);
103
-                $objTemplate->setData($objMembers->current()->row());
104
-
105
-                $arrMembers[] = $this->parseMemberTemplate($objMembers->current(), $objTemplate, $arrMemberFields, $this->imgSize);
105
+                $arrMembers[] = $this->parseMemberTemplate($objMember, $objTemplate, $arrMemberFields, $this->imgSize);
106 106
             }
107 107
         }
108 108
 
109
-        if(null === $arrMembers)
109
+        if(empty($arrMembers))
110 110
         {
111 111
             $this->Template->empty = $GLOBALS['TL_LANG']['MSC']['emptyMemberList'];
112 112
         }
... ...
@@ -115,11 +115,35 @@ class ModuleMemberList extends ModuleMemberExtension
115 115
 	}
116 116
 
117 117
     /**
118
+     * Checks whether a member is in any given group
119
+     *
120
+     * @param array $arrGroups
121
+     * @param MemberModel $objMember
122
+     * @return bool
123
+     */
124
+    private function checkMemberGroups(array $arrGroups, MemberModel $objMember): bool
125
+    {
126
+        if(empty($arrGroups))
127
+        {
128
+            return false;
129
+        }
130
+
131
+        $arrMemberGroups = StringUtil::deserialize($objMember->groups);
132
+
133
+        if(!\is_array($arrMemberGroups) || !\count(array_intersect($arrGroups, $arrMemberGroups)))
134
+        {
135
+            return false;
136
+        }
137
+
138
+        return true;
139
+    }
140
+
141
+    /**
118 142
      * Get members
119 143
      *
120 144
      * @return Collection|MemberModel|null
121 145
      */
122
-    protected function getMembers()
146
+    private function getMembers()
123 147
     {
124 148
         $arrOptions = [];
125 149
         $t = MemberModel::getTable();