Valider 3f55c7fe rédigé par esj's avatar esj
Parcourir les fichiers

Découpage plus fonctionnel des formulaires et utilitaires d'installation,...

Découpage plus fonctionnel des formulaires et utilitaires d'installation, notamment pour pouvoir insérer des étapes d'initialisation d'autres serveurs SQL. 

Au passage, suite aux habitudes fréquentes en mutualisation, s'il existe une table ayant meme nom que le préfixe des tables, elle est pré-selectionnée.

Autre détail: amélioration de la regexp calculant automatiquement le nombre d'étapes.

Il y avait encore des redirections vers test_dirs qui ne pouvaient pas marcher; mais on peut se demander si ces test sont vraiment utiles une fois la premiere étape franchi.

Question irrésolue: c'est exprès qu'il y a 2 appels à mysql_connect à l'étape 2 ? Et ce triste fond gris, aussi ?
parent 7ca4cca9
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+0 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -15,8 +15,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return; #securite
// http://doc.spip.org/@inc_install_
function install_etape__dist()
{
	global $spip_lang_right;

	include_spip('inc/headers');
	utiliser_langue_visiteur();
	$menu_langues = menu_langues('var_lang_ecrire');
+23 −16
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -13,15 +13,12 @@
// http://doc.spip.org/@inc_install_1
function install_etape_1_dist()
{
	global $spip_lang_right;

	echo install_debut_html();

	// stopper en cas de grosse incompatibilite de l'hebergement
	tester_compatibilite_hebergement();

	echo info_etape(_T('info_connexion_mysql'), _T('texte_connexion_mysql').aide ("install1"));

	list($adresse_db, $login_db) = login_hebergeur();
	$pass_db = '';

@@ -45,46 +42,59 @@ function install_etape_1_dist()
			$chmod = $regs[1]; 
		}
	}
	echo generer_form_ecrire('install', (
	  "\n<input type='hidden' name='etape' value='2' />" 
	. "\n<input type='hidden' name='chmod' value='$chmod' />"

	$req = array($adresse_db,$login_db,$pass_db);

	$predef = array(defined('_INSTALL_HOST_DB'), defined('_INSTALL_USER_DB'), defined('_INSTALL_PASS_DB'));

	echo info_etape(_T('info_connexion_mysql'), _T('texte_connexion_mysql').aide ("install1"));
	echo install_etape_1_form($req, $predef, "\n<input type='hidden' name='chmod' value='$chmod' />", 2);
	echo info_progression_etape(1,'etape_','install/');
	echo install_fin_html();
}

function install_etape_1_form($req, $predef, $hidden, $etape)
{

  return generer_form_ecrire('install', (
	  "\n<input type='hidden' name='etape' value='$etape' />" 
	. $hidden
	. (_request('echec')?
			("<p><b>"._T('avis_connexion_echec_1').
			"</b></p><p>"._T('avis_connexion_echec_2')."</p><p style='font-size: small;'>"._T('avis_connexion_echec_3')."</p>")
			:"")

	. (defined('_INSTALL_HOST_DB')
	. ($predef[0]
	? '<h3>'._T('entree_base_donnee_1')._L(' attribu&eacute;e par l\'h&#233;bergeur').'</h3>'
	: fieldset(_T('entree_base_donnee_1'),
		array(
			'adresse_db' => array(
				'label' => _T('entree_base_donnee_2'),
				'valeur' => $adresse_db
				'valeur' => $req[0]
			),
		)
	)
	)

	. (defined('_INSTALL_USER_DB')
	. ($predef[1]
	? '<h3>'._T('entree_login_connexion_1')._L(' attribu&eacute; par l\'h&#233;bergeur').'</h3>'
	: fieldset(_T('entree_login_connexion_1'),
		array(
			'login_db' => array(
				'label' => _T('entree_login_connexion_2'),
				'valeur' => $login_db
				'valeur' => $req[1]
			),
		)
	)
	)

	. (defined('_INSTALL_PASS_DB')
	. ($predef[2]
	? '<h3>'._T('entree_mot_passe_1')._L(' attribu&eacute; par l\'h&#233;bergeur').'</h3>'
	: fieldset(_T('entree_mot_passe_1'),
		array(
			'pass_db' => array(
				'label' => _T('entree_mot_passe_2'),
				'valeur' => $pass_db
				'valeur' => $req[2]
			),
		)
	)
@@ -92,9 +102,6 @@ function install_etape_1_dist()

	. bouton_suivant()));

	echo info_progression_etape(1,'etape_','install/');

	echo install_fin_html();
}

?>
+42 −34
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -12,8 +12,6 @@

function install_etape_2_dist()
{
	global $spip_lang_right;

	$adresse_db = defined('_INSTALL_HOST_DB')
		? _INSTALL_HOST_DB
		: _request('adresse_db');
@@ -26,9 +24,7 @@ function install_etape_2_dist()
		? _INSTALL_PASS_DB
		: _request('pass_db');

	$chmod = defined('_SPIP_CHMOD')
		? _SPIP_CHMOD
		: _request('chmod');
	$chmod = _request('chmod');

	echo install_debut_html();

@@ -39,13 +35,36 @@ function install_etape_2_dist()
	echo "-->";

	if (($db_connect=="0") && $link) {

		echo "<p class='resultat'><b>"._T('info_connexion_ok')."</b></p>";
		echo info_etape(_T('menu_aide_installation_choix_base').aide ("install2"));

		// pourquoi se connecter une deuxieme fois ?
		$link = mysql_connect($adresse_db,$login_db,$pass_db);
	$result = @mysql_list_dbs();
		list($checked, $res) = install_etape_2_bases($login_db);

		$hidden = (defined('_SPIP_CHMOD')
		? ''
		: "\n<input type='hidden' name='chmod' value='".htmlspecialchars($chmod)."' />"
			   );

		echo install_etape_2_form($adresse_db,$login_db,$pass_db, $hidden, $checked, $res);
	} else  {
		echo info_etape(_T('info_connexion_base'));
		echo "<p class='resultat'><b>"._T('avis_connexion_echec_1')."</b></p>";
		echo "<p>"._T('avis_connexion_echec_2')."</p>";
		echo "<p style='font-size: small;'>"._T('avis_connexion_echec_3')."</p>";
	}
	
	echo info_progression_etape(2,'etape_','install/');
	echo install_fin_html();
}

// Liste les bases accessibles, 
// avec une heuristique pour preselectionner la plus probable

function install_etape_2_bases($login_db)
{
	$result = @mysql_list_dbs();

	$checked = '';
	if ($result AND (($n = @mysql_num_rows($result)) > 0)) {
@@ -55,15 +74,15 @@ function install_etape_2_dist()
			$table_nom = mysql_dbname($result, $i);
			$base = "<li>\n<input name=\"choix_db\" value=\"".$table_nom."\" type='radio' id='tab$i'";
			$base_fin = " /><label for='tab$i'>".$table_nom."</label>\n</li>";
			if ($table_nom == $login_db) {
				$bases = "$base checked='checked'$base_fin".$bases;
				$checked = true;
			}
			else {
			if (!$checked AND
			    (($table_nom == $login_db) OR
			     ($GLOBALS['table_prefix'] == $table_nom))) {
				$checked = "$base checked='checked'$base_fin";
			} else {
				$bases .= "$base$base_fin\n";
			}
		}
		$res = "<ul>".$bases."</ul><p>"._T('info_ou')." ";
		$res = "<ul>$checked$bases</ul><p>"._T('info_ou')." ";
	}
	else {
		$res = "<b>"._T('avis_lecture_noms_bases_1')."</b>
@@ -90,14 +109,14 @@ function install_etape_2_dist()
			}
		}
	}
	return array($checked, $res);
}

	echo generer_form_ecrire('install', (
function install_etape_2_form($adresse_db,$login_db,$pass_db, $hidden, $checked, $res)
 {
	return generer_form_ecrire('install', (
	  "\n<input type='hidden' name='etape' value='3' />"

	. (defined('_SPIP_CHMOD')
		? ''
		: "\n<input type='hidden' name='chmod' value='".htmlspecialchars($chmod)."' />"
	)
	 . $hidden
	. (defined('_INSTALL_HOST_DB')
		? ''
		: "\n<input type='hidden' name='adresse_db'  value=\"".htmlspecialchars($adresse_db)."\" />"
@@ -132,17 +151,6 @@ function install_etape_2_dist()
	)

	. bouton_suivant()));

	}
	else {
		echo info_etape(_T('info_connexion_base'));
		echo "<p class='resultat'><b>"._T('avis_connexion_echec_1')."</b></p>";
		echo "<p>"._T('avis_connexion_echec_2')."</p>";
		echo "<p style='font-size: small;'>"._T('avis_connexion_echec_3')."</p>";
	}
	
	echo info_progression_etape(2,'etape_','install/');
	echo install_fin_html();
}

?>
+36 −43
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -119,35 +119,26 @@ function install_bases(){
		$result_ko = (spip_num_rows($result) == 0);
	}

	if (!$result_ko) {
	if ($result_ko) return "<!--\n$res\n-->";

	if($chmod) {
			$conn = "<"."?php\n";
			$conn .= "if (!defined(\"_ECRIRE_INC_VERSION\")) return;\n";
			$conn .= "@define('_SPIP_CHMOD', ". sprintf('0%3o',$chmod).");\n";
			$conn .= "?".">";
			if (!ecrire_fichier(_FILE_CHMOD_INS . _FILE_TMP . '.php',
		$conn))
			  redirige_par_entete(generer_url_ecrire('install'));
		install_fichier_connexion(_FILE_CHMOD_INS . _FILE_TMP . '.php', "@define('_SPIP_CHMOD', ". sprintf('0%3o',$chmod).");\n");
	}

	if (preg_match(',(.*):(.*),', $adresse_db, $r))
		list(,$adresse_db, $port) = $r;
	else
		$port = '';
		$conn = "<"."?php\n";
		$conn .= "if (!defined(\"_ECRIRE_INC_VERSION\")) return;\n";
		$conn .= "\$GLOBALS['spip_connect_version'] = 0.4;\n";
		$conn .= $ligne_rappel;
		$conn .= "spip_connect_db("
			. "'$adresse_db','$port','$login_db','" . addcslashes($pass_db, "'\\") . "','$sel_db'"

	$conn =  "\$GLOBALS['spip_connect_version'] = 0.4;\n"
	. $ligne_rappel
	. "spip_connect_db("
	. "'$adresse_db','$port','$login_db','"
	. addcslashes($pass_db, "'\\") . "','$sel_db'"
	. ");\n";
		$conn .= "?".">";

		if (!ecrire_fichier(_FILE_CONNECT_INS . _FILE_TMP . '.php',
		$conn))
			redirige_par_entete(generer_url_ecrire('install'));
	}
	return $result_ko ? "<!--\n$res\n-->" : '';
	install_fichier_connexion(_FILE_CONNECT_INS . _FILE_TMP . '.php', $conn);
	return '';
}

function install_propose_ldap()
@@ -167,20 +158,7 @@ function install_propose_ldap()

function install_premier_auteur($email, $login, $nom, $pass)
{
	if (file_exists(_FILE_CONNECT_INS . _FILE_TMP . '.php'))
	  include(_FILE_CONNECT_INS . _FILE_TMP . '.php');
	else
	  redirige_par_entete(generer_url_ecrire('install', 'connect=1'));
	
	if (file_exists(_FILE_CHMOD_INS . _FILE_TMP . '.php'))
	  include(_FILE_CHMOD_INS . _FILE_TMP . '.php');
	else
	  redirige_par_entete(generer_url_ecrire('install', 'chmod=1'));

	return "<p class='resultat'><b>"
	. _T('info_base_installee')
	. "</b></p>"
	. info_etape(_T('info_informations_personnelles'),
	return info_etape(_T('info_informations_personnelles'),
		     "<b>"._T('texte_informations_personnelles_1')."</b>" .
			     aide ("install5") .
			     "</p><p>" .
@@ -231,11 +209,26 @@ function install_etape_3_dist()
	if ($res)
		$res .= "<p class='resultat'><b>"._T('avis_operation_echec')."</b></p>"._T('texte_operation_echec');
	
	else $res = install_premier_auteur(_request('email'),
	else {
		if (file_exists(_FILE_CONNECT_INS . _FILE_TMP . '.php'))
			include(_FILE_CONNECT_INS . _FILE_TMP . '.php');
		else
			redirige_par_entete(generer_url_ecrire('install'));
	
		if (file_exists(_FILE_CHMOD_INS . _FILE_TMP . '.php'))
			include(_FILE_CHMOD_INS . _FILE_TMP . '.php');
		else
			redirige_par_entete(generer_url_ecrire('install'));

		$res =  "<p class='resultat'><b>"
		. _T('info_base_installee')
		. "</b></p>"
		. install_premier_auteur(_request('email'),
					   _request('login'),
					   _request('nom'),
					   _request('pass'))
		. ($ldap_present ?  '' : install_propose_ldap());
	}

	echo install_debut_html();
	echo $res;
+0 −2
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -16,8 +16,6 @@ include_spip('inc/headers');

function install_etape_4_dist()
{
	global $spip_lang_right;

	$login = _request('login');
	$email = _request('email');
	$nom = _request('nom');
Chargement en cours