Résultats de la recherche (12 résultats)

oppie
15 Aout 2008, 14:03
merci Talus ^^

problème résolu :)
 
oppie
15 Aout 2008, 13:18
Bonjour chère team de FSB :D

J'ai un petit soucis quand je veux me connecter à mon forum, le message suivant s'affiche :

Citation
Une erreur a été rencontrée durant l'éxécution du script. L'erreur rencontrée est :

Impossible de se connecter à la base de donnée : Access denied for user 'oppie'@'172.20.245.26' (using password: YES)

à la ligne 126 du fichier /mnt/111/free.fr/6/b/oppie/medes/main/start.php
Trace des fonctions / méthodes appelées :

Fonction : include()
Fichier : index.php
Ligne : 16


Fonction : trigger_error()
Fichier : start.php
Ligne : 126


Je pense savoir d'où vient le problème, mais je ne sais comment le résoudre. Mon forum est hébergé chez free, et j'ai changé mon mot de passe de mon compte free pour raison de sécurité. J'aimerai donc savoir ce que je dois modifier pour que cela refonctionne, sachant que je ne veux pas revenir à mon ancien mot de passe :s.

Merci d'avance :).
 
oppie
16 Avril 2008, 11:11
Bonjour,

Je m'étais enregistré sur le forum pour avoir un support pour quelques bugs (résolus :p vous êtes géniaux :pppp) et depuis je suis surtout l'actualité graphique de la version 2 de FBS. Et je suis tombé sur votre topic sur travian.

Il se trouve justement que je joue à travian sur le serveur 1 dans le nord-est avec quelques amis. Nous avons formé une alliance (que je n'ai pas encore rejointe ^^) qui s'appelle TGV.

Ca pourrait être sympa que nos deux alliances entrent en contact, car mieux vaut avoir des amis que des ennemis :p.

Bonne journée et bon jeu ;)
 
oppie
30 Novembre 2007, 10:32
Ok, merci :)
 
