Es gibt im Output die Stelle, an der die zu verwendenden Kategorien ermittelt werden (Specifying search categories). In diesen Bereich musst Du für jede Kategorie prüfen, ob der Nutzer Zugriff hat.
Am Anfang der Ausgabe dies ergänzen:
Code: Alles auswählen
cInclude("frontend", "includes/functions.navigation.php");
(sicherstellen, dass diese Datei aus dem Beispiel-Mandanten im Mandanten-includes-Verzeichnis liegt)
Ich mache es mir mal einfach und berücksichtige nur "below" und "selected":
In der Schleife bei below:
Code: Alles auswählen
$sql = "SELECT a.idcat AS idcat, b.level AS level FROM ".$cfg["tab"]["cat"]." a, ".$cfg["tab"]["cat_tree"]." b ";
$sql .= "WHERE a.idcat = b.idcat ORDER BY b.idtree";
durch
Code: Alles auswählen
$sql = "SELECT a.idcat AS idcat, b.level AS level, c.idcatlang AS idcatlang, c.public AS public FROM ".$cfg["tab"]["cat"]." a, ".$cfg["tab"]["cat_tree"]." b, ".$cfg["tab"]["cat_lang"]." c ";
$sql .= "WHERE a.idcat = b.idcat AND c.idcat = a.idcat AND c.idlang = '".$lang."' ORDER BY b.idtree";
ersetzen.
durch
Code: Alles auswählen
if (checkCatPermission($db2->f("idcatlang"), $db2->f("public"))) {
$sSelCats .= ",'".$db2->f("idcat")."'";
}
ersetzen.
In der Schleife unter selected:
Code: Alles auswählen
$aCats = explode(",",$aSettings["AddCats"]);
foreach ($aCats as $value) {
if (is_numeric($value)) {
$sSelCats .= ",'".$value."'";
}
}
durch
Code: Alles auswählen
$sql = "SELECT a.idcat AS idcat, b.idcatlang AS idcatlang, b.public AS public FROM ".$cfg["tab"]["cat"]." a, ".$cfg["tab"]["cat_lang"]." b ";
$sql .= "WHERE a.idcat = b.idcat AND b.idlang = '".$lang."' AND a.idcat IN ('".implode("', '", explode(",",$aSettings["AddCats"]))."')";
$db2->query($sql);
while($db2->next_record()) {
if (checkCatPermission($db2->f("idcatlang"), $db2->f("public"))) {
$sSelCats .= ",'".$db2->f("idcat")."'";
}
}
ersetzen. Ungetestet.
Gruß
HerrB