PhpDoc sur quelques autorisations, l'édition de liens

svn/root/tags/spip-3.0.4
Matthieu Marcillaud 11 years ago
parent 39dcd70f61
commit 6782c145d0

@ -10,20 +10,26 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* API d'édition de liens
*
* @package SPIP\Liens\API
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
/**
* API
*/
/**
* Teste l'existence de la table xxx_liens et renvoie celle ci precedee
* de la cle primaire.
* Renvoie false si l'objet n'est pas associable.
* Teste l'existence de la table de liaison xxx_liens d'un objet
*
* @api
* @param string $objet
* Objet à tester
* @return array|bool
* - false si l'objet n'est pas associable.
* - array(clé primaire, nom de la table de lien) si associable
*/
function objet_associable($objet){
$trouver_table = charger_fonction('trouver_table','base');
@ -41,7 +47,8 @@ function objet_associable($objet){
}
/**
* Associer un ou des objets a des objets listes
* Associer un ou des objets à des objets listés
*
* $objets_source et $objets_lies sont de la forme
* array($objet=>$id_objets,...)
* $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
@ -54,7 +61,8 @@ function objet_associable($objet){
* on peut passer optionnellement une qualification du (des) lien(s) qui sera
* alors appliquee dans la foulee.
* En cas de lot de liens, c'est la meme qualification qui est appliquee a tous
*
*
* @api
* @param array $objets_source
* @param array|string $objets_lies
* @param array $qualif
@ -71,7 +79,8 @@ function objet_associer($objets_source, $objets_lies, $qualif = null){
/**
* Dissocier un (ou des) objet(s) des objets listes
* Dissocier un (ou des) objet(s) des objets listés
*
* $objets_source et $objets sont de la forme
* array($objet=>$id_objets,...)
* $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
@ -83,7 +92,7 @@ function objet_associer($objets_source, $objets_lies, $qualif = null){
* un * pour $objet,$id_objet permet de traiter par lot
* seul le type de l'objet source ne peut pas accepter de joker et doit etre explicite
*
*
* @api
* @param array $objets_source
* @param array|string $objets_lies
* @return bool|int
@ -95,7 +104,8 @@ function objet_dissocier($objets_source,$objets_lies){
/**
* Qualifier le lien entre un (ou des) objet(s) et des objets listes
* Qualifier le lien entre un (ou des) objet(s) et des objets listés
*
* $objets_source et $objets sont de la forme
* array($objet=>$id_objets,...)
* $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
@ -107,6 +117,7 @@ function objet_dissocier($objets_source,$objets_lies){
* un * pour $objet,$id_objet permet de traiter par lot
* seul le type de l'objet source ne peut pas accepter de joker et doit etre explicite
*
* @api
* @param array $objets_source
* @param array|string $objets_lies
* @param array $qualif
@ -119,6 +130,7 @@ function objet_qualifier_liens($objets_source,$objets_lies,$qualif){
/**
* Trouver les liens entre objets
*
* $objets_source et $objets sont de la forme
* array($objet=>$id_objets,...)
* $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
@ -139,7 +151,7 @@ function objet_qualifier_liens($objets_source,$objets_lies,$qualif){
* 'document'=>23,'article'=>12)
* )
*
*
* @api
* @param array $objets_source
* @param array|string $objets_lies
* @return array
@ -151,6 +163,7 @@ function objet_trouver_liens($objets_source,$objets_lies){
/**
* Nettoyer les liens morts vers des objets qui n'existent plus
*
* $objets_source et $objets sont de la forme
* array($objet=>$id_objets,...)
* $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
@ -161,7 +174,8 @@ function objet_trouver_liens($objets_source,$objets_lies){
*
* un * pour $objet,$id_objet permet de traiter par lot
* seul le type de l'objet source ne peut pas accepter de joker et doit etre explicite
*
*
* @api
* @param array $objets_source
* @param array|string $objets_lies
* @return int
@ -175,12 +189,12 @@ function objet_optimiser_liens($objets_source,$objets_lies){
* Dupliquer tous les liens entrant ou sortants d'un objet
* vers un autre (meme type d'objet, mais id different)
*
* Renvoie le nombre de liens copies
*
* @api
* @param string $objet
* @param int $id_source
* @param int $id_cible
* @return int
* Nombre de liens copiés
*/
function objet_dupliquer_liens($objet,$id_source,$id_cible){
include_spip('base/objets');
@ -213,8 +227,8 @@ function objet_dupliquer_liens($objet,$id_source,$id_cible){
/**
* Fonction generique
* appliquer une operation de liaison entre un ou des objets et des objets listes
* Fonction générique qui
* applique une operation de liaison entre un ou des objets et des objets listés
* $objets_source et $objets_lies sont de la forme
* array($objet=>$id_objets,...)
* $id_objets peut lui meme etre un scalaire ou un tableau pour une liste d'objets du meme type
@ -227,6 +241,7 @@ function objet_dupliquer_liens($objet,$id_source,$id_cible){
* alors appliquee dans la foulee.
* En cas de lot de liens, c'est la meme qualification qui est appliquee a tous
*
* @internal
* @param string $operation
* @param array $objets_source
* @param array $objets_lies
@ -269,7 +284,7 @@ function objet_traiter_liaisons($operation,$objets_source,$objets_lies, $set = n
/**
* Sous fonction insertion
* qui traite les liens pour un objet source dont la cle primaire
* qui traite les liens pour un objet source dont la clé primaire
* et la table de lien sont fournies
*
* $objets et de la forme
@ -277,6 +292,7 @@ function objet_traiter_liaisons($operation,$objets_source,$objets_lies, $set = n
*
* Retourne le nombre d'insertions realisees
*
* @internal
* @param string $objet_source
* @param string $primary
* @param sgring $table_lien
@ -343,6 +359,7 @@ function lien_insert($objet_source,$primary,$table_lien,$id,$objets) {
/**
* Fabriquer la condition where en tenant compte des jokers *
*
* @internal
* @param string $primary
* @param int|string|array $id_source
* @param string $objet
@ -384,13 +401,14 @@ function lien_where($primary, $id_source, $objet, $id_objet){
/**
* Sous fonction suppression
* qui traite les liens pour un objet source dont la cle primaire
* qui traite les liens pour un objet source dont la clé primaire
* et la table de lien sont fournies
*
* $objets et de la forme
* array($objet=>$id_objets,...)
* un * pour $id,$objet,$id_objets permet de traiter par lot
*
* @internal
* @param string $objet_source
* @param string $primary
* @param sgring $table_lien
@ -464,13 +482,14 @@ function lien_delete($objet_source,$primary,$table_lien,$id,$objets){
/**
* Sous fonction optimisation
* qui nettoie les liens morts (vers un objet inexistant)
* pour un objet source dont la cle primaire
* pour un objet source dont la clé primaire
* et la table de lien sont fournies
*
* $objets et de la forme
* array($objet=>$id_objets,...)
* un * pour $id,$objet,$id_objets permet de traiter par lot
*
* @internal
* @param string $objet_source
* @param string $primary
* @param sgring $table_lien
@ -526,7 +545,7 @@ function lien_optimise($objet_source,$primary,$table_lien,$id,$objets){
/**
* Sous fonction qualification
* qui traite les liens pour un objet source dont la cle primaire
* qui traite les liens pour un objet source dont la clé primaire
* et la table de lien sont fournies
*
* $objets et de la forme
@ -536,6 +555,7 @@ function lien_optimise($objet_source,$primary,$table_lien,$id,$objets){
* exemple :
* $qualif = array('vu'=>'oui');
*
* @internal
* @param string $objet_source
* @param string $primary
* @param sgring $table_lien
@ -574,7 +594,7 @@ function lien_set($objet_source,$primary,$table_lien,$id,$objets,$qualif){
/**
* Sous fonction trouver
* qui cherche les liens pour un objet source dont la cle primaire
* qui cherche les liens pour un objet source dont la clé primaire
* et la table de lien sont fournies
*
* $objets et de la forme
@ -582,6 +602,7 @@ function lien_set($objet_source,$primary,$table_lien,$id,$objets,$qualif){
* un * pour $id,$objet,$id_objets permet de traiter par lot
*
*
* @internal
* @param string $objet_source
* @param string $primary
* @param sgring $table_lien
@ -607,8 +628,9 @@ function lien_find($objet_source,$primary,$table_lien,$id,$objets){
}
/**
* Propager la date_modif sur les objets dont un lien a ete modifie
* Propager la date_modif sur les objets dont un lien a été modifié
*
* @internal
* @param string $objet
* @param array|int $ids
*/

@ -10,6 +10,15 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Déclare la liste des tables auxiliaires
*
* @todo
* Nettoyages à faire dans le core : on ne devrait plus appeler
* Ce fichier mais directement base/objets si nécessaire
*
* @package SPIP\SQL\Tables
**/
if (!defined('_ECRIRE_INC_VERSION')) return;

@ -10,6 +10,15 @@
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Déclare la liste des tables principales
*
* @todo
* Nettoyages à faire dans le core : on ne devrait plus appeler
* Ce fichier mais directement base/objets si nécessaire
*
* @package SPIP\SQL\Tables
**/
if (!defined('_ECRIRE_INC_VERSION')) return;

@ -177,16 +177,16 @@ function autoriser_dist($faire, $type='', $id=0, $qui = NULL, $opt = NULL) {
// une globale pour aller au plus vite dans la fonction generique ci dessus
$GLOBALS['autoriser_exception']=array();
/**
* Accorder une autorisation exceptionnel pour le hit en cours, ou la revoquer
*
* http://doc.spip.org/@autoriser_exception
*
* @param string $faire
* @param string $type
* @param null|int|array $id
* @param bool $autoriser
* accorder (true) ou revoquer (false)
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param bool $autoriser accorder (true) ou revoquer (false)
* @return bool
*/
function autoriser_exception($faire,$type,$id,$autoriser=true){
@ -203,28 +203,67 @@ function autoriser_exception($faire,$type,$id,$autoriser=true){
return false;
}
// Autorisation par defaut : les admins complets OK, les autres non
// http://doc.spip.org/@autoriser_defaut_dist
/**
* Autorisation par defaut
*
* Les admins complets OK, les autres non
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_defaut_dist($faire, $type, $id, $qui, $opt) {
return
$qui['statut'] == '0minirezo'
AND !$qui['restreint'];
}
// A-t-on acces a l'espace prive ?
// http://doc.spip.org/@autoriser_ecrire_dist
/**
* Autorisation d'accès è l'espace privé ?
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_ecrire_dist($faire, $type, $id, $qui, $opt) {
return in_array($qui['statut'], array('0minirezo', '1comite'));
}
// A-t-on le droit de creer un contenu :
// par defaut ceux qui accedent a l'espace prive,
// peut etre surcharge au cas par cas
/**
* Autorisation de créer un contenu
*
* Accordée par defaut ceux qui accèdent à l'espace privé,
* peut-être surchargée au cas par cas
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_creer_dist($faire, $type, $id, $qui, $opt) {
return in_array($qui['statut'], array('0minirezo', '1comite'));
}
// http://doc.spip.org/@autoriser_previsualiser_dist
/**
* Autorisation de prévisualiser un contenu
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_previsualiser_dist($faire, $type, $id, $qui, $opt) {
// si auteur pas autorise, NIET
if (strpos($GLOBALS['meta']['preview'], ",". $qui['statut'] .",")===false)
@ -249,11 +288,30 @@ function autoriser_previsualiser_dist($faire, $type, $id, $qui, $opt) {
return true;
}
/**
* Autorisation de changer de langue un contenu
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_changerlangue_dist($faire, $type, $id, $qui, $opt) {
return autoriser('modifier',$type,$id,$qui,$opt);
}
/**
* Autorisation de changer la date d'un contenu
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_dater_dist($faire, $type, $id, $qui, $opt) {
if (!isset($opt['statut'])){
$table = table_objet($type);
@ -276,12 +334,35 @@ function autoriser_dater_dist($faire, $type, $id, $qui, $opt) {
return false;
}
/**
* Autorisation d'instituer un contenu
*
* C'est à dire de changer son statut ou son parent.
* Par défaut, il faut l'autorisation de modifier le contenu
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_instituer_dist($faire, $type, $id, $qui, $opt) {
return autoriser('modifier',$type,$id,$qui,$opt);
}
// Autoriser a publier dans la rubrique $id
// http://doc.spip.org/@autoriser_rubrique_publierdans_dist
/**
* Autorisation de publier dans une rubrique $id
*
* Il faut être administrateur ou administrateur restreint de la rubrique
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt) {
return
($qui['statut'] == '0minirezo')
@ -291,8 +372,18 @@ function autoriser_rubrique_publierdans_dist($faire, $type, $id, $qui, $opt) {
);
}
// Autoriser a creer une rubrique dans la rubrique $id
// http://doc.spip.org/@autoriser_rubrique_creerrubriquedans_dist
/**
* Autorisation de créer une sous rubrique dans une rubrique $id
*
* Il faut être administrateur et pouvoir publier dans la rubrique
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_rubrique_creerrubriquedans_dist($faire, $type, $id, $qui, $opt) {
return
($id OR ($qui['statut'] == '0minirezo' AND !$qui['restreint']))
@ -300,8 +391,18 @@ function autoriser_rubrique_creerrubriquedans_dist($faire, $type, $id, $qui, $op
AND autoriser('publierdans','rubrique',$id);
}
// Autoriser a creer un article dans la rubrique $id
// http://doc.spip.org/@autoriser_rubrique_creerarticledans_dist
/**
* Autorisation de créer un article dans une rubrique $id
*
* Il faut pouvoir voir la rubrique
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_rubrique_creerarticledans_dist($faire, $type, $id, $qui, $opt) {
return
$id
@ -309,14 +410,35 @@ function autoriser_rubrique_creerarticledans_dist($faire, $type, $id, $qui, $opt
}
// Autoriser a modifier la rubrique $id
// = publierdans rubrique $id
// http://doc.spip.org/@autoriser_rubrique_modifier_dist
/**
* Autorisation de modifier une rubrique $id
*
* Il faut pouvoir publier dans cette rubrique
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_rubrique_modifier_dist($faire, $type, $id, $qui, $opt) {
return
autoriser('publierdans', 'rubrique', $id, $qui, $opt);
}
/**
* Autorisation de supprimer une rubrique $id
*
* Il faut quelle soit vide (pas d'enfant) et qu'on ait le droit de la modifier
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_rubrique_supprimer_dist($faire, $type, $id, $qui, $opt) {
if (!$id = intval($id))
return false;
@ -336,10 +458,19 @@ function autoriser_rubrique_supprimer_dist($faire, $type, $id, $qui, $opt) {
}
// Autoriser a modifier l'article $id
// = publierdans rubrique parente
// = ou statut 'prop,prepa' et $qui est auteur
// http://doc.spip.org/@autoriser_article_modifier_dist
/**
* Autorisation de modifier un article $id
*
* Il faut pouvoir publier dans le parent
* ou, si on change le statut en proposé ou préparation être auteur de l'article
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_article_modifier_dist($faire, $type, $id, $qui, $opt) {
$r = sql_fetsel("id_rubrique,statut", "spip_articles", "id_article=".sql_quote($id));
@ -359,22 +490,38 @@ function autoriser_article_modifier_dist($faire, $type, $id, $qui, $opt) {
)
);
}
/**
* Autoriser a creer un article :
* Il faut qu'une rubrique existe et qu'on ait le statut necessaire pour creer
/**
* Autorisation de créer un article
*
* Il faut qu'une rubrique existe et être au moins rédacteur
*
* @return bool
*/
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_article_creer_dist($faire, $type, $id, $qui, $opt) {
return (sql_countsel('spip_rubriques')>0 AND in_array($qui['statut'], array('0minirezo', '1comite')));
}
/**
* Autoriser a voir un article :
* peut etre appelee sans id, mais avec un $opt['statut'] pour tester
* la liste des status autorises en fonction de $qui['statut']
* Autorisation de voir un article
*
* Il faut être admin ou auteur de l'article, sinon il faut que l'article
* soit publié ou proposé.
*
* @return bool
* Peut-être appelée sans $id, mais avec un $opt['statut'] pour tester
* la liste des status autorisés en fonction de $qui['statut']
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
*/
function autoriser_article_voir_dist($faire, $type, $id, $qui, $opt){
if ($qui['statut'] == '0minirezo') return true;

Loading…
Cancel
Save