oppie
31 Octobre 2007, 2:27
Là je comprends pas o_o la prévisualisation fonctionne avec les deux codes sources.
Le message est vide avec les deux codes, alors qu'avec un seul code source ça passe:'(

Rassurez-moi, mon message est bien passé avec un seul code source là ?

Pour le deuxième code source :

<?php
/*
** +---------------------------------------------------+
** | Name :		~/main/class/class_tpl.php
** | Begin :	13/06/2005
** | Last :		12/10/2007
** | User :		Genova
** | Project :	Fire-Soft-Board 2 - Copyright FSB group
** | License :	GPL v2.0
** +---------------------------------------------------+
*/

/*
** Classe de gestion de template
** La documentation sur cette classe et ses possibilités se trouve dans ~/doc/template.html
*/
class Tpl extends Fsb_model
{
	// Répertoire du template
	public $tpl_dir = '';

	// Boolean pour savoir si on utilise le cache ou non
	public $use_cache = TRUE;

	// Tableau contenant toutes les variables du template, ainsi que les switchs et les blocks
	public $data = array();

	// Tableau contenant les alias, empilés par ordre d'aparition
	private $stack = array();

	// Contient le numéro de l'alias courant, dans la pile
	private $current_stack = -1;

	// Alias courant
	public $alias = '';
	
	// Met en cache les calculs des blocks
	private $cache_block = array();
	
	// Variables pour le parse des blocks
	public $count = array();
	public $i = array();

	/*
	** Constructeur de la classe Tpl()
	** -----
	** $tpl_dir ::			Répertoire contenant les fichiers templates
	*/
	public function __construct($tpl_dir)
	{
		$this->set_template($tpl_dir);
		$this->current_stack = -1;
		$this->stack = array();
	}

	/*
	** Annonce qu'un fichier template va être créé plus tard dans le script.
	** Cette fonction est à utiliser si vous souhaitez déclarer des variables avant
	** de déclarer un nom pour le fichier template.
	** -----
	** $alias ::	Nom de l'alias du futur template
	*/
	public function prepare_file($alias = 'main')
	{
		$this->data[$alias] = array(
			'file' =>		NULL,
			'var' =>		array(),
			'block' =>		array(),
			'switch' =>		array(),
		);
		
		$this->current_stack++;
		$this->stack[$this->current_stack] = $alias;
	}

	/*
	** Créé un alias ayant comme modèle le template passé en paramètre. L'alias est ajouté
	** dans la pile d'alias afin de permettre un imbriquement simple de templates.
	** -----
	** $alias ::		Alias du modèle
	** $template ::		Modèle de template à charger
	*/
	public function set_file($template, $alias = 'main')
	{
		$file = $this->tpl_dir . $template;
		if (!is_file($file))
		{
			trigger_error('Tpl->set_file :: Impossible de trouver le template : ' . $file, FSB_ERROR);
		}

		if (!isset($this->data[$alias]))
		{
			$this->data[$alias] = array(
				'file' =>		$file,
				'var' =>		array(),
				'block' =>		array(),
				'switch' =>		array(),
			);

			$this->current_stack++;
			$this->stack[$this->current_stack] = $alias;
		}
		else
		{
			$this->data[$alias]['file'] = $file;
		}
	}

	/*
	** Assigne un dossier pour le thème
	** -----
	** $tpl_dir ::			Répertoire contenant les fichiers templates
	*/
	public function set_template($tpl_dir)
	{
		// Chargement du config_tpl s'il existe
		$config_tpl_dir = substr($tpl_dir, 0, -6);
		if (file_exists($config_tpl_dir . 'config_tpl.' . PHPEXT))
		{
			include($config_tpl_dir . 'config_tpl.' . PHPEXT);
			Fsb::$session->style = $config_tpl;
		}

		$this->tpl_dir = $tpl_dir;
		if (!is_dir($this->tpl_dir))
		{
			trigger_error('Tpl->Tpl :: ' . $this->tpl_dir . ' n\'est pas un répertoire', FSB_ERROR);
		}
	}

	/*
	** Ajoute un tableau de variables de templates au modèle actuel
	** -----
	** $ary ::		Tableau contenant en clef les variables de templates et en valeurs ce par quoi elles
	**			seront remplacées
	** $alias ::		Alias à spécifier pour assigner ces variables à un modèle particulier
	*/
	public function set_vars($ary, $alias = NULL)
	{
		if (!is_array($ary))
		{
			trigger_error('Tpl->set_vars :: Le premier argument doit être un tableau', FSB_ERROR);
		}

		$current_alias = (($alias == NULL) ? $this->stack[$this->current_stack] : $alias);
		$this->data[$current_alias]['var'] = array_merge($this->data[$current_alias]['var'], $ary);
	}

	/*
	** Ajoute un block de variables pour le modèle de template
	** -----
	** $block ::	Nom du block. Si ce block est rataché a des précédents blocks, utiliser . comme séparateur
	**				de block ; par exemple block1.block2.blockN
	** $ary ::		Tableau contenant en clef les variables de templates et en valeurs ce par quoi elles
	**				seront remplacées
	** $alias ::	Alias à spécifier pour assigner ces variables à un modèle particulier
	*/
	public function set_blocks($block, $ary = array(), $alias = NULL)
	{
		$current_alias = ($alias == NULL) ? $this->stack[$this->current_stack] : $alias;
		$explode = explode('.', $block);
		$count = count($explode) - 1;

		$tmp = &$this->data[$current_alias]['block'];
		for ($i = 0; $i < $count; $i++)
		{
			if (!isset($tmp[$explode[$i]]))
			{
				trigger_error('Tpl->set_blocks :: Le block ' . $explode[$i] . ' n\'existe pas', FSB_ERROR);
			}
			$tmp = &$tmp[$explode[$i]];
			$tmp = &$tmp[count($tmp) - 1];
		}

		if (!isset($tmp[$explode[$i]]))
		{
			$tmp[$explode[$i]] = array();
		}

		//
		// ITERATOR est une variable de template donnant l'itération actuelle dans un block
		// SIZEOF est une variable de template donnant le nombre de cycles pour le block
		// FIRST_ROW est une variable de template définissant s'il s'agit de la première ligne
		// LAST_ROW est une variable définissant s'il s'agit de la dernière ligne
		//
		$ary['ITERATOR'] = count($tmp[$explode[$i]]);
		$ary['LAST_ROW'] = TRUE;
		if ($total = count($tmp[$explode[$i]]))
		{
			$ary['SIZEOF'] = &$tmp[$explode[$i]][0]['SIZEOF'];
			$ary['FIRST_ROW'] = FALSE;
			$tmp[$explode[$i]][$total - 1]['LAST_ROW'] = FALSE;
		}
		else
		{
			$ary['FIRST_ROW'] = TRUE;
		}
		$tmp[$explode[$i]][] = $ary;
		$tmp[$explode[$i]][0]['SIZEOF'] = $total + 1;
	}

	/*
	** Modifie un block de variable déjà défini. Il est donc possible de créer un block avec la méthode Tpl::set_blocks() puis
	** de modifier par la suite des variables propres à ce block.
	** -----
	** $block ::	Nom du block. Si ce block est rataché a des précédents blocks, utiliser . comme séparateur
	**				de block ; par exemple block1.block2.blockN
	** $pos ::		Position du block à modifier par rapport à la valeur courante. Par exemple si vous souhaitez modifier
	**				les valeurs des variables du précédent block déclaré, il faut passer -1 à la position. Par exemple :
	**					Fsb::$tpl->set_blocks('test', array('KEY' => 'VALUE'), 'alias');
	**					Fsb::$tpl->update_blocks('test', -1, array('KEY' => 'NEW_VALUE'), 'alias');
	** $ary ::		Tableau contenant en clef les variables de templates et en valeurs ce par quoi elles
	**				seront remplacées
	** $alias ::	Alias à spécifier pour assigner ces variables à un modèle particulier
	*/
	public function update_blocks($block, $pos, $ary, $alias = NULL)
	{
		$current_alias = ($alias == NULL) ? $this->stack[$this->current_stack] : $alias;
		$explode = explode('.', $block);
		$count = count($explode) - 1;

		$tmp = &$this->data[$current_alias]['block'];
		for ($i = 0; $i < $count - 1; $i++)
		{
			if (!isset($tmp[$explode[$i]]))
			{
				trigger_error('Tpl->update_blocks :: Le block ' . $explode[$i] . ' n\'existe pas', FSB_ERROR);
			}
			$tmp = &$tmp[$explode[$i]];
			$tmp = &$tmp[count($tmp) - 1];
		}

		// Récupération du dernier block
		if (!isset($tmp[$explode[$i]]))
		{
			trigger_error('Tpl->update_blocks :: Le block ' . $explode[$i] . ' n\'existe pas', FSB_ERROR);
		}
		$tmp = &$tmp[$explode[$i]];
		$count_current = count($tmp);

		// Mise à jour des variables
		if (!isset($tmp[$count_current + $pos]))
		{
			trigger_error('Tpl->update_blocks :: La position indiquée n\'existe pas : ' . $pos, FSB_ERROR);
		}

		foreach ($ary AS $key => $value)
		{
			$tmp[$count_current + $pos][$key] = $value;
		}
	}

	/*
	** Créé un switch
	** -----
	** $name ::		Nom du switch
	*/
	public function set_switch($name, $alias = NULL)
	{
		$this->data[(($alias == NULL) ? $this->stack[$this->current_stack] : $alias)]['switch'][$name] = TRUE;
	}

	/*
	** Supprime un switch
	** -----
	** $name ::		Nom du switch
	*/
	public function unset_switch($name, $alias = NULL)
	{
		unset($this->data[(($alias == NULL) ? $this->stack[$this->current_stack] : $alias)]['switch'][$name]);
	}

	/*
	** Parse le fichier modèle donné
	** -----
	** $alias ::		Alias du fichier à parser
	** $keep_alias ::	Définit si on doit changer l'alias ou non
	*/
	public function parse($alias = 'main', $keep_alias = FALSE)
	{
		if (!isset($this->data[$alias]))
		{
			trigger_error('Tpl->parse :: L\'alias ' . $alias . ' n\'existe pas', FSB_ERROR);
		}

		// L'alias est dépilé
		if (!$keep_alias)
		{
			$this->alias = $alias;
		}
		array_pop($this->stack);
		$this->current_stack--;

		// Vérification de la mise en cache du template
		if ($this->use_cache)
		{
			$cache = Cache::factory('tpl');
			$hash = md5($this->data[$alias]['file']);

			if ($cache->exists($hash) && filemtime($this->data[$alias]['file']) == $cache->get_time($hash))
			{
				$tpl_code = $cache->get($hash);
			}
			else
			{
				$tpl_code = $this->compile($alias);
				$cache->put($hash, $tpl_code, '', filemtime($this->data[$alias]['file']));
			}
		}
		else
		{
			$tpl_code = $this->compile($alias);
		}

		// Affichage du template parsé
		if (Fsb::$debug->show_output)
		{
			eval($tpl_code);
			unset($tpl_code);
		}
	}

	/*
	** Retourne la valeur d'une variable de template courante
	*/
	public function get_current_var($str)
	{
		$str_block = '';
		eval('$value = ' . $this->block2code($str, $str_block, TRUE) . ';');
		return ($value);
	}

	/*
	** Compile le code du template avec les variables de template de celui
	** ci pour former un code PHP éxécutable.
	** -----
	** $alias ::	Alias du fichier à compiler
	** $content ::	Contenu par défaut
	*/
	public function compile($alias = 'main', $content = NULL)
	{
		if ($content == NULL)
		{
			// Lecture du contenu du fichier
			$filename = $this->data[$alias]['file'];
			if (empty($filename))
			{
				trigger_error('Tpl::compile() :: Aucun fichier template n\'a été renseigné, vous devez utiliser la méthode Tpl::set_file()', FSB_ERROR);
			}
			else if (!file_exists($filename))
			{
				trigger_error("Tpl::compile() :: Le fichier $filename n'existe pas", FSB_ERROR);
			}
			$content = file_get_contents($filename);
		}

		// Supression des commentaires de template
		$content = preg_replace('#<!--\#(.*?)\#-->#si', '', $content);
		
		// Parse des inclusions
		$content = preg_replace('#<include name="([a-zA-Z0-9/\._]+)"( */)?>#si', "<?php \$this->include_tpl('\\1'); ?>", $content);

		// Parse des variables de langues / FAQ / IMG / configuration
		$content = preg_replace('#\{LG_([0-9A-Z_]*?)\}#i', "<?php echo Fsb::\$session->lang(strtolower('\\1')); ?>", $content);
		$content = preg_replace('#\{FAQ_([0-9A-Z]*?)_([0-9A-Z_]*?)\}#i', "<?php echo sid(ROOT . 'index.' . PHPEXT . '?p=faq&amp;section=' . strtolower('\\1') . '&amp;area=' . strtolower('\\2')); ?>", $content);
		$content = preg_replace('#\{(IMG_[0-9A-Z_]*?)\}#i', "<?php echo Fsb::\$session->img(strtolower('\\1')); ?>", $content);
		$content = preg_replace('#\{CFG_([0-9A-Z_]*?)\}#i', "<?php echo Fsb::\$cfg->get(strtolower('\\1')); ?>", $content);
		$content = preg_replace('#\{__ARG([0-9]+)\}#i', "<?php echo @func_get_arg(\\1); ?>", $content);
		
		// Parse des simples variables
		$content = preg_replace('#\{([0-9A-Z_]+)\}#i', "<?php echo @Fsb::\$tpl->data[Fsb::\$tpl->alias]['var']['\\1']; ?>", $content);

		// Parse des variables de blocks
		$content = preg_replace_callback('#\{(([0-9a-z_]+\.)+)([0-9A-Z_]+)\}#i', array(&$this, 'compile_block_vars'), $content);

		// Parse des blocks
		$content = preg_replace_callback('#<block(else)? name="([a-z0-9_.-]+)">#si', array(&$this, 'compile_block'), $content);
		$content = preg_replace('#<\/(block|blockelse|if|switch)>#si', "<?php } ?>", $content);

		// Parse des instructions de controle
		$this->compile_scripting($content);

		// Parse des fonctions
		$content = preg_replace_callback('#\#([a-zA-Z0-9_]+) *\{([^}]*?)\}#si', array(&$this, 'compile_functions'), $content);

		// Parse des fonctions de template
		$content = preg_replace_callback('#<function name="([a-zA-Z0-9_]*?)">(.*?)</function>#si', array(&$this, 'compile_functions_declaration'), $content);

		// Parse des appels de fonctions de template
		$content = preg_replace_callback('#<call name="([a-zA-Z0-9_]*?)"(.*)( */)>#i', array(&$this, 'compile_functions_call'), $content);

		// Nettoyage du code
		$content = str_replace('?><?php', '', $content);

		//echo "<xmp>$content</xmp>";exit;
		return (" ?>$content<?php ");
	}

	/*
	** Compile les instructions de controle propre au template (<if>, <switch>, etc ...)
	** -----
	** $content ::		Contenu du template
	*/
	private function compile_scripting(&$content)
	{
		$content = preg_replace_callback("/<(else)?if content=\"([a-zA-Z0-9 \n\t\-\+\*\/%=_\(\)'\"\.\$!<>\\\]*?)\">/si", array(&$this, 'compile_scripting_vars'), $content);
		$content = preg_replace_callback('/<switch name="([a-z0-9_&|! \(\)]+)">/si', array(&$this, 'compile_switch'), $content);
		$content = preg_replace('/<else>/si', "<?php } else { ?>", $content);
		$content = preg_replace('/<variable name="([A-Z0-9_]+)" value="(.*?)"( *\/)?>/si', "<?php Fsb::\$tpl->set_vars(array('\\1' => '\\2'), Fsb::\$tpl->alias) ?>", $content);
	}

	/*
	** Compile les instructions de controle "if" et "else if", tout en gérant
	** les variables de templates qui doivent cette fois être précédées d'un $. Par
	** exemple : <if content="$block1.block2.VAR == 51">
	*/
	private function compile_scripting_vars($match)
	{
		$else = $match[1];
		$control = $match[2];

		$control = preg_replace('#\$CFG_([0-9A-Z_]*?)( |$)#i', "Fsb::\$cfg->get(strtolower('\\1'))", $control);
		$control = preg_replace('/\$([0-9A-Z_]+)( |$)/si', "@Fsb::\$tpl->data[Fsb::\$tpl->alias]['var']['\\1']", $control);
		$control = preg_replace_callback('/\$(([0-9a-z_]+\.)+)([0-9A-Z_]+)($| )/si', array(&$this, 'compile_block_scripting_vars'), $control);
		$control = stripslashes($control);
		return ('<?php ' . ((strtolower($else) == 'else') ? '} else ' : '') .  "if ($control) { ?>");
	}

	/*
	** Remplace un block <!-- BEGIN --> par une boucle PHP for () executable
	*/
	private function compile_block($match)
	{
		$else = $match[1];
		$block = $match[2];

		$str_block = '';
		$str = $this->block2code($block, $str_block, TRUE);
		
		if ($else == 'else')
		{
			$code = "<?php if (!Fsb::\$tpl->count['$str_block']) { ?>";
		}
		else
		{
			$code = "<?php Fsb::\$tpl->count['$str_block'] = (isset($str)) ? count($str) : 0; for (Fsb::\$tpl->i['$str_block'] = 0; Fsb::\$tpl->i['$str_block'] < Fsb::\$tpl->count['$str_block']; Fsb::\$tpl->i['$str_block']++) { ?>";
		}
		return ($code);
	}

	/*
	** Compile les variables de blocks conditionelles ($FOO, $foo.BAR)
	*/
	private function compile_block_scripting_vars($match)
	{
		$match[4] = TRUE;
		return ($this->compile_block_vars($match));
	}

	/*
	** Remplace une variable de block par le tableau PHP qui lui corespond
	*/
	private function compile_block_vars($match)
	{
		$block = substr($match[1], 0, -1);
		$var = $match[3];
		$scripting = (isset($match[4])) ? TRUE : FALSE;

		$str_block = '';
		$str = $this->block2code($block, $str_block, FALSE) . "['$var']";
		if (!$scripting)
		{
			$code = "<?php echo @$str; ?>";
		}
		else
		{
			$code = " @$str ";
		}
		return ($code);
	}

	/*
	** Permet d'utiliser une fonction PHP dans le template
	*/
	private function compile_functions($match)
	{
		$name = $match[1];
		$args = $match[2];

		$args = stripslashes($args);
		$args = preg_replace('#\$LG_([0-9A-Z_]*?)(,| |$)#i', "@Fsb::\$session->lang(strtolower('\\1'))\\2", $args);
		$args = preg_replace('#\$(IMG_[0-9A-Z_]*?)#i', "Fsb::\$session->img(strtolower('\\1'))", $args);
		$args = preg_replace('/\$([0-9A-Z_]+)(,| |$)/si', "@Fsb::\$tpl->data[Fsb::\$tpl->alias]['var']['\\1']\\2", $args);
		$args = preg_replace_callback('/\$(([0-9a-z_]+\.)+)([0-9A-Z_]+)($| )/si', array(&$this, 'compile_block_scripting_vars'), $args);
		return ("<?php echo $name($args); ?>");
	}

	/*
	** Compile les switch. Il est possible d'utiliser les opérateurs & et | pour les switch, par exemple
	** <switch name="switch1 | switch2">
	*/
	private function compile_switch($match)
	{
		$if = $match[1];
		$if = preg_replace('#(?<=\s|\||&|\(|!|^)([a-zA-Z0-9_]+?)(?=\W|\s|\||&|\)|$)#i', "@Fsb::\$tpl->data[Fsb::\$tpl->alias]['switch']['\\1']", $if);
		$if = str_replace('&', ' AND ', $if);
		$if = str_replace('|', ' OR ', $if);
		return ("<?php if ($if) { ?>");
	}
	
	/*
	** Permet d'inclure un template dans un autre
	** -----
	** $tpl_name ::	Nom du template
	*/
	public function include_tpl($tpl_name)
	{
		$this->set_file($tpl_name, "tmp_$tpl_name");
		$this->parse("tmp_$tpl_name", TRUE);
	}

	/*
	** Parse des déclarations de fonctions template
	*/
	private function compile_functions_declaration($match)
	{
		return ('<?php function __fsb_template_' . $match[1] . "(){ ?>" . $match[2] . '<?php } ?>');
	}

	/*
	** Parse des appels de fonctions templates
	*/
	private function compile_functions_call($match)
	{
		preg_match_all('#arg([0-9]+)="([^"]*)"#i', $match[2], $m);
		$count = count($m[0]);
		$args = array("'" . $match[1] . "'");
		for ($i = 0; $i < $count; $i++)
		{
			$key = $m[1][$i];
			$value = $m[2][$i];
			if (!is_numeric($value))
			{
				$value = "'" . preg_replace('#<\?php echo(.*?)(; )?\?>#si', "' . \\1 . '", $value) . "'";
			}
			$args[$key] = $value;
		}

		return ('<?php __fsb_template_' . $match[1] . '(' . implode(', ', $args) . ') ?>');
	}

	/*
	** Transforme un block du type block1.block2.blockN en chaine de caractère
	** evaluable durant la compilation comme une variable de template
	** -----
	** $block ::		Nom du block
	** $alias ::		Alias du template courant
	** $number ::		Nombre de blocks en finalité
	** $type ::			Type de compilation de block
	*/
	private function block2code($block, &$str_block, $type)
	{
		if (isset($this->cache_block[$block]))
		{
			$str_block = $this->cache_block[$block]['str_block'];
			return ($this->cache_block[$block]['str'] . ((!$type) ? "[Fsb::\$tpl->i['$str_block']]" : ''));
		}
		
		$explode = explode('.', $block);
		$count = count($explode) - 1;
		$str_block = $explode[$count];
		$str = "Fsb::\$tpl->data[Fsb::\$tpl->alias]['block']";
		for ($i = 0; $i < $count; $i++)
		{
			$str .= "['${explode[$i]}'][Fsb::\$tpl->i['" . $explode[$i] . "']]";
		}

		$str .= "['${explode[$i]}']";
		
		// Mise en cache des blocks calculés pour éviter de repasser cette étape pour les même blocks
		$this->cache_block[$block] = array('str_block' => $str_block, 'str' => $str);
		
		if (!$type)
		{
			$str .= "[Fsb::\$tpl->i['" . $explode[$i] . "']]";
		}
		
		return ($str);
	}
}

/*
** Fonction annexe testant l'existance d'un switch
*/
function tpl_switch_exists($switch_name)
{
	return ((@Fsb::$tpl->data[Fsb::$tpl->alias]['switch'][$switch_name]) ? TRUE : FALSE);
}

/* EOF */
 
oppie
31 Octobre 2007, 2:23
Désolé, je suis impardonnable :'(, je vous autorise à me fouetter pour me punir, mais je sais pas comment j'ai fait mon coup xD
 
oppie
31 Octobre 2007, 2:14
Youpi ça marche, merci beaucoup à tous le monde.

Je vous aime tous :) je vous offre une bière http://www.fire-soft-board.com/fsb/images/smileys/fsb2_tchin.gif (virtuelle certes ^^)

