Ressources Spip-Agora Clever Age

Permettre aux redacteurs de publier directement des articles, le 3 juillet 2005

Un besoin fréquent est de permettre aux simples rédacteurs de publier directement des articles dans une rubrique données sans passer par le système de workflow habituel.
Le système d’autorisations mis en place depuis SPIP-Agora 1.2 permet de satisfaire élégamment ce besoin.

Mise en place de votre propre driver

  1. déclarer votre driver dans le fichier ecrire/mes_options.php3 en y ajoutant ce code

    <?php
    ...
    $GLOBALS['type_authorization'] = "mes_autorisations";
    ...
    ?>
  2. créer un répertoire sous ecrire/include/authorization, appelons le mes_autorisations
  3. copier les fichier suivants dans ce répertoire : ActionDB_common.php et publierArticle_common.php
  4. renommer ces fichiers en changeant le common en mes_autorisations
  5. dans le fichier publierArticle_mes_autorisations.php, changer le nom de la classe par publierArticle_mes_autorisations :

    <?php
    // ...
    class publierArticle_mes_autorisations extends Action { }
    // ...
    ?>

Configuration de ce driver

Il faut tout d’abord permettre, de base, aux rédacteurs de publier des articles. Pour cela, dans le fichier ActionDB_mes_autorisations, positionner le poids de l’action publierArticle à 2 :
 
<?php 
// ...
$actiondb["publierArticle"]=2
// ...
?>

Purger ensuite le cache des autorisations en effaçant les fichiers ecrire/data/auth_*.php.

Il faut maintenant insérer le code suivant dans le fichier publierArticle_mes_autorisations.php :


<?php
//
// +----------------------------------------------------------------------+
// | Copyright (c) 2005 Clever Age                                        |
// +----------------------------------------------------------------------+
// | Author: Olivier Mansour
// +----------------------------------------------------------------------+
//
// Base class for Action "publierArticle".
//

require_once dirname(__FILE__)."/../Action.php";
require_once 
dirname(__FILE__)."/../../bd/inc_article_factory.php";

class 
publierArticle_mes_autorisations extends Action {
    function 
_isAuthorized() {
        
// recuperation de la rubrique
        
$articleMetier recuperer_instance_article();
        
$articleMetier->load($this->_parameters['id_article']);
        if (
$articleMetier->getRubriqueId() == ) return true// je suis dans la rubrique 1, c'est bon
        
        // seul les webmestres peuvent publier 
        
$profilMetier = &recuperer_instance_profil();
        
$monProfil $profilMetier->getProfilForIntitule('item_webmestre');
        if(
$this->_user->getProfil() >= $monProfil->getPoids()) return true;
        return 
false;
        
    }
}
?>

Ce code va permettre de reproduire la logique métier sur les rubriques dont l’ID est différent de 1.

Pour aller plus loin

On aurait pu, par exemple, ce baser sur la présence d’un mot clé attaché à la rubrique, pour déterminer si les articles y étant associé peuvent être mis en ligne par les rédacteurs. On aurait également pu chercher dans la hierarchie de la rubrique etc ...

Conclusion

Le système d’autorisation mis en place, sous réserve de la création d’un peu de code, permet de re-programmer toutes les actions possibles à sa guise sans altérer le code de SPIP-Agora.

Il n’est pas parfait et ne demande qu’a être amélioré ! ! !

tester (pas bcp) sous SPIP-Agora 1.2.1 RC1