
Kann man das beheben?
Code: Alles auswählen
foreach ($area_tree[$mainarea] as $value)
{
// if the flag noright is set there are no rights in this area
if ($item_rights[$value] == "noright")
{
return false;
}
Code: Alles auswählen
#Check if any rights are applied to current user or his groups
$sql = "SELECT *
FROM ".$cfg["tab"]["rights"]."
WHERE user_id IN ('".$tmp_userstring."') AND idclient = '$client' AND idlang = '$lang' AND idcat = '".$value->id."'";
$db->query($sql);
if ($db->num_rows() != 0)
{
if (!$check_rights)
{
$check_rights = $perm->have_perm_area_action_item("con", "con_makestart",$value->id);
Code: Alles auswählen
if ($perm->have_perm_item("con", $item['idcat']))
{
$newItem->custom['forcedisplay'] = 1;
}
Code: Alles auswählen
if (!$check_rights)
{
$check_rights = $value->isCustomAttributeSet("forcedisplay");
}
Code: Alles auswählen
#Check if any rights are applied to current user or his groups
$sql = "SELECT *
FROM ".$cfg["tab"]["rights"]."
WHERE user_id IN ('".$tmp_userstring."') AND idclient = '$client' AND idlang = '$lang' AND idcat = '".$value->id."'";
$db->query($sql);
if ($db->num_rows() != 0)
{
if (!$check_rights)
{
$check_rights = $perm->have_perm_area_action_item("con", "con_makestart",$value->id);
}
if (!$check_rights)
{
$check_rights = $perm->have_perm_area_action_item("con", "con_makeonline",$value->id);
}
if (!$check_rights)
{
$check_rights = $perm->have_perm_area_action_item("con", "con_deleteart",$value->id);
}
if (!$check_rights)
{
$check_rights = $perm->have_perm_area_action_item("con", "con_tplcfg_edit",$value->id);
}
if (!$check_rights)
{
$check_rights = $perm->have_perm_area_action_item("con", "con_makecatonline",$value->id);
}
if (!$check_rights)
{
$check_rights = $perm->have_perm_area_action_item("con", "con_changetemplate",$value->id);
}
if (!$check_rights)
{
$check_rights = $perm->have_perm_area_action_item("con_editcontent", "con_editart",$value->id);
}
if (!$check_rights)
{
$check_rights = $perm->have_perm_area_action_item("con_editart", "con_edit",$value->id);
}
if (!$check_rights)
{
$check_rights = $perm->have_perm_area_action_item("con_editart", "con_newart",$value->id);
}
if (!$check_rights)
{
$check_rights = $perm->have_perm_area_action_item("con_editart", "con_saveart",$value->id);
}
}
}
if (!$check_rights)
{
$check_rights = $value->isCustomAttributeSet("forcedisplay");
}
Code: Alles auswählen
$check_rights = $value->isCustomAttributeSet("forcedisplay");
Ist zwar kein Bug, aber eine Performance-Bremse. Ist in 4.6.23 noch nicht gefixt. Vielleicht hat sich die Zeilennummber geändert.Brazo Alkher hat geschrieben:in der Datei perm.inc ist glaube ich in der Funktion have_perm_item() ein Fehler.
und zwar ab Zeile 682 steht:dort wird zweimal die Variable $area verwendet, die immer undefiniert ist.Code: Alles auswählen
$sql = "SELECT * FROM ".$cfg["tab"]["rights"]." WHERE user_id IN ('".implode("','", $groupsForUser)."') AND idclient = '$client' AND idlang = '$lang' AND idarea = '$area' AND idcat != '0'"; $db->query($sql); //if there are no rights for this area set the flag norights if ($db->affected_rows() == 0) { $item_rights[$area] = "noright"; }
Wahscheinlich müsste statt dessen die Variable $value verwendet werden, wenn ich die Funktion richtig verstanden habe
Contenido Version 4.6.15
Code: Alles auswählen
if (!$check_rights)
{
Code: Alles auswählen
if (!$check_rights)
{
$check_rights = $value->isCustomAttributeSet("forcedisplay");
}