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') . aider("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 formulaires_configurer_relayeur_verifier_dist() { $erreurs = array(); $http_proxy = relayeur_saisie_ou_config(_request('http_proxy'), lire_config('http_proxy', '')); $http_noproxy = _request('http_noproxy'); if ($http_proxy and !tester_url_absolue($http_proxy)) { $erreurs['http_proxy'] = _L('format_proxy_incorrect'); } if (!isset($erreurs['http_proxy']) and _request('tester_proxy')) { if (!$http_proxy) { $erreurs['http_proxy'] = _T('info_obligatoire'); } else { include_spip('inc/distant'); $test_proxy = _request('test_proxy'); $t = parse_url($test_proxy); if (!@$t['host']) { $erreurs['test_proxy'] = _T('info_adresse_non_indiquee'); } else { include_spip('inc/texte'); // pour aide, couper, lang $info = ""; if (!need_proxy($t['host'], $http_proxy, $http_noproxy)) { $info = "<strong>" . _T('page_pas_proxy') . "</strong><br />"; } // il faut fausser le proxy actuel pour faire le test ! $cur_http_proxy = $GLOBALS['meta']['http_proxy']; $cur_http_noproxy = $GLOBALS['meta']['http_noproxy']; $GLOBALS['meta']['http_proxy'] = $http_proxy; $GLOBALS['meta']['http_noproxy'] = $http_noproxy; $page = recuperer_page($test_proxy, true); $GLOBALS['meta']['http_proxy'] = $cur_http_proxy; $GLOBALS['meta']['http_noproxy'] = $cur_http_noproxy; if ($page) { $erreurs['message_ok'] = _T('info_proxy_ok') . "<br />{$info}\n<tt>" . couper(entites_html($page), 300) . "</tt>"; $erreurs['message_erreur'] = ''; } else { $erreurs['message_erreur'] = $info . _T('info_impossible_lire_page', array('test_proxy' => "<tt>{$test_proxy}</tt>")) . " <b><tt>" . no_password_proxy_url($http_proxy) . "</tt></b>." . aider('confhttpproxy'); } } } } return $erreurs; }
/** * Demande la création d'un répertoire (pour tester l'accès de l'utilisateur) * et sort ou quitte sans rien faire si le répertoire est déjà là. * * Si l'on est webmestre, la plupart des actions n'ont pas besoin * de tester la création du répertoire (toutes sauf repair ou delete_all). * On considère qu'un webmestre a déjà du prouver ses droits sur les fichiers. * Dans ce cas, on quitte sans rien faire également. * * @uses dir_admin() * @uses fichier_admin() * * @param string $script * Script d'action (en base) à exécuter ensuite * @param string $action * Titre de l'action demandée * @param string $corps * Commentaire supplémentaire * @return string * Code HTML de la page (pour vérifier les droits), * sinon chaîne vide si déjà fait. **/ function debut_admin($script, $action = '', $corps = '') { if (!$action || !(autoriser('webmestre') or autoriser('chargerftp'))) { include_spip('inc/minipres'); return minipres(); } else { $dir = dir_admin(); $signal = fichier_admin($script); if (@file_exists($dir . $signal)) { spip_log("Action admin: {$action}"); return ''; } include_spip('inc/minipres'); // Si on est un super-admin, un bouton de validation suffit // sauf dans les cas destroy if ((autoriser('webmestre') or $script === 'repair') and $script != 'delete_all') { if (_request('validation_admin') == $signal) { spip_log("Action super-admin: {$action}"); return ''; } $corps .= '<input type="hidden" name="validation_admin" value="' . $signal . '" />'; $suivant = _T('bouton_valider'); $js = ''; } else { // cet appel permet d'assurer un copier-coller du nom du repertoire a creer dans tmp (esj) // l'insertion du script a cet endroit n'est pas xhtml licite mais evite de l'embarquer dans toutes les pages minipres $corps .= http_script('', "spip_barre.js"); $corps .= "<fieldset><legend>" . _T('info_authentification_ftp') . aider("ftp_auth") . "</legend>\n<label for='fichier'>" . _T('info_creer_repertoire') . "</label>\n" . "<span id='signal' class='formo'>" . $signal . "</span>" . "<input type='hidden' id='fichier' name='fichier' value='" . $signal . "' />" . _T('info_creer_repertoire_2', array('repertoire' => joli_repertoire($dir))) . "</fieldset>"; $suivant = _T('bouton_recharger_page'); // code volontairement tordu: // provoquer la copie dans le presse papier du nom du repertoire // en remettant a vide le champ pour que ca marche aussi en cas // de JavaScript inactif. $js = " onload='var range=document.createRange(); var signal = document.getElementById(\"signal\"); var userSelection = window.getSelection(); range.setStart(signal,0); range.setEnd(signal,1); userSelection.addRange(range);'"; } // admin/xxx correspond // a exec/base_xxx de preference // et exec/xxx sinon (compat) if (tester_url_ecrire("base_{$script}")) { $script = "base_{$script}"; } $form = copy_request($script, $corps, $suivant); $info_action = _T('info_action', array('action' => "{$action}")); return minipres($info_action, $form, $js); } }
function install_etape_chmod_dist() { $test_dir = _request('test_dir'); $chmod = 0; if ($test_dir) { if (substr($test_dir, -1) !== '/') { $test_dir .= '/'; } if (!in_array($test_dir, $GLOBALS['test_dirs'])) { $GLOBALS['test_dirs'][] = _DIR_RACINE . $test_dir; } } else { if (!_FILE_CONNECT) { $GLOBALS['test_dirs'][] = _DIR_CONNECT; $GLOBALS['test_dirs'][] = _DIR_CHMOD; } } $bad_dirs = array(); $absent_dirs = array(); while (list(, $my_dir) = each($GLOBALS['test_dirs'])) { $test = test_ecrire($my_dir); if (!$test) { $m = preg_replace(',^' . _DIR_RACINE . ',', '', $my_dir); if (@file_exists($my_dir)) { $bad_dirs["<li>" . $m . "</li>"] = 1; } else { $absent_dirs["<li>" . $m . "</li>"] = 1; } } else { $chmod = max($chmod, $test); } } if ($bad_dirs or $absent_dirs) { if (!_FILE_CONNECT) { $titre = _T('dirs_preliminaire'); $continuer = ' ' . _T('dirs_commencer') . '.'; } else { $titre = _T('dirs_probleme_droits'); } $res = "<div align='right'>" . menu_langues('var_lang_ecrire') . "</div>\n"; if ($bad_dirs) { $res .= _T('dirs_repertoires_suivants', array('bad_dirs' => join("\n", array_keys($bad_dirs)))) . "<b>" . _T('login_recharger') . "</b>."; } if ($absent_dirs) { $res .= _T('dirs_repertoires_absents', array('bad_dirs' => join("\n", array_keys($absent_dirs)))) . "<b>" . _T('login_recharger') . "</b>."; } $res = "<p>" . $continuer . $res . aider("install0", true) . "</p>"; $t = _T('login_recharger'); $t = (!$test_dir ? "" : "<input type='hidden' name='test_dir' value='{$test_dir}' />") . "<input type='hidden' name='etape' value='chmod' />" . "<div style='text-align: right'><input type='submit' value='{$t}' /></div>"; echo minipres($titre, $res . generer_form_ecrire('install', $t)); } else { $deja = (_FILE_CONNECT and analyse_fichier_connection(_FILE_CONNECT)); if (!$deja) { redirige_url_ecrire("install", "etape=1&chmod=" . $chmod); } else { redirige_url_ecrire(); } } }
/** * Chargement du formulaire d'édition de logo * * @param string $objet Objet SPIP auquel sera lie le document (ex. article) * @param int $id_objet Identifiant de l'objet * @param string $retour Url de redirection apres traitement * @param array $options Tableau d'option (exemple : image_reduire => 50) * @return array Variables d'environnement pour le fond */ function formulaires_editer_logo_charger_dist($objet, $id_objet, $retour = '', $options = array()) { // pas dans une boucle ? formulaire pour le logo du site // dans ce cas, il faut chercher un 'siteon0.ext' if (!$objet) { $objet = 'site'; } $objet = objet_type($objet); $_id_objet = id_table_objet($objet); if (!is_array($options)) { $options = unserialize($options); } if (!isset($options['titre'])) { $balise_img = chercher_filtre('balise_img'); $img = $balise_img(chemin_image('image-24.png'), "", 'cadre-icone'); $libelles = pipeline('libeller_logo', $GLOBALS['logo_libelles']); $libelle = ($id_objet or $objet != 'rubrique') ? $objet : 'racine'; if (isset($libelles[$libelle])) { $libelle = $libelles[$libelle]; } elseif ($libelle = objet_info($objet, 'texte_logo_objet')) { $libelle = _T($libelle); } else { $libelle = _L('Logo'); } switch ($objet) { case 'article': $libelle .= " " . aider("logoart"); break; case 'breve': $libelle .= " " . aider("breveslogo"); break; case 'rubrique': $libelle .= " " . aider("rublogo"); break; default: break; } $options['titre'] = $img . $libelle; } if (!isset($options['editable'])) { include_spip('inc/autoriser'); $options['editable'] = autoriser('iconifier', $objet, $id_objet); } $res = array('editable' => ($GLOBALS['meta']['activer_logos'] == 'oui' ? ' ' : '') && (!isset($options['editable']) or $options['editable']), 'logo_survol' => $GLOBALS['meta']['activer_logos_survol'] == 'oui' ? ' ' : '', 'objet' => $objet, 'id_objet' => $id_objet, '_options' => $options, '_show_upload_off' => ''); // rechercher le logo de l'objet // la fonction prend un parametre '_id_objet' etrange : // le nom de la cle primaire (et non le nom de la table) // ou directement le nom du raccourcis a chercher $chercher_logo = charger_fonction('chercher_logo', 'inc'); $etats = $res['logo_survol'] ? array('on', 'off') : array('on'); foreach ($etats as $etat) { $logo = $chercher_logo($id_objet, $_id_objet, $etat); if ($logo) { $res['logo_' . $etat] = $logo[0]; } } // pas de logo_on -> pas de formulaire pour le survol if (!isset($res['logo_on'])) { $res['logo_survol'] = ''; } elseif (!isset($res['logo_off']) and _request('logo_up')) { $res['_show_upload_off'] = ' '; } // si le logo n'est pas editable et qu'il n'y en a pas, on affiche pas du tout le formulaire if (!$res['editable'] and !isset($res['logo_off']) and !isset($res['logo_on'])) { return false; } return $res; }
function install_premier_auteur($email, $login, $nom, $pass, $hidden, $auteur_obligatoire) { return info_progression_etape(3, 'etape_', 'install/') . info_etape(_T('info_informations_personnelles'), "<b>" . _T('texte_informations_personnelles_1') . "</b>" . aider("install5", true) . "<p>" . ($auteur_obligatoire ? '' : _T('texte_informations_personnelles_2') . " " . _T('info_laisser_champs_vides'))) . generer_form_ecrire('install', "\n<input type='hidden' name='etape' value='3b' />" . $hidden . fieldset(_T('info_identification_publique'), array('nom' => array('label' => "<b>" . _T('entree_signature') . "</b><br />\n" . _T('entree_nom_pseudo_1') . "\n", 'valeur' => $nom, 'required' => $auteur_obligatoire), 'email' => array('label' => "<b>" . _T('entree_adresse_email') . "</b>\n", 'valeur' => $email))) . fieldset(_T('entree_identifiants_connexion'), array('login' => array('label' => "<b>" . _T('entree_login') . "</b><br />\n" . _T('info_login_trop_court_car_pluriel', array('nb' => _LOGIN_TROP_COURT)) . "\n", 'valeur' => $login, 'required' => $auteur_obligatoire), 'pass' => array('label' => "<b>" . _T('entree_mot_passe') . "</b><br />\n" . _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)) . "\n", 'valeur' => $pass, 'required' => $auteur_obligatoire), 'pass_verif' => array('label' => "<b>" . _T('info_confirmer_passe') . "</b><br />\n", 'valeur' => $pass, 'required' => $auteur_obligatoire))) . bouton_suivant()); }