[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / ecrire / install / etape_2.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 include_spip('base/abstract_sql');
16
17 // http://doc.spip.org/@install_etape_2_dist
18 function install_etape_2_dist()
19 {
20 $adresse_db = defined('_INSTALL_HOST_DB')
21 ? _INSTALL_HOST_DB
22 : _request('adresse_db');
23
24 $login_db = defined('_INSTALL_USER_DB')
25 ? _INSTALL_USER_DB
26 : _request('login_db');
27
28 $pass_db = defined('_INSTALL_PASS_DB')
29 ? _INSTALL_PASS_DB
30 : _request('pass_db');
31
32 $server_db = defined('_INSTALL_SERVER_DB')
33 ? _INSTALL_SERVER_DB
34 : _request('server_db');
35
36 $name_db = defined('_INSTALL_NAME_DB')
37 ? _INSTALL_NAME_DB
38 : '';
39
40 $chmod = _request('chmod');
41
42 $link = spip_connect_db($adresse_db, 0, $login_db, $pass_db, $name_db, $server_db);
43 $GLOBALS['connexions'][$server_db] = $link;
44
45 $GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']]
46 = $GLOBALS['spip_' . $server_db .'_functions_' . $GLOBALS['spip_sql_version']];
47
48 echo install_debut_html();
49
50 // prenons toutes les dispositions possibles pour que rien ne s'affiche !
51
52 /*
53 * /!\ sqlite3/PDO : erreur sur join(', ', $link)
54 * L'objet PDO ne peut pas etre transformee en chaine
55 * Un echo $link ne fonctionne pas non plus
56 * Il faut utiliser par exemple print_r($link)
57 */
58 //echo "\n<!--\n", join(', ', $link), " $login_db ";
59 $db_connect = 0; // revoirfunction_exists($ferrno) ? $ferrno() : 0;
60 //echo join(', ', $GLOBALS['connexions'][$server_db]);
61 //echo "\n-->\n";
62
63 if (($db_connect=="0") && $link) {
64 echo "<div class='success'><b>"._T('info_connexion_ok')."</b></div>";
65 echo info_progression_etape(2,'etape_','install/');
66
67 echo info_etape(_T('menu_aide_installation_choix_base').aide ("install2", true));
68
69
70
71 spip_connect_db($adresse_db, 0, $login_db, $pass_db, '',$server_db);
72
73 echo "\n", '<!-- ', sql_version($server_db), ' -->' ;
74 list($checked, $res) = install_etape_2_bases($login_db, $server_db);
75
76 $hidden = (defined('_SPIP_CHMOD')
77 ? ''
78 : ("\n<input type='hidden' name='chmod' value='".spip_htmlspecialchars($chmod)."' />"))
79 . predef_ou_cache($adresse_db,$login_db,$pass_db, $server_db);
80
81 echo install_etape_2_form($hidden, $checked, $res, 3);
82 } else {
83 echo info_progression_etape(1,'etape_','install/',true);
84
85 echo "<div class='error'>";
86 echo info_etape(_T('info_connexion_base'));
87 echo "<h3>" . _T('avis_connexion_echec_1') . "</h3>";
88 echo "<p>"._T('avis_connexion_echec_2')."</p>";
89
90 echo "<p style='font-size: small;'>",
91 _T('avis_connexion_echec_3'),
92 "</p></div>";
93 }
94
95 echo install_fin_html();
96 }
97
98 // Liste les bases accessibles,
99 // avec une heuristique pour preselectionner la plus probable
100
101 // http://doc.spip.org/@install_etape_2_bases
102 function install_etape_2_bases($login_db, $server_db)
103 {
104 $res = install_etape_liste_bases($server_db, $login_db);
105 if ($res) {
106 list($checked, $bases) = $res;
107 return array($checked,
108 "<label for='choix_db'><b>"
109 ._T('texte_choix_base_2')
110 ."</b><br />"
111 ._T('texte_choix_base_3')
112 ."</label>"
113 . "<ul>\n<li>"
114 . join("</li>\n<li>",$bases)
115 . "</li>\n</ul><p>"
116 . _T('info_ou')
117 . " "
118 );
119 }
120 $res = "<b>"._T('avis_lecture_noms_bases_1')."</b>
121 "._T('avis_lecture_noms_bases_2')."<p>";
122
123 if ($login_db) {
124 // Si un login comporte un point, le nom de la base est plus
125 // probablement le login sans le point -- testons pour savoir
126 $test_base = $login_db;
127 $ok = sql_selectdb($test_base, $server_db);
128 $test_base2 = str_replace('.', '_', $test_base);
129 if (sql_selectdb($test_base2, $server_db)) {
130 $test_base = $test_base2;
131 $ok = true;
132 }
133
134 if ($ok) {
135 $res .= _T('avis_lecture_noms_bases_3')
136 . "<ul>"
137 . "<li><input name=\"choix_db\" value=\"".$test_base."\" type='radio' id='stand' checked='checked' />"
138 . "<label for='stand'>".$test_base."</label></li>\n"
139 . "</ul>"
140 . "<p>"._T('info_ou')." ";
141 $checked = true;
142 }
143 }
144
145 return array($checked, $res);
146 }
147
148 // http://doc.spip.org/@install_etape_2_form
149 function install_etape_2_form($hidden, $checked, $res, $etape)
150 {
151 return generer_form_ecrire('install', (
152 "\n<input type='hidden' name='etape' value='$etape' />"
153 . $hidden
154 . (defined('_INSTALL_NAME_DB')
155 ? '<h3>'._T('install_nom_base_hebergeur'). ' <tt>'._INSTALL_NAME_DB.'</tt>'.'</h3>'
156 : "\n<fieldset><legend>"._T('texte_choix_base_1')."</legend>\n"
157 . $res
158 . "\n<input name=\"choix_db\" value=\"new_spip\" type='radio' id='nou'"
159 . ($checked ? '' : " checked='checked'")
160 . " />\n<label for='nou'>"._T('info_creer_base')."</label></p>\n<p>"
161 . "\n<input type='text' name='table_new' class='text' value=\"spip\" size='20' /></p></fieldset>\n"
162 )
163
164 . ((defined('_INSTALL_TABLE_PREFIX')
165 OR $GLOBALS['table_prefix'] != 'spip')
166 ? '<h3>'._T('install_table_prefix_hebergeur').' <tt>'.$GLOBALS['table_prefix'].'</tt>'.'</h3>'
167 : "<fieldset><legend>"._T('texte_choix_table_prefix')."</legend>\n"
168 . "<p><label for='table_prefix'>"._T('info_table_prefix')."</label></p><p>"
169 . "\n<input type='text' id='tprefix' name='tprefix' class='text' value='"
170 . 'spip' # valeur par defaut
171 . "' size='20' /></p></fieldset>"
172 )
173
174 . bouton_suivant()));
175 }
176 ?>