Bifurcation depuis
spip / spip
23046 validations de retard le dépôt en amont.
-
Fil a rédigé
La fonction bouton() se trouvant à la fois dans inc-public et dans ecrire/inc_presentation on pouvait bugger au moment d'afficher les messages d'erreur du type "Le squelette n'existe pas" etc.
Fil a rédigéLa fonction bouton() se trouvant à la fois dans inc-public et dans ecrire/inc_presentation on pouvait bugger au moment d'afficher les messages d'erreur du type "Le squelette n'existe pas" etc.
inc-public.php3 8,43 Kio
<?php
if (defined("_INC_PUBLIC")) {
global $contexte;
$fichier_requete = $fond;
if (is_array($contexte)) {
reset($contexte);
while(list($key, $val) = each($contexte)) $fichier_requete .= '&'.$key.'='.$val;
}
//echo $fichier_requete."<p>";
$fichier_cache = generer_nom_fichier_cache($fichier_requete);
$chemin_cache = "CACHE/".$fichier_cache;
$use_cache = utiliser_cache($chemin_cache, $delais);
if (!$use_cache) {
include_ecrire("inc_connect.php3");
include_local("inc-calcul.php3");
$page = executer_squelette($fond, $contexte);
if ($page) {
$f = fopen($chemin_cache, "wb");
fwrite($f, $page);
fclose($f);
}
}
include ($chemin_cache);
if ($GLOBALS['flag_apc']) {
apc_rm($chemin_cache);
}
// ATTENTION : ne marchera pas sous PHP3
return;
}
define("_INC_PUBLIC", "1");
$dir_ecrire = 'ecrire/';
include ("ecrire/inc_version.php3");
include_local ("inc-cache.php3");
//
// Authentification, le cas echeant
//
$auteur_session = '';
if ($HTTP_COOKIE_VARS['spip_session'] OR $PHP_AUTH_USER) {
include_ecrire("inc_connect.php3");
include_ecrire("inc_meta.php3");
include_ecrire ("inc_session.php3");
verifier_visiteur();
}
//
// Ajouter un forum
//
if ($ajout_forum) {
include_local ("inc-forum.php3");
ajout_forum();
}
//
// Gestion du cache et calcul de la page
//
$fichier_requete = $REQUEST_URI;
$fichier_requete = strtr($fichier_requete, '?', '&');
$fichier_requete = eregi_replace('&(submit|valider|(var_[^=&]*)|recalcul)=[^&]*', '', $fichier_requete);
$fichier_cache = generer_nom_fichier_cache($fichier_requete);
$chemin_cache = "CACHE/".$fichier_cache;
$use_cache = utiliser_cache($chemin_cache, $delais);
if ($use_cache AND file_exists("ecrire/inc_meta_cache.php3")) {
include_ecrire("inc_meta_cache.php3");
}
else {
include_ecrire("inc_connect.php3");
include_ecrire("inc_meta.php3");
}
if (!$use_cache) {
$lastmodified = time();
if (($lastmodified - lire_meta('date_purge_cache')) > 24 * 3600) {
ecrire_meta('date_purge_cache', $lastmodified);
$f = fopen('CACHE/.purge', 'w');
fclose($f);
}
//
// Recalculer le cache
//
$calculer_cache = true;
if ($id_article) {
$query = "SELECT chapo FROM spip_articles WHERE id_article='$id_article'";
$result = spip_query($query);
while($row = mysql_fetch_array($result)) {
$chapo = $row['chapo'];
}
if (substr($chapo, 0, 1) == '=') {
$url = substr($chapo, 1);
$texte = "<?php @header (\"Location: $url\"); ?".">";
$calculer_cache = false;
$file = fopen($chemin_cache, "wb");
fwrite($file, $texte);
fclose($file);
}
}
if ($calculer_cache) {
include_local ("inc-calcul.php3");
$page = calculer_page($fond);
if ($page) {
$file = fopen($chemin_cache, "wb");
fwrite($file, $page);
fclose($file);
}
}
}
//
// si $var_recherche est positionnee, on met en rouge les mots cherches (php4 uniquement)
//
if ($var_recherche AND $flag_ob AND $flag_preg_replace AND !$flag_preserver AND !$mode_surligne) {
include_ecrire("inc_surligne.php3");
$mode_surligne = 'auto';
ob_start("");
} else {
unset ($var_recherche);
unset ($mode_surligne);
}
//
// Inclusion du cache pour envoyer la page au client
//
if (file_exists($chemin_cache)) {
if ($lastmodified) @Header ("Last-Modified: ".gmdate("D, d M Y H:i:s T", $lastmodified));
include ($chemin_cache);
if ($GLOBALS['flag_apc']) {
apc_rm($chemin_cache);
}
}
//
// suite et fin mots en rouge
//
if ($var_recherche) {
fin_surligne($var_recherche, $mode_surligne);
}
//
// nettoie
//
@flush();
if (!$delais) @unlink($chemin_cache);
//
// Verifier la presence du .htaccess dans le cache, sinon le generer
//
if (!file_exists("CACHE/.htaccess")) {
$f = fopen("CACHE/.htaccess", "w");
fputs($f, "deny from all\n");
fclose($f);
}
//
// Gerer l'indexation automatique
//
if (lire_meta('activer_moteur') == 'oui') {
$fichier_index = 'CACHE/.index';
if ($db_ok) {
include_ecrire("inc_texte.php3");
include_ecrire("inc_filtres.php3");
include_ecrire("inc_index.php3");
$s = '';
if ($id_article AND !deja_indexe('article', $id_article))
$s .= "article $id_article\n";
if ($id_auteur AND !deja_indexe('auteur', $id_auteur))
$s .= "auteur $id_auteur\n";
if ($id_breve AND !deja_indexe('breve', $id_breve))
$s .= "breve $id_breve\n";
if ($id_mot AND !deja_indexe('mot', $id_mot))
$s .= "mot $id_mot\n";
if ($id_rubrique AND !deja_indexe('rubrique', $id_rubrique))
$s .= "rubrique $id_rubrique\n";
if ($s) {
$f = fopen($fichier_index, 'a');
fputs($f, $s);
fclose($f);
}
}
if ($use_cache AND file_exists($fichier_index) AND $size = filesize($fichier_index)) {
include_ecrire("inc_connect.php3");
if ($db_ok) {
include_ecrire("inc_texte.php3");
include_ecrire("inc_filtres.php3");
include_ecrire("inc_index.php3");
$f = fopen($fichier_index, 'r');
$s = fgets($f, 100);
$suite = fread($f, $size);
fclose($f);
$f = fopen($fichier_index, 'w');
fwrite($f, $suite);
fclose($f);
$s = explode(' ', $s);
indexer_objet($s[0], $s[1], false);
}
}
}
//
// Faire du menage dans le cache
// (effacer les fichiers tres anciens)
// Se declenche une fois par jour quand le cache n'est pas recalcule
//
if ($use_cache && file_exists('CACHE/.purge2')) {
include_ecrire("inc_connect.php3");
if ($db_ok) {
unlink('CACHE/.purge2');
$query = "SELECT fichier FROM spip_forum_cache WHERE maj < DATE_SUB(NOW(), INTERVAL 14 DAY)";
$result = spip_query($query);
unset($fichiers);
while ($row = mysql_fetch_array($result)) {
$fichier = $row['fichier'];
if (!file_exists("CACHE/$fichier")) $fichiers[] = "'$fichier'";
}
if ($fichiers) {
$query = "DELETE FROM spip_forum_cache WHERE fichier IN (".join(',', $fichiers).")";
spip_query($query);
}
}
}
if ($use_cache && file_exists('CACHE/.purge')) {
include_ecrire("inc_connect.php3");
if ($db_ok) {
unlink('CACHE/.purge');
$f = fopen('CACHE/.purge2', 'w');
fclose($f);
include_local ("inc-cache.php3");
purger_repertoire('CACHE', 14 * 24 * 3600);
}
}
// ---------------------------------------------------------------------------------------
//include_local ("inc-debug.php3");
//
// Afficher un bouton
//
function bouton_public($titre, $lien) {
$lapage=substr($lien, 0, strpos($lien,"?"));
$lesvars=substr($lien, strpos($lien,"?") + 1, strlen($lien));
echo "\n<FORM ACTION='$lapage' METHOD='get'>\n";
$lesvars=explode("&",$lesvars);
for($i=0;$i<count($lesvars);$i++){
$var_loc=explode("=",$lesvars[$i]);
if ($var_loc[0] != "Submit")
echo "<INPUT TYPE='Hidden' NAME='$var_loc[0]' VALUE='$var_loc[1]'>\n";
}
echo "<INPUT TYPE='submit' NAME='Submit' VALUE='$titre' CLASS='spip_bouton'>\n";
echo "</FORM>";
}
//
// Fonctionnalites administrateur (declenchees par le cookie admin, authentifie ou non)
//
$cookie_admin = $HTTP_COOKIE_VARS['spip_admin'];
$admin_ok = ($cookie_admin != '');
if (($admin_ok OR ($auteur_session['statut'] == '0minirezo')) AND !$flag_preserver) {
if ($id_article) {
bouton_public("Modifier cet article ($id_article)", "./ecrire/articles.php3?id_article=$id_article");
}
else if ($id_breve) {
bouton_public("Modifier cette brève ($id_breve)", "./ecrire/breves_voir.php3?id_breve=$id_breve");
}
else if ($id_rubrique) {
bouton_public("Modifier cette rubrique ($id_rubrique)", "./ecrire/naviguer.php3?coll=$id_rubrique");
}
else if ($id_mot) {
bouton_public("Modifier ce mot-clé ($id_mot)", "./ecrire/mots_edit.php3?id_mot=$id_mot");
}
else if ($id_auteur) {
bouton_public("Modifier cet auteur ($id_auteur)", "./ecrire/auteurs_edit.php3?id_auteur=$id_auteur");
}
$link = new Link;
$link->addVar('recalcul', 'oui');
echo $link->getForm('GET');
if ($use_cache) $pop = " *";
else $pop = "";
echo "<input type='submit' class='spip_bouton' name='submit' value='Recalculer cette page$pop'>";
echo "</form>\n";
}
/* // protection contre tentative de piratage de cookie de session
if ($spip_session) {
echo '<script src="spip_cookie.php3?rejoue=oui"></script>';
} */
//
// Gestion des statistiques par article
//
if (lire_meta("activer_statistiques") != "non" AND !$flag_preserver) {
include_ecrire("inc_connect.php3");
include_local ("inc-stats.php3");
if ($db_ok) $stats = ecrire_stats();
if ($admin_ok) echo $stats;
}
//
// Mise a jour d'un (ou de zero) site syndique
//
if ($db_ok AND lire_meta("activer_syndic") != "non") {
include_ecrire("inc_texte.php3");
include_ecrire("inc_filtres.php3");
include_ecrire("inc_sites.php3");
include_ecrire("inc_index.php3");
executer_une_syndication();
executer_une_indexation_syndic();
}
?>