Salut,
ich kämpfe grade mit der Memberlist-Core-Erweiterung.
Das erste Problem habe ich bereits gelöst: Es sollen alle Mitglieder aufgelistet werden, unabhängig von der Gruppe, in der sie sind, oder was bei den Moduleigenschaften gewählt wurde. Das konnte ich nur über einen Hack erledigen – oder habe ich was übersehen?
Was ich gemacht habe: Zeilen 146 bis 161 (je inklusive) in "/system/modules/memberlist/ModuleMemberlist.php" auskommentiert:
PHP-Code:
$this->Template->search_fields = $strOptions;
/* $strWhere .= "(";
// Filter groups
for ($i=0; $i<=$intGroupLimit; $i++)
{
if ($i < $intGroupLimit)
{
$strWhere .= "groups LIKE ? OR ";
$arrValues[] = '%"' . $this->arrMlGroups[$i] . '"%';
}
else
{
$strWhere .= "groups LIKE ?) AND "; $arrValues[] = '%"' . $this->arrMlGroups[$i] . '"%';
}
}
*/
// List active members only
$strWhere .= "(!ISNULL(publicFields) OR allowEmail=? OR allowEmail=?) AND disable!=1 AND (start
='' OR start<=?) AND (stop='' OR stop>=?)";
Lustigerweise werden dann die Einträge zwar aufgelistet, aber Detailseiten von Mitgliedern, die in einer Gruppe sind, werden nicht angezeigt (hingegen von denjenigen, die keiner Gruppe zugeordnet sind, schon). Dazu muss noch mehr auskommentiert (bzw. gelöscht) werden (Zeile 300):
PHP-Code:
if ($objMember->numRows < 1 /*|| count(array_intersect(deserialize($objMember->groups, true), $this->arrMlGroups)) < 1*/)
Ich muss ganz ehrlich sagen, dass die Art und Weise, wie die Mitgliederliste programmiert ist, mir überhaupt nicht gefällt … da hat Leo schon weit besseres abgeliefert (verstecktes Lob ). Aber das ist ein anderes Thema …
Zweites Problem: Es wird ein Eintrag in der Liste angezeigt, obwohl bei diesem keine Felder als "veröffentlichen" markiert sind. Datenbank meldet also für "tl_member.publicFields" den Inhalt "[BLOB - NULL]". Eigentlich sollten diese Zeilen über folgenden Code (ModuleMemberlist.php, Zeile 164) abgefangen werden:
PHP-Code:
$strWhere .= "(publicFields!='' OR allowEmail=? OR allowEmail=?) AND disable!=1 AND (start='' OR start<=?) AND (stop='' OR stop>=?)";
Selbst wenn ich das durch den folgenden, IMO korrekte(re)n Code ersetze, wird der Eintrag weiterhin angezeigt:
PHP-Code:
$strWhere .= "(ISNULL(publicFields) OR allowEmail=? OR allowEmail=?) AND disable!=1 AND (start='' OR start<=?) AND (stop='' OR stop>=?)";
Hat jemand ne Idee, wie ich das hinbekomme?
Lesezeichen