Changeset 90833 in spip-zone


Ignore:
Timestamp:
Jul 13, 2015, 3:47:00 PM (4 years ago)
Author:
marcimat@…
Message:
  • Séparer dans la classe Serveur la partie qui trouve et configure l'Action à faire.
  • Créer une fonction qui permet d'appeler sur le site destination l'équivalent d'une action serveur, mais locale. (évite de dupliquer du code entre les fonctions clients et serveur). C'est pas l'idéal encore…
Location:
_plugins_/migrateur/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/migrateur/trunk/class/Serveur.php

    r88461 r90833  
    3939
    4040                $action = $request['message']['action'];
    41                 $ActionClass = "SPIP\\Migrateur\\Serveur\\Action\\" . $action;
    42 
    43                 if (!class_exists($ActionClass)) {
    44                         $this->log("Action inconnue");
     41                if (!$act = $this->setAction($action)) {
    4542                        $this->transmettre_json(array('error' => "Action inconnue"));
    4643                        return false;
     
    4845
    4946                $data = empty($request['message']['data']) ? null : $request['message']['data'];
    50 
    51                 $act = new $ActionClass();
    52                 $act->setServeur($this);
    53                 $act->setSource(migrateur_infos());
    54                 $act->setLogger($this->logger);
    55 
    56                 // Certains calculs peuvent être très long. On augmente le timeout
    57                 @set_time_limit(0);
    5847
    5948                // Note: certaines actions retournent directement du contenu (ie: GetFile)
     
    6756                exit;
    6857        }
     58
     59
     60        /**
     61         * Trouve la classe d'action correspondante et prépare son exécution
     62         *
     63         * @param string $action Nom de l'action
     64         * @return bool True si trouvée, false sinon
     65        **/
     66        public function setAction($action) {
     67                $ActionClass = "SPIP\\Migrateur\\Serveur\\Action\\" . $action;
     68
     69                if (!class_exists($ActionClass)) {
     70                        return false;
     71                }
     72
     73                $act = new $ActionClass();
     74                $act->setServeur($this);
     75                $act->setSource(migrateur_infos());
     76                $act->setLogger($this->logger);
     77
     78                // Certains calculs peuvent être très long. On augmente le timeout
     79                @set_time_limit(0);
     80
     81                return $act;
     82        }
     83
    6984
    7085        /**
  • _plugins_/migrateur/trunk/inc/migrateur_aide.php

    r88450 r90833  
    337337        return $client;
    338338}
     339
     340
     341
     342/**
     343 * Éxécute une action serveur de migrateur (pour se demander des choses à soi-même !).
     344 *
     345 * @note :
     346 *    cet outil peut être utile pour appeler des actions serveur
     347 *    sur soi-même alors qu'on est pourtant le site destination,
     348 *    par exemple pour demander l'action d'export de bdd (la sienne de dev).
     349 *
     350 * @return mixed Résultat de l'action
     351**/
     352function migrateur_action_serveur_locale($action, $options = array()) {
     353        include_spip('inc/config');
     354
     355        $serveur = new \SPIP\Migrateur\Serveur(
     356                lire_config('migrateur/auth_key'),
     357                lire_config('migrateur/aes_key')
     358        );
     359        $serveur->setLogger(new \SPIP\Migrateur\Client\Log());
     360        if ($act = $serveur->setAction($action)) {
     361                return $act->run($options);
     362        }
     363        $serveur->log("Action $action non réussie.");
     364        return false;
     365}
Note: See TracChangeset for help on using the changeset viewer.