Il est apparent que la ligne 146 de Templete.php pointe sur l'instruction eval() et c'est en exécutant le code de eval() que le parser trouve une erreur à la ligne 40 de ce sous-code....
Parse error: parse error, unexpected '}' in C:\wamp\www\lib\Template.php(146) : eval()'d code on line 40
ou est l'erreur ligne 146 ou ligne 40 ? et il n'y a pas de '}' en trop !
...
Code : Tout sélectionner
function Template ($name, &$request, $args = false) {
global $WikiTheme;
$this->_request =& $request;
$this->_basepage = $request->getArg('pagename');
if (strstr($name, "/")) {
$oldname = $WikiTheme->_name;
$oldtheme = $WikiTheme->_theme;
list($themename, $name) = explode("/", $name);
$WikiTheme->_theme = "themes/$themename";
}
$this->_name = $name;
$file = $WikiTheme->findTemplate($name);
if (!$file) {
trigger_error("no template for $name found.", E_USER_WARNING);
return;
}
if (isset($oldname)) {
$WikiTheme->_name = $oldname;
$WikiTheme->_theme = $oldtheme;
}
$fp = fopen($file, "rb");
if (!$fp) {
trigger_error("$file not found", E_USER_WARNING);
return;
} <-------- ligne 40
$request->_TemplatesProcessed[$name] = 1;
$this->_tmpl = fread($fp, filesize($file));
fclose($fp);
//$userid = $request->_user->_userid;
if (is_array($args))
$this->_locals = $args;
elseif ($args)
$this->_locals = array('CONTENT' => $args);
else
$this->_locals = array();
}Code : Tout sélectionner
function printExpansion ($defaults = false) {
if (!is_array($defaults)) // HTML object or template object
$defaults = array('CONTENT' => $defaults);
$this->_vars = array_merge($defaults, $this->_locals);
extract($this->_vars);
global $request;
if (!isset($user))
$user = $request->getUser();
if (!isset($page))
$page = $request->getPage();
// Speedup. I checked all templates
if (!isset($revision))
$revision = false;
global $WikiTheme, $RCS_IDS, $charset;
//$this->_dump_template();
$SEP = $WikiTheme->getButtonSeparator();
global $ErrorManager;
$ErrorManager->pushErrorHandler(new WikiMethodCb($this, '_errorHandler'));
eval('?>' . $this->_munge_input($this->_tmpl)); <---- ligne 146
$ErrorManager->popErrorHandler();
}
eval('?>' . $this->_munge_input($this->_tmpl));
Cette dernière appelle la méthode $this->_munge_input() de la classe en cours où l'erreur est signalée à la line 40.
Code : Tout sélectionner
function _munge_input($template) {
// Convert < ?plugin expr ? > to < ?php $this->_printPluginPI("expr"); ? >
$orig[] = '/<\?plugin.*?\?>/se';
$repl[] = "\$this->_mungePlugin('\\0')";
// Convert < ?= expr ? > to < ?php $this->_print(expr); ? >
$orig[] = '/<\?=(.*?)\?>/s';
$repl[] = '<?php $this->_print(\1);?>';
return preg_replace($orig, $repl, $template);
}Code : Tout sélectionner
$request->_TemplatesProcessed[$name] = 1;
$this->_tmpl = fread($fp, filesize($file));
fclose($fp);
Code : Tout sélectionner
$repl[] = '<?php \$this->_print(\\1);?>';