function install_etape_sup1_dist() { $adresse_db = _request('adresse_db'); if (!$adresse_db AND defined('_INSTALL_HOST_DB')) $adresse_db =_INSTALL_HOST_DB; $login_db = _request('login_db'); if (!$login_db AND defined('_INSTALL_USER_DB')) $login_db = _INSTALL_USER_DB; $pass_db = _request('pass_db'); if (!$pass_db AND defined('_INSTALL_PASS_DB')) $pass_db = _INSTALL_PASS_DB; $server_db =_request('server_db'); if (!$server_db AND defined('_INSTALL_SERVER_DB')) $server_db = _INSTALL_SERVER_DB; // Ceci indique la base principale (passe en hidden) // pour qu'on la refuse comme choix de base secondaire $sel_db =_request('sel_db'); if (!$sel_db AND defined('_INSTALL_NAME_DB')) $sel_db = _INSTALL_NAME_DB; echo install_debut_html(_T('config_titre_base_sup')); $link = spip_connect_db($adresse_db, 0, $login_db, $pass_db, '', $server_db); $GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']] = $GLOBALS['spip_' . $server_db .'_functions_' . $GLOBALS['spip_sql_version']]; if ($link) { $GLOBALS['connexions'][$server_db] = $link; echo '<div style="background-color: #eeeeee">'; echo "\n<!--\n", join(', ', $link), " $login_db "; echo join(', ', $GLOBALS['connexions'][$server_db]); echo "\n-->\n<p class='resultat'><b>"; echo _T('info_connexion_ok'),"</b></p>\n"; echo '<!-- ', sql_version($server_db), ' -->' ; $l = bases_referencees(); array_push($l, $sel_db); list(, $res) = install_etape_liste_bases($server_db, $login_db, $l); $hidden = predef_ou_cache($adresse_db,$login_db,$pass_db, $server_db) . (defined('_INSTALL_NAME_DB') ? '' : ("\n<input type='hidden' name='sel_db' value='$sel_db' />\n")); echo install_etape_sup1_form($hidden, '', $res, 'sup2'); echo '</div>'; } else { echo info_etape(_T('info_connexion_base')); echo "<p class='resultat'><b>", _T('avis_connexion_echec_1'), "</b></p>"; } echo install_fin_html(); }
function install_etape_1_dist() { echo install_debut_html(); // stopper en cas de grosse incompatibilite de l'hebergement tester_compatibilite_hebergement(); // Recuperer les anciennes donnees pour plus de facilite (si presentes) $s = !@is_readable(_FILE_CONNECT_TMP) ? '' : analyse_fichier_connection(_FILE_CONNECT_TMP); list($adresse_db, $login_db) = $s ? $s : login_hebergeur(); $chmod = (isset($_GET['chmod']) and preg_match(',^[0-9]+$,', $_GET['chmod'])) ? sprintf('%04o', $_GET['chmod']) : '0777'; if (@is_readable(_FILE_CHMOD_TMP)) { $s = @join('', @file(_FILE_CHMOD_TMP)); if (preg_match("#define\\('_SPIP_CHMOD', (.*)\\)#", $s, $regs)) { $chmod = $regs[1]; } } $db = array($adresse_db, _T('entree_base_donnee_2')); $login = array($login_db, _T('entree_login_connexion_2')); $pass = array($pass_db, _T('entree_mot_passe_2')); $predef = array(defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB : '', defined('_INSTALL_HOST_DB'), defined('_INSTALL_USER_DB'), defined('_INSTALL_PASS_DB')); echo info_progression_etape(1, 'etape_', 'install/'); // ces deux chaines de langues doivent etre reecrites # echo info_etape(_T('info_connexion_mysql'), _T('texte_connexion_mysql').aide ("install1", true)); echo info_etape(_T('info_connexion_base_donnee')); echo install_connexion_form($db, $login, $pass, $predef, "\n<input type='hidden' name='chmod' value='{$chmod}' />", 2); echo install_fin_html(); }
function install_etape_4_dist() { // creer le repertoire cache, qui sert partout ! if (!@file_exists(_DIR_CACHE)) { $rep = preg_replace(',' . _DIR_TMP . ',', '', _DIR_CACHE); $rep = sous_repertoire(_DIR_TMP, $rep, true, true); } echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"'); echo info_progression_etape(4, 'etape_', 'install/'); echo "<div class='success'><b>" . _T('info_derniere_etape') . "</b><p>" . _T('info_utilisation_spip') . "</p></div>"; echo "<p>" . _T('plugin_info_plugins_dist_1', array('plugins_dist' => "<tt>" . joli_repertoire(_DIR_PLUGINS_DIST) . "</tt>")) . "</p>"; // installer les extensions include_spip('inc/plugin'); $afficher = charger_fonction("afficher_liste", 'plugins'); echo $afficher(self(), liste_plugin_files(_DIR_PLUGINS_DIST), array(), array(), _DIR_PLUGINS_DIST, 'afficher_nom_plugin'); // si la base de SPIP est up, on peut installer les plugins, sinon on passe cette etape // car les plugins supposent que la base de SPIP est dans son etat normal (mise a jour) // au premier passage dans l'espace prive on aura une demande d'upgrade qui se poursuit sur la page plugin // et procede alors a l'installation if (!isset($GLOBALS['meta']['version_installee']) or $GLOBALS['spip_version_base'] == str_replace(',', '.', $GLOBALS['meta']['version_installee'])) { plugin_installes_meta(); } // mettre a jour si necessaire l'adresse du site // securite si on arrive plus a se loger include_spip('inc/config'); appliquer_adresse_site(''); // aller a la derniere etape qui clos l'install et redirige $suite = "\n<input type='hidden' name='etape' value='fin' />" . bouton_suivant(_T('login_espace_prive')); echo generer_form_ecrire('install', $suite); echo install_fin_html(); }
function etape_ldap5_suite() { echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"'); echo info_etape(_T('info_ldap_ok'), info_progression_etape(5, 'etape_ldap', 'install/'), _T('info_terminer_installation')); echo generer_form_ecrire('install', "<input type='hidden' name='etape' value='3' />" . "<input type='hidden' name='ldap_present' value='true' />" . bouton_suivant()); echo install_fin_html(); }
function install_etape_ldap4_dist() { $adresse_ldap = _request('adresse_ldap'); $login_ldap = _request('login_ldap'); $pass_ldap = _request('pass_ldap'); $port_ldap = _request('port_ldap'); $base_ldap = _request('base_ldap'); $base_ldap_text = _request('base_ldap_text'); if (!$base_ldap) { $base_ldap = $base_ldap_text; } echo install_debut_html(); $ldap_link = ldap_connect($adresse_ldap, $port_ldap); @ldap_bind($ldap_link, $login_ldap, $pass_ldap); // Essayer de verifier le chemin fourni $r = @ldap_compare($ldap_link, $base_ldap, "objectClass", ""); $fail = ldap_errno($ldap_link) == 32; if ($fail) { echo info_etape(_T('info_chemin_acces_annuaire')), info_progression_etape(3, 'etape_ldap', 'install/', true), "<div class='error'><p><b>" . _T('avis_operation_echec') . "</b></p><p>" . _T('avis_chemin_invalide_1'), " (<tt>" . htmlspecialchars($base_ldap) . "</tt>) " . _T('avis_chemin_invalide_2') . "</p></div>"; } else { info_etape(_T('info_reglage_ldap')); echo info_progression_etape(4, 'etape_ldap', 'install/'); $statuts = liste_statuts_ldap(); $statut_ldap = defined('_INSTALL_STATUT_LDAP') ? _INSTALL_STATUT_LDAP : $GLOBALS['liste_des_statuts']['info_redacteurs']; $res = install_propager(array('adresse_ldap', 'port_ldap', 'login_ldap', 'pass_ldap', 'protocole_ldap', 'tls_ldap')) . "<input type='hidden' name='etape' value='ldap5' />" . "<input type='hidden' name='base_ldap' value='" . htmlentities($base_ldap) . "' />" . fieldset(_T('info_statut_utilisateurs_1'), array('statut_ldap' => array('label' => _T('info_statut_utilisateurs_2') . '<br />', 'valeur' => $statut_ldap, 'alternatives' => $statuts))) . install_ldap_correspondances() . bouton_suivant(); echo generer_form_ecrire('install', $res); } echo install_fin_html(); }
function install_etape_4_dist() { // creer le repertoire cache, qui sert partout ! if (!@file_exists(_DIR_CACHE)) { $rep = preg_replace(',' . _DIR_TMP . ',', '', _DIR_CACHE); $rep = sous_repertoire(_DIR_TMP, $rep, true, true); } echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"'); echo info_progression_etape(4, 'etape_', 'install/'); echo "<div class='success'><b>" . _T('info_derniere_etape') . "</b><p>" . _T('info_utilisation_spip') . "</p></div>"; echo "<p>" . _T('plugin_info_plugins_dist_1', array('plugins_dist' => "<tt>" . joli_repertoire(_DIR_PLUGINS_DIST) . "</tt>")) . "</p>"; // installer les extensions include_spip('inc/plugin'); $afficher = charger_fonction("afficher_liste", 'plugins'); echo $afficher(self(), liste_plugin_files(_DIR_PLUGINS_DIST), array(), array(), _DIR_PLUGINS_DIST, 'afficher_nom_plugin'); plugin_installes_meta(); // mettre a jour si necessaire l'adresse du site // securite si on arrive plus a se loger include_spip('inc/config'); appliquer_adresse_site(''); // aller a la derniere etape qui clos l'install et redirige $suite = "\n<input type='hidden' name='etape' value='fin' />" . bouton_suivant(_T('login_espace_prive')); echo generer_form_ecrire('install', $suite); echo install_fin_html(); }
function base_restaurer_dist($titre = '', $reprise = false) { $status_file = _DUMP_STATUS_FILE; $status_file = _DIR_TMP . basename($status_file) . ".txt"; if (!lire_fichier($status_file, $status) or !($status = unserialize($status))) { } else { $redirect = parametre_url(generer_action_auteur('restaurer', _DUMP_STATUS_FILE), "step", intval(_request('step') + 1), '&'); $timeout = ini_get('max_execution_time'); // valeur conservatrice si on a pas reussi a lire le max_execution_time if (!$timeout) { $timeout = 30; } // parions sur une valeur tellement courante ... $max_time = time() + $timeout / 2; include_spip('inc/minipres'); @ini_set("zlib.output_compression", "0"); // pour permettre l'affichage au fur et a mesure $titre = _T('dump:restauration_en_cours') . " (" . count($status['tables']) . ") "; $balise_img = chercher_filtre('balise_img'); $titre .= $balise_img(chemin_image('searching.gif')); echo install_debut_html($titre); // script de rechargement auto sur timeout echo http_script("window.setTimeout('location.href=\"" . $redirect . "\";'," . $timeout * 1000 . ")"); echo "<div style='text-align: left'>\n"; dump_serveur($status['connect']); spip_connect('dump'); // au premier coup on ne fait rien sauf afficher l'ecran de sauvegarde if (_request('step')) { $options = array('callback_progression' => 'dump_afficher_progres', 'max_time' => $max_time, 'no_erase_dest' => lister_tables_noerase(), 'where' => $status['where'] ? $status['where'] : array(), 'desc_tables_dest' => array()); if ($desc = sql_getfetsel('valeur', 'spip_meta', "nom='dump_structure_temp'", '', '', '', '', 'dump') and $desc = unserialize($desc)) { $options['desc_tables_dest'] = $desc; } #var_dump(sql_allfetsel('nom,valeur','spip_meta',"",'','','','','dump')); #die(); $res = base_copier_tables($status_file, $status['tables'], 'dump', '', $options); } else { // mais on en profite pour reparer les version base pour etre sur de ne pas les perdre sql_updateq("spip_meta", array('impt' => 'oui'), "nom='version_installee'", '', 'dump'); sql_updateq("spip_meta", array('impt' => 'oui'), "nom LIKE '%_base_version'", '', 'dump'); } echo "</div>\n"; if (!$res) { echo dump_relance($redirect); } echo install_fin_html(); ob_end_flush(); flush(); if (!$res) { exit; } // quand on sort de $export avec true c'est qu'on a fini dump_end(_DUMP_STATUS_FILE, 'restaurer'); include_spip('inc/headers'); echo redirige_formulaire(generer_url_ecrire("restaurer", 'status=' . _DUMP_STATUS_FILE, '', true, true)); } }
function install_etape_ldap1_dist() { $adresse_ldap = defined('_INSTALL_HOST_LDAP') ? _INSTALL_HOST_LDAP : 'localhost'; $port_ldap = defined('_INSTALL_PORT_LDAP') ? _INSTALL_PORT_LDAP : 389; $tls_ldap = defined('_INSTALL_TLS_LDAP') ? _INSTALL_TLS_LDAP : 'non'; $protocole_ldap = defined('_INSTALL_PROTOCOLE_LDAP') ? _INSTALL_PROTOCOLE_LDAP : 3; // on essaie 2 en cas d'echec $login_ldap = defined('_INSTALL_USER_LDAP') ? _INSTALL_USER_LDAP : ''; $pass_ldap = defined('_INSTALL_PASS_LDAP') ? _INSTALL_PASS_LDAP : ''; echo install_debut_html(); echo info_etape(_T('titre_connexion_ldap'), info_progression_etape(1, 'etape_ldap', 'install/'), _T('entree_informations_connexion_ldap')); echo generer_form_ecrire('install', "\n<input type='hidden' name='etape' value='ldap2' />" . fieldset(_T('entree_adresse_annuaire'), array('adresse_ldap' => array('label' => _T('texte_adresse_annuaire_1'), 'valeur' => $adresse_ldap), 'port_ldap' => array('label' => _T('entree_port_annuaire') . '<br />' . _T('texte_port_annuaire'), 'valeur' => $port_ldap), 'tls_ldap' => array('label' => '<b>' . _T('tls_ldap') . '</b>', 'valeur' => $tls_ldap, 'alternatives' => array('non' => _T('item_non'), 'oui' => _T('item_oui'))), 'protocole_ldap' => array('label' => _T('protocole_ldap'), 'valeur' => $protocole_ldap, 'alternatives' => array('3' => '3', '2' => '2')))) . "\n<p>" . _T('texte_acces_ldap_anonyme_1') . '</p>' . fieldset(_T('connexion_ldap'), array('login_ldap' => array('label' => _T('texte_login_ldap_1'), 'valeur' => $login_ldap), 'pass_ldap' => array('label' => _T('entree_passe_ldap'), 'valeur' => $pass_ldap))) . bouton_suivant()); echo install_fin_html(); }
function install_etape_ldap3_dist() { $adresse_ldap = _request('adresse_ldap'); $login_ldap = _request('login_ldap'); $pass_ldap = _request('pass_ldap'); $port_ldap = _request('port_ldap'); $base_ldap_text = defined('_INSTALL_BASE_LDAP') ? _INSTALL_BASE_LDAP : "ou=users, dc=mon-domaine, dc=com"; echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"'); echo info_etape(_T('info_chemin_acces_1'), info_progression_etape(3, 'etape_ldap', 'install/')), _T('info_chemin_acces_2'); $ldap_link = @ldap_connect("{$adresse_ldap}", "{$port_ldap}"); if ($ldap_link) { @ldap_bind($ldap_link, "{$login_ldap}", "{$pass_ldap}"); $result = @ldap_read($ldap_link, "", "objectclass=*", array("namingContexts")); $info = @ldap_get_entries($ldap_link, $result); @ldap_close($ldap_link); } $checked = false; $res = ''; if (is_array($info) and $info["count"] > 0) { $res .= "<p>" . _T('info_selection_chemin_acces') . "</p>"; $res .= "<ul>"; $n = 0; for ($i = 0; $i < $info["count"]; $i++) { $names = $info[$i]["namingcontexts"]; if (is_array($names)) { for ($j = 0; $j < $names["count"]; $j++) { $n++; $res .= "<li><input name=\"base_ldap\" value=\"" . spip_htmlspecialchars($names[$j]) . "\" type='radio' id='tab{$n}'"; if (!$checked) { $res .= " checked=\"checked\""; $checked = true; } $res .= " />"; $res .= "<label for='tab{$n}'>" . spip_htmlspecialchars($names[$j]) . "</label></li>\n"; } } } $res .= "</ul>"; $res .= _T('info_ou') . " "; } $res .= "<br />\n<input name=\"base_ldap\" value=\"\" type='radio' id='manuel'"; if (!$checked) { $res .= " checked=\"checked\""; $checked = true; } $res .= " />" . "\n<label for='manuel'>" . _T('entree_chemin_acces') . "</label> " . "\n<fieldset>" . "<input type='text' name='base_ldap_text' class='text' value=\"{$base_ldap_text}\" size='40' />" . "\n</fieldset>" . "\n<input type='hidden' name='etape' value='ldap4' />" . install_propager(array('adresse_ldap', 'port_ldap', 'login_ldap', 'pass_ldap', 'protocole_ldap', 'tls_ldap')) . bouton_suivant(); echo generer_form_ecrire('install', $res); echo install_fin_html(); }
function base_convert_utf8_dist($titre='', $reprise=false) { if (!$titre) return; // anti-testeur automatique // une liste des tables a convertir, avec le champ dans lequel on // indique '<CONVERT charset>' ; on commence par les rubriques sinon // ca fait desordre dans l'interface privee $tables_a_convertir = array( 'spip_rubriques' => 'titre', 'spip_auteurs' => 'nom', 'spip_articles' => 'titre', 'spip_breves' => 'titre', 'spip_documents' => 'titre', 'spip_forum' => 'titre', 'spip_mots' => 'titre', 'spip_groupes_mots' => 'titre', 'spip_petitions' => 'texte', 'spip_signatures' => 'nom_email', 'spip_syndic' => 'nom_site', 'spip_syndic_articles' => 'titre', 'spip_messages' => 'titre' ); if (!$reprise) convert_utf8_init($tables_a_convertir); echo install_debut_html($titre); echo "<p>", _T('utf8_convert_timeout'), "</p><hr />\n"; // preparer un fichier de sauvegarde au cas ou // on met 'a' car ca peut demander plusieurs rechargements $f = @fopen(_DIR_TMP.'convert_utf8_backup.sql', 'a'); foreach ($tables_a_convertir as $table => $champ) { convert_table_utf8($f, $table, $champ); } if ($f) fclose($f); echo "<p><b>"._T('utf8_convert_termine')."</b></p>"; echo "<p>,"._T('utf8_convert_verifier', array('rep' => joli_repertoire(_DIR_TMP))), '</p>'; // bouton "retour au site" + redirige_par_entete echo "<p style='text-align: right'>", "<a href='", generer_url_ecrire("config_lang"), "'> >> ", _T('icone_retour'),"</a></p>", install_fin_html(); }
function install_etape_2_dist() { $adresse_db = defined('_INSTALL_HOST_DB') ? _INSTALL_HOST_DB : _request('adresse_db'); if (preg_match(',(.*):(.*),', $adresse_db, $r)) { list(, $adresse_db, $port) = $r; } else { $port = ''; } $login_db = defined('_INSTALL_USER_DB') ? _INSTALL_USER_DB : _request('login_db'); $pass_db = defined('_INSTALL_PASS_DB') ? _INSTALL_PASS_DB : _request('pass_db'); $server_db = defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB : _request('server_db'); $name_db = defined('_INSTALL_NAME_DB') ? _INSTALL_NAME_DB : ''; $chmod = _request('chmod'); $link = spip_connect_db($adresse_db, $port, $login_db, $pass_db, $name_db, $server_db); $GLOBALS['connexions'][$server_db] = $link; $GLOBALS['connexions'][$server_db][$GLOBALS['spip_sql_version']] = $GLOBALS['spip_' . $server_db . '_functions_' . $GLOBALS['spip_sql_version']]; echo install_debut_html(); // prenons toutes les dispositions possibles pour que rien ne s'affiche ! /* * /!\ sqlite3/PDO : erreur sur join(', ', $link) * L'objet PDO ne peut pas etre transformee en chaine * Un echo $link ne fonctionne pas non plus * Il faut utiliser par exemple print_r($link) */ //echo "\n<!--\n", join(', ', $link), " $login_db "; $db_connect = 0; // revoirfunction_exists($ferrno) ? $ferrno() : 0; //echo join(', ', $GLOBALS['connexions'][$server_db]); //echo "\n-->\n"; if ($db_connect == "0" && $link) { echo "<div class='success'><b>" . _T('info_connexion_ok') . "</b></div>"; echo info_progression_etape(2, 'etape_', 'install/'); echo info_etape(_T('menu_aide_installation_choix_base') . aide("install2", true)); echo "\n", '<!-- ', sql_version($server_db), ' -->'; list($checked, $res) = install_etape_2_bases($login_db, $server_db); $hidden = (defined('_SPIP_CHMOD') ? '' : "\n<input type='hidden' name='chmod' value='" . spip_htmlspecialchars($chmod) . "' />") . predef_ou_cache($adresse_db . ($port ? ':' . $port : ''), $login_db, $pass_db, $server_db); echo install_etape_2_form($hidden, $checked, $res, 3); } else { echo info_progression_etape(1, 'etape_', 'install/', true); echo "<div class='error'>"; echo info_etape(_T('info_connexion_base')); echo "<h3>" . _T('avis_connexion_echec_1') . "</h3>"; echo "<p>" . _T('avis_connexion_echec_2') . "</p>"; echo "<p style='font-size: small;'>", _T('avis_connexion_echec_3'), "</p></div>"; } echo install_fin_html(); }
function install_etape_ldap2_dist() { echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"'); $adresse_ldap = _request('adresse_ldap'); $port_ldap = _request('port_ldap'); $tls_ldap = _request('tls_ldap'); $protocole_ldap = _request('protocole_ldap'); $login_ldap = _request('login_ldap'); $pass_ldap = _request('pass_ldap'); $port_ldap = intval($port_ldap); $tls = false; if ($tls_ldap == 'oui') { if ($port_ldap == 636) { $adresse_ldap = "ldaps://{$adresse_ldap}"; } else { $tls = true; } } $ldap_link = ldap_connect($adresse_ldap, $port_ldap); $erreur = "ldap_connect({$adresse_ldap}, {$port_ldap})"; if ($ldap_link) { if (!ldap_set_option($ldap_link, LDAP_OPT_PROTOCOL_VERSION, $protocole_ldap)) { $protocole_ldap = 2; ldap_set_option($ldap_link, LDAP_OPT_PROTOCOL_VERSION, $protocole_ldap); } if ($tls === true) { if (!ldap_start_tls($ldap_link)) { $erreur = "ldap_start_tls({$ldap_link}) {$adresse_ldap}, {$port_ldap}"; $ldap_link = false; } } if ($ldap_link) { $ldap_link = ldap_bind($ldap_link, $login_ldap, $pass_ldap); $erreur = "ldap_bind('{$ldap_link}', '{$login_ldap}', '{$pass_ldap}'): {$adresse_ldap}, {$port_ldap}"; } } if ($ldap_link) { echo info_etape(_T('titre_connexion_ldap'), info_progression_etape(2, 'etape_ldap', 'install/')), _T('info_connexion_ldap_ok'); echo generer_form_ecrire('install', "\n<input type='hidden' name='etape' value='ldap3' />" . "\n<input type='hidden' name='adresse_ldap' value=\"{$adresse_ldap}\" />" . "\n<input type='hidden' name='port_ldap' value=\"{$port_ldap}\" />" . "\n<input type='hidden' name='login_ldap' value=\"{$login_ldap}\" />" . "\n<input type='hidden' name='pass_ldap' value=\"{$pass_ldap}\" />" . "\n<input type='hidden' name='protocole_ldap' value=\"{$protocole_ldap}\" />" . "\n<input type='hidden' name='tls_ldap' value=\"{$tls_ldap}\" />" . bouton_suivant()); } else { echo info_etape(_T('titre_connexion_ldap')), info_progression_etape(1, 'etape_ldap', 'install/', true), "<div class='error'><p>" . _T('avis_connexion_ldap_echec_1') . "</p>", "<p>" . _T('avis_connexion_ldap_echec_2') . "<br />\n" . _T('avis_connexion_ldap_echec_3') . '<br /><br />' . $erreur . '<b> ?</b></p></div>'; } echo install_fin_html(); }
function install_etape_4_dist() { // creer le repertoire cache, qui sert partout ! if(!@file_exists(_DIR_CACHE)) { $rep = preg_replace(','._DIR_TMP.',', '', _DIR_CACHE); $rep = sous_repertoire(_DIR_TMP, $rep, true,true); } echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"'); echo info_progression_etape(4,'etape_','install/'); echo "<p>" ._L('Les extensions ci-dessous sont chargées et activées dans le répertoire @extensions@.', array('extensions' => joli_repertoire(_DIR_EXTENSIONS))) ."</p>"; // installer les extensions include_spip('inc/plugin'); $afficher = charger_fonction("afficher_liste",'plugins'); echo $afficher(self(), liste_plugin_files(_DIR_EXTENSIONS),array(), _DIR_EXTENSIONS,'afficher_nom_plugin'); installe_plugins(); echo info_etape(_T('info_derniere_etape'), _T('info_utilisation_spip') ); // mettre a jour si necessaire l'adresse du site // securite si on arrive plus a se loger include_spip('inc/config'); $_POST['adresse_site'] = ''; appliquer_modifs_config(); // aller a la derniere etape qui clos l'install et redirige $suite = "\n<input type='hidden' name='etape' value='fin' />" . bouton_suivant(_T('login_espace_prive')); echo generer_form_ecrire('install', $suite); echo install_fin_html(); }
function inc_sauvegarder_dist($status_file, $redirect = '') { $status_file = _DIR_TMP . basename($status_file) . ".txt"; if (!lire_fichier($status_file, $status) or !($status = unserialize($status))) { } else { $timeout = ini_get('max_execution_time'); // valeur conservatrice si on a pas reussi a lire le max_execution_time if (!$timeout) { $timeout = 30; } // parions sur une valeur tellement courante ... $max_time = time() + $timeout / 2; include_spip('inc/minipres'); @ini_set("zlib.output_compression", "0"); // pour permettre l'affichage au fur et a mesure $titre = _T('dump:sauvegarde_en_cours') . " (" . count($status['tables']) . ") "; $balise_img = chercher_filtre('balise_img'); $titre .= $balise_img(chemin_image('searching.gif')); echo install_debut_html($titre); // script de rechargement auto sur timeout echo http_script("window.setTimeout('location.href=\"" . $redirect . "\";'," . $timeout * 1000 . ")"); echo "<div style='text-align: left'>\n"; dump_serveur($status['connect']); spip_connect('dump'); // au premier coup on ne fait rien sauf afficher l'ecran de sauvegarde $res = false; if (_request('step')) { $options = array('callback_progression' => 'dump_afficher_progres', 'max_time' => $max_time, 'no_erase_dest' => lister_tables_noerase(), 'where' => $status['where'] ? $status['where'] : array()); $res = base_copier_tables($status_file, $status['tables'], '', 'dump', $options); } echo "</div>\n"; if (!$res and $redirect) { echo dump_relance($redirect); } echo install_fin_html(); ob_end_flush(); flush(); return $res; } }
function install_etape_3_dist() { $ldap_present = _request('ldap_present'); if (!$ldap_present) { $adresse_db = defined('_INSTALL_HOST_DB') ? _INSTALL_HOST_DB : _request('adresse_db'); $login_db = defined('_INSTALL_USER_DB') ? _INSTALL_USER_DB : _request('login_db'); $pass_db = defined('_INSTALL_PASS_DB') ? _INSTALL_PASS_DB : _request('pass_db'); $server_db = defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB : _request('server_db'); $chmod_db = defined('_SPIP_CHMOD') ? _SPIP_CHMOD : _request('chmod'); $choix_db = defined('_INSTALL_NAME_DB') ? _INSTALL_NAME_DB : _request('choix_db'); $sel_db = $choix_db == "new_spip" ? _request('table_new') : $choix_db; $res = install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, $sel_db, $chmod_db); if ($res) { $res = info_progression_etape(2, 'etape_', 'install/', true) . "<div class='error'><h3>" . _T('avis_operation_echec') . "</h3>" . $res . "<p>" . _T('texte_operation_echec') . "</p>" . "</div>"; } } else { $res = ''; list($adresse_db, $login_db, $pass_db, $sel_db, $server_db) = analyse_fichier_connection(_FILE_CONNECT_TMP); $GLOBALS['connexions'][$server_db] = spip_connect_db($adresse_db, $sel_db, $login_db, $pass_db, $sel_db, $server_db); } if (!$res) { if (file_exists(_FILE_CONNECT_TMP)) { include _FILE_CONNECT_TMP; } else { redirige_url_ecrire('install'); } if (file_exists(_FILE_CHMOD_TMP)) { include _FILE_CHMOD_TMP; } else { redirige_url_ecrire('install'); } $hidden = predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db) . (defined('_INSTALL_NAME_DB') ? '' : "\n<input type='hidden' name='sel_db' value='{$sel_db}' />"); $auteur_obligatoire = $ldap_present ? 0 : !sql_countsel('spip_auteurs', '', '', '', $server_db); $res = "<div class='success'><b>" . _T('info_base_installee') . "</b></div>" . install_premier_auteur(_request('email'), _request('login'), _request('nom'), _request('pass'), $hidden, $auteur_obligatoire) . (($ldap_present or !function_exists('ldap_connect')) ? '' : install_propose_ldap()); } echo install_debut_html(); echo $res; echo install_fin_html(); }
function export_trace($val_meta, $dir, $meta) { list($gz, $archive, $rub, $tables_for_dump, $etape_actuelle, $sous_etape, $serveur, $save) = $val_meta; include_spip('inc/minipres'); // pour permettre l'affichage au fur et a mesure @ini_set("zlib.output_compression","0"); if (!($timeout = ini_get('max_execution_time')*1000)); $timeout = 30000; // parions sur une valeur tellement courante ... // le premier hit est moitie moins long car seulement une phase d'ecriture de morceaux // sans ramassage // sinon grosse ecriture au 1er hit, puis gros rammassage au deuxieme avec petite ecriture,... ca oscille if (!$etape_actuelle AND !$sous_etape) { $timeout = round($timeout/2); $tables_sauvegardees = array(); } else { $metatable = $meta . '_tables'; $tables_sauvegardees = isset($GLOBALS['meta'][$metatable])?unserialize($GLOBALS['meta'][$metatable]):array(); } // Les sauvegardes partielles prennent le temps d'indiquer les logos // Instancier une fois pour toutes, car on va boucler un max. // On complete jusqu'au secteur pour resituer dans l'arborescence) if ($rub) { $GLOBALS['chercher_logo'] = charger_fonction('chercher_logo', 'inc',true); $les_rubriques = complete_fils(array($rub), $serveur); $les_meres = complete_secteurs(array($rub), $serveur); } else { $GLOBALS['chercher_logo'] = false; $les_rubriques = $les_meres = ''; } // script de rechargement auto sur timeout $redirect = generer_url_ecrire("export_all"); $all = count($tables_for_dump); echo ( install_debut_html(_T('info_sauvegarde') . " ($all)")); echo http_script("window.setTimeout('location.href=\"".$redirect."\";',$timeout)"); echo "<div style='text-align: left'>\n"; $etape = 1; foreach($tables_for_dump as $table){ if ($etape_actuelle > $etape) { // sauter les deja faits, mais rappeler qu'ils sont fait echo ( "\n<br /><strong>".$etape. '. '."</strong>". $tables_sauvegardees[$table]); } else { echo ( "\n<br /><strong>".$etape. '. '. $table."</strong> "); $r = sql_countsel($table, array(), array(), array(), $serveur); flush(); if (!$r) $r = ( _T('texte_vide')); else { $f = $dir . $archive . '.part_' . sprintf('%03d',$etape); $r = export_objets($table, $sous_etape, $r, $f, $les_rubriques, $les_meres, $meta); $r += $sous_etape*_EXPORT_TRANCHES_LIMITE; // info pas fiable si interruption+partiel if ($rub AND $etape_actuelle > 1) $r = ">= $r"; } echo " $r"; flush(); $sous_etape = 0; // on utilise l'index comme ca c'est pas grave si on ecrit plusieurs fois la meme $tables_sauvegardees[$table] = "$table ($r)"; ecrire_meta($meta . '_tables', serialize($tables_sauvegardees),'non'); } $etape++; $v = serialize(array($gz, $archive, $rub, $tables_for_dump, $etape,$sous_etape, $serveur, $save)); ecrire_meta($meta, $v,'non'); } echo ( "</div>\n"); // si Javascript est dispo, anticiper le Time-out echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.setTimeout('location.href=\"$redirect\";',0);</script>\n"); echo (install_fin_html()); flush(); }
function convert_sql_utf8($titre){ define(_DEBUG_CONVERT, false); $charset_spip = $GLOBALS['meta']['charset']; $charset_supporte = false; $utf8_supporte = false; // verifier que mysql gere le charset courant pour effectuer les conversions if ($c = sql_get_charset($charset_spip)){ $sql_charset = $c['charset']; $sql_collation = $c['collation']; $charset_supporte = true; } if (!$charset_supporte){ $res = spip_query("SHOW CHARACTER SET"); while ($row = sql_fetch($res)){ if ($row['Charset']=='utf8') $utf8_supporte = true; } echo install_debut_html($titre); echo _L("Le charset SPIP actuel $charset_spip n'est pas supporte par votre serveur MySQL<br/>"); # non traduit car complexe & obsolete if ($utf8_supporte) echo _L("Votre serveur supporte utf-8, vous devriez convertir votre site en utf-8 avant de recommencer cette operation"); echo install_fin_html(); } else { echo _L("Charset Actuel du site SPIP : $charset_spip<br/>"); echo _L("Conversion des champs des tables spip de type latin1 vers <b>$sql_charset</b> (collation $sql_collation) <br/>"); // lister les collations et leur charset correspondant $res = spip_query("SHOW COLLATION"); $charset2collations = array(); while ($row = sql_fetch($res)){ $charset2collations[$row['Collation']] = $row['Charset']; } $count = 0; // lister les tables spip include_spip('base/serial'); include_spip('base/auxiliaires'); $res = spip_query("SHOW TABLES"); while (($row = sql_fetch($res)) /*&& ($count<1)*/){ $nom = array_shift($row); if (preg_match(',^'.$GLOBALS['table_prefix'].'_(.*)$,',$nom,$regs)){ $count++; $nom = $regs[1]; echo "<hr /><h2>$nom</h2>"; // lister les champs de la table $res2 = spip_query("SHOW FULL COLUMNS FROM spip_$nom"); while ($row2 = sql_fetch($res2)){ $collation = $row2['Collation']; $champ = $row2['Field']; if ($collation!="NULL" && isset($charset2collations[$collation]) && $charset2collations[$collation]=='latin1'){ echo "Conversion de '$champ' depuis $collation (".$charset2collations[$collation]."):"; // conversion de latin1 vers le charset reel du contenu $type_texte= $row2['Type']; $type_blob = "blob"; if (strpos($type_texte,"text")!==FALSE) $type_blob = str_replace("text","blob",$type_texte); // sauf si blob expressement demande dans la description ! if (( $a = $GLOBALS['tables_principales']['spip_'.$nom]['field'][$champ] OR $a = $GLOBALS['tables_auxiliaires']['spip_'.$nom]['field'][$champ] ) AND preg_match(',blob,i', $a)) { echo "On ignore le champ blob $nom.$champ <hr />\n"; } else { $default = $row2['Default']?(" DEFAULT ".sql_quote($row2['Default'])):""; $notnull = ($row2['Null']=='YES')?"":" NOT NULL"; $q = "ALTER TABLE spip_$nom CHANGE $champ $champ $type_blob $default $notnull"; if (!_DEBUG_CONVERT) $b = spip_query($q); echo "<pre>$q</pre>$b\n"; $q = "ALTER TABLE spip_$nom CHANGE $champ $champ $type_texte CHARACTER SET $sql_charset COLLATE $sql_collation $default $notnull"; if (!_DEBUG_CONVERT) $b = spip_query($q); echo "<pre>$q</pre>\n"; } } } // on ne change le charset par defaut de la table que quand tous ses champs sont convertis $q = "ALTER TABLE spip_$nom DEFAULT CHARACTER SET $sql_charset COLLATE $sql_collation"; if (!_DEBUG_CONVERT) $b = spip_query($q); echo "<pre>$q</pre>$b\n"; } } ecrire_meta('charset_sql_base',$sql_charset,'non'); ecrire_meta('charset_sql_connexion',$sql_charset,'non'); } }
/** * MAJ de base de SPIP * * http://doc.spip.org/@maj_base * * @param int $version_cible * @param string $redirect * @return array|bool */ function maj_base($version_cible = 0, $redirect = '') { global $spip_version_base; $version_installee = @$GLOBALS['meta']['version_installee']; // // Si version nulle ou inexistante, c'est une nouvelle installation // => ne pas passer par le processus de mise a jour. // De meme en cas de version superieure: ca devait etre un test, // il y a eu le message d'avertissement il doit savoir ce qu'il fait // // version_installee = 1.702; quand on a besoin de forcer une MAJ spip_log("Version anterieure: {$version_installee}. Courante: {$spip_version_base}", "maj." . _LOG_INFO_IMPORTANTE); if (!$version_installee or $spip_version_base < $version_installee) { sql_replace('spip_meta', array('nom' => 'version_installee', 'valeur' => $spip_version_base, 'impt' => 'non')); return false; } if (!upgrade_test()) { return true; } $cible = $version_cible ? $version_cible : $spip_version_base; if ($version_installee <= 1.926) { $n = floor($version_installee * 10); while ($n < 19) { $nom = sprintf("v%03d", $n); $f = charger_fonction($nom, 'maj', true); if ($f) { spip_log("{$f} repercute les modifications de la version " . $n / 10, "maj." . _LOG_INFO_IMPORTANTE); $f($version_installee, $spip_version_base); } else { spip_log("pas de fonction pour la maj {$n} {$nom}", "maj." . _LOG_INFO_IMPORTANTE); } $n++; } include_spip('maj/v019_pre193'); v019_pre193($version_installee, $version_cible); } if ($version_installee < 2000) { if ($version_installee < 2) { $version_installee = $version_installee * 1000; } include_spip('maj/v019'); } if ($cible < 2) { $cible = $cible * 1000; } include_spip('maj/svn10000'); ksort($GLOBALS['maj']); $res = maj_while($version_installee, $cible, $GLOBALS['maj'], 'version_installee', 'meta', $redirect, true); if ($res) { if (!is_array($res)) { spip_log("Pb d'acces SQL a la mise a jour", "maj." . _LOG_INFO_ERREUR); } else { echo _T('avis_operation_echec') . ' ' . join(' ', $res); echo install_fin_html(); } } return $res; }
function inc_migrer_vers_dist($status_file, $redirect='') { if (!$status = migrer_vers_lire_status($status_file)) { // rien a faire ? } else { $status_file = _DIR_TMP.basename($status_file).".txt"; $timeout = ini_get('max_execution_time'); // valeur conservatrice si on a pas reussi a lire le max_execution_time if (!$timeout) $timeout=30; // parions sur une valeur tellement courante ... $timeout = min($timeout,30); // ne prolongeons pas plus que 30s car cela peut produire des erreur 500 et bloque le refresh $max_time = time()+$timeout/2; include_spip('inc/minipres'); //@apache_setenv('no-gzip', 1); // trop agressif, plante sur certains hebergements @ini_set("zlib.output_compression","0"); // pour permettre l'affichage au fur et a mesure @ini_set("output_buffering","off"); @ini_set('implicit_flush', 1); @ob_implicit_flush(1); switch ($status['etape']){ case 'init': $titre = _T('migration:titre_debut_migration'); break; case 'base': case 'basecopie': $titre = _T('migration:titre_migration_en_cours_base') . " (".count($status['tables']).") "; break; case 'fichiers': case 'fichierscopie': $titre = _T('migration:titre_migration_en_cours_fichiers') . " (".count($status['files']).") "; break; case 'squelettes': case 'squelettescopie': $titre = _T('migration:titre_migration_en_cours_squelettes') . " (".array_sum(array_map('count',$status['squelettes'])).") "; break; } $titre .= "<img src=\"".chemin_image('searching.gif')."\" />"; echo ( install_debut_html($titre)); // script de rechargement auto sur timeout echo "<meta http-equiv='Refresh' content='$timeout'>"; @flush(); echo "<div style='text-align: left'>\n"; include_spip('inc/migration'); $s = lire_migration_vers_status(); // au premier coup on ne fait rien sauf afficher l'ecran de sauvegarde switch ($status['etape']){ case 'init': $status['etape'] = migrer_vers_etape_suivante($status['etape'],$s['quoi']); ecrire_fichier($status_file, serialize($status)); break; case 'base': case 'basecopie': $options = array( 'callback_progression' => 'migrer_vers_afficher_progres', 'max_time' => $max_time, 'no_erase_dest' => lister_tables_noerase(), 'where' => $status['where']?$status['where']:array(), 'racine_fonctions_dest' =>'migration/envoi', 'data_pool' => 200*1024, ); $res = base_copier_tables($status_file, $status['tables'], '', '', $options); if ($res) { if ($res==="abort"){ $s = lire_migration_vers_status(); $s['status'] = 'abort'; ecrire_migration_status('vers',$s); } if ($s['status'] != 'abort') { $status['etape'] = migrer_vers_etape_suivante($status['etape'],$s['quoi']); ecrire_fichier($status_file, serialize($status)); } } break; case 'fichiers': case 'fichierscopie': $options = array( 'callback_progression' => 'migrer_vers_afficher_progres', 'max_time' => $max_time, 'racine_fonctions_dest' =>'migration/envoi', 'data_pool' => 200*1024, ); $res = base_copier_files($status_file, $status['files'],_DIR_IMG,_DIR_IMG, $options); if ($res) { $status['etape'] = migrer_vers_etape_suivante($status['etape'],$s['quoi']); ecrire_fichier($status_file, serialize($status)); } break; case 'squelettes': case 'squelettescopie': $options = array( 'callback_progression' => 'migrer_vers_afficher_progres', 'max_time' => $max_time, 'racine_fonctions_dest' =>'migration/envoi', 'data_pool' => 200*1024, 'etape_suivante' => 'squelettescopie', ); $res = true; if ($dir_sources = migration_determiner_dossier_squelette() AND count($dir_sources = explode(':',$dir_sources))){ foreach($dir_sources as $dir_source) $res = base_copier_files($status_file, $status['squelettes'][$dir_source],$dir_source,_DIR_RACINE."squelettes/", $options); } if ($res) { $status['etape'] = migrer_vers_etape_suivante($status['etape'],$s['quoi']); ecrire_fichier($status_file, serialize($status)); } break; } // sortir si on a fini ou abandon demande $res = (in_array($status['etape'],array('fini','finition')) OR $s['status']=='abort'); echo ( "</div>\n"); if (!$res AND $redirect) echo migrer_vers_relance($redirect); echo (install_fin_html()); #while (ob_get_level()) # ob_end_flush(); flush(); return $res; } }
function spip_loader_reinstalle() { if (!defined('_SPIP_LOADER_UPDATE_AUTEURS')) { define('_SPIP_LOADER_UPDATE_AUTEURS', '1'); } if (!isset($GLOBALS['auteur_session']['statut']) or $GLOBALS['auteur_session']['statut'] != '0minirezo' or !in_array($GLOBALS['auteur_session']['id_auteur'], explode(':', _SPIP_LOADER_UPDATE_AUTEURS))) { include_spip('inc/headers'); include_spip('inc/minipres'); http_status('403'); install_debut_html(); echo _T('ecrire:avis_non_acces_page'); install_fin_html(); exit; } }
/** * http://doc.spip.org/@minipres * * @param string $titre * titre de la page * @param string $corps * corps de la page * @param string $onload * attribut onload de <body> * @param bool $all_inline * inliner les css et js dans la page (limiter le nombre de hits) * @return string */ function minipres($titre = '', $corps = "", $onload = '', $all_inline = false) { if (!defined('_AJAX')) { define('_AJAX', false); } // par securite if (!$titre) { if (!_AJAX) { http_status(403); } if (!($titre = _request('action')) and !($titre = _request('exec')) and !($titre = _request('page'))) { $titre = '?'; } $titre = spip_htmlspecialchars($titre); $titre = $titre == 'install' ? _T('avis_espace_interdit') : $titre . ' : ' . _T('info_acces_interdit'); $corps = generer_form_ecrire('accueil', '', '', $GLOBALS['visiteur_session']['statut'] ? _T('public:accueil_site') : _T('public:lien_connecter')); spip_log($GLOBALS['visiteur_session']['nom'] . " {$titre} " . $_SERVER['REQUEST_URI']); } if (!_AJAX) { return install_debut_html($titre, $onload, $all_inline) . $corps . install_fin_html(); } else { include_spip('inc/headers'); include_spip('inc/actions'); $url = self('&', true); foreach ($_POST as $v => $c) { $url = parametre_url($url, $v, $c, '&'); } ajax_retour("<div>" . $titre . redirige_formulaire($url) . "</div>", false); } }
function minipres($titre='', $corps="", $onload='') { if (!defined('_AJAX')) define('_AJAX', false); if (!$titre) { if (!_AJAX) http_status(403); if (!$titre = _request('action') AND !$titre = _request('exec') AND !$titre = _request('page')) $titre = '?'; $titre = htmlspecialchars($titre); $titre = ($titre == 'install') ? _T('avis_espace_interdit') : $titre . ' : '. _T('info_acces_interdit'); $corps = generer_form_ecrire('accueil', '','',_T('public:accueil_site')); spip_log($GLOBALS['visiteur_session']['nom'] . " $titre " . $_SERVER['REQUEST_URI']); } if (!_AJAX) return install_debut_html($titre, $onload) . $corps . install_fin_html(); else { include_spip('inc/headers'); include_spip('inc/actions'); $url = self('&',true); foreach ($_POST as $v => $c) $url = parametre_url($url, $v, $c, '&'); echo ajax_retour("<div>".$titre . redirige_formulaire($url)."</div>",false); } }
/** * Retourne une page HTML contenant, dans une présentation minimale, * le contenu transmis dans `$titre` et `$corps`. * * Appelée pour afficher un message d’erreur (l’utilisateur n’a pas * accès à cette page par exemple). * * Lorsqu’aucun argument n’est transmis, un header 403 est renvoyé, * ainsi qu’un message indiquant une interdiction d’accès. * * @example * ``` * include_spip('inc/minipres'); * if (!autoriser('configurer')) { * echo minipres(); * exit; * } * ``` * @uses install_debut_html() * @uses install_fin_html() * * @param string $titre * Titre de la page * @param string $corps * Corps de la page * @param array $options * string onload : Attribut onload de `<body>` * bool all_inline : Inliner les css et js dans la page (limiter le nombre de hits) * int status : status de la page * @return string * HTML de la page */ function minipres($titre = '', $corps = "", $options = array()) { // compat signature old // minipres($titre='', $corps="", $onload='', $all_inline = false) $args = func_get_args(); if (isset($args[2]) and is_string($args[2])) { $options = array('onload' => $args[2]); } if (isset($args[3])) { $options['all_inline'] = $args[3]; } $options = array_merge(array('onload' => '', 'all_inline' => false), $options); if (!defined('_AJAX')) { define('_AJAX', false); } // par securite if (!$titre) { if (!isset($options['status'])) { $options['status'] = 403; } if (!($titre = _request('action')) and !($titre = _request('exec')) and !($titre = _request('page'))) { $titre = '?'; } $titre = spip_htmlspecialchars($titre); $titre = $titre == 'install' ? _T('avis_espace_interdit') : $titre . ' : ' . _T('info_acces_interdit'); $statut = isset($GLOBALS['visiteur_session']['statut']) ? $GLOBALS['visiteur_session']['statut'] : ''; $nom = isset($GLOBALS['visiteur_session']['nom']) ? $GLOBALS['visiteur_session']['nom'] : ''; if ($statut != '0minirezo') { $titre = _T('info_acces_interdit'); } $corps = generer_form_ecrire('accueil', '', '', $statut ? _T('public:accueil_site') : _T('public:lien_connecter')); spip_log($nom . " {$titre} " . $_SERVER['REQUEST_URI']); } if (!_AJAX) { if (isset($options['status'])) { http_status($options['status']); } return install_debut_html($titre, $options['onload'], $options['all_inline']) . $corps . install_fin_html(); } else { include_spip('inc/headers'); include_spip('inc/actions'); $url = self('&', true); foreach ($_POST as $v => $c) { $url = parametre_url($url, $v, $c, '&'); } ajax_retour("<div>" . $titre . redirige_formulaire($url) . "</div>", false); } }
function install_etape_3_dist() { $ldap_present = _request('ldap_present'); if (!$ldap_present) { $adresse_db = defined('_INSTALL_HOST_DB') ? _INSTALL_HOST_DB : _request('adresse_db'); $login_db = defined('_INSTALL_USER_DB') ? _INSTALL_USER_DB : _request('login_db'); $pass_db = defined('_INSTALL_PASS_DB') ? _INSTALL_PASS_DB : _request('pass_db'); $server_db = defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB : _request('server_db'); $chmod_db = defined('_SPIP_CHMOD') ? _SPIP_CHMOD : _request('chmod'); $choix_db = defined('_INSTALL_NAME_DB') ? _INSTALL_NAME_DB : _request('choix_db'); $sel_db = ($choix_db == "new_spip") ? _request('table_new') : $choix_db; $res = install_bases($adresse_db, $login_db, $pass_db, $server_db, $choix_db, $sel_db, $chmod_db); if ($res) { $res .= info_progression_etape(2,'etape_','install/', true); $res .= "<p class='resultat echec'><b>"._T('avis_operation_echec')."</b></p>"._T('texte_operation_echec'); } } else { $res = ''; list($adresse_db, $login_db, $pass_db, $sel_db, $server_db) = analyse_fichier_connection(_FILE_CONNECT_TMP); } if (!$res) { if (file_exists(_FILE_CONNECT_TMP)) include(_FILE_CONNECT_TMP); else redirige_url_ecrire('install'); if (file_exists(_FILE_CHMOD_TMP)) include(_FILE_CHMOD_TMP); else redirige_url_ecrire('install'); $hidden = predef_ou_cache($adresse_db, $login_db, $pass_db, $server_db) . (defined('_INSTALL_NAME_DB') ? '' : "\n<input type='hidden' name='sel_db' value='$sel_db' />"); $res = "<p class='resultat ok'><b>" . _T('info_base_installee') . "</b></p>" . install_premier_auteur(_request('email'), _request('login'), _request('nom'), _request('pass'), $hidden) . (($ldap_present OR !function_exists('ldap_connect')) ? '' : install_propose_ldap()); } echo install_debut_html(); echo $res; echo install_fin_html(); }
function install_etape_sup2_dist() { $adresse_db = _request('adresse_db'); if (!$adresse_db AND defined('_INSTALL_HOST_DB')) $adresse_db =_INSTALL_HOST_DB; $login_db = _request('login_db'); if (!$login_db AND defined('_INSTALL_USER_DB')) $login_db = _INSTALL_USER_DB; $pass_db = _request('pass_db'); if (!$pass_db AND defined('_INSTALL_PASS_DB')) $pass_db = _INSTALL_PASS_DB; $server_db =_request('server_db'); if (!$server_db AND defined('_INSTALL_SERVER_DB')) $server_db = _INSTALL_SERVER_DB; // Ceci indique la base principale (passe en hidden) // pour qu'on la refuse comme choix de base secondaire a chaque tour. $sel_db =_request('sel_db'); if (!$sel_db AND defined('_INSTALL_NAME_DB')) $sel_db = _INSTALL_NAME_DB; // le choix $choix_db = _request('choix_db'); if (is_numeric($choix_db)) $choix_db = _request('table_new'); if (!$choix_db) $res = "<!-- il ne sait pas ce qu'il veut -->"; else { $res = install_bases_sup($adresse_db, $login_db, $pass_db, $server_db, $choix_db); if ($res[1]=='!') $res .= "<p class='resultat'><b>"._T('avis_operation_echec')."</b></p>"; else { $res = "<p class='resultat'><b>" . _T('install_base_ok', array('base' => $choix_db)) . "</b></p>" . $res; } } $res .= generer_form_ecrire('admin_declarer', (defined('_INSTALL_NAME_DB') ? '' : ("\n<input type='hidden' name='sel_db' value='" . $sel_db . "' />")) . predef_ou_cache($adresse_db,$login_db,$pass_db, $server_db) . bouton_suivant()); echo install_debut_html(_T('config_titre_base_sup')); echo $res; echo install_fin_html(); }