From b180528e518ecd35c8f47e301db8d816f3ed480d Mon Sep 17 00:00:00 2001 From: Greg Stoll Date: Tue, 28 Mar 2017 15:17:53 -0500 Subject: [PATCH 1/2] Fixing PHP 7 issues The real fixes are replacing uses of preg_replace with the 'e' mode with preg_replace_callback and the change to modules/core/clases/GalleryStorage/GalleryStorageExtras to add {}. The rest is just declaring functions static to avoid noisy warning messages, but there are plenty more that could be added. --- .gitignore | 3 ++ lib/adodb/adodb-time.inc.php | 1 - lib/adodb/adodb.inc.php | 2 +- lib/bbcode/stringparser.class.php | 2 +- lib/smarty/Smarty_Compiler.class.php | 12 ++++- lib/support/GallerySetupUtilities.class | 26 +++++----- modules/core/classes/GalleryCoreApi.class | 16 +++--- modules/core/classes/GalleryDataCache.class | 16 +++--- .../GalleryStorage/GalleryStorageExtras.class | 2 +- modules/core/classes/GalleryUtilities.class | 59 ++++++++++++---------- 10 files changed, 77 insertions(+), 62 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3503017 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +config.php +login.txt +*.swp diff --git a/lib/adodb/adodb-time.inc.php b/lib/adodb/adodb-time.inc.php index 575578c..eb6c415 100644 --- a/lib/adodb/adodb-time.inc.php +++ b/lib/adodb/adodb-time.inc.php @@ -1006,7 +1006,6 @@ function adodb_tz_offset($gmt,$isphp5) return sprintf('%s%02d%02d',($gmt<=0)?'+':'-',floor($zhrs),($zhrs-$hrs)*60); else return sprintf('%s%02d%02d',($gmt<0)?'+':'-',floor($zhrs),($zhrs-$hrs)*60); - break; } diff --git a/lib/adodb/adodb.inc.php b/lib/adodb/adodb.inc.php index 092e46e..2ff4486 100644 --- a/lib/adodb/adodb.inc.php +++ b/lib/adodb/adodb.inc.php @@ -373,7 +373,7 @@ * All error messages go through this bottleneck function. * You can define your own handler by defining the function name in ADODB_OUTP. */ - function outp($msg,$newline=true) + static function outp($msg,$newline=true) { global $ADODB_FLUSH,$ADODB_OUTP; diff --git a/lib/bbcode/stringparser.class.php b/lib/bbcode/stringparser.class.php index 46f78f3..b0a0619 100644 --- a/lib/bbcode/stringparser.class.php +++ b/lib/bbcode/stringparser.class.php @@ -1248,7 +1248,7 @@ class StringParser_Node { * @param object $node The node to destroy * @return bool True on success, else false. */ - function destroyNode (&$node) { + static function destroyNode (&$node) { if ($node === null) { return false; } diff --git a/lib/smarty/Smarty_Compiler.class.php b/lib/smarty/Smarty_Compiler.class.php index f09f8de..a62c624 100644 --- a/lib/smarty/Smarty_Compiler.class.php +++ b/lib/smarty/Smarty_Compiler.class.php @@ -262,12 +262,20 @@ class Smarty_Compiler extends Smarty { reset($this->_folded_blocks); /* replace special blocks by "{php}" */ - $source_content = preg_replace($search.'e', "'" + $source_content = preg_replace_callback($search, + function($matches) { + return $this->_quote_replace($this->left_delimiter) . 'php' + . str_repeat("\n", substr_count($matches[0], "\n")) + . $this->_quote_replace($this->right_delimiter); + } + , $source_content); + + /*$source_content = preg_replace($search.'e', "'" . $this->_quote_replace($this->left_delimiter) . 'php' . "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'" . $this->_quote_replace($this->right_delimiter) . "'" - , $source_content); + , $source_content);*/ /* Gather all template tags. */ preg_match_all("~{$ldq}\s*(.*?)\s*{$rdq}~s", $source_content, $_match); diff --git a/lib/support/GallerySetupUtilities.class b/lib/support/GallerySetupUtilities.class index 6a6da7b..4f8cc7e 100644 --- a/lib/support/GallerySetupUtilities.class +++ b/lib/support/GallerySetupUtilities.class @@ -54,7 +54,7 @@ class GallerySetupUtilities { * * @static */ - function regenerateSession() { + static function regenerateSession() { /* 1. Generate a new session id */ $newSessionId = md5(uniqid(substr(rand() . serialize($_REQUEST), 0, 114))); $sessionData = array(); @@ -84,7 +84,7 @@ class GallerySetupUtilities { * * @static */ - function areCookiesSupported() { + static function areCookiesSupported() { static $areCookiesSupported; /* Remember the state since we might unset $_COOKIE */ @@ -101,7 +101,7 @@ class GallerySetupUtilities { * @return int the number of attempts or false if there was an error * @static */ - function getLoginAttempts() { + static function getLoginAttempts() { /* Init if needed (like from lib/support; upgrader already init'ed) */ global $gallery; if (!isset($gallery)) { @@ -139,7 +139,7 @@ class GallerySetupUtilities { * @return true on success, false on error * @static */ - function setLoginAttempts($attempts) { + static function setLoginAttempts($attempts) { /* Init if needed (like from lib/support; upgrader already init'ed) */ global $gallery; if (!isset($gallery)) { @@ -182,7 +182,7 @@ class GallerySetupUtilities { * @param bool $updateDatabase true if you want to also reset the login attempts (default: true) * @static */ - function authenticateThisSession($resetLoginAttempts=true) { + static function authenticateThisSession($resetLoginAttempts=true) { $_SESSION['authenticated'] = true; if ($resetLoginAttempts) { GallerySetupUtilities::setLoginAttempts(0); @@ -196,7 +196,7 @@ class GallerySetupUtilities { * @return true if this session is authenticated * @static */ - function isSessionAuthenticated() { + static function isSessionAuthenticated() { return !empty($_SESSION['authenticated']); } @@ -205,7 +205,7 @@ class GallerySetupUtilities { * * @static */ - function redirectBackToSelf() { + static function redirectBackToSelf() { require_once(dirname(__FILE__) . '/../../modules/core/classes/GalleryUrlGenerator.class'); $urlGenerator = new GalleryUrlGenerator(); $url = $urlGenerator->getCurrentUrl(); @@ -224,7 +224,7 @@ class GallerySetupUtilities { * @return string the path to the config dir * @static */ - function getConfigDir() { + static function getConfigDir() { if (defined('GALLERY_CONFIG_DIR')) { return GALLERY_CONFIG_DIR; } @@ -237,7 +237,7 @@ class GallerySetupUtilities { * @return array the config values from config.php * @static */ - function getGalleryConfig() { + static function getGalleryConfig() { $gallery = new GallerySetupUtilitiesStub(); /* Load config.php */ @@ -256,7 +256,7 @@ class GallerySetupUtilities { * @return string the authentication key * @static */ - function getAuthenticationKey() { + static function getAuthenticationKey() { return isset($_SESSION['authKey']) ? $_SESSION['authKey'] : null; } @@ -265,7 +265,7 @@ class GallerySetupUtilities { * @param string $key the authentication key * @static */ - function setAuthenticationKey($key) { + static function setAuthenticationKey($key) { $_SESSION['authKey'] = $key; } @@ -274,7 +274,7 @@ class GallerySetupUtilities { * @param string a random value * @static */ - function generateAuthenticationKey() { + static function generateAuthenticationKey() { for ($len = 64, $rand=''; strlen($rand) < $len; $rand .= chr(!mt_rand(0,2) ? mt_rand(48,57) : @@ -308,7 +308,7 @@ class GallerySetupUtilities { * * @static */ - function startSession() { + static function startSession() { /* Set our own session name */ if (@ini_get('session.auto_start')) { session_unset(); diff --git a/modules/core/classes/GalleryCoreApi.class b/modules/core/classes/GalleryCoreApi.class index 6edcdf4..27d5b20 100644 --- a/modules/core/classes/GalleryCoreApi.class +++ b/modules/core/classes/GalleryCoreApi.class @@ -295,7 +295,7 @@ class GalleryCoreApi { * @return array GalleryStatus a status code * string a value */ - function getPluginParameter($pluginType, $pluginId, $parameterName, $itemId=0) { + static function getPluginParameter($pluginType, $pluginId, $parameterName, $itemId=0) { GalleryCoreApi::requireOnce( 'modules/core/classes/helpers/GalleryPluginHelper_simple.class'); return GalleryPluginHelper_simple::getParameter($pluginType, $pluginId, @@ -363,7 +363,7 @@ class GalleryCoreApi { * 'requiredModuleApi' => array, * 'version' => string) */ - function fetchPluginStatus($pluginType, $ignoreCache=false) { + static function fetchPluginStatus($pluginType, $ignoreCache=false) { GalleryCoreApi::requireOnce( 'modules/core/classes/helpers/GalleryPluginHelper_simple.class'); return GalleryPluginHelper_simple::fetchPluginStatus($pluginType, $ignoreCache); @@ -376,7 +376,7 @@ class GalleryCoreApi { * @return array GalleryStatus a status code * array of (pluginId => ('active' => boolean)) */ - function fetchPluginList($pluginType) { + static function fetchPluginList($pluginType) { GalleryCoreApi::requireOnce( 'modules/core/classes/helpers/GalleryPluginHelper_simple.class'); return GalleryPluginHelper_simple::fetchPluginList($pluginType); @@ -2355,7 +2355,7 @@ class GalleryCoreApi { * mixed one GalleryEntity or an array of GalleryEntities * @deprecated $requiredEntityType will no longer be optional after the next major API change */ - function loadEntitiesById($ids, $requiredEntityType=null) { + static function loadEntitiesById($ids, $requiredEntityType=null) { GalleryCoreApi::requireOnce( 'modules/core/classes/helpers/GalleryEntityHelper_simple.class'); return GalleryEntityHelper_simple::loadEntitiesById($ids, $requiredEntityType); @@ -2708,7 +2708,7 @@ class GalleryCoreApi { * @param string $sourceEncoding source encoding (eg. 'ISO-8859-1'), defaults to system charset * @return string the result */ - function convertToUtf8($inputString, $sourceEncoding=null) { + static function convertToUtf8($inputString, $sourceEncoding=null) { GalleryCoreApi::requireOnce( 'modules/core/classes/helpers/GalleryCharsetHelper_simple.class'); return GalleryCharsetHelper_simple::convertToUtf8($inputString, $sourceEncoding); @@ -2734,7 +2734,7 @@ class GalleryCoreApi { * @param int $length the length of the substring, not optional * @return string a multibyte safe substring of input value */ - function utf8Substring($string, $start, $length) { + static function utf8Substring($string, $start, $length) { GalleryCoreApi::requireOnce( 'modules/core/classes/helpers/GalleryCharsetHelper_simple.class'); return GalleryCharsetHelper_simple::utf8Substring($string, $start, $length); @@ -2747,7 +2747,7 @@ class GalleryCoreApi { * @param int $length the length in bytes (not in characters), not optional * @return string a multibyte safe substring of input value */ - function utf8Strcut($string, $start, $length) { + static function utf8Strcut($string, $start, $length) { GalleryCoreApi::requireOnce( 'modules/core/classes/helpers/GalleryCharsetHelper_simple.class'); return GalleryCharsetHelper_simple::utf8Strcut($string, $start, $length); @@ -2817,7 +2817,7 @@ class GalleryCoreApi { * @param string $file * @param boolean $skipBaseDirectoryDetection deprecated */ - function requireOnce($file, $skipBaseDirectoryDetection=false) { + static function requireOnce($file, $skipBaseDirectoryDetection=false) { static $loaded; if (!isset($loaded[$file])) { $loaded[$file] = 1; diff --git a/modules/core/classes/GalleryDataCache.class b/modules/core/classes/GalleryDataCache.class index 07f26f4..dd6d5ec 100644 --- a/modules/core/classes/GalleryDataCache.class +++ b/modules/core/classes/GalleryDataCache.class @@ -40,7 +40,7 @@ class GalleryDataCache { * @staticvar cache the singleton cache * @access private */ - function &_getCache() { + static function &_getCache() { static $cache; if (!isset($cache)) { $cache['maxKeys'] = 800; @@ -81,7 +81,7 @@ class GalleryDataCache { * @param mixed $data * @param boolean $protected should this key survive a reset call? */ - function put($key, $data, $protected=false) { + static function put($key, $data, $protected=false) { $cache =& GalleryDataCache::_getCache(); if (!$cache['memoryCacheEnabled']) { return; @@ -182,7 +182,7 @@ class GalleryDataCache { * @param string $key * @return mixed the cached data */ - function get($key) { + static function get($key) { $cache =& GalleryDataCache::_getCache(); if (!$cache['memoryCacheEnabled']) { return null; @@ -199,7 +199,7 @@ class GalleryDataCache { * @param string $key * @return boolean true if the cache contains the key given */ - function containsKey($key) { + static function containsKey($key) { $cache =& GalleryDataCache::_getCache(); if (!$cache['memoryCacheEnabled']) { return false; @@ -268,7 +268,7 @@ class GalleryDataCache { * @param array $pathInfo the path info * @return mixed object data */ - function &getFromDisk($pathInfo) { + static function &getFromDisk($pathInfo) { $null = null; $cache =& GalleryDataCache::_getCache(); if (!$cache['fileCacheEnabled']) { @@ -341,7 +341,7 @@ class GalleryDataCache { * @param array $requiredClasses classes that must be loaded in order to retrieve this data * @see GalleryDataCache::getCachePath */ - function putToDisk($pathInfo, &$data, $requiredClasses=array()) { + static function putToDisk($pathInfo, &$data, $requiredClasses=array()) { $cache =& GalleryDataCache::_getCache(); if (!$cache['fileCacheEnabled']) { return; @@ -373,7 +373,7 @@ class GalleryDataCache { * @param int $id * @return array the tuple */ - function getCacheTuple($id) { + static function getCacheTuple($id) { $id = "$id"; if ($id > 100) { return array($id[0], $id[1]); @@ -395,7 +395,7 @@ class GalleryDataCache { * * @return string the path */ - function getCachePath($pathInfo) { + static function getCachePath($pathInfo) { global $gallery; $base = $gallery->getConfig('data.gallery.cache'); diff --git a/modules/core/classes/GalleryStorage/GalleryStorageExtras.class b/modules/core/classes/GalleryStorage/GalleryStorageExtras.class index 9a12ecd..9214b8c 100644 --- a/modules/core/classes/GalleryStorage/GalleryStorageExtras.class +++ b/modules/core/classes/GalleryStorage/GalleryStorageExtras.class @@ -190,7 +190,7 @@ class GalleryStorageExtras /* the other half of GalleryStorage */ { $value = $this->_gs->_normalizeValue($row[$i], $memberData[$i], true); /* Store the value in the object */ - $entity->$callbacks[$i] = $value; + $entity->{$callbacks[$i]} = $value; $entity->_persistentStatus['originalValue'][$callbacks[$i]] = $value; } diff --git a/modules/core/classes/GalleryUtilities.class b/modules/core/classes/GalleryUtilities.class index 0e394fa..eeae67d 100644 --- a/modules/core/classes/GalleryUtilities.class +++ b/modules/core/classes/GalleryUtilities.class @@ -43,7 +43,7 @@ class GalleryUtilities { * @param string $filename * @return array the file basename, the file extension */ - function getFileNameComponents($filename) { + static function getFileNameComponents($filename) { $pos = strrpos($filename, '.'); @@ -69,7 +69,7 @@ class GalleryUtilities { * @param string $filename * @return array the file extension */ - function getFileExtension($filename) { + static function getFileExtension($filename) { list ($base, $extension) = GalleryUtilities::getFileNameComponents($filename); return $extension; } @@ -81,7 +81,7 @@ class GalleryUtilities { * @param string $filename * @return array the file base */ - function getFileBase($filename) { + static function getFileBase($filename) { list ($base, $extension) = GalleryUtilities::getFileNameComponents($filename); return $base; } @@ -92,7 +92,7 @@ class GalleryUtilities { * @param boolean $prefix (optional) false to omit Gallery variable prefix (not recommended) * @return array file data */ - function getFile($key, $prefix=true) { + static function getFile($key, $prefix=true) { $file = array(); if ($prefix) { $key = GALLERY_FORM_VARIABLE_PREFIX . $key; @@ -235,7 +235,7 @@ class GalleryUtilities { * @param one or more string parameters * @return mixed a single string value or many values */ - function getRequestVariables() { + static function getRequestVariables() { $values = array(); foreach (func_get_args() as $argName) { $values[] = GalleryUtilities::_getRequestVariable( @@ -255,7 +255,7 @@ class GalleryUtilities { * Return all request variables with the Gallery variable prefix. * @return array request variable name => value */ - function getAllRequestVariables() { + static function getAllRequestVariables() { $values = array(); $prefixLength = strlen(GALLERY_FORM_VARIABLE_PREFIX); foreach ($_POST as $key => $value) { @@ -283,7 +283,7 @@ class GalleryUtilities { * @param one or more string parameters * @return mixed a single string value or many values */ - function getRequestVariablesNoPrefix() { + static function getRequestVariablesNoPrefix() { $values = array(); foreach (func_get_args() as $argName) { $values[] = GalleryUtilities::_getRequestVariable($argName); @@ -304,7 +304,7 @@ class GalleryUtilities { * @param string $value * @param boolean $prefix (optional) false to omit Gallery variable prefix (not recommended) */ - function putRequestVariable($key, $value, $prefix=true) { + static function putRequestVariable($key, $value, $prefix=true) { if ($prefix) { $key = GALLERY_FORM_VARIABLE_PREFIX . $key; } @@ -373,7 +373,7 @@ class GalleryUtilities { * @param array $array the source * @access private */ - function _internalRemoveRequestVariable($keyPath, &$array) { + static function _internalRemoveRequestVariable($keyPath, &$array) { $key = array_shift($keyPath); while (!empty($keyPath)) { if (empty($array[$key])) { @@ -401,7 +401,7 @@ class GalleryUtilities { * @param int $count the number of markers to return * @return string */ - function makeMarkers($count, $markerFragment='?') { + static function makeMarkers($count, $markerFragment='?') { if (is_array($count)) { $count = count($count); } @@ -427,7 +427,7 @@ class GalleryUtilities { * @param array $options (optional) options to pass to UrlGenerator * @return string a URL */ - function convertPathToUrl($path, $options=array()) { + static function convertPathToUrl($path, $options=array()) { global $gallery; $platform =& $gallery->getPlatform(); $dirbase = $platform->realpath(dirname(__FILE__) . '/../../..') . '/'; @@ -458,7 +458,7 @@ class GalleryUtilities { * @param int $targetHeight (optional) target height, defaults to same as width * @return array(width, height) */ - function shrinkDimensionsToFit($width, $height, $targetWidth, $targetHeight=null) { + static function shrinkDimensionsToFit($width, $height, $targetWidth, $targetHeight=null) { if (!isset($targetHeight)) { $targetHeight = $targetWidth; } @@ -499,7 +499,7 @@ class GalleryUtilities { * @param int $precision defaults to zero * @return string rounded value */ - function roundToString($floatValue, $precision=0) { + static function roundToString($floatValue, $precision=0) { return str_replace(',', '.', round($floatValue, $precision)); } @@ -701,7 +701,7 @@ class GalleryUtilities { * @param boolean $adaptForMagicQuotes (optional) false to skip undoing the damage caused * by magic_quotes */ - function sanitizeInputValues(&$value, $adaptForMagicQuotes=true) { + static function sanitizeInputValues(&$value, $adaptForMagicQuotes=true) { if (is_array($value)) { foreach (array_keys($value) as $key) { $newKey = $key; @@ -739,7 +739,7 @@ class GalleryUtilities { * @param boolean $adaptForMagicQuotes (optional) false to skip redoing the damage caused * by magic_quotes */ - function unsanitizeInputValues(&$value, $adaptForMagicQuotes=true) { + static function unsanitizeInputValues(&$value, $adaptForMagicQuotes=true) { if (is_array($value)) { foreach (array_keys($value) as $key) { GalleryUtilities::unsanitizeInputValues($value[$key], $adaptForMagicQuotes); @@ -763,9 +763,14 @@ class GalleryUtilities { * @param string $string the input string with UTF-8 entities * @return string the UTF-8 string */ - function unicodeEntitiesToUtf8($string) { - $string = preg_replace('/&#([xa-f\d]+);/mei', - "GalleryUtilities::unicodeValueToUtf8Value('\\1')", $string); + static function unicodeEntitiesToUtf8($string) { + $string = preg_replace_callback('/&#([xa-f\d]+);/mi', + function($matches) { + return GalleryUtilities::unicodeValueToUtf8Value($matches[1]); + } + , $string); + /*$string = preg_replace('/&#([xa-f\d]+);/mei', + "GalleryUtilities::unicodeValueToUtf8Value('\\1')", $string);*/ return $string; } @@ -777,7 +782,7 @@ class GalleryUtilities { * @return string a multibyte safe substring of input value * @deprecated Please use GalleryCoreApi::utf8Substring instead */ - function utf8Substring($string, $start, $length) { + static function utf8Substring($string, $start, $length) { return GalleryCoreApi::utf8Substring($string, $start, $length); } @@ -788,7 +793,7 @@ class GalleryUtilities { * @param int $num the unicode value * @return string the UTF-8 string */ - function unicodeValueToUtf8Value($num) { + static function unicodeValueToUtf8Value($num) { if ($num[0] == 'x') { /* Convert hex to decimal */ $num = hexdec(substr($num, 1)); @@ -870,7 +875,7 @@ class GalleryUtilities { * @return string a single value * @access private */ - function _getRequestVariable($key) { + static function _getRequestVariable($key) { $keyPath = preg_split('/[\[\]]/', $key, -1, PREG_SPLIT_NO_EMPTY); $result = GalleryUtilities::_internalGetRequestVariable($keyPath, $_GET); if (isset($result)) { @@ -889,7 +894,7 @@ class GalleryUtilities { * @return the value or null if it does not exist * @access private */ - function _internalGetRequestVariable($keyPath, $array) { + static function _internalGetRequestVariable($keyPath, $array) { $key = array_shift($keyPath); while (!empty($keyPath)) { if (!isset($array[$key])) { @@ -1001,7 +1006,7 @@ class GalleryUtilities { * Return the address of the remote host. * @return string the remote host address (or null) */ - function getRemoteHostAddress() { + static function getRemoteHostAddress() { $addr = null; if (isset($_SERVER['REMOTE_ADDR'])) { $addr = $_SERVER['REMOTE_ADDR']; @@ -1399,7 +1404,7 @@ class GalleryUtilities { * @param string $key the key in the _SERVER superglobal * @return string the value */ - function getServerVar($key) { + static function getServerVar($key) { if (!isset($_SERVER[$key])) { return null; } @@ -1432,7 +1437,7 @@ class GalleryUtilities { * @see Gallery::isEmbedded * @deprecated */ - function isEmbedded() { + static function isEmbedded() { global $gallery; return $gallery->isEmbedded(); } @@ -1617,7 +1622,7 @@ class GalleryUtilities { * @param string $string * @return string lowercase version of the string */ - function strToLower($string) { + static function strToLower($string) { return strtr($string, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); } @@ -1626,7 +1631,7 @@ class GalleryUtilities { * @param string $string * @return string uppercase version of the string */ - function strToUpper($string) { + static function strToUpper($string) { return strtr($string, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'); } -- 2.13.1