| ... | ... |
@@ -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(); |