Skip to content
Extraits de code Groupes Projets
Valider f766a4ce rédigé par Fil's avatar Fil
Parcourir les fichiers

l'autorisation d'editer un document, c'est un beau melange de choses...

l'autorisation d'editer un document, c'est un beau melange de choses compliquees... si on n'avait deja qu'une seule et unique table de jointure pour trouver nos liens on gagnerait du temps, a revoir
parent 6e8e2f78
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -213,6 +213,47 @@ function autoriser_joindredocument_dist($faire, $type, $id, $qui, $opt){
AND autoriser('ecrire', $type, $id, $qui, $opt)
);
}
// On ne peut modifier un document que s'il est lie a un objet qu'on a le droit
// d'editer *et* qu'il n'est pas lie a un objet qu'on n'a pas le droit d'editer
// http://doc.spip.org/@autoriser_document_modifier_dist
function autoriser_document_modifier_dist($faire, $type, $id, $qui, $opt){
static $m = array();
if ($qui['statut'] == '0minirezo'
AND !$qui['restreint'])
return true;
if (!isset($m[$id])) {
$interdit = false;
$vu = true;
include_spip('public/interfaces');
$jointures = array_diff(
$GLOBALS['tables_jointures']['spip_documents'],
array('types_documents', 'mots')
);
foreach($jointures as $j) {
$type = preg_replace(',s?_?documents?_?|s$,', '', $j);
$id_table = id_table_objet($type);
$s = spip_query("SELECT $id_table FROM spip_$j WHERE id_document="._q($id));
while ($t = spip_fetch_array($s)) {
spip_log($t);
if (autoriser('modifier', $type, $t[$id_table], $qui, $opt)) {
$vu = true;
}
else {
$interdit = true;
break 2;
}
}
}
$m[$id] = ($vu && !$interdit);
}
return $m[$id];
}
// Autoriser a modifier la breve $id
// = admins & redac si la breve n'est pas publiee
// = admins de rubrique parente si publiee
......
......@@ -489,6 +489,8 @@ function id_table_objet($type) {
return 'id_document';
else if ($type == 'petition')
return 'id_article';
else if ($type == 'type')
return 'extension';
else {
$t = "spip_".table_objet($type);
global $tables_principales;
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter