eba468b6e26f13953fb1ece0804f7d015fbb6212
[ptitvelo/web/www.git] / www / ecrire / install / etape_3b.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2012 *
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('inc/headers');
16
17 function install_etape_3b_dist()
18 {
19 $login = _request('login');
20 $email = _request('email');
21 $nom = _request('nom');
22 $pass = _request('pass');
23 $pass_verif = _request('pass_verif');
24
25 $server_db = defined('_INSTALL_SERVER_DB')
26 ? _INSTALL_SERVER_DB
27 : _request('server_db');
28
29 if (!defined('_PASS_LONGUEUR_MINI')) define('_PASS_LONGUEUR_MINI',6);
30 if($login) {
31 $echec = ($pass!=$pass_verif) ?
32 _T('info_passes_identiques')
33 : ((strlen($pass)<_PASS_LONGUEUR_MINI) ?
34 _T('info_passe_trop_court_car_pluriel',array('nb'=>_PASS_LONGUEUR_MINI))
35 : ((strlen($login)<3) ?
36 _T('info_login_trop_court')
37 : ''));
38 include_spip('inc/filtres');
39 if (!$echec AND $email AND !email_valide($email))
40 $echec = _T('form_email_non_valide');
41 if ($echec) {
42 echo minipres(
43 'AUTO',
44 info_progression_etape(3,'etape_','install/', true).
45 "<div class='error'><h3>$echec</h3>\n".
46 "<p>"._T('avis_connexion_echec_2')."</p>".
47 "</div>"
48 );
49 exit;
50 }
51 }
52
53 if (@file_exists(_FILE_CHMOD_TMP))
54 include(_FILE_CHMOD_TMP);
55 else
56 redirige_url_ecrire('install');
57
58 if (!@file_exists(_FILE_CONNECT_TMP))
59 redirige_url_ecrire('install');
60
61 # maintenant on connait le vrai charset du site s'il est deja configure
62 # sinon par defaut lire_meta reglera _DEFAULT_CHARSET
63 # (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)
64
65 lire_metas();
66 if ($login) {
67 include_spip('inc/charsets');
68
69 $nom = (importer_charset($nom, _DEFAULT_CHARSET));
70 $login = (importer_charset($login, _DEFAULT_CHARSET));
71 $email = (importer_charset($email, _DEFAULT_CHARSET));
72 # pour le passwd, bizarrement il faut le convertir comme s'il avait
73 # ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js
74 $pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1');
75 include_spip('auth/sha256.inc');
76 include_spip('inc/acces');
77 $htpass = generer_htpass($pass);
78 $alea_actuel = creer_uniqid();
79 $alea_futur = creer_uniqid();
80 $shapass = _nano_sha256($alea_actuel.$pass);
81 // prelablement, creer le champ webmestre si il n'existe pas (install neuve
82 // sur une vieille base
83 $t = sql_showtable("spip_auteurs", true);
84 if (!isset($t['field']['webmestre']))
85 @sql_alter("TABLE spip_auteurs ADD webmestre varchar(3) DEFAULT 'non' NOT NULL");
86
87 $id_auteur = sql_getfetsel("id_auteur", "spip_auteurs", "login=" . sql_quote($login));
88 if ($id_auteur !== NULL) {
89 sql_updateq('spip_auteurs', array("nom"=> $nom, 'email'=> $email, 'login'=>$login, 'pass'=>$shapass, 'alea_actuel'=>$alea_actuel, 'alea_futur'=> $alea_futur, 'htpass'=>$htpass, 'statut'=>'0minirezo'), "id_auteur=$id_auteur");
90 }
91 else {
92 $id_auteur = sql_insertq('spip_auteurs', array(
93 'nom' => $nom,
94 'email' => $email,
95 'login' => $login,
96 'pass' => $shapass,
97 'htpass' => $htpass,
98 'alea_actuel' => $alea_actuel,
99 'alea_futur' => $alea_futur,
100 'statut' =>'0minirezo'));
101 }
102 // le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne
103 @sql_updateq('spip_auteurs', array('webmestre' => 'oui'), "id_auteur=$id_auteur");
104
105 // inserer email comme email webmaster principal
106 // (sauf s'il est vide: cas de la re-installation)
107 if ($email)
108 ecrire_meta('email_webmaster', $email);
109
110 // Connecter directement celui qui vient de (re)donner son login
111 // mais sans cookie d'admin ni connexion longue
112 include_spip('inc/auth');
113 if (!$auteur = auth_identifier_login($login, $pass)
114 OR !auth_loger($auteur, true))
115 spip_log("login automatique impossible $auth_spip $session" . count($row));
116 }
117
118 // installer les metas
119 $config = charger_fonction('config', 'inc');
120 $config();
121
122 // activer les plugins
123 // leur installation ne peut pas se faire sur le meme hit, il faudra donc
124 // poursuivre au hit suivant
125 include_spip('inc/plugin');
126 actualise_plugins_actifs();
127
128
129 include_spip('inc/distant');
130 redirige_par_entete(parametre_url(self(),'etape','4','&'));
131
132 }
133
134 ?>