Fix granted bases order

This commit is contained in:
Romain Neutron
2012-01-19 12:24:09 +01:00
parent c7abf22256
commit 8b15f3b732

View File

@@ -621,32 +621,42 @@ class ACL implements cache_cacheableInterface
$this->load_rights_bas(); $this->load_rights_bas();
$ret = array(); $ret = array();
foreach ($this->_rights_bas as $base_id => $datas) foreach($this->appbox->get_databoxes() as $databox)
{ {
$continue = false; if ($sbas_ids && !in_array($databox->get_sbas_id(), $sbas_ids))
if ($sbas_ids && !in_array(phrasea::sbasFromBas($base_id), $sbas_ids))
{ {
continue; continue;
} }
foreach ($rights as $right)
foreach ($databox->get_collections() as $collection)
{ {
if (!$this->has_right_on_base($base_id, $right)) $continue = false;
if(!array_key_exists($collection->get_base_id(), $this->_rights_bas))
continue;
$base_id = $collection->get_base_id();
$datas = $this->_rights_bas[$base_id];
foreach ($rights as $right)
{ {
$continue = true; if (!$this->has_right_on_base($base_id, $right))
break; {
$continue = true;
break;
}
} }
} if ($continue || $this->is_limited($base_id))
if ($continue || $this->is_limited($base_id)) continue;
continue;
try try
{ {
$ret[$base_id] = collection::get_from_base_id($base_id); $ret[$base_id] = collection::get_from_base_id($base_id);
} }
catch (Exception $e) catch (Exception $e)
{ {
}
} }
} }