mirror of
https://github.com/smarty-php/smarty.git
synced 2025-11-02 21:31:48 +01:00
Adds support for PHP8.0, dropping support for PHP7.0 and below.
Backwards incompatible changes:
- Dropped support for php asp tags in templates (removed from php since php7.0)
- Dropped deprecated API calls that where only accessible through SmartyBC
- Dropped support for {php} and {include_php} tags and embedded PHP in templates. Embedded PHP will now be passed through as is.
- Removed all PHP_VERSION_ID and compare_version checks and conditional code blocks that are now no longer required
- Dropped deprecated SMARTY_RESOURCE_CHAR_SET and SMARTY_RESOURCE_DATE_FORMAT constants
- Dropped deprecated Smarty::muteExpectedErrors and Smarty::unmuteExpectedErrors API methods
- Dropped deprecated $smarty->getVariable() method. Use $smarty->getTemplateVars() instead.
- $smarty->registerResource() no longer accepts an array of callback functions
See the changelog for more details.
Switched CI from Travis to Github CI.
63 lines
2.2 KiB
PHP
63 lines
2.2 KiB
PHP
<?php
|
|
/**
|
|
* Smarty plugin
|
|
*
|
|
* @package Smarty
|
|
* @subpackage PluginsModifier
|
|
*/
|
|
/**
|
|
* Smarty truncate modifier plugin
|
|
* Type: modifier
|
|
* Name: truncate
|
|
* Purpose: Truncate a string to a certain length if necessary,
|
|
* optionally splitting in the middle of a word, and
|
|
* appending the $etc string or inserting $etc into the middle.
|
|
*
|
|
* @link https://www.smarty.net/manual/en/language.modifier.truncate.php truncate (Smarty online manual)
|
|
* @author Monte Ohrt <monte at ohrt dot com>
|
|
*
|
|
* @param string $string input string
|
|
* @param integer $length length of truncated text
|
|
* @param string $etc end string
|
|
* @param boolean $break_words truncate at word boundary
|
|
* @param boolean $middle truncate in the middle of text
|
|
*
|
|
* @return string truncated string
|
|
*/
|
|
function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false)
|
|
{
|
|
if ($length === 0) {
|
|
return '';
|
|
}
|
|
if (Smarty::$_MBSTRING) {
|
|
if (mb_strlen($string, Smarty::$_CHARSET) > $length) {
|
|
$length -= min($length, mb_strlen($etc, Smarty::$_CHARSET));
|
|
if (!$break_words && !$middle) {
|
|
$string = preg_replace(
|
|
'/\s+?(\S+)?$/' . Smarty::$_UTF8_MODIFIER,
|
|
'',
|
|
mb_substr($string, 0, $length + 1, Smarty::$_CHARSET)
|
|
);
|
|
}
|
|
if (!$middle) {
|
|
return mb_substr($string, 0, $length, Smarty::$_CHARSET) . $etc;
|
|
}
|
|
return mb_substr($string, 0, $length / 2, Smarty::$_CHARSET) . $etc .
|
|
mb_substr($string, -$length / 2, $length, Smarty::$_CHARSET);
|
|
}
|
|
return $string;
|
|
}
|
|
// no MBString fallback
|
|
if (isset($string[ $length ])) {
|
|
$length -= min($length, strlen($etc));
|
|
if (!$break_words && !$middle) {
|
|
$string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length + 1));
|
|
}
|
|
if (!$middle) {
|
|
return substr($string, 0, $length) . $etc;
|
|
}
|
|
return substr($string, 0, $length / 2) . $etc . substr($string, -$length / 2);
|
|
}
|
|
return $string;
|
|
}
|