Darathor
Citation :
But : Ce Sous-MOD ajoute une méthode à la classe template qui permet d'enregistrer la page générée dans un fichier plutôt que de l'afficher dans le navigateur.
Auteur : Darathor (darathor@free.fr)
Version : 1.1 TEST - A (20/01/2006)
Compatibilité phpBB : 2.0.19
Changements :
1.1 (20/01/2006) :
- ajout d'une fonction simplifiant la gestion d'un numéro de version pour les fichier générés (pour éviter les problème de cache lors des mises à jour).
- suppression de l'affichage en texte du fichier généré dans le message d'erreur en cas d'échec de l'enregistrement.
Dans "template.php" :
Code :
#
# Trouver
#
/**
* Inserts the uncompiled code for $handle as the
* value of $varname in the root-level. This can be used
* to effectively include a template in the middle of another
* template.
* Note that all desired assignments to the variables in $handle should be done
* BEFORE calling this function.
*/
#
# Ajouter avant
#
// DEBUT MOD Export fichier
/**
* Similaire à pparse mais envoie le résultat dans le fichier $destination plutôt que sur la sortie standard.
*
* @param $handle bloc tpl à exporter dans le fichier.
* @param $destination fichier destination.
* @param $error_message message d'erreur à indiquer au cas où il serait impossible d'enregistrer le fichier (si le message contient un %s, il sera remplacé par le la variable $destination). Si aucun message n'est donnée, un message par défaut sera utilisé.
*/
function pparse_in_file($handle, $destination, $error_message = '')
{
if (!$this->loadfile($handle))
{
die("Template->pparse(): Couldn't load template file for handle $handle");
}
// actually compile the template now.
if (!isset($this->compiled_code[$handle]) || empty($this->compiled_code[$handle]))
{
// Actually compile the code now.
$this->compiled_code[$handle] = $this->compile($this->uncompiled_code[$handle]);
}
// Run the compiled code.
$file = @fopen($destination, 'w'); // Ouverture du fichier destination.
if(!$file) // Si le fichier n'est pas accessible, on envoie un message d'erreur.
{
global $lang;
message_die(GENERAL_ERROR, sprintf($error_message, $destination));
}
ob_start(); // Redirection de la sortie standard dans un buffer.
eval($this->compiled_code[$handle]); // Evaluation du code compilé.
fputs($file, ob_get_contents()); // Récupération du contenu du buffer et envoi dans le fichier.
fclose($file); // Fermeture du fichier.
ob_clean(); // Vidage du buffer.
return true;
}
// FIN MOD Export fichier
Dans "includes/functions.php" :
Code :
#
# Trouver
#
?>
#
# Ajouter avant
#
// DEBUT MOD Export fichier
/**
* Incrémente la valeur d'une entrée de la table de configuration (supposée de type entier).
*
* @param $key nom de l'entrée à incrémenter.
* @param $last_file argument optionnel indiquant le précédent fichier à effacer (s'il existe).
* @return nouvelle valeur de l'entrée incrémentée.
*/
function ExFi_increment_config_number($key, $last_file = '')
{
global $lang, $board_config, $phpbb_root_path, $phpEx, $db;
// Effacement du ficheir précédent si demandé.
if(($last_file != '') && file_exists($last_file))
{
unlink($last_file);
}
// Incrémentation de la valeur.
$board_config[$key]++;
// Mise à jour dans la base.
$sql = "UPDATE " . CONFIG_TABLE . "
SET config_value = '" . $board_config[$key] . "'
WHERE config_name = '$key'";
if(!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, "Couldn't update '$key' value in config table", "", __LINE__, __FILE__, $sql);
}
// Retour de na nouvelle valeur.
return $board_config[$key];
}
// FIN MOD Export fichier