La fonction _access teste si l'utilisateur a acces ŕ la
rubrique, mais en cas d'erreur, il ne teste pas s'il a
acces ŕ la rubrique parent.
Le patch suivant corrige le problčme:
/**
* Check if an user have access to a rubrique
* or have access to a parent rubrique
*
* @var int $id_user ID of an user
* @var int $id_rubrique ID of a rubrique
* @return int If successfull 1 else 0
* @access privat
*/
function _access($id_user, $id_rubrique)
{
if ($this->_accessDirect ($id_user, $id_rubrique))
return 1;
$sql = " SELECT id_parent FROM spip_rubriques
WHERE id_rubrique='$id_rubrique';";
echo "$sql";
$this->_xp->query($sql, '_accessloop');
if($this->_xp->numRows('_accessloop') < 1)
die ("ERROR missing rubrique $id_rubrique");
$result = $this->_xp->fetchRow('DB_GETMODE_ASSOC',
'_accessloop');
if ($result['id_parent']==0)
return 0; // Top folder, nothing more to test
return ($this->_access ($id_user,
$result['id_parent']));
}
Il faut renommer la methode _access en _accessDirect
Voila,
Xavier
Logged In: YES
user_id=916415
Evidemment, il faut virer echo "$sql"; Oops.