Merge pull request #713 from vemaeg/php81

PHP 8.1 compatibility (without IntlDateFormatter)
This commit is contained in:
Simon Wisselink
2022-01-21 10:18:48 +01:00
committed by GitHub
12 changed files with 19 additions and 17 deletions

View File

@@ -28,6 +28,7 @@ jobs:
- "7.3" - "7.3"
- "7.4" - "7.4"
- "8.0" - "8.0"
- "8.1"
compiler: compiler:
- default - default

View File

@@ -196,8 +196,8 @@ class Smarty_Internal_CacheResource_File extends Smarty_CacheResource
*/ */
public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached) public function hasLock(Smarty $smarty, Smarty_Template_Cached $cached)
{ {
clearstatcache(true, $cached->lock_id); clearstatcache(true, $cached->lock_id ?? '');
if (is_file($cached->lock_id)) { if (null !== $cached->lock_id && is_file($cached->lock_id)) {
$t = filemtime($cached->lock_id); $t = filemtime($cached->lock_id);
return $t && (time() - $t < $smarty->locking_timeout); return $t && (time() - $t < $smarty->locking_timeout);
} else { } else {

View File

@@ -157,7 +157,7 @@ class Smarty_Internal_Compile_Functionclose extends Smarty_Internal_CompileBase
$output = "<?php echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php "; $output = "<?php echo \"/*%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/<?php ";
$output .= "\\\$_smarty_tpl->smarty->ext->_tplFunction->restoreTemplateVariables(\\\$_smarty_tpl, '{$_name}');?>\n"; $output .= "\\\$_smarty_tpl->smarty->ext->_tplFunction->restoreTemplateVariables(\\\$_smarty_tpl, '{$_name}');?>\n";
$output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";\n?>"; $output .= "/*/%%SmartyNocache:{$compiler->template->compiled->nocache_hash}%%*/\";\n?>";
$output .= "<?php echo str_replace('{$compiler->template->compiled->nocache_hash}', \$_smarty_tpl->compiled->nocache_hash, ob_get_clean());\n"; $output .= "<?php echo str_replace('{$compiler->template->compiled->nocache_hash}', \$_smarty_tpl->compiled->nocache_hash ?? '', ob_get_clean());\n";
$output .= "}\n}\n"; $output .= "}\n}\n";
$output .= "/*/ {$_funcName}_nocache */\n\n"; $output .= "/*/ {$_funcName}_nocache */\n\n";
$output .= "?>\n"; $output .= "?>\n";

View File

@@ -158,7 +158,7 @@ class Smarty_Internal_Config_File_Compiler
} }
// template header code // template header code
$template_header = $template_header =
"<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . strftime("%Y-%m-%d %H:%M:%S") . "<?php /* Smarty version " . Smarty::SMARTY_VERSION . ", created on " . date("Y-m-d H:i:s") .
"\n"; "\n";
$template_header .= " compiled from '{$this->template->source->filepath}' */ ?>\n"; $template_header .= " compiled from '{$this->template->source->filepath}' */ ?>\n";
$code = '<?php $_smarty_tpl->smarty->ext->configLoad->_loadConfigVars($_smarty_tpl, ' . $code = '<?php $_smarty_tpl->smarty->ext->configLoad->_loadConfigVars($_smarty_tpl, ' .

View File

@@ -45,7 +45,7 @@ class Smarty_Internal_Runtime_CodeFrame
$properties[ 'cache_lifetime' ] = $_template->cache_lifetime; $properties[ 'cache_lifetime' ] = $_template->cache_lifetime;
} }
$output = "<?php\n"; $output = "<?php\n";
$output .= "/* Smarty version {$properties[ 'version' ]}, created on " . strftime("%Y-%m-%d %H:%M:%S") . $output .= "/* Smarty version {$properties[ 'version' ]}, created on " . date("Y-m-d H:i:s") .
"\n from '" . str_replace('*/', '* /', $_template->source->filepath) . "' */\n\n"; "\n from '" . str_replace('*/', '* /', $_template->source->filepath) . "' */\n\n";
$output .= "/* @var Smarty_Internal_Template \$_smarty_tpl */\n"; $output .= "/* @var Smarty_Internal_Template \$_smarty_tpl */\n";
$dec = "\$_smarty_tpl->_decodeProperties(\$_smarty_tpl, " . var_export($properties, true) . ',' . $dec = "\$_smarty_tpl->_decodeProperties(\$_smarty_tpl, " . var_export($properties, true) . ',' .

