From 384d52fd83361ffd6e7f28bd39b322970a015a28 Mon Sep 17 00:00:00 2001 From: "FiveFilters.org" Date: Fri, 5 Apr 2019 00:07:05 +0200 Subject: [PATCH] Fix PHP 7.2/7.3 incompatibilites --- admin/edit-pattern.php | 16 ------- admin/update.php | 2 +- changelog.txt | 3 ++ libraries/Zend/Cache/Backend.php | 14 +++--- libraries/Zend/Cache/Backend/File.php | 47 ++++++++++--------- libraries/Zend/Cache/Core.php | 30 ++++++------ libraries/feedwriter/FeedWriter.php | 4 +- .../humble-http-agent/HumbleHttpAgent.php | 4 +- .../HumbleHttpAgentDummy.php | 4 +- makefulltextfeed.php | 21 +-------- ubuntu-16.04.pp | 8 ++-- 11 files changed, 63 insertions(+), 90 deletions(-) diff --git a/admin/edit-pattern.php b/admin/edit-pattern.php index d22c1a1..724c477 100644 --- a/admin/edit-pattern.php +++ b/admin/edit-pattern.php @@ -30,22 +30,6 @@ error_reporting(E_ALL ^ E_NOTICE); ini_set("display_errors", 1); @set_time_limit(120); -if (get_magic_quotes_gpc()) { - $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST); - while (list($key, $val) = each($process)) { - foreach ($val as $k => $v) { - unset($process[$key][$k]); - if (is_array($v)) { - $process[$key][stripslashes($k)] = $v; - $process[] = &$process[$key][stripslashes($k)]; - } else { - $process[$key][stripslashes($k)] = stripslashes($v); - } - } - } - unset($process); -} - require_once '../libraries/content-extractor/SiteConfig.php'; //////////////////////////////// diff --git a/admin/update.php b/admin/update.php index 2852781..42983f4 100644 --- a/admin/update.php +++ b/admin/update.php @@ -147,7 +147,7 @@ if (!is_object($latest_info_json)) { } $ff_version = $latest_info_json->pushed_at; if ($version == $ff_version) { - die('Your site config files are up to date! If you have trouble extracting from a particular site, please email us: help@fivefilters.org'); + die('Your site config files are up to date!'); } else { println("Updated site patterns are available (version $ff_version)..."); } diff --git a/changelog.txt b/changelog.txt index 08b9f0c..5890295 100644 --- a/changelog.txt +++ b/changelog.txt @@ -2,6 +2,9 @@ FiveFilters.org: Full-Text RSS http://fivefilters.org/content-only/ CHANGELOG ------------------------------------ +3.8.2 (unreleased) + - Removed deprecated PHP 7.2 and 7.3 calls + 3.8.1 (2017-10-31) - Bug fix: Systems with old ICU library produced an idn_to_ascii() error - Compatibility test file updated to check for DOM extension diff --git a/libraries/Zend/Cache/Backend.php b/libraries/Zend/Cache/Backend.php index 803fd44..6107520 100644 --- a/libraries/Zend/Cache/Backend.php +++ b/libraries/Zend/Cache/Backend.php @@ -15,16 +15,16 @@ * @category Zend * @package Zend_Cache * @subpackage Zend_Cache_Backend - * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: Backend.php 24989 2012-06-21 07:24:13Z mabe $ + * @version $Id$ */ /** * @package Zend_Cache * @subpackage Zend_Cache_Backend - * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Cache_Backend @@ -58,12 +58,10 @@ class Zend_Cache_Backend * Constructor * * @param array $options Associative array of options - * @throws Zend_Cache_Exception - * @return void */ public function __construct(array $options = array()) { - while (list($name, $value) = each($options)) { + foreach ($options as $name => $value) { $this->setOption($name, $value); } } @@ -269,7 +267,7 @@ class Zend_Cache_Backend * Log a message at the WARN (4) priority. * * @param string $message - * @throws Zend_Cache_Exception + * @param int $priority * @return void */ protected function _log($message, $priority = 4) @@ -287,4 +285,4 @@ class Zend_Cache_Backend } $logger->log($message, $priority); } -} +} \ No newline at end of file diff --git a/libraries/Zend/Cache/Backend/File.php b/libraries/Zend/Cache/Backend/File.php index 5affbcb..725672f 100644 --- a/libraries/Zend/Cache/Backend/File.php +++ b/libraries/Zend/Cache/Backend/File.php @@ -15,9 +15,9 @@ * @category Zend * @package Zend_Cache * @subpackage Zend_Cache_Backend - * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: File.php 24844 2012-05-31 19:01:36Z rob $ + * @version $Id$ */ /** @@ -25,19 +25,16 @@ */ //require_once 'Zend/Cache/Backend/ExtendedInterface.php'; require_once dirname(__FILE__).'/ExtendedInterface.php'; - /** * @see Zend_Cache_Backend */ //require_once 'Zend/Cache/Backend.php'; require_once realpath(dirname(__FILE__).'/..').DIRECTORY_SEPARATOR.'Backend.php'; - - /** * @package Zend_Cache * @subpackage Zend_Cache_Backend - * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Cache_Backend_File extends Zend_Cache_Backend implements Zend_Cache_Backend_ExtendedInterface @@ -123,7 +120,6 @@ class Zend_Cache_Backend_File extends Zend_Cache_Backend implements Zend_Cache_B * * @param array $options associative array of options * @throws Zend_Cache_Exception - * @return void */ public function __construct(array $options = array()) { @@ -237,10 +233,10 @@ class Zend_Cache_Backend_File extends Zend_Cache_Backend implements Zend_Cache_B * Note : $data is always "string" (serialization is done by the * core not by the backend) * - * @param string $data Datas to cache - * @param string $id Cache id - * @param array $tags Array of strings, the cache record will be tagged by each string entry - * @param int $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime) + * @param string $data Datas to cache + * @param string $id Cache id + * @param array $tags Array of strings, the cache record will be tagged by each string entry + * @param boolean|int $specificLifetime If != false, set a specific lifetime for this cache record (null => infinite lifetime) * @return boolean true if no problem */ public function save($data, $id, $tags = array(), $specificLifetime = false) @@ -306,7 +302,7 @@ class Zend_Cache_Backend_File extends Zend_Cache_Backend implements Zend_Cache_B * ($tags can be an array of strings or a single string) * * @param string $mode clean mode - * @param tags array $tags array of tags + * @param array $tags array of tags * @return boolean true if no problem */ public function clean($mode = Zend_Cache::CLEANING_MODE_ALL, $tags = array()) @@ -678,14 +674,17 @@ class Zend_Cache_Backend_File extends Zend_Cache_Backend implements Zend_Cache_B // On some systems it is impossible to distinguish between empty match and an error. return true; } + $metadataFiles = array(); foreach ($glob as $file) { if (is_file($file)) { $fileName = basename($file); if ($this->_isMetadatasFile($fileName)) { - // in CLEANING_MODE_ALL, we drop anything, even remainings old metadatas files - if ($mode != Zend_Cache::CLEANING_MODE_ALL) { - continue; + // In CLEANING_MODE_ALL, we drop anything, even remainings old metadatas files. + // To do that, we need to save the list of the metadata files first. + if ($mode == Zend_Cache::CLEANING_MODE_ALL) { + $metadataFiles[] = $file; } + continue; } $id = $this->_fileNameToId($fileName); $metadatas = $this->_getMetadatas($id); @@ -694,12 +693,7 @@ class Zend_Cache_Backend_File extends Zend_Cache_Backend implements Zend_Cache_B } switch ($mode) { case Zend_Cache::CLEANING_MODE_ALL: - $res = $this->remove($id); - if (!$res) { - // in this case only, we accept a problem with the metadatas file drop - $res = $this->_remove($file); - } - $result = $result && $res; + $result = $result && $this->remove($id); break; case Zend_Cache::CLEANING_MODE_OLD: if (time() > $metadatas['expire']) { @@ -756,6 +750,14 @@ class Zend_Cache_Backend_File extends Zend_Cache_Backend implements Zend_Cache_B } } } + + // cycle through metadataFiles and delete orphaned ones + foreach ($metadataFiles as $file) { + if (file_exists($file)) { + $result = $this->_remove($file) && $result; + } + } + return $result; } @@ -846,6 +848,7 @@ class Zend_Cache_Backend_File extends Zend_Cache_Backend implements Zend_Cache_B /** * Compute & return the expire time * + * @param int $lifetime * @return int expire time (unix timestamp) */ protected function _expireTime($lifetime) @@ -1031,4 +1034,4 @@ class Zend_Cache_Backend_File extends Zend_Cache_Backend implements Zend_Cache_B return preg_replace('~^' . $prefix . '---(.*)$~', '$1', $fileName); } -} +} \ No newline at end of file diff --git a/libraries/Zend/Cache/Core.php b/libraries/Zend/Cache/Core.php index e358863..22932cf 100644 --- a/libraries/Zend/Cache/Core.php +++ b/libraries/Zend/Cache/Core.php @@ -14,15 +14,15 @@ * * @category Zend * @package Zend_Cache - * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: Core.php 24989 2012-06-21 07:24:13Z mabe $ + * @version $Id$ */ /** * @package Zend_Cache - * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Cache_Core @@ -143,7 +143,7 @@ class Zend_Cache_Core Zend_Cache::throwException("Options passed were not an array" . " or Zend_Config instance."); } - while (list($name, $value) = each($options)) { + foreach ($options as $name => $value) { $this->setOption($name, $value); } $this->_loggerSanity(); @@ -158,7 +158,7 @@ class Zend_Cache_Core public function setConfig(Zend_Config $config) { $options = $config->toArray(); - while (list($name, $value) = each($options)) { + foreach ($options as $name => $value) { $this->setOption($name, $value); } return $this; @@ -300,7 +300,7 @@ class Zend_Cache_Core } $id = $this->_id($id); // cache id may need prefix $this->_lastId = $id; - self::_validateIdOrTag($id); + $this->_validateIdOrTag($id); $this->_log("Zend_Cache_Core: load item '{$id}'", 7); $data = $this->_backend->load($id, $doNotTestCacheValidity); @@ -327,7 +327,7 @@ class Zend_Cache_Core return false; } $id = $this->_id($id); // cache id may need prefix - self::_validateIdOrTag($id); + $this->_validateIdOrTag($id); $this->_lastId = $id; $this->_log("Zend_Cache_Core: test item '{$id}'", 7); @@ -355,8 +355,8 @@ class Zend_Cache_Core } else { $id = $this->_id($id); } - self::_validateIdOrTag($id); - self::_validateTagsArray($tags); + $this->_validateIdOrTag($id); + $this->_validateTagsArray($tags); if ($this->_options['automatic_serialization']) { // we need to serialize datas before storing them $data = serialize($data); @@ -424,7 +424,7 @@ class Zend_Cache_Core return true; } $id = $this->_id($id); // cache id may need prefix - self::_validateIdOrTag($id); + $this->_validateIdOrTag($id); $this->_log("Zend_Cache_Core: remove item '{$id}'", 7); return $this->_backend->remove($id); @@ -460,7 +460,7 @@ class Zend_Cache_Core Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG))) { Zend_Cache::throwException('Invalid cleaning mode'); } - self::_validateTagsArray($tags); + $this->_validateTagsArray($tags); return $this->_backend->clean($mode, $tags); } @@ -667,7 +667,7 @@ class Zend_Cache_Core * @throws Zend_Cache_Exception * @return void */ - protected static function _validateIdOrTag($string) + protected function _validateIdOrTag($string) { if (!is_string($string)) { Zend_Cache::throwException('Invalid id or tag : must be a string'); @@ -689,13 +689,13 @@ class Zend_Cache_Core * @throws Zend_Cache_Exception * @return void */ - protected static function _validateTagsArray($tags) + protected function _validateTagsArray($tags) { if (!is_array($tags)) { Zend_Cache::throwException('Invalid tags array : must be an array'); } foreach($tags as $tag) { - self::_validateIdOrTag($tag); + $this->_validateIdOrTag($tag); } reset($tags); } @@ -762,4 +762,4 @@ class Zend_Cache_Core return $id; // no prefix, just return the $id passed } -} +} \ No newline at end of file diff --git a/libraries/feedwriter/FeedWriter.php b/libraries/feedwriter/FeedWriter.php index 42c7cd8..9c374fa 100644 --- a/libraries/feedwriter/FeedWriter.php +++ b/libraries/feedwriter/FeedWriter.php @@ -21,8 +21,8 @@ define('JSONP', 3); class FeedWriter { private $self = null; // self URL - http://feed2.w3.org/docs/warning/MissingAtomSelfLink.html - private $alternate = array(); // alternate URL and title - private $related = array(); // related URL and title + private $alternate = null; // alternate URL and title + private $related = null; // related URL and title private $hubs = array(); // PubSubHubbub hubs private $channels = array(); // Collection of channel elements private $items = array(); // Collection of items as object of FeedItem class. diff --git a/libraries/humble-http-agent/HumbleHttpAgent.php b/libraries/humble-http-agent/HumbleHttpAgent.php index 3b8adc9..723af5c 100644 --- a/libraries/humble-http-agent/HumbleHttpAgent.php +++ b/libraries/humble-http-agent/HumbleHttpAgent.php @@ -311,10 +311,10 @@ class HumbleHttpAgent public function validateUrl($url) { $url = filter_var($url, FILTER_SANITIZE_URL); - $test = filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED); + $test = filter_var($url, FILTER_VALIDATE_URL); // deal with bug http://bugs.php.net/51192 (present in PHP 5.2.13 and PHP 5.3.2) if ($test === false) { - $test = filter_var(strtr($url, '-', '_'), FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED); + $test = filter_var(strtr($url, '-', '_'), FILTER_VALIDATE_URL); } if ($test !== false && $test !== null && preg_match('!^https?://!', $url)) { return $url; diff --git a/libraries/humble-http-agent/HumbleHttpAgentDummy.php b/libraries/humble-http-agent/HumbleHttpAgentDummy.php index cd30c32..7f33f33 100644 --- a/libraries/humble-http-agent/HumbleHttpAgentDummy.php +++ b/libraries/humble-http-agent/HumbleHttpAgentDummy.php @@ -71,10 +71,10 @@ class HumbleHttpAgentDummy public function validateUrl($url) { $url = filter_var($url, FILTER_SANITIZE_URL); - $test = filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED); + $test = filter_var($url, FILTER_VALIDATE_URL); // deal with bug http://bugs.php.net/51192 (present in PHP 5.2.13 and PHP 5.3.2) if ($test === false) { - $test = filter_var(strtr($url, '-', '_'), FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED); + $test = filter_var(strtr($url, '-', '_'), FILTER_VALIDATE_URL); } if ($test !== false && $test !== null && preg_match('!^https?://!', $url)) { return $url; diff --git a/makefulltextfeed.php b/makefulltextfeed.php index 5289a83..64bff03 100644 --- a/makefulltextfeed.php +++ b/makefulltextfeed.php @@ -42,23 +42,6 @@ if (_FF_FTR_MODE === 'simple') { $_REQUEST = $_GET; } -// Deal with magic quotes -if (get_magic_quotes_gpc()) { - $process = array(&$_REQUEST); - while (list($key, $val) = each($process)) { - foreach ($val as $k => $v) { - unset($process[$key][$k]); - if (is_array($v)) { - $process[$key][stripslashes($k)] = $v; - $process[] = &$process[$key][stripslashes($k)]; - } else { - $process[$key][stripslashes($k)] = stripslashes($v); - } - } - } - unset($process); -} - // set include path set_include_path(realpath(dirname(__FILE__).'/libraries').PATH_SEPARATOR.get_include_path()); // Autoloading of classes allows us to include files only when they're @@ -1268,10 +1251,10 @@ function validate_url($url) { } } $url = filter_var($url, FILTER_SANITIZE_URL); - $test = filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED); + $test = filter_var($url, FILTER_VALIDATE_URL); // deal with bug http://bugs.php.net/51192 (present in PHP 5.2.13 and PHP 5.3.2) if ($test === false) { - $test = filter_var(strtr($url, '-', '_'), FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED); + $test = filter_var(strtr($url, '-', '_'), FILTER_VALIDATE_URL); } if ($test !== false && $test !== null && preg_match('!^https?://!i', $url)) { return $url; diff --git a/ubuntu-16.04.pp b/ubuntu-16.04.pp index 85da648..80a79d4 100644 --- a/ubuntu-16.04.pp +++ b/ubuntu-16.04.pp @@ -1,4 +1,6 @@ -# Puppet file intended to install server componenets for FiveFilters.org web services +# Puppet file intended to install server componenets for FiveFilters.org web services. +# This file should only be run once when setting up a new server to run Full-Text RSS. +# See http://help.fivefilters.org/customer/portal/articles/1143210-hosting for more information. # This file is intended for base images of: # Ubuntu 16.04 @@ -164,8 +166,8 @@ class php_pecl_http { ensure => present, #owner => root, group => root, mode => 444, content => "; priority=25 -extension=raphf.so -extension=propro.so +;extension=raphf.so +;extension=propro.so extension=http.so", before => [Exec["install-http-pecl"], Exec["enable-http"]], require => Class["php"]