Server : Apache System : Linux ks5.tuic.fr 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64 User : pragmatice ( 1003) PHP Version : 8.2.24 Disable Function : NONE Directory : /home/pragmatice/public_html/lesite/ecrire/inc/ |
<?php /***************************************************************************\ * SPIP, Système de publication pour l'internet * * * * Copyright © avec tendresse depuis 2001 * * Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribué sous licence GNU/GPL. * * Pour plus de détails voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ /** * Présentation des pages d'installation et d'erreurs * * @package SPIP\Core\Minipres **/ if (!defined('_ECRIRE_INC_VERSION')) { return; } include_spip('inc/headers'); include_spip('inc/texte'); //inclue inc/lang et inc/filtres /** * Retourne le début d'une page HTML minimale (de type installation ou erreur) * * Le contenu de CSS minimales (reset.css, clear.css, minipres.css) est inséré * dans une balise script inline (compactée si possible) * * @uses utiliser_langue_visiteur() * @uses http_no_cache() * @uses html_lang_attributes() * @uses minifier() si le plugin compresseur est présent * @uses url_absolue_css() * * @param string $titre * Titre. `AUTO`, indique que l'on est dans le processus d'installation de SPIP * @param string $onLoad * Attributs pour la balise `<body>` * @param bool $all_inline * Inliner les css et js dans la page (limiter le nombre de hits) * @return string * Code HTML */ function install_debut_html($titre = 'AUTO', $onLoad = '', $all_inline = false) { utiliser_langue_visiteur(); http_no_cache(); if ($titre == 'AUTO') { $titre = _T('info_installation_systeme_publication'); } # le charset est en utf-8, pour recuperer le nom comme il faut # lors de l'installation if (!headers_sent()) { header('Content-Type: text/html; charset=utf-8'); } $css = ''; $files = ['reset.css', 'clear.css', 'minipres.css']; if ($all_inline) { // inliner les CSS (optimisation de la page minipres qui passe en un seul hit a la demande) foreach ($files as $name) { $file = direction_css(find_in_theme($name)); if (function_exists('minifier')) { $file = minifier($file); } else { $file = url_absolue_css($file); // precaution } lire_fichier($file, $c); $css .= $c; } $css = "<style type='text/css'>" . $css . '</style>'; } else { foreach ($files as $name) { $file = direction_css(find_in_theme($name)); $css .= "<link rel='stylesheet' href='$file' type='text/css' />\n"; } } // au cas ou minipres() est appele avant spip_initialisation_suite() if (!defined('_DOCTYPE_ECRIRE')) { define('_DOCTYPE_ECRIRE', ''); } return _DOCTYPE_ECRIRE . html_lang_attributes() . "<head>\n" . '<title>' . textebrut($titre) . "</title>\n" . "<meta name='viewport' content='width=device-width' />\n" . $css . '</head> <body' . $onLoad . " class='minipres'> <div id='minipres'> <h1>" . $titre . "</h1> <div>\n"; } /** * Retourne la fin d'une page HTML minimale (de type installation ou erreur) * * @return string Code HTML */ function install_fin_html() { return "\n\t</div>\n\t</div>\n</body>\n</html>"; } /** * 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 = []) { // compat signature old // minipres($titre='', $corps="", $onload='', $all_inline = false) $args = func_get_args(); if (isset($args[2]) and is_string($args[2])) { $options = ['onload' => $args[2]]; } if (isset($args[3])) { $options['all_inline'] = $args[3]; } $options = array_merge([ '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 = $GLOBALS['visiteur_session']['statut'] ?? ''; $nom = $GLOBALS['visiteur_session']['nom'] ?? ''; if ($statut != '0minirezo') { $titre = _T('info_acces_interdit'); } if ($statut and test_espace_prive()) { $corps = bouton_action(_T('public:accueil_site'), generer_url_ecrire('accueil')); } elseif (!empty($_COOKIE['spip_admin'])) { $corps = bouton_action(_T('public:lien_connecter'), generer_url_public('login')); } else { $corps = bouton_action(_T('public:accueil_site'), $GLOBALS['meta']['adresse_site']); } $corps = "<div class='boutons'>$corps</div>"; spip_log($nom . " $titre " . $_SERVER['REQUEST_URI']); } if (!_AJAX) { if (isset($options['status'])) { http_response_code($options['status']); } $html = install_debut_html($titre, $options['onload'], $options['all_inline']) . $corps . install_fin_html(); if ( $GLOBALS['profondeur_url'] >= (_DIR_RESTREINT ? 1 : 2) and empty($options['all_inline']) ) { define('_SET_HTML_BASE', true); include_spip('public/assembler'); $GLOBALS['html'] = true; page_base_href($html); } return $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); } }