Changeset 16674 in spip-zone


Ignore:
Timestamp:
Nov 7, 2007, 3:16:38 PM (13 years ago)
Author:
marcimat@…
Message:

Le pseudo plugin de mutualisation permet maintenant des configurations avec PostgreSQL. Il passe en version 0.3 (avec spip_version_code>1.9259)

En cas de probleme, pour recuperer la version avant ce commit :
svn co -r 16673 svn://zone.spip.org/spip-zone/_plugins_/_test_/mutualisation/

{{Changements}}
Renommage des fonctions mysql_* en sql_* et diverses adaptations.

Si define('_INSTALL_SERVER_DB', 'pg'); est defini dans /config/mes_options.php, et que l'on demande de créer la base de donnée, le plugin s'en occupe, de la même manière que pour mysql.

Sauf que, une contrainte (si creer_base=true) est qu'il faut que l'utilisateur (_INSTALL_USER_DB) ait aussi, en pg, une base de donnée à son nom (PG ne peut pas se connecter sans donner un nom de base de donnée - par défaut, le nom d'utilisateur), et les privilèges pour en créer de nouvelles.

En conséquence de ces changements, la version de SPIP nécessaire devient la 1.9259 qui introduit les fonctions sql_*.

Location:
_plugins_/_test_/mutualisation
Files:
2 added
4 edited

Legend:

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

    r14899 r16674  
    1717        define ('_INSTALL_TABLE_PREFIX', 'spip');
    1818
     19        // si le nom du serveur est different du nom dns,
     20        // ca peut parfois poser probleme
     21        // il faut alors le définir ici
     22        # define ('_INSTALL_HOST_DB_LOCALNAME', 'nom_serveur');
     23       
     24        // Si le serveur n'est pas mysql, il faut le preciser obligatoirement.
     25        // /!\ Actuellement, pg ne sais pas utiliser les bases de donnees crees
     26        // (il garde la connexion avec la base au nom de l'utilisateur)
     27        // car sql_selectdb() n'est pas fontionnel en pg pour le moment.
     28        // il faut donc creer la base de donnee voulue manuellement.
     29        # define ('_INSTALL_SERVER_DB', 'pg'); // mysql|pg
     30       
    1931        // inscrire ici le nom du site d'administration du tableau de bord
    2032        // de la mutualisation (ou plusieurs, separes par des virgules)
  • _plugins_/_test_/mutualisation/mutualiser.php

    r15410 r16674  
    1313if (!defined("_ECRIRE_INC_VERSION")) return;
    1414
     15if (false===strpos($GLOBALS['dossier_squelettes'], ':mutualisation')){
     16        // temporaire car remis a zero lors de la mutualisation
     17        $GLOBALS['dossier_squelettes'] .= ':mutualisation';
     18}
    1519
    1620// Demarrer un site dans le sous-repertoire sites/$f/
     
    3741        );
    3842
    39         $GLOBALS['mutualisation_dir']=$options['repertoire'];
     43        $GLOBALS['mutualisation_dir'] = $options['repertoire'];
    4044       
    4145        if ($options['cookie_prefix'])
     
    4448                $GLOBALS['table_prefix'] = prefixe_mutualisation($site);
    4549
     50
     51               
    4652        if (($options['creer_user_base']) AND (!$options['utiliser_panel'])) {
    4753                define('_INSTALL_USER_DB', _INSTALL_NAME_DB);
     
    5460                );
    5561        }
    56        
     62
    5763        if ($options['utiliser_panel']) {
     64                include_spip('base/abstract_sql');
     65                include_spip('base/abstract_mutu');
    5866               
    5967                // Voir http://www.spip-contrib.net/Service-d-hebergement-mutualise
    60                                
     68               
     69                if (!defined('_INSTALL_SERVER_DB'))
     70                        define('_INSTALL_SERVER_DB','mysql');
     71                                               
    6172                // On cherche en BD si le site est enregistre et on recupere
    6273                // password et code d'activation
    63 
    64                 $link = @mysql_connect(_INSTALL_PANEL_HOST_DB,_INSTALL_PANEL_USER_DB,_INSTALL_PANEL_PASS_DB);
    65                 @mysql_select_db(_INSTALL_PANEL_NAME_DB);
    66                 $result=@mysql_query("SELECT * FROM "._INSTALL_PANEL_NAME_TABLE." WHERE "._INSTALL_PANEL_FIELD_SITE."='$site'");
    67                 if (mysql_num_rows($result)>0) {
    68                         $data = mysql_fetch_assoc($result);
     74                $link = @mutu_connect_db(_INSTALL_PANEL_HOST_DB, 0, _INSTALL_PANEL_USER_DB, _INSTALL_PANEL_PASS_DB, '', _INSTALL_SERVER_DB);
     75                @sql_selectdb(_INSTALL_PANEL_NAME_DB, _INSTALL_SERVER_DB);
     76                $result=@sql_query("SELECT * FROM "._INSTALL_PANEL_NAME_TABLE." WHERE "._INSTALL_PANEL_FIELD_SITE."='$site'");
     77                if (sql_count($result)>0) {
     78                        $data = sql_fetch($result);
    6979                        $options['code'] =$data[_INSTALL_PANEL_FIELD_CODE];
    7080                        define ('_INSTALL_NAME_DB',_INSTALL_NAME_DB);
     
    8999
    90100        define('_SPIP_PATH',
     101                $e . 'dist/:' .  // +
    91102                $e . ':' .
    92                 _DIR_RACINE .':' .
     103                //_DIR_RACINE .':' . // -
    93104                _DIR_RACINE .'dist/:' .
    94                 _DIR_RESTREINT
    95         );
     105                _DIR_RACINE .'dist/javascript/:' . // +
     106                _DIR_RESTREINT);
     107
    96108
    97109        if (is_dir($e.'squelettes'))
     
    152164}
    153165
     166
     167
    154168?>
  • _plugins_/_test_/mutualisation/mutualiser_creer.php

    r16629 r16674  
    1717function mutualiser_creer($e, $options) {
    1818        include_spip('inc/minipres');
     19        include_spip('base/abstract_sql');
     20        include_spip('base/abstract_mutu');
     21       
    1922        $GLOBALS['meta']["charset"] = 'utf-8'; // pour que le mail fonctionne
    20 
     23       
     24        //$GLOBALS['spip_connect_version'] = 0.7;
     25       
     26        if (!defined('_INSTALL_SERVER_DB'))
     27                define('_INSTALL_SERVER_DB','mysql');
    2128
    2229        if ($options['code']) {
     
    5966                        )
    6067                AND defined('_INSTALL_NAME_DB')) {
    61                        
     68
    6269                        if (defined('_INSTALL_USER_DB_ROOT')) {
    63                                 $link = mysql_connect(_INSTALL_HOST_DB, _INSTALL_USER_DB_ROOT, _INSTALL_PASS_DB_ROOT);
     70                                $link = mutu_connect_db(_INSTALL_HOST_DB, 0,  _INSTALL_USER_DB_ROOT, _INSTALL_PASS_DB_ROOT, '', _INSTALL_SERVER_DB);
    6471                        } else {
    65                                 $link = mysql_connect(_INSTALL_HOST_DB, _INSTALL_USER_DB, _INSTALL_PASS_DB);
     72                                $link = mutu_connect_db(_INSTALL_HOST_DB, 0,  _INSTALL_USER_DB, _INSTALL_PASS_DB, '', _INSTALL_SERVER_DB);
    6673                        }
    6774
    6875                        // si la base n'existe pas, on va travailler
    69                         if (!mysql_select_db(_INSTALL_NAME_DB)) {
     76                        if (!sql_selectdb(_INSTALL_NAME_DB, _INSTALL_SERVER_DB)) {
    7077                                if (_request('creerbase')) {
    71                                         if (mysql_query('CREATE DATABASE '._INSTALL_NAME_DB)
    72                                         AND mysql_select_db(_INSTALL_NAME_DB)) {
     78                                        if (sql_query('CREATE DATABASE '._INSTALL_NAME_DB, _INSTALL_SERVER_DB)
     79                                        AND sql_selectdb(_INSTALL_NAME_DB, _INSTALL_SERVER_DB)) {
     80                                                        $GLOBALS['connexions'][_INSTALL_SERVER_DB]['prefixe'] = $GLOBALS['table_prefix'];
     81                                                        $GLOBALS['connexions'][_INSTALL_SERVER_DB]['db'] = _INSTALL_NAME_DB;
     82                                                               
    7383                                                // Pour chaque base creee on cree aussi un user
    7484                                                // MYSQL specifique qui aura les droits sur la base
    7585                                                if ($options['creer_user_base']) {
    76                                                         define ('_INSTALL_HOST_DB_LOCALNAME', _INSTALL_HOST_DB); // le nom de la machine MySQL peut different du nom de la connexion via DNS
    77                                                         if (!mysql_query("GRANT Alter,Select,Insert,Update,Delete,Create,Drop,Execute ON "._INSTALL_NAME_DB.".* TO '"._INSTALL_USER_DB."'@'"._INSTALL_HOST_DB_LOCALNAME."' IDENTIFIED BY '"._INSTALL_PASS_DB."'")) {
    78                                                                 die (__FILE__." " . __LINE__.": Erreur sur  : GRANT Select,Insert,Update,Delete,Create,Drop,Execute ON "._INSTALL_NAME_DB.".* TO '"._INSTALL_USER_DB."'@'"._INSTALL_HOST_DB_LOCALNAME."'  IDENTIFIED BY 'xxx'");
     86                                                        // le nom de la machine MySQL peut different
     87                                                        // du nom de la connexion via DNS
     88                                                        define ('_INSTALL_HOST_DB_LOCALNAME', _INSTALL_HOST_DB);                                                       
     89                                                        if (!sql_query("GRANT Alter,Select,Insert,Update,Delete,Create,Drop,Execute ON "
     90                                                                . _INSTALL_NAME_DB.".* TO '"
     91                                                                . _INSTALL_USER_DB."'@'"._INSTALL_HOST_DB
     92                                                                . "' IDENTIFIED BY '" . _INSTALL_PASS_DB."'"))
     93                                                        {
     94                                                                die (__FILE__." " . __LINE__
     95                                                                        . ": Erreur sur  : GRANT Select,Insert,Update,Delete,Create,Drop,Execute ON "
     96                                                                        . _INSTALL_NAME_DB.".* TO '"
     97                                                                        . _INSTALL_USER_DB."'@'"._INSTALL_HOST_DB_LOCALNAME
     98                                                                        . "'  IDENTIFIED BY 'xxx'");
    7999                                                        }
    80                                                         mysql_close($link);
    81                                                         $link = mysql_connect(_INSTALL_HOST_DB, _INSTALL_USER_DB, _INSTALL_PASS_DB);
     100                                                        mutu_close();
     101                                                        $link = mutu_connect_db(_INSTALL_HOST_DB,'',  _INSTALL_USER_DB, _INSTALL_PASS_DB, '', _INSTALL_SERVER_DB);
    82102                                                }
    83103                                                echo minipres(
     
    129149                                "<div><img alt='SPIP' src='" . _DIR_IMG_PACK . "logo-spip.gif' /></div>\n"
    130150                                .'<h3>'. _L('erreur') .'</h3>'
    131                                 . _L('Les donn&#233;es de connexion MySQL ne sont pas d&#233;finies, impossible de cr&#233;er automatiquement la base.')
     151                                . _L('Les donn&#233;es de connexion ' . uppercase(_INSTALL_SERVER_DB) . ' ne sont pas d&#233;finies, impossible de cr&#233;er automatiquement la base.')
    132152                        );
    133153                        exit;
  • _plugins_/_test_/mutualisation/plugin.xml

    r14896 r16674  
    77        </auteur>
    88        <version>
    9                 0.2
     9                0.3
    1010        </version>
    1111        <etat>
     
    2424                  Mutualisation
    2525        </prefix>
    26         <necessite id='spip' version='[1.9255;]' />
     26        <necessite id='spip' version='[1.9259;]' />
    2727
    2828        <chemin dir='' type='aucun' />
Note: See TracChangeset for help on using the changeset viewer.