[BUG 4.9.8] Anzeigeoptionen Benutzer einer Frontend-Gruppe

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
beloved_behated
Beiträge: 55
Registriert: Mi 25. Nov 2009, 16:08
Kontaktdaten:

[BUG 4.9.8] Anzeigeoptionen Benutzer einer Frontend-Gruppe

Beitrag von beloved_behated » Fr 11. Sep 2015, 08:25

Hallo,

wenn ich im Backend unter Frontend die Anzeigeoptionen so anpasse, dass ich nur Benutzer einer Frontend-Gruppe angezeigt bekommen möchte, bekomme ich folgende Fehlermeldung:

Fatal error: Uncaught exception 'cUnexpectedValueException' with message 'The join partner 'cApiFrontendUserCollection' is not registered and can not be used with link().' in /xxx/contenido/classes/genericdb/class.item.collection.php:518 Stack trace: #0 /xxx/contenido/classes/genericdb/class.item.collection.php(589): ItemCollection->_fetchJoinTables() #1 /xxx/contenido/includes/include.frontend.user_menu.php(173): ItemCollection->query() #2 /xxx/contenido/main.php(203): include_once('/xxx/...') #3 {main} thrown in /xxx/contenido/classes/genericdb/class.item.collection.php on line 518

Leider scheint der gleiche Fehler bereits seit der 4.9.4 zu bestehen.
Ich benötige dafür dringend eine Lösung!
Kann jemand helfen?

homtata
Beiträge: 1064
Registriert: Mi 14. Jan 2004, 14:41
Kontaktdaten:

Re: [BUG 4.9.8] Anzeigeoptionen Benutzer einer Frontend-Grup

Beitrag von homtata » Fr 11. Sep 2015, 09:06

Yep, ich kann das für die 4.9.7 auch bestätigen (Neuinstallation). Ich sehe zwar keine Fehlermeldungsoutput, aber das Script steigt aus.

Das Problem besteht (auf die 4.9.7 bezogen) wohl in
include.frontend.user_menu.php

etwa ab Zeile 154:

Code: Alles auswählen

if ($_REQUEST["restrictgroup"] != "" && $_REQUEST["restrictgroup"] != "--all--") {
    $oFEUsers->link("cApiFrontendGroupMemberCollection");
    $oFEUsers->setWhere("cApiFrontendGroupMemberCollection.idfrontendgroup", $_REQUEST["restrictgroup"]);
}

$mPage = $_REQUEST["page"];
$elemperpage = $_REQUEST["elemperpage"];

$iFullTableCount = 0;
if ($bUsePlugins == false) {
    $oFEUsers->query();

    $iFullTableCount = $oFEUsers->count();

    $oFEUsers->setOrder(implode(" ", array(
        $oSelectSortBy->getDefault(),
        $oSelectSortOrder->getDefault()
    )));
    $oFEUsers->setLimit($elemperpage *($mPage - 1), $elemperpage);
} else {
    $oFEUsers->query();
    $iFullTableCount = $oFEUsers->count();
}

if ($_REQUEST["elemperpage"] * ($_REQUEST["page"]) >= $iFullTableCount + $_REQUEST["elemperpage"] && $_REQUEST["page"] != 1) {
    $_REQUEST["page"]--;
    $mPage--;
}
Die Befehle

Code: Alles auswählen

$oFEUsers->query();
beenden das Skript mit einem Fehler und es steigt aus.

Ich habe getestet, dass $_REQUEST["restrictgroup"] noch mit dem im Backend-Dropdown gewählten Wert übereinstimmt und auch in Zeile 156 ankommt. Und die "if"-Schleife ab 154 wird korrekterweise auch durchlaufen, wenn das Dropdown umgestellt wird.

Ich habe noch etwas weiter getestet, und es scheint die Zeile

Code: Alles auswählen

$oFEUsers->link("cApiFrontendGroupMemberCollection");
zu sein, die das Skript zuerst zum Absturz bringt, obwohl der Klassenname an sich stimmt. Kommentiert man diese und die Folgezeile aus, hören die Abstürze auf.

beloved_behated
Beiträge: 55
Registriert: Mi 25. Nov 2009, 16:08
Kontaktdaten:

Re: [BUG 4.9.8] Anzeigeoptionen Benutzer einer Frontend-Grup

Beitrag von beloved_behated » Fr 11. Sep 2015, 10:20

Danke... ich muss dazu sagen, dass ich die Fehlerausgabe aktiviert habe und dadurch natürlich der Fehler angezeigt wird...

Das Auskommentieren der Zeilen bringt mich hier leider nicht weiter, habe ja dadurch nicht die gewünschte Ausgabe der Benutzer nach Gruppen ;)

Ich bin weiter auf die Suche gegangen und denke es liegt an den Klassen cApiFrontendGroupMemberCollection, cApiFrontendUserCollection, cApiFrontendGroupCollection ... die Verknüpfung der Datenbank-Tabellen con_frontendusers, con_frontendgroups und con_frontendgroupmembers über "Joins" funktioniert nicht korrekt...

Komme da aber leider nicht weiter..

thomas.stauer_4fb
Beiträge: 27
Registriert: Di 23. Dez 2014, 14:08
Kontaktdaten:

Re: [BUG 4.9.8] Anzeigeoptionen Benutzer einer Frontend-Grup

Beitrag von thomas.stauer_4fb » Fr 11. Sep 2015, 14:00

Danke für die Fehlermeldung.

Ich habe dazu ein Ticket für die nächste Version angelegt:
https://issues.contenido.org/browse/CON-2397

Bernbacher
Beiträge: 62
Registriert: Fr 21. Jan 2011, 13:29
Kontaktdaten:

