Changeset 81720 in spip-zone


Ignore:
Timestamp:
Apr 2, 2014, 10:01:03 AM (5 years ago)
Author:
bystrano@…
Message:

On n'utilise plus la classe SpipCommand?, mais on essaye de charger SPIP
directement dans le noyau de l'appli

cf discussion : http://thread.gmane.org/gmane.comp.web.spip.zone/35490/focus=35666

Location:
_outils_/spip-cli/trunk
Files:
1 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • _outils_/spip-cli/trunk/spip-cli/ViderCache.php

    r81658 r81720  
    77use Symfony\Component\Console\Output\OutputInterface;
    88
    9 include_once "$dossier_cli/SpipCommand.php";
    10 
    11 class CacheInhibeCommand extends SpipCommand {
     9class CacheInhibeCommand extends Command {
    1210    protected function configure() {
    1311        $this
     
    2119
    2220    protected function execute(InputInterface $input, OutputInterface $output) {
     21        global $spip_root;
     22        global $spip_loaded;
    2323
    24         $this->load_spip($input, $output);
     24        if ($spip_loaded) {
    2525
    26         if ($this->spip_dir) {
    27 
    28             chdir($this->spip_dir);
     26            chdir($spip_root);
    2927
    3028            $purger = charger_fonction('purger', 'action');
     
    3634}
    3735
    38 class CacheReactiveCommand extends SpipCommand {
     36class CacheReactiveCommand extends Command {
    3937    protected function configure() {
    4038        $this
     
    4846
    4947    protected function execute(InputInterface $input, OutputInterface $output) {
     48        global $spip_root;
     49        global $spip_loaded;
    5050
    51         $this->load_spip($input, $output);
     51        if ($spip_loaded) {
    5252
    53         if ($this->spip_dir) {
    54 
    55             chdir($this->spip_dir);
     53            chdir($spip_root);
    5654
    5755            $purger = charger_fonction('purger', 'action');
     
    6361}
    6462
    65 class CacheViderToutCommand extends SpipCommand {
     63class CacheViderToutCommand extends Command {
    6664    protected function configure() {
    6765        $this
     
    7573
    7674    protected function execute(InputInterface $input, OutputInterface $output) {
     75        global $spip_root;
     76        global $spip_loaded;
    7777
    78         $this->load_spip($input, $output);
     78        if ($spip_loaded) {
    7979
    80         if ($this->spip_dir) {
    81 
    82             chdir($this->spip_dir);
     80            chdir($spip_root);
    8381
    8482            $purger = charger_fonction('purger', 'action');
     
    9088}
    9189
    92 class CacheViderSquelettesCommand extends SpipCommand {
     90class CacheViderSquelettesCommand extends Command {
    9391    protected function configure() {
    9492        $this
     
    102100
    103101    protected function execute(InputInterface $input, OutputInterface $output) {
     102        global $spip_root;
     103        global $spip_loaded;
    104104
    105         $this->load_spip($input, $output);
     105        if ($spip_loaded) {
    106106
    107         if ($this->spip_dir) {
    108 
    109             chdir($this->spip_dir);
     107            chdir($spip_root);
    110108
    111109            $purger = charger_fonction('purger', 'action');
     
    117115}
    118116
    119 class CacheViderVignettesCommand extends SpipCommand {
     117class CacheViderVignettesCommand extends Command {
    120118    protected function configure() {
    121119        $this
     
    129127
    130128    protected function execute(InputInterface $input, OutputInterface $output) {
     129        global $spip_root;
     130        global $spip_loaded;
    131131
    132         $this->load_spip($input, $output);
    133 
    134         if ($this->spip_dir) {
    135             chdir($this->spip_dir);
     132        if ($spip_loaded) {
     133            chdir($spip_root);
    136134
    137135            $purger = charger_fonction('purger', 'action');
  • _outils_/spip-cli/trunk/spip.php

    r81657 r81720  
    1818}
    1919
     20/**
     21 * Si on est sur un OS qui n'utilise pas des / comme séparateur de
     22 * dossier dans les chemins, on remplace les / par le bon
     23 * séparateur.
     24 *
     25 * @param string $path : un chemin au format UNIX
     26 *
     27 * @return string : le même chemin au format approprié à
     28 *                  l'environnement dans lequel on se trouve.
     29 */
     30function prep_path($path) {
     31
     32    if (DIRECTORY_SEPARATOR !== '/') {
     33        return str_replace('/', DIRECTORY_SEPARATOR, $path);
     34    } else {
     35        return $path;
     36    }
     37}
     38
     39/**
     40 * Retourne le chemin absolu vers la racine du site SPIP dans
     41 * lequel se trouve le répertoire courant. Retourne FALSE si l'on
     42 * est pas dans l'arborescence d'un site SPIP.
     43 *
     44 * @return mixed : le chemin vers la racine du SPIP dans lequel on se
     45 *                 trouve. Retourne false si on n'est pas dans
     46 *                 l'arborescence d'une installation SPIP.
     47 */
     48function get_spip_root() {
     49
     50    $cwd = getcwd();
     51
     52    while ($cwd) {
     53        if (file_exists(prep_path("$cwd/ecrire/inc_version.php"))) {
     54            return $cwd;
     55        } else {
     56            /* On remonte d'un dossier dans l'arborescence */
     57            $cwd_array = explode(DIRECTORY_SEPARATOR, $cwd);
     58            array_pop($cwd_array);
     59            $cwd = implode(DIRECTORY_SEPARATOR, $cwd_array);
     60        }
     61    }
     62    return FALSE;
     63}
     64
     65/**
     66 * Inclut ecrire/inc_version.php, ce qui permet ensuite d'utiliser
     67 * toutes les fonctions de spip comme lors du chargement d'une
     68 * page.
     69 *
     70 * @param string $spip_root : Le chemin vers la racine du SPIP que
     71 *                            l'on veut charger.
     72 *
     73 * @return bool : Retourne true si on a pu charger SPIP correctement,
     74 *                false sinon
     75 */
     76function charger_spip($spip_root) {
     77
     78    /* Pour que les include dans les fichiers php de SPIP
     79       fonctionnent correctement, il faut être à la racine du
     80       site. Du coup on change de répertoire courant le temps de
     81       charger tout ça. */
     82    $cwd = getcwd();
     83    chdir($spip_root);
     84
     85    include_once prep_path("$spip_root/ecrire/inc_version.php");
     86
     87    /* On revient dans le répertoire dans lequel la commande a été
     88       appellée, au cas où la commande voudrait utiliser cette
     89       info. */
     90    chdir($cwd);
     91
     92    /* On part du principe que si _ECRIRE_INC_VERSION existe,
     93       inc_version.php a été chargé correctement. */
     94    if (_ECRIRE_INC_VERSION) {
     95        /* charger inc_version.php ne charge pas ce fichier, et
     96           certaines fonctions du core l'utilisent sans
     97           l'importer, il faut donc le charger ici. */
     98        include_spip('base/abstract_sql');
     99        /* Il faut initialiser cette globale pour éviter les
     100           problèmes de connexion sql. */
     101        $GLOBALS['mysql_rappel_connexion'] = true;
     102
     103        return TRUE;
     104    } else {
     105        return FALSE;
     106    }
     107}
     108
    20109// Création de la ligne de commande
    21110$spip = new Application('Ligne de commande pour SPIP', '0.1.0');
     
    26115}
    27116
     117$spip_root = get_spip_root();
     118
     119if (($spip_root) AND charger_spip($spip_root)) {
     120    $spip_loaded = TRUE;
     121    // TODO charger toutes les commandes qui se trouvent dans le path
     122    // de SPIP.
     123} else {
     124    $spip_loaded = FALSE;
     125}
     126
    28127if ($commandes = getSubclassesOf('Symfony\Component\Console\Command\Command')){
    29128        foreach ($commandes as $class){
    30         if ($class !== 'SpipCommand')
    31             $spip->add(new $class);
     129        $spip->add(new $class);
    32130        }
    33131}
Note: See TracChangeset for help on using the changeset viewer.