Changeset 101207 in spip-zone


Ignore:
Timestamp:
Dec 19, 2016, 3:31:52 PM (3 years ago)
Author:
prigent.yohann@…
Message:

On revert r100804 qui revertait lui même r100791. r100791 avait lieu d’être, et a toujours lieu d’être. L’auteur du revert a sans doute été trompé par l’exemple. En voici un plus parlant dans l’article de la mutualisation : https://contrib.spip.net/La-mutualisation-facile-modifications-manuelles

Location:
_plugins_/mutualisation/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/mutualisation/trunk/mes_options.php.txt

    r100804 r101207  
    137137                        # 'utiliser_panel' => false, // Utiliser une table externe pour recuperer des identifiants ... (code, user, pass) permettant a un utilisateur d'installer le site (false)
    138138                        # 'annonce' => '<p>Un service propos&eacute; par <a href="http://www.spip.net/">la communaut&eacute; SPIP</a></p>', // Texte a afficher en bas du formulaire d'activation de la mutualisation
    139                         'url_creer_base' => ''       // Creer la base de donnees via une URL (methode AlternC)
     139                        'url_creer_base' => '',       // Creer la base de donnees via une URL (methode AlternC)
     140                        // fonction qui sera appelée avant l'initialisation de SPIP
     141                        'avant_initialisation' => ''
    140142                )
    141143        );
  • _plugins_/mutualisation/trunk/mutualiser.php

    r100888 r101207  
    99 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
    1010 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
    11  * \***************************************************************************/
     11\***************************************************************************/
    1212
    1313if (!defined('_ECRIRE_INC_VERSION')) {
    14         return;
     14    return;
    1515}
    1616
     
    2020// cookie_prefix, table_prefix => regler les prefixes (defaut: true)
    2121// http://doc.spip.org/@demarrer_site
    22 function demarrer_site($site = '', $options = array()) {
    23         if (!$site) {
    24                 return;
    25         }
    26 
    27         $options = array_merge(
    28                 array(
    29                         'creer_site' => false,
    30                         'creer_base' => false,
    31                         'creer_user_base' => false,
    32                         'mail' => '',
    33                         'code' => 'ecureuil', // code d'activation par defaut
    34                         'table_prefix' => false,
    35                         'cookie_prefix' => false,
    36                         'repertoire' => 'sites',
    37                         'utiliser_panel' => false,
    38                         'url_img_courtes' => false,
    39                         'annonce' => '',
    40                 ),
    41                 $options
    42         );
    43 
    44         $GLOBALS['mutualisation_dir'] = $options['repertoire'];
    45 
    46         // definir une constante qui contient l'adresse du repertoire du site mutualise
    47         // peut servir dans les fichiers mes_options des sites inclus
    48         // par exemple avec  $GLOBALS['dossier_squelettes'] = _DIR_SITE . 'squelettes:' . _DIR_SITE . 'cheznous:dist';
    49         define('_DIR_SITE', _DIR_RACINE . $GLOBALS['mutualisation_dir'] . '/' . $site . '/');
    50 
    51         if ($options['cookie_prefix']) {
    52                 $GLOBALS['cookie_prefix'] = _INSTALL_SITE_PREF;
    53         }
    54         if ($options['table_prefix']) {
    55                 $GLOBALS['table_prefix'] = _INSTALL_SITE_PREF;
    56         }
    57 
    58         /*
    59          * Si le dossier du site n'existe pas
    60          * ou si le fichier de connexion a la bdd est absent,
    61          * le site n'est pas totalement installe.
    62          *
    63          * Il faut lancer la creation de mutualisation
    64          */
    65         if ($a_installer = (!is_dir(_DIR_SITE) or !(defined('_DIR_CONNECT') ?
    66                         (defined('_FILE_CONNECT_INS') ?
    67                                 file_exists(_DIR_CONNECT . _FILE_CONNECT_INS . '.php') :
    68                                 file_exists(_DIR_CONNECT . 'connect.php')) :
    69                         (defined('_FILE_CONNECT_INS') ?
    70                                 file_exists(_DIR_SITE . _NOM_PERMANENTS_INACCESSIBLES . _FILE_CONNECT_INS . '.php') :
    71                                 file_exists(_DIR_SITE . _NOM_PERMANENTS_INACCESSIBLES . 'connect.php'))
    72                 ))
    73         ) {
    74                 /*
    75                  * - Recuperer les identifiants manquants
    76                  *
    77                  * Nota :
    78                  * Il faut que _INSTALL_(NAME|USER|PASS) soient definis ici
    79                  * et non dans le fichier mutualiser_creer() car
    80                  * ces constantes sont necessaires a l'installation de SPIP
    81                  * (ecrire/?exec=install). Dans le cas contraire, le formulaire
    82                  * d'installation n'est pas prerempli.
    83                  *
    84                  *
    85                  * > Cas de la gestion d'un pannel
    86                  * Recuperer les mots de passes du futur compte dans une table speciale
    87                  * Voir http://www.spip-contrib.net/Service-d-hebergement-mutualise
    88                  */
    89                 if ($options['utiliser_panel']) {
    90                         if (defined(_INSTALL_PANEL_HOST_DB)) {
    91                                 include_spip('inc/minipres');
    92                                 include_spip('base/abstract_sql');
    93                                 include_once dirname(__FILE__) . '/base/abstract_mutu.php';
    94 
    95                                 // On cherche en BD si le site est enregistre et on recupere
    96                                 // password et code d'activation
    97                                 $link = @mutu_connect_db(_INSTALL_PANEL_HOST_DB, 0, _INSTALL_PANEL_USER_DB, _INSTALL_PANEL_PASS_DB, '',
    98                                         _INSTALL_SERVER_DB);
    99                                 @sql_selectdb(_INSTALL_PANEL_NAME_DB, _INSTALL_SERVER_DB);
    100                                 $result = @sql_query('SELECT '
    101                                         . _INSTALL_PANEL_FIELD_CODE . ' AS code,'
    102                                         . _INSTALL_PANEL_FIELD_PASS . ' AS pass,'
    103                                         . _INSTALL_PANEL_FIELD_SITE . ' AS site'
    104                                         . ' FROM ' . _INSTALL_PANEL_NAME_TABLE
    105                                         . ' WHERE ' . _INSTALL_PANEL_FIELD_SITE . " = '$site'", _INSTALL_SERVER_DB);
    106                                 if (sql_count($result) > 0) {
    107                                         $data = sql_fetch($result);
    108                                         $options['code'] = $data['code'];
    109                                         define('_INSTALL_NAME_DB', _INSTALL_NAME_DB);
    110                                         define('_INSTALL_USER_DB', _INSTALL_NAME_DB);
    111                                         define('_INSTALL_PASS_DB', $data['pass']);
    112                                 } else {
    113                                         echo minipres(
    114                                                 _L('<h2>Erreur 404 : page inexistante</h2>')
    115                                         );
    116                                         exit;
    117                                 }
    118                         } else {
    119                                 if (is_dir($options['repertoire'] . '/' . _SITES_ADMIN_MUTUALISATION)) {
    120                                         include_spip('base/abstract_sql');
    121                                         define(_FILE_CONNECT,
    122                                                 $options['repertoire'] . '/' . _SITES_ADMIN_MUTUALISATION . '/config/connect.php');
    123                                         $mutu = sql_fetsel('id_admin,id_mutu,statut', 'spip_mutus', 'url=' . sql_quote($site));
    124                                         $options['id_mutu'] = $mutu['id_mutu'];
    125                                         $options['statut'] = $mutu['statut'];
    126                                         $options['login'] = sql_getfetsel('login', 'spip_auteurs',
    127                                                 'id_auteur=' . intval($mutu['id_admin']));
    128                                         define(_FILE_CONNECT, '');
    129                                 }
    130                         }
    131                         /*
    132                          * > Cas de creation d'utilisateur de la base SQL
    133                          * (nom et pass non attribuees par un panel)
    134                          */
    135                 } elseif ($options['creer_user_base']) {
    136                         // nom d'utilisateur et mot de passe
    137                         define('_INSTALL_USER_DB', _INSTALL_NAME_DB);
    138                         /*
    139                          * _INSTALL_PASS_DB_ROOT : secret du site
    140                          * $_SERVER['HTTP_HOST'] : un truc variable, mais reutilisable site par site
    141                          * _INSTALL_USER_DB : un autre truc variable
    142                          */
    143                         define(
    144                                 '_INSTALL_PASS_DB',
    145                                 substr(md5(
    146                                         _INSTALL_PASS_DB_ROOT . $_SERVER['HTTP_HOST'] . _INSTALL_USER_DB
    147                                 ), 0, 8)
    148                         );
    149                 }
    150 
    151                 /*
    152                  * Si l'installation n'est pas faite,
    153                  * il faut soit creer le site mutualise
    154                  * soit lancer la procedure d'installation de SPIP
    155                  * si le site a deja ete cree
    156                  */
    157                 if ($a_installer) {
    158                         /*
    159                          * Pour savoir si l'installation de la mutu est terminee,
    160                          * on verifie que le fichier d'installation a bien ete supprime
    161                          * sinon, c'est qu'il reste quelque chose a faire.
    162                          */
    163                         define('_MUTU_INSTALLATION_FILE', 'mutu_tmp_install.txt');
    164 
    165                         if (!is_dir(_DIR_SITE) || is_file(_DIR_SITE . _NOM_TEMPORAIRES_INACCESSIBLES . _MUTU_INSTALLATION_FILE)) {
    166                                 spip_initialisation(
    167                                         (_DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES),
    168                                         (_DIR_RACINE . _NOM_PERMANENTS_ACCESSIBLES),
    169                                         (_DIR_RACINE . _NOM_TEMPORAIRES_INACCESSIBLES),
    170                                         (_DIR_RACINE . _NOM_TEMPORAIRES_ACCESSIBLES)
    171                                 );
    172                                 include_once dirname(__FILE__) . '/mutualiser_creer.php';
    173                                 mutualiser_creer(_DIR_SITE, $options);
    174                                 exit;
    175                         }
    176                 }
    177         }
    178 
    179         /*
    180          * Tout est pret, on execute la mutualisation.
    181          */
    182         define(
    183                 '_SPIP_PATH',
    184                 _DIR_SITE . ':' .
    185                 _DIR_RACINE . ':' .
    186                 _DIR_RACINE . 'squelettes-dist/:' .
    187                 _DIR_RACINE . 'prive/:' .
    188                 _DIR_RESTREINT
    189         );
    190 
    191         if (is_dir(_DIR_SITE . 'squelettes')) {
    192                 $GLOBALS['dossier_squelettes'] = $options['repertoire'] . '/' . $site . '/squelettes';
    193         }
    194 
    195         if (is_readable($f = _DIR_SITE . _NOM_PERMANENTS_INACCESSIBLES . _NOM_CONFIG . '.php')) {
    196                 include $f;
    197         } // attention cet include n'est pas en globals
    198 
    199         $init = function_exists('spip_initialisation_core')
    200                 ? 'spip_initialisation_core' // mieux pour la 2.0, mais absente avant...
    201                 : 'spip_initialisation';
    202         $init(
    203                 (_DIR_SITE . _NOM_PERMANENTS_INACCESSIBLES),
    204                 (_DIR_SITE . _NOM_PERMANENTS_ACCESSIBLES),
    205                 (_DIR_SITE . _NOM_TEMPORAIRES_INACCESSIBLES),
    206                 (_DIR_SITE . _NOM_TEMPORAIRES_ACCESSIBLES)
    207         );
    208 
    209         /*
    210          *Traiter l'exec=mutualisation
    211          */
    212         mutualisation_traiter_exec($site);
    213 
    214         /*
    215          * Gestion des url d'images courtes
    216          * sites/nom/IMG/image.jpg -> IMG/image.jpg
    217          *
    218          * Ne fonctionne que pour de la mutualisation
    219          * sur des noms de domaines.
    220          *
    221          * Une mutualisation de repertoire
    222          * ne pourra fonctionner car les fichiers
    223          * .htaccess de /IMG et /local n'ont pas
    224          * connaissance du nom du repertoire.
    225          *
    226          * A mettre au debut du pipe pour compatibilite avec fastcache
    227          */
    228         if ($options['url_img_courtes']) {
    229                 $pre_affichage_final = isset($GLOBALS['spip_pipeline']['affichage_final']) ? $GLOBALS['spip_pipeline']['affichage_final'] : '';
    230                 $GLOBALS['spip_pipeline']['affichage_final']
    231                         = '|mutualisation_url_img_courtes'
    232                         . $pre_affichage_final;
    233         }
     22function demarrer_site($site = '', $options = array())
     23{
     24    if (!$site) {
     25        return;
     26    }
     27
     28    $options = array_merge(
     29        array(
     30            'creer_site' => false,
     31            'creer_base' => false,
     32            'creer_user_base' => false,
     33            'mail' => '',
     34            'code' => 'ecureuil', // code d'activation par defaut
     35            'table_prefix' => false,
     36            'cookie_prefix' => false,
     37            'repertoire' => 'sites',
     38            'utiliser_panel' => false,
     39            'url_img_courtes' => false,
     40            'annonce' => '',
     41        ),
     42        $options
     43    );
     44
     45    $GLOBALS['mutualisation_dir'] = $options['repertoire'];
     46
     47    // definir une constante qui contient l'adresse du repertoire du site mutualise
     48    // peut servir dans les fichiers mes_options des sites inclus
     49    // par exemple avec  $GLOBALS['dossier_squelettes'] = _DIR_SITE . 'squelettes:' . _DIR_SITE . 'cheznous:dist';
     50    define('_DIR_SITE', _DIR_RACINE.$GLOBALS['mutualisation_dir'].'/'.$site.'/');
     51
     52    if ($options['cookie_prefix']) {
     53        $GLOBALS['cookie_prefix'] = _INSTALL_SITE_PREF;
     54    }
     55    if ($options['table_prefix']) {
     56        $GLOBALS['table_prefix'] = _INSTALL_SITE_PREF;
     57    }
     58
     59    /*
     60     * Si le dossier du site n'existe pas
     61     * ou si le fichier de connexion a la bdd est absent,
     62     * le site n'est pas totalement installe.
     63     *
     64     * Il faut lancer la creation de mutualisation
     65     */
     66    if ($a_installer = (!is_dir(_DIR_SITE) or !(defined('_DIR_CONNECT') ?
     67            (defined('_FILE_CONNECT_INS') ?
     68                file_exists(_DIR_CONNECT._FILE_CONNECT_INS.'.php') :
     69                file_exists(_DIR_CONNECT.'connect.php')) :
     70            (defined('_FILE_CONNECT_INS') ?
     71                file_exists(_DIR_SITE._NOM_PERMANENTS_INACCESSIBLES._FILE_CONNECT_INS.'.php') :
     72                file_exists(_DIR_SITE._NOM_PERMANENTS_INACCESSIBLES.'connect.php'))
     73            ))) {
     74        /*
     75         * - Recuperer les identifiants manquants
     76         *
     77         * Nota :
     78         * Il faut que _INSTALL_(NAME|USER|PASS) soient definis ici
     79         * et non dans le fichier mutualiser_creer() car
     80         * ces constantes sont necessaires a l'installation de SPIP
     81         * (ecrire/?exec=install). Dans le cas contraire, le formulaire
     82         * d'installation n'est pas prerempli.
     83         *
     84         *
     85         * > Cas de la gestion d'un pannel
     86         * Recuperer les mots de passes du futur compte dans une table speciale
     87         * Voir http://www.spip-contrib.net/Service-d-hebergement-mutualise
     88         */
     89        if ($options['utiliser_panel']) {
     90            if (defined(_INSTALL_PANEL_HOST_DB)) {
     91                include_spip('inc/minipres');
     92                include_spip('base/abstract_sql');
     93                include_once dirname(__FILE__).'/base/abstract_mutu.php';
     94
     95                // On cherche en BD si le site est enregistre et on recupere
     96                // password et code d'activation
     97                $link = @mutu_connect_db(_INSTALL_PANEL_HOST_DB, 0, _INSTALL_PANEL_USER_DB, _INSTALL_PANEL_PASS_DB, '', _INSTALL_SERVER_DB);
     98                @sql_selectdb(_INSTALL_PANEL_NAME_DB, _INSTALL_SERVER_DB);
     99                $result = @sql_query('SELECT '
     100                            ._INSTALL_PANEL_FIELD_CODE.' AS code,'
     101                            ._INSTALL_PANEL_FIELD_PASS.' AS pass,'
     102                            ._INSTALL_PANEL_FIELD_SITE.' AS site'
     103                            .' FROM '._INSTALL_PANEL_NAME_TABLE
     104                            .' WHERE '._INSTALL_PANEL_FIELD_SITE." = '$site'", _INSTALL_SERVER_DB);
     105                if (sql_count($result) > 0) {
     106                    $data = sql_fetch($result);
     107                    $options['code'] = $data['code'];
     108                    define('_INSTALL_NAME_DB', _INSTALL_NAME_DB);
     109                    define('_INSTALL_USER_DB', _INSTALL_NAME_DB);
     110                    define('_INSTALL_PASS_DB', $data['pass']);
     111                } else {
     112                    echo minipres(
     113                        _L('<h2>Erreur 404 : page inexistante</h2>')
     114                    );
     115                    exit;
     116                }
     117            } else {
     118                if (is_dir($options['repertoire'].'/'._SITES_ADMIN_MUTUALISATION)) {
     119                    include_spip('base/abstract_sql');
     120                    define(_FILE_CONNECT, $options['repertoire'].'/'._SITES_ADMIN_MUTUALISATION.'/config/connect.php');
     121                    $mutu = sql_fetsel('id_admin,id_mutu,statut', 'spip_mutus', 'url='.sql_quote($site));
     122                    $options['id_mutu'] = $mutu['id_mutu'];
     123                    $options['statut'] = $mutu['statut'];
     124                    $options['login'] = sql_getfetsel('login', 'spip_auteurs', 'id_auteur='.intval($mutu['id_admin']));
     125                    define(_FILE_CONNECT, '');
     126                }
     127            }
     128        /*
     129         * > Cas de creation d'utilisateur de la base SQL
     130         * (nom et pass non attribuees par un panel)
     131         */
     132        } elseif ($options['creer_user_base']) {
     133            // nom d'utilisateur et mot de passe
     134            define('_INSTALL_USER_DB', _INSTALL_NAME_DB);
     135            /*
     136             * _INSTALL_PASS_DB_ROOT : secret du site
     137             * $_SERVER['HTTP_HOST'] : un truc variable, mais reutilisable site par site
     138             * _INSTALL_USER_DB : un autre truc variable
     139             */
     140            define(
     141                '_INSTALL_PASS_DB',
     142                substr(md5(
     143                    _INSTALL_PASS_DB_ROOT.$_SERVER['HTTP_HOST']._INSTALL_USER_DB
     144                ), 0, 8)
     145            );
     146        }
     147
     148        /*
     149         * Si l'installation n'est pas faite,
     150         * il faut soit creer le site mutualise
     151         * soit lancer la procedure d'installation de SPIP
     152         * si le site a deja ete cree
     153         */
     154        if ($a_installer) {
     155            /*
     156             * Pour savoir si l'installation de la mutu est terminee,
     157             * on verifie que le fichier d'installation a bien ete supprime
     158             * sinon, c'est qu'il reste quelque chose a faire.
     159             */
     160            define('_MUTU_INSTALLATION_FILE', 'mutu_tmp_install.txt');
     161
     162            if (!is_dir(_DIR_SITE) || is_file(_DIR_SITE._NOM_TEMPORAIRES_INACCESSIBLES._MUTU_INSTALLATION_FILE)) {
     163                spip_initialisation(
     164                    (_DIR_RACINE._NOM_PERMANENTS_INACCESSIBLES),
     165                    (_DIR_RACINE._NOM_PERMANENTS_ACCESSIBLES),
     166                    (_DIR_RACINE._NOM_TEMPORAIRES_INACCESSIBLES),
     167                    (_DIR_RACINE._NOM_TEMPORAIRES_ACCESSIBLES)
     168                );
     169                include_once dirname(__FILE__).'/mutualiser_creer.php';
     170                mutualiser_creer(_DIR_SITE, $options);
     171                exit;
     172            }
     173        }
     174    }
     175
     176    /*
     177     * Tout est pret, on execute la mutualisation.
     178     */
     179    define(
     180        '_SPIP_PATH',
     181        _DIR_SITE.':'.
     182        _DIR_RACINE.':'.
     183        _DIR_RACINE.'squelettes-dist/:'.
     184        _DIR_RACINE.'prive/:'.
     185        _DIR_RESTREINT
     186    );
     187
     188    if (is_dir(_DIR_SITE.'squelettes')) {
     189        $GLOBALS['dossier_squelettes'] = $options['repertoire'].'/'.$site.'/squelettes';
     190    }
     191
     192    if (is_readable($f = _DIR_SITE._NOM_PERMANENTS_INACCESSIBLES._NOM_CONFIG.'.php')) {
     193        include $f;
     194    } // attention cet include n'est pas en globals
     195
     196    if (isset($options['avant_initialisation']) && is_callable($options['avant_initialisation'])) {
     197        $options['avant_initialisation']();
     198    }
     199
     200    $init = function_exists('spip_initialisation_core')
     201        ? 'spip_initialisation_core' // mieux pour la 2.0, mais absente avant...
     202        : 'spip_initialisation';
     203    $init(
     204        (_DIR_SITE._NOM_PERMANENTS_INACCESSIBLES),
     205        (_DIR_SITE._NOM_PERMANENTS_ACCESSIBLES),
     206        (_DIR_SITE._NOM_TEMPORAIRES_INACCESSIBLES),
     207        (_DIR_SITE._NOM_TEMPORAIRES_ACCESSIBLES)
     208    );
     209
     210    /*
     211     *Traiter l'exec=mutualisation
     212     */
     213    mutualisation_traiter_exec($site);
     214
     215    /*
     216     * Gestion des url d'images courtes
     217     * sites/nom/IMG/image.jpg -> IMG/image.jpg
     218     *
     219     * Ne fonctionne que pour de la mutualisation
     220     * sur des noms de domaines.
     221     *
     222     * Une mutualisation de repertoire
     223     * ne pourra fonctionner car les fichiers
     224     * .htaccess de /IMG et /local n'ont pas
     225     * connaissance du nom du repertoire.
     226     *
     227     * A mettre au debut du pipe pour compatibilite avec fastcache
     228     */
     229    if ($options['url_img_courtes']) {
     230        $pre_affichage_final = isset($GLOBALS['spip_pipeline']['affichage_final']) ? $GLOBALS['spip_pipeline']['affichage_final'] : '';
     231        $GLOBALS['spip_pipeline']['affichage_final']
     232            = '|mutualisation_url_img_courtes'
     233            .$pre_affichage_final;
     234    }
    234235}
    235236
     
    237238// et seulement pour lui (pour en mettre plusieurs, les separer par
    238239// des virgules) Voit le fichier mes_options.php
    239 function mutualisation_traiter_exec($site) {
    240         if (_request('exec') === 'mutualisation') {
    241                 if (!defined('_SITES_ADMIN_MUTUALISATION')
    242                         or in_array($site, explode(',', _SITES_ADMIN_MUTUALISATION))
    243                 ) {
    244                         require_once dirname(__FILE__) . '/exec/mutualisation.php';
    245                 }
    246 
    247                 // Si un upgrade est demande dans le site fils, et securise par md5
    248                 // depuis le panneau de controle, le faire directement
    249                 if (_request('upgrade') == 'oui') {
    250                         require_once dirname(__FILE__) . '/mutualiser_upgrade.php';
    251                         mutualiser_upgrade();
    252                 }
    253                 // Si un upgrade des plugins est demande dans le site fils, et securise par md5
    254                 // depuis le panneau de controle, le faire directement
    255                 if (_request('upgradeplugins') == 'oui') {
    256                         require_once dirname(__FILE__) . '/mutualiser_upgradeplugins.php';
    257                         mutualiser_upgradeplugins();
    258                 }
    259                 if (_request('renouvelle_alea') == 'yo') {
    260                         include_spip('inc/headers');
    261                         http_status(204); // No Content
    262                         header('Connection: close');
    263                         include_spip('inc/acces');
    264                         renouvelle_alea();
    265                         die;
    266                 }
    267                 if (_request('dirliste') == 'oui') {
     240function mutualisation_traiter_exec($site)
     241{
     242    if (_request('exec') === 'mutualisation') {
     243        if (!defined('_SITES_ADMIN_MUTUALISATION')
     244        or in_array($site, explode(',', _SITES_ADMIN_MUTUALISATION))) {
     245            require_once dirname(__FILE__).'/exec/mutualisation.php';
     246        }
     247
     248        // Si un upgrade est demande dans le site fils, et securise par md5
     249        // depuis le panneau de controle, le faire directement
     250        if (_request('upgrade') == 'oui') {
     251            require_once dirname(__FILE__).'/mutualiser_upgrade.php';
     252            mutualiser_upgrade();
     253        }
     254        // Si un upgrade des plugins est demande dans le site fils, et securise par md5
     255        // depuis le panneau de controle, le faire directement
     256        if (_request('upgradeplugins') == 'oui') {
     257            require_once dirname(__FILE__).'/mutualiser_upgradeplugins.php';
     258            mutualiser_upgradeplugins();
     259        }
     260        if (_request('renouvelle_alea') == 'yo') {
     261            include_spip('inc/headers');
     262            http_status(204); // No Content
     263            header('Connection: close');
     264            include_spip('inc/acces');
     265            renouvelle_alea();
     266            die;
     267        }
     268        if (_request('dirliste') == 'oui') {
    268269                        if (isset($_GET['dir'])) {
    269                                 require_once dirname(__FILE__) . '/inc/dirliste.php';
     270                                require_once dirname(__FILE__).'/inc/dirliste.php';
    270271                                echo dirliste($_GET['dir']);
    271272                        } else {
     
    273274                        }
    274275                        die;
    275                 }
    276                 if (_request('dirsize') == 'oui') {
     276        }
     277        if (_request('dirsize') == 'oui') {
    277278                        if (isset($_GET['dir'])) {
    278                                 require_once dirname(__FILE__) . '/inc/dirsize.php';
     279                                require_once dirname(__FILE__).'/inc/dirsize.php';
    279280                                echo dirsize($_GET['dir'], $_GET['taille_max']);
    280281                        } else {
     
    282283                        }
    283284                        die;
    284                 }
    285         }
     285        }
     286    }
    286287}
    287288
     
    292293 *        L'URL à réécrire
    293294 */
    294 function mutualisation_url_img_courtes($flux) {
    295         if (strpos($flux, _DIR_IMG)
    296                 or strpos($flux, _DIR_VAR)
    297         ) {
    298                 require_once dirname(__FILE__) . '/mutualiser_gerer_img.php';
    299 
    300                 return mutualisation_traiter_url_img_courtes($flux);
    301         }
    302 
    303         return $flux;
     295function mutualisation_url_img_courtes($flux)
     296{
     297    if (strpos($flux, _DIR_IMG)
     298        or strpos($flux, _DIR_VAR)) {
     299        require_once dirname(__FILE__).'/mutualiser_gerer_img.php';
     300
     301        return mutualisation_traiter_url_img_courtes($flux);
     302    }
     303
     304    return $flux;
    304305}
    305306
     
    321322 *        Le nom du site
    322323 */
    323 function prefixe_mutualisation($site) {
    324         static $prefix = array();
    325         $max = 12;
    326         if (defined('_INSTALL_PREFIX_DB') && strlen(_INSTALL_PREFIX_DB) > 0) {
    327                 $max = 15-strlen(_INSTALL_PREFIX_DB);
    328         }
    329         if (!isset($prefix[$site])) {
    330                 $p = preg_replace(',^www\.|[^a-z0-9],', '', strtolower($site));
    331                 // si c'est plus long que $max on coupe et on pose un md5 d'unicite
    332                 // meme chose si ca contenait un caractere autre que [a-z0-9],
    333                 // afin d'eviter de se faire chiper c.a.domaine.tld par ca.domaine.tld
    334                 if (strlen($p) > $max or $p != $site) {
    335                         $p = substr($p, 0, ($max-4)) . substr(md5($site), -4);
    336                 }
    337                 // si ca commence par un chiffre on ajoute a
    338                 if (ord($p) < 58) {
    339                         $p = 'a' . $p;
    340                 }
    341                 $prefix[$site] = $p;
    342         }
    343 
    344         return $prefix[$site];
    345 }
     324function prefixe_mutualisation($site)
     325{
     326    static $prefix = array();
     327    $max = 12;
     328    if (defined('_INSTALL_PREFIX_DB') && strlen(_INSTALL_PREFIX_DB) > 0) {
     329        $max = 15 - strlen(_INSTALL_PREFIX_DB);
     330    }
     331    if (!isset($prefix[$site])) {
     332        $p = preg_replace(',^www\.|[^a-z0-9],', '', strtolower($site));
     333        // si c'est plus long que $max on coupe et on pose un md5 d'unicite
     334        // meme chose si ca contenait un caractere autre que [a-z0-9],
     335        // afin d'eviter de se faire chiper c.a.domaine.tld par ca.domaine.tld
     336        if (strlen($p) > $max or $p != $site) {
     337            $p = substr($p, 0, ($max - 4)).substr(md5($site), -4);
     338        }
     339        // si ca commence par un chiffre on ajoute a
     340        if (ord($p) < 58) {
     341            $p = 'a'.$p;
     342        }
     343        $prefix[$site] = $p;
     344    }
     345
     346    return $prefix[$site];
     347}
  • _plugins_/mutualisation/trunk/paquet.xml

    r100890 r101207  
    1515        <auteur>Teddy</auteur>
    1616
    17         <copyright>2007-2015</copyright>
     17        <copyright>2007-2016</copyright>
    1818
    1919        <licence lien="http://www.gnu.org/licenses/lgpl-3.0.html">LGPL 3</licence>
Note: See TracChangeset for help on using the changeset viewer.