... eine Nacht und etliche Tassen Cappu später
@HerrB
Es liegt/lag nicht an der Reihenfolge der DB.
@emergence
es ist leicht nachzuvollziehen, nachdem ich nun weiß woran es lag.
in der con_area wird im Feld parent_id entweder die Bezeichnung des Elternelements (z.B. "groups") oder, falls es die oberste Ebene ist, eine "0" eingetragen.
Beim Dump der Datenbank vom Server mit phpmyadmin (2.6.0-rc2 auf MySQL 4.0.21) wird aber diese "0" im varchar-field parent_id einfach unterschlagen und ein Leereintrag erstellt.
Dieses sowohl beim Dump in Datei, als auch im SQL-Fenster von phpmyadmin.
Diese (doofe) Null wird aber bei der Erstellung des array $right_list in includes/rights.inc.php benötigt.
Code: Alles auswählen
while($db->next_record())
{
if($db->f("parent_id")=="0"){
$right_list[$db->f("name")][$db->f("name")]["perm"]=$db->f("name");
$right_list[$db->f("name")][$db->f("name")]["location"]=$db->f('location');
}else{
$right_list[$db->f("parent_id")][$db->f("name")]["perm"]=$db->f("name");
$right_list[$db->f("parent_id")][$db->f("name")]["location"] = $db->f('location');
}
$sql="SELECT * FROM ".$cfg["tab"]["actions"]." WHERE idarea='".$db->f("idarea")."' AND relevant='1'";
$db2->query($sql);
while($db2->next_record())
{
if($db->f("parent_id")=="0"){
$right_list[$db->f("name")][$db->f("name")]["action"][]=$db2->f("name");
}else{
$right_list[$db->f("parent_id")][$db->f("name")]["action"][]=$db2->f("name");
}
}
}
Hier wird die Erstellung des arrays über 'parent_id' == "0" gesteuert, fehlt die Null in der DB kommt ein vermurkstes array raus, das in der weiteren Verarbeitung den besagten Fehler macht.
Sicherlich kein Bug von Contenido, aber vielleicht wäre es überlegenswert eine andere Nichtbelegung für ein varchar-Feld zu nehmen als gerade eine Zahl. Auch ein NULL Eintrag läßt sich recht gut abfragen.
Zumindest könnte man die Erstellungsroutine insoweit ändern, das auch ein leeres parent_id-Feld überprüft wird.
Code: Alles auswählen
if($db->f("parent_id")=="0" || $db->f("parent_id")==""){
Gruß aus Franken
Ortwin