Merci encore et encore http://www.fire-soft-board.com/fsb/images/smileys/fsb2_kiss.gif, merci pour le travail réalisé sur FSB2, merci pour l'aide que vous apportez, vous êtes géniaux http://www.fire-soft-board.com/fsb/images/smileys/fsb2_oups.gif
 
oppie
30 Octobre 2007, 21:03
Non je n'ai rien modifié en dehors de l'image du logo que j'ai remise en réinstallant le skin. J'ai suivi le tutorial à la lettre (enfin je pense :o), j'ai supprimé le cache à la main, mais il reste toujours ceci dans la partie admin mais plus rien sur le ftp :s

Citation
Liste des fichiers du cache SQL
Cocher Décocher
config_ee9d694891cebe5a9e66586938f7996a.php SELECT cfg_name, cfg_value
FROM fsb2_config
groups_auth_9739c5d45e0b848bfd3a02b0483c5d49.php SELECT ga.f_id, ga.g_id, g.g_name, g.g_type, g.g_color, u.u_id, u.u_nickname, u.u_color
FROM fsb2_groups_auth ga
LEFT JOIN fsb2_groups g
ON g.g_id = ga.g_id
LEFT JOIN fsb2_users u
ON u.u_single_group_id = g.g_id
WHERE (g.g_type = 3
OR g.g_type = 2) AND ga.ga_moderator = 1 AND g.g_hidden = 0 GROUP BY ga.f_id, ga.g_id, g.g_name, g.g_type, g.g_color, u.u_id, u.u_nickname, u.u_color
ORDER BY ga.f_id, ga.g_id, g.g_type
langs_4065e2868d5265eb524b0da177a29a7e.php SELECT lang_key, lang_value
FROM fsb2_langs
WHERE lang_name = 'fr'
menu_admin_6de3de072af42380c14d04d5112f09de.php SELECT page, auth, cat, cat_order, page_order, page_icon
FROM fsb2_menu_admin
ORDER BY cat_order, page_order
mods_352b82f42bfc125fe33df1c3cb321c30.php SELECT mod_name, mod_status
FROM fsb2_mods
notify_14c57448916680395d0401f9db667cf4.php SELECT *
FROM fsb2_notify
ORDER BY notify_time
process_0a299ff78103ff6886a222899ca0d3af.php SELECT *
FROM fsb2_process
 