Re: [BUG 4.9.8] Anzeigeoptionen Benutzer einer Frontend-Grup

Beitrag von Bernbacher » Mi 26. Okt 2016, 21:52

Der Fehler besteht leider immer noch in 4.9.11 :cry:

frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: [BUG 4.9.8] Anzeigeoptionen Benutzer einer Frontend-Grup

Beitrag von frederic.schneider_4fb » Do 3. Nov 2016, 09:29

Wir haben das Problem vorerst mit keiner sehr hohen Priorität versehen, deshalb ist das derzeit auch nicht für die nächste Version vorgesehen. Ich habe das Thema aber mal auf dem Schirm, damit es nicht verloren geht!
Frederic Schneider
Entwickler bei der four for business AG

Oldperl
Beiträge: 4101
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: [BUG 4.9.8] Anzeigeoptionen Benutzer einer Frontend-Grup

Beitrag von Oldperl » Fr 4. Nov 2016, 13:20

Servus,

das hier benannte Problem ist nicht ganz so einfach zu lösen. Es wird in diesem Fall auf eine Methode (->link()) der Generic DB zurückgegriffen, die in diesem Fall so nicht anwendbar ist. Den technischen Hintergrund erspare ich mir hier, das ist wohl eher ein Fall für mein Entwickler-Buch. Nur so viel - es soll eine Hilfstabelle per Left Join eingebunden werden, was aber aufgrund mangelnder ID-Querverweise hier nicht möglich ist.

Ich habe das Problem nun anders gelöst. Dazu müssen 2 Dateien modifiziert werden. Zum einen die Datei include.frontend.user_menu.php ab Zeile 123 und zum Anderen die Datei include.frontend.left_top.php ab Zeile 284. Dort steht folgender Code, der für die Filterung nach Gruppen bei der DB-Abfrage zuständig sein soll, jedoch so nicht funktioniert, sondern besagten Fehler auslöst.

Code: Alles auswählen

if ($_REQUEST["restrictgroup"] != "" && $_REQUEST["restrictgroup"] != "--all--") {
    $oFEUsers->link("cApiFrontendGroupMemberCollection");
    $oFEUsers->setWhere("cApiFrontendGroupMemberCollection.idfrontendgroup", $_REQUEST["restrictgroup"]);
}
Diesen nun bitte mit folgendem Code ersetzen

Code: Alles auswählen

if ($_REQUEST["restrictgroup"] != "" && $_REQUEST["restrictgroup"] != "--all--") {
    // mod (c) by Ortwin Pinke aka Oldperl, see forum topic http://forum.contenido.org/viewtopic.php?f=98&t=36554
    $oFrontendGroupMembers = new cApiFrontendGroupMemberCollection();
    $oFrontendGroupMembers->addResultField('idfrontenduser');
    $oFrontendGroupMembers->setWhere('idfrontendgroup', $_REQUEST["restrictgroup"]);
    $oFrontendGroupMembers->query();
    
    $aTable = $oFrontendGroupMembers->fetchTable(array('idfrontenduser'=>'idfrontenduser'));
    
    $aGroupMembers = array();
    
    if(count($aTable) > 0) {
        foreach ($aTable as $sKey => $aItem) {
            $aGroupMembers[] = $aItem['idfrontenduser'];
        }
    }
    if(count($aGroupMembers) == 0) {
        $aGroupMembers[] = 0;
    }
    $oFEUsers->setWhere("cApiFrontendUserCollection.idfrontenduser", $aGroupMembers, "in");
} 
Könnte das bitte nochmal Jemand ausführlich testen. Ich habe nur ein paar grundsätzliche Tests im Demomandanten gemacht. Ein ausführlicher Test mit einer größeren Anzahl Frontend-Nutzern und -Gruppen fehlt noch.

Gruß aus Franken

Ortwin
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Faar
Beiträge: 1560
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: [BUG 4.9.8] Anzeigeoptionen Benutzer einer Frontend-Grup

Beitrag von Faar » Fr 4. Nov 2016, 16:03

Oldperl hat geschrieben:Servus,
Hoi!
Könnte das bitte nochmal Jemand ausführlich testen.


Mit zwei Usern und zwei Gruppen getestet und für gut befunden.

Gruß aus Berlin,

Frank
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

Bernbacher
Beiträge: 62
Registriert: Fr 21. Jan 2011, 13:29
Kontaktdaten:

Re: [BUG 4.9.8] Anzeigeoptionen Benutzer einer Frontend-Grup

Beitrag von Bernbacher » Sa 10. Dez 2016, 20:29

Vielen lieben Dank Ortwin für das vorgezogene Weihnachtsgeschenk! Habs erst jetzt entdeckt und gleich getestet:
zumindest bei 68 Usern und 17 Gruppen funktionierts bisher bei mir ohne Probleme. DaS erleichtert mir eniges!
Vielen Dank nochmal von einem anderen Franken :D

Oldperl
Beiträge: 4101
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: [BUG 4.9.8] Anzeigeoptionen Benutzer einer Frontend-Grup

Beitrag von Oldperl » So 11. Dez 2016, 18:04

Bernbacher hat geschrieben:Vielen lieben Dank Ortwin...
Immer gerne! :) Freut mich wenn ich helfen konnte. Dank an Dich für' s Testen und Dein Feedback.

Gruß aus Franken

Ortwin
CONTENIDO 4.9 Entwickler-Handbuch - Publikation auf medium.com zu meinem angedachten Entwickler-Buch zu CONTENIDO 4.9
ConLite 2.0, alternatives und stabiles Update von Contenido 4.8.x
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Antworten