[spip-dev] Action debloquer_edition()

Hello,

Dans le cadre de la refonte de Contrib je fais parfois pas mal de modifications automatiques (via des actions dédiées) pour mettre à jour les rubriques.
Pour ce faire j’utilise l’API objet objet_modifier().
Jusque là rien d’extraordinaire mais en fait vu qu’il est possible parfois de modifier plusieurs dizaines ou centaines de rubriques, je me retrouve avec un bloc “En cours de rédaction” plutôt longuet.

Donc j’ai pensé utiliser l’action debloquer_edition() mais il y a un seul souci : il faut toujours l’appeler via une url car la fonction associée ne possède pas d’argument.
Voir le code suivant :

function action_debloquer_edition_dist() {

   $securiser_action = charger_fonction('securiser_action', 'inc');
   $arg = $securiser_action();

   if ($arg) {
      include_spip('inc/drapeau_edition');
      if ($arg == 'tous') {
         debloquer_tous($GLOBALS['visiteur_session']['id_auteur']);
      } else {
         $arg = explode("-", $arg);
         list($objet, $id_objet) = $arg;
         debloquer_edition($GLOBALS['visiteur_session']['id_auteur'], $id_objet, $objet);
      }
   }
}

Est-ce que ça serait possible d’ajouter un argument à la fonction et de le traiter comme cela est le cas de beaucoup d’autres actions ?
Ca me permettrait d’appeler la fonction directement à partir de mon action de mise à jour des rubriques.
Je pense que c’est indolore non ?

Re,

Inutile j’ai fait autrement.
Désolé pour le bruit…

Ça m'intéresse, j'ai parfois ce cas sur des traitements par lots.
Tu gères ça comment ?

Re,

Re,

Inutile j’ai fait autrement.
Désolé pour le bruit…

Ça m’intéresse, j’ai parfois ce cas sur des traitements par lots.
Tu gères ça comment ?

Ben en fait j’ai utilisé directement les fonctions qui sont identifiés dans l’action.
Là en l’occurrence j’avais besoin de traiter les editions de rubrique donc j’ai fait une fonction :

function rubrique_debloquer_edition($id_auteur) {
   $edition = lire_tableau_edition();

   foreach ($edition as $_objet => $_data) {
      if ($_objet == 'rubrique') {
         foreach ($_data as $_id => $_auteurs) {
            if (isset($_auteurs[$id_auteur])) {
               unset($edition[$_objet][$_id][$id_auteur]);
               ecrire_tableau_edition($edition);
            }
         }
      }
   }
}

avec un appel :
rubrique_debloquer_edition($GLOBALS[‹ visiteur_session ›][‹ id_auteur ›]);