aboutsummaryrefslogtreecommitdiff
path: root/lib/lib_rss.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2019-08-20 14:55:43 +0200
committerGravatar GitHub <noreply@github.com> 2019-08-20 14:55:43 +0200
commitfd33d92d413acb5ee48e04d8a78f251e35ef06c5 (patch)
tree494f54d132e9b305ec91f5c8736b633bdedfb298 /lib/lib_rss.php
parent38a4b22f7bb2eb51c5224d2a340e199d6a280797 (diff)
Require PHP 5.5+ (#2495)
* Require PHP 5.5+ https://github.com/FreshRSS/FreshRSS/issues/2469#issuecomment-522255093 I think it would be reasonable to require PHP 5.5+ for the core of FreshRSS after all. As Frenzie said, WordPress currently requires PHP 5.6.20+, and it is the most popular PHP application. We would loose about 20% of the PHP servers according to https://w3techs.com/technologies/details/pl-php/5/all but I expect this number to drop fast after the release of CentOS 8 (CentOS accounts for 17% of Linux servers https://w3techs.com/technologies/details/os-linux/all/all ). Distributions: * no impact on Ubuntu, Fedora, Alpine, OpenWRT, FreeBSD, OpenSuze, Mageia, as all active versions have PHP > 7 * no impact on OpenSuze, Synology, as all active versions have PHP > 5.5 * we drop Debian 8 Jessie (-2020) - we keep supporting Debian 9 Stretch (2017-06) - current is Debian 10 Buster * we drop Red Hat 7 (-2024) - we keep supporting RHEL 8 (2019-05) * we drop CentOS 7 (-2024) - we will support CentOS 8 (to be released soonish) When dropping older versions, I can better like when it is for a good reason, and there is actually one with PHP 5.5, namely generators (yield) https://php.net/language.generators.overview which I consider using. * Version note for JSON.php * hex2bin * Update .travis.yml Co-Authored-By: Frans de Jonge <fransdejonge@gmail.com>
Diffstat (limited to 'lib/lib_rss.php')
-rw-r--r--lib/lib_rss.php32
1 files changed, 9 insertions, 23 deletions
diff --git a/lib/lib_rss.php b/lib/lib_rss.php
index c0ea23989..2706ff606 100644
--- a/lib/lib_rss.php
+++ b/lib/lib_rss.php
@@ -1,9 +1,9 @@
<?php
-if (version_compare(PHP_VERSION, '5.3.8', '<')) {
- die('FreshRSS error: FreshRSS requires PHP 5.3.8+!');
+if (version_compare(PHP_VERSION, '5.5.0', '<')) {
+ die('FreshRSS error: FreshRSS requires PHP 5.5.0+!');
}
-if (!function_exists('json_decode')) {
+if (!function_exists('json_decode')) { //PHP bug #63520 < PHP 7
require_once(__DIR__ . '/JSON.php');
function json_decode($var, $assoc = false) {
$JSON = new Services_JSON($assoc ? SERVICES_JSON_LOOSE_TYPE : 0);
@@ -19,8 +19,6 @@ if (!function_exists('json_encode')) {
}
}
-defined('JSON_UNESCAPED_UNICODE') or define('JSON_UNESCAPED_UNICODE', 256); //PHP 5.3
-
if (!function_exists('mb_strcut')) {
function mb_strcut($str, $start, $length = null, $encoding = 'UTF-8') {
return substr($str, $start, $length);
@@ -68,12 +66,7 @@ function idn_to_puny($url) {
$parts = parse_url($url);
if (!empty($parts['host'])) {
$idn = $parts['host'];
- // INTL_IDNA_VARIANT_UTS46 is defined starting in PHP 5.4
- if (defined('INTL_IDNA_VARIANT_UTS46')) {
- $puny = idn_to_ascii($idn, 0, INTL_IDNA_VARIANT_UTS46);
- } else {
- $puny = idn_to_ascii($idn);
- }
+ $puny = idn_to_ascii($idn, 0, INTL_IDNA_VARIANT_UTS46);
$pos = strpos($url, $idn);
if ($pos !== false) {
return substr_replace($url, $puny, $pos, strlen($idn));
@@ -187,17 +180,10 @@ function timestamptodate ($t, $hour = true) {
function html_only_entity_decode($text) {
static $htmlEntitiesOnly = null;
if ($htmlEntitiesOnly === null) {
- if (version_compare(PHP_VERSION, '5.3.4') >= 0) {
- $htmlEntitiesOnly = array_flip(array_diff(
- get_html_translation_table(HTML_ENTITIES, ENT_NOQUOTES, 'UTF-8'), //Decode HTML entities
- get_html_translation_table(HTML_SPECIALCHARS, ENT_NOQUOTES, 'UTF-8') //Preserve XML entities
- ));
- } else {
- $htmlEntitiesOnly = array_map('utf8_encode', array_flip(array_diff(
- get_html_translation_table(HTML_ENTITIES, ENT_NOQUOTES), //Decode HTML entities
- get_html_translation_table(HTML_SPECIALCHARS, ENT_NOQUOTES) //Preserve XML entities
- )));
- }
+ $htmlEntitiesOnly = array_flip(array_diff(
+ get_html_translation_table(HTML_ENTITIES, ENT_NOQUOTES, 'UTF-8'), //Decode HTML entities
+ get_html_translation_table(HTML_SPECIALCHARS, ENT_NOQUOTES, 'UTF-8') //Preserve XML entities
+ ));
}
return strtr($text, $htmlEntitiesOnly);
}
@@ -428,7 +414,7 @@ function check_install_php() {
$pdo_pgsql = extension_loaded('pdo_pgsql');
$pdo_sqlite = extension_loaded('pdo_sqlite');
return array(
- 'php' => version_compare(PHP_VERSION, '5.3.8') >= 0,
+ 'php' => version_compare(PHP_VERSION, '5.5.0') >= 0,
'minz' => file_exists(LIB_PATH . '/Minz'),
'curl' => extension_loaded('curl'),
'pdo' => $pdo_mysql || $pdo_sqlite || $pdo_pgsql,