Esempio n. 1
0
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();
}
Esempio n. 2
0
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;
}
Esempio n. 3
0
File: admin.php Progetto: spip/SPIP
/**
 * 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);
    }
}
Esempio n. 4
0
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();
        }
    }
}
Esempio n. 5
0
/**
 * 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;
}
Esempio n. 6
0
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());
}