Valider c13d2e4f rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Simplifier evaluer_page() en enlevant du code pour PHP < 7.1

Capturer aussi les \ParseError dans ce cas.

Attention, la variable $res est globale est utilisée ensuite par l’appeleur.
parent e3525a7e
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+5 −25
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -26,8 +26,10 @@ if (!defined('_ECRIRE_INC_VERSION')) {
 * dans une fonction).
 *
 * @param array $page
 * @return bool
 * @return void
 */

 /** @var bool Évaluation réussie ? */
$res = true;

// Cas d'une page contenant du PHP :
@@ -49,30 +51,8 @@ if (empty($page['process_ins']) or $page['process_ins'] != 'html') {

	try {
		$res = eval('?' . '>' . $page['texte']);
		// error catching 5.2<=PHP<7
		if (
			$res === false
			and function_exists('error_get_last')
			and ($erreur = error_get_last())
		) {
			$code = $page['texte'];
			$GLOBALS['numero_ligne_php'] = 1;
			if (!function_exists('numerote_ligne_php')) {
				function numerote_ligne_php($match) {
					$GLOBALS['numero_ligne_php']++;
					return "\n/*" . str_pad($GLOBALS['numero_ligne_php'], 3, '0', STR_PAD_LEFT) . '*/';
				}
			}
			$code = '/*001*/' . preg_replace_callback(",\n,", 'numerote_ligne_php', $code);
			$code = trim(highlight_string($code, true));
			erreur_squelette('L' . $erreur['line'] . ': ' . $erreur['message'] . '<br />' . $code, [$page['source'],'',$erreur['file'],'',$GLOBALS['spip_lang']]);
			$page['texte'] = '<!-- Erreur -->';
		}
		else {
		$page['texte'] = ob_get_contents();
		}
	}
	catch (\Exception | \Error $e) {
	} catch (\Throwable $e) {
		$code = $page['texte'];
		$GLOBALS['numero_ligne_php'] = 1;
		if (!function_exists('numerote_ligne_php')) {