oppie
30 Octobre 2007, 20:58
Revoilà le message édité (enfin j'espère http://www.fire-soft-board.com/fsb/images/smileys/fsb2_lol.gif)

Donc voici les étapes de ce qui se produit d'un point de vue admin :

http://oppie.free.fr/affichage/01.png

Sélection de l'image à remplacer.

http://oppie.free.fr/affichage/02.png

Suppression de tous les images du thème

http://oppie.free.fr/affichage/03.png

Affichage de l'index du forum

Ensuite pour les codes sources

<?php
/*
** +---------------------------------------------------+
** | Name :        ~/admin/general/general_tpl.php
** | Begin :    04/07/2005
** | Last :        22/10/2007
** | User :        Genova
** | Project :    Fire-Soft-Board 2 - Copyright FSB group
** | License :    GPL v2.0
** +---------------------------------------------------+
*/

/*
** Page de gestion des thèmes (fichiers templates, CSS, images ...)
*/
class Fsb_frame_child extends Fsb_admin_frame
{
    // Arguments de la page
    public $mode;
    public $tpl_name;
    public $file;
    public $class_name;
    public $img_name;

    // Initialisation des styles
    public $style = array(
        'border_color' =>            '',
        'border_type' =>            '',
        'border_width_unit' =>        'px',
        'border_width_up' =>        0,
        'border_width_right' =>        0,
        'border_width_down' =>        0,
        'border_width_left' =>        0,
        'background_color' =>        '',
        'background_img' =>            '',
        'repeat_img' =>                'no-repeat',
        'bold' =>                    '',
        'underline' =>                '',
        'italic' =>                    '',
        'font_color' =>                '',
        'font_size' =>                '',
        'font_size_unit' =>            'px',
    );

    public $style_exists = array(
        'border-color',
        'border-style',
        'border-width',
        'background-color',
        'background-image',
        'background-repeat',
        'font-weight',
        'text-decoration',
        'font-style',
        'color',
        'font-size',
    );

    // Navigation
    public $nav = array();

    /*
    ** Constructeur
    */
    public function main()
    {
        $this->mode =        Http::request('mode');
        $this->tpl_name =    str_replace('../', './', htmlspecialchars(Http::request('tpl_name')));
        $this->file =        str_replace('../', './', htmlspecialchars(Http::request('file')));
        $this->class_name = htmlspecialchars(Http::request('class_name', 'post|get'));
        $this->img_name =    htmlspecialchars(Http::request('img_name', 'post|get'));

        if (Http::request('choose_class', 'post'))
        {
            $this->class_name = htmlspecialchars(Http::request('choose_class_name', 'post'));
        }

        $call = new Call($this);
        $call->module(array(
            'list' =>        array('tpl', 'extern', 'diff'),
            'url' =>        'index.' . PHPEXT . '?p=general_tpl',
            'lang' =>        'adm_tpl_',
            'default' =>    'tpl',
        ));

        $call->post(array(
            'submit_install' =>        'install_tpl',
            'submit_html' =>        'preview_html',
            'submit_php' =>            'preview_php',
            'submit_edit' =>        'submit_edit',
            'change_css_mode' =>    'edit_css',
            'submit_edit_css' =>    'submit_edit_css',
            'submit_edit_img' =>    'submit_edit_img',
            'export_tpl' =>            ':page_export_tpl',
            'install_news_tpl' =>    ':page_install_from_news',
        ));

        $call->functions(array(
            'module' => array(
                'tpl' => array(
                    'mode' => array(
                        'install_tpl' =>        'page_install_tpl',
                        'uncache_tpl' =>        'page_cache_tpl',
                        'cache_tpl' =>            'page_cache_tpl',
                        'edit_tpl' =>            'page_show_tpl',
                        'preview_html' =>        'page_show_tpl',
                        'preview_php' =>        'page_show_tpl',
                        'edit_css' =>            'page_show_tpl_css',
                        'submit_edit' =>        'page_submit_edit',
                        'submit_edit_css' =>    'page_submit_edit_css',
                        'edit_img' =>            'page_show_tpl_img',
                        'submit_edit_img' =>    'page_submit_edit_img',
                        'codepress' =>            'page_codepress',
                        'css_generator' =>        'page_css_generator',
                        'default' =>            'page_default_tpl',
                    ),
                ),
                'extern' => array(
                    'mode' => array(
                        'default' =>            'page_tpl_news',
                    ),
                ),
                'diff' =>                        'page_show_diff',
            ),
        ));
    }

    /*
    ** Page par défaut de la gestion des thèmes
    */
    public function page_default_tpl()
    {
        Fsb::$tpl->set_switch('tpl_list');

        Fsb::$tpl->set_vars(array(
            'USE_FTP' =>        (Fsb::$cfg->get('ftp_default')) ? TRUE : FALSE,
            'LIST_TPL' =>        Html::list_dir('export_tpl_name', '', ROOT . 'tpl/', array(), TRUE),

            'U_ACTION' =>        sid('index.' . PHPEXT . '?p=general_tpl'),
        ));

        $this->page_put_tpl();
    }

    /*
    ** Affiche les thèmes disponibles
    */
    public function page_put_tpl()
    {
        // Utilisation du thème
        $sql = 'SELECT u_tpl, COUNT(u_tpl) AS total
                FROM ' . SQL_PREFIX . 'users
                WHERE u_id <> ' . VISITOR_ID . '
                GROUP BY u_tpl';
        $result = Fsb::$db->query($sql);
        $used_by = array();
        while ($row = Fsb::$db->row($result))
        {
            $used_by[$row['u_tpl']] = $row['total'];
        }
        Fsb::$db->free($result);

        if ($fd = opendir(ROOT . 'tpl'))
        {
            while ($file = readdir($fd))
            {
                if ($file[0] != '.' && is_dir(ROOT . 'tpl/' . $file) && file_exists(ROOT . 'tpl/' . $file . '/config_tpl.' . PHPEXT))
                {
                    include(ROOT . 'tpl/' . $file . '/config_tpl.' . PHPEXT);
                    Fsb::$tpl->set_blocks('tpl', array(
                        'NAME' =>        $file,
                        'AUTOR' =>        $config_tpl['autor'],
                        'WEB' =>        $config_tpl['web'],
                        'LICENSE' =>    $config_tpl['license'],
                        'USED_BY' =>    (isset($used_by[$file])) ? $used_by[$file] : 0,

                        'U_EDIT_TPL' =>    sid('index.' . PHPEXT . '?p=general_tpl&amp;mode=edit_tpl&amp;tpl_name=' . $file),
                        'U_EDIT_CSS' =>    sid('index.' . PHPEXT . '?p=general_tpl&amp;mode=edit_css&amp;tpl_name=' . $file),
                        'U_EDIT_IMG' =>    sid('index.' . PHPEXT . '?p=general_tpl&amp;mode=edit_img&amp;tpl_name=' . $file),
                    ));
                    unset($config_tpl);
                }
            }
        }
    }

    /*
    ** Affiche la liste des fichiers templates du thème
    */
    public function page_show_tpl()
    {
        if ($this->tpl_name == NULL || !is_dir(ROOT . 'tpl/' . $this->tpl_name))
        {
            Display::message(Fsb::$session->lang('adm_tpl_not_exists'));
        }

        if ($this->file)
        {
            $this->page_edit_tpl();
            return ;
        }

        // Navigation
        $this->nav = array(
            array(
                'name' =>    $this->tpl_name,
                'url' =>    'index.' . PHPEXT . '?p=general_tpl',
            ),
            array(
                'name' =>    Fsb::$session->lang('adm_tpl_edit_list'),
            ),
        );

        Fsb::$tpl->set_switch('tpl_list_templates');
        $cache = Cache::factory('tpl');

        // On récupère la liste des fichiers template du thème (_root pour placer cette clef au début)
        $fd = opendir(ROOT . 'tpl/' . $this->tpl_name . '/files');
        $list_tpl = array('_root' => array());
        while ($file = readdir($fd))
        {
            if ($file[0] != '.' && $file != 'index.html')
            {
                if (preg_match('/\.html$/si', $file))
                {
                    $list_tpl['_root'][] = array(
                        'cache' =>            ($cache->exists(md5('tpl/' . $this->tpl_name . '/files/' . $file))) ? TRUE : FALSE,
                        'filename' =>        $file,
                        'filesize' =>        convert_size(filesize(ROOT . 'tpl/' . $this->tpl_name . '/files/' . $file)),
                    );
                }
                else if (is_dir(ROOT . 'tpl/' . $this->tpl_name . '/files/' . $file))
                {
                    $fd2 = opendir(ROOT . 'tpl/' . $this->tpl_name . '/files/' . $file);
                    while ($file2 = readdir($fd2))
                    {
                        if ($file2[0] != '.' && $file2 != 'index.html' && preg_match('/\.html$/si', $file2))
                        {
                            $list_tpl[$file][] = array(
                                'cache' =>            ($cache->exists(md5('tpl/' . $this->tpl_name . '/files/' . $file . '/' . $file2))) ? TRUE : FALSE,
                                'filename' =>        $file . '/' . $file2,
                                'filesize' =>        convert_size(filesize(ROOT . 'tpl/' . $this->tpl_name . '/files/' . $file . '/' . $file2)),
                            );
                        }
                    }
                    closedir($fd2);
                }
            }
        }
        closedir($fd);

        // On affiche la liste des templates
        ksort($list_tpl);
        foreach ($list_tpl AS $dir => $list)
        {
            Fsb::$tpl->set_blocks('tpl', array(
                'NAME' =>        ($dir == '_root') ? $this->tpl_name : $this->tpl_name . '/' . $dir,
            ));

            foreach ($list AS $f)
            {
                Fsb::$tpl->set_blocks('tpl.f', array(
                    'CACHE' =>        ($f['cache']) ? Fsb::$session->lang('adm_tpl_file_uncache') : Fsb::$session->lang('adm_tpl_file_cache'),
                    'NAME' =>        $f['filename'],
                    'SIZE' =>        $f['filesize'],

                    'U_CACHE' =>    sid('index.' . PHPEXT . '?p=general_tpl&amp;mode=' . (($f['cache']) ? 'un' : '') . 'cache_tpl&amp;tpl_name=' . $this->tpl_name . '&amp;file=' . urlencode($f['filename'])),
                    'U_EDIT' =>        sid('index.' . PHPEXT . '?p=general_tpl&amp;mode=edit_tpl&amp;tpl_name=' . $this->tpl_name . '&amp;file=' . urlencode($f['filename'])),
                ));
            }
        }
    }

    /*
    ** Edite un fichier du thème
    */
    public function page_edit_tpl()
    {
        // Navigation
        $this->nav = array(
            array(
                'name' =>    $this->tpl_name,
                'url' =>    'index.' . PHPEXT . '?p=general_tpl',
            ),
            array(
                'name' =>    Fsb::$session->lang('adm_tpl_edit_list'),
                'url' =>    'index.' . PHPEXT . '?p=general_tpl&amp;mode=edit_tpl&amp;tpl_name=' . $this->tpl_name,
            ),
            array(
                'name' =>    sprintf(Fsb::$session->lang('adm_tpl_edit_title'), $this->file),
            ),
        );

        $content = Http::request('content');

        Fsb::$tpl->set_switch('tpl_edit_template');

        Fsb::$tpl->set_vars(array(
            'L_EDIT_TITLE' =>        sprintf(Fsb::$session->lang('adm_tpl_edit_title'), $this->file),
            'CONTENT' =>