View File

@@ -1135,7 +1135,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
flush(); flush();
} }
$e = new SmartyCompilerException($error_text); $e = new SmartyCompilerException($error_text);
$e->line = $line; $e->setLine($line);
$e->source = trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ])); $e->source = trim(preg_replace('![\t\r\n]+!', ' ', $match[ $line - 1 ]));
$e->desc = $args; $e->desc = $args;
$e->template = $this->template->source->filepath; $e->template = $this->template->source->filepath;

View File

@@ -16,12 +16,12 @@ class SmartyCompilerException extends SmartyException
} }
/** /**
* The line number of the template error * @param int $line
*
* @type int|null
*/ */
public $line = null; public function setLine($line)
{
$this->line = $line;
}
/** /**
* The template source snippet relating to the error * The template source snippet relating to the error
* *

View File

@@ -30,7 +30,8 @@ class CacheResourceTestCommon extends PHPUnit_Smarty
public function compiledPrefilter($text, Smarty_Internal_Template $tpl) public function compiledPrefilter($text, Smarty_Internal_Template $tpl)
{ {
return str_replace('#', $tpl->getTemplateVars('test'), $text); $replace = $tpl->getTemplateVars('test');
return str_replace('#', $replace ?? '', $text);
} }
/** /**

View File

@@ -234,7 +234,7 @@ class ResourceStream
$v = &$GLOBALS[$this->varname]; $v = &$GLOBALS[$this->varname];
$l = strlen($data); $l = strlen($data);
$p = &$this->position; $p = &$this->position;
$v = substr($v, 0, $p) . $data . substr($v, $p += $l); $v = substr($v ?? '', 0, $p) . $data . substr($v ?? '', $p += $l);
return $l; return $l;
} }

View File

@@ -366,9 +366,9 @@ class SecurityTest extends PHPUnit_Smarty
/** /**
* In security mode, accessing $smarty.template_object should be illegal. * In security mode, accessing $smarty.template_object should be illegal.
* @expectedException SmartyCompilerException
*/ */
public function testSmartyTemplateObject() { public function testSmartyTemplateObject() {
$this->expectException(SmartyCompilerException::class);
$this->smarty->display('string:{$smarty.template_object}'); $this->smarty->display('string:{$smarty.template_object}');
} }
@@ -416,7 +416,7 @@ class ResourceStreamSecurity
$v = &$GLOBALS[$this->varname]; $v = &$GLOBALS[$this->varname];
$l = strlen($data); $l = strlen($data);
$p = &$this->position; $p = &$this->position;
$v = substr($v, 0, $p) . $data . substr($v, $p += $l); $v = substr($v ?? '', 0, $p) . $data . substr($v ?? '', $p += $l);
return $l; return $l;
} }

View File

@@ -435,9 +435,9 @@ class CompileFunctionTest extends PHPUnit_Smarty
/** /**
* Test handling of function names that are a security risk * Test handling of function names that are a security risk
* @expectedException SmartyCompilerException
*/ */
public function testIllegalFunctionName() { public function testIllegalFunctionName() {
$this->expectException(SmartyCompilerException::class);
$this->smarty->fetch('string:{function name=\'rce(){};echo "hi";function \'}{/function}'); $this->smarty->fetch('string:{function name=\'rce(){};echo "hi";function \'}{/function}');
} }

View File

@@ -96,7 +96,7 @@ class VariableStream
$v = &$GLOBALS[$this->varname]; $v = &$GLOBALS[$this->varname];
$l = strlen($data); $l = strlen($data);
$p = &$this->position; $p = &$this->position;
$v = substr($v, 0, $p) . $data . substr($v, $p += $l); $v = substr($v ?? '', 0, $p) . $data . substr($v ?? '', $p += $l);
return $l; return $l;
} }