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