217 lines
5.9 KiB
PHP
217 lines
5.9 KiB
PHP
|
<?php
|
|||
|
|
|||
|
/***************************************************************************\
|
|||
|
* SPIP, Systeme de publication pour l'internet *
|
|||
|
* *
|
|||
|
* Copyright (c) 2001-2019 *
|
|||
|
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
|
|||
|
* *
|
|||
|
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
|
|||
|
* Pour plus de details 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 compacte() 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 = array('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("compacte")) {
|
|||
|
$file = compacte($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 = 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);
|
|||
|
}
|
|||
|
}
|