From b18b795ab36ce843982c51cf6771bb5e68d85f01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emmanuel=20BENO=C3=8ET?= Date: Mon, 30 Dec 2024 22:50:47 +0100 Subject: [PATCH] fix: apply various PHP (5.3 -> 8.3 lol) fixes --- scripts/lib/db.inc | 7 +++++- scripts/lib/db_connection.inc | 2 +- scripts/lib/engine.inc | 2 +- scripts/lib/game.inc | 2 +- scripts/lib/handler.inc | 8 +++---- scripts/lib/input.inc | 16 ++----------- scripts/lib/log.inc | 42 ++++++++++++++++----------------- scripts/lib/version.inc | 4 ++-- scripts/lib/xml_config.inc | 44 +++++++++++++++++------------------ 9 files changed, 60 insertions(+), 67 deletions(-) diff --git a/scripts/lib/db.inc b/scripts/lib/db.inc index 9dc25af..896092a 100644 --- a/scripts/lib/db.inc +++ b/scripts/lib/db.inc @@ -16,7 +16,12 @@ function dbConnect($fatal = true) { $rv = db::$database->open(); } if ($fatal && !$rv) { - l::fatal(1, array("SQL: Database connection failed", pg_last_error())); + try { + $lastError = pg_last_error(); + } catch (Error) { + $lastError = "(no connection)"; + } + l::fatal(1, array("SQL: Database connection failed", $lastError)); } return $rv; } diff --git a/scripts/lib/db_connection.inc b/scripts/lib/db_connection.inc index 3841744..7f89f90 100644 --- a/scripts/lib/db_connection.inc +++ b/scripts/lib/db_connection.inc @@ -266,7 +266,7 @@ class db { pg_free_result($r); $tn = $match[1]; - if ($tn{0} == '"') { + if ($tn[0] == '"') { $tn = str_replace('"', '', $tn); } else { $tn = strtolower($tn); diff --git a/scripts/lib/engine.inc b/scripts/lib/engine.inc index f91c72c..62cda15 100644 --- a/scripts/lib/engine.inc +++ b/scripts/lib/engine.inc @@ -15,7 +15,7 @@ class engine { * A fatal error is displayed if the engine isn't found in the engines/ * subdirectory of the script directory. */ - function load() { + public static function load() { $eType = input::$eType; // Check for a valid type diff --git a/scripts/lib/game.inc b/scripts/lib/game.inc index 3118502..49f0c71 100644 --- a/scripts/lib/game.inc +++ b/scripts/lib/game.inc @@ -41,7 +41,7 @@ class game { function addTick($tick) { $td = $tick->definition->script; - if (is_null($this->ticks[$td])) { + if (!isset($this->ticks[$td])) { $this->ticks[$td] = $tick; } } diff --git a/scripts/lib/handler.inc b/scripts/lib/handler.inc index 9304ba4..7402954 100644 --- a/scripts/lib/handler.inc +++ b/scripts/lib/handler.inc @@ -12,7 +12,7 @@ class handler { * version and page. If such a handler is found, the file is loaded and the * handler is initialized. */ - function load() { + public static function load() { $path = input::$path; $page = input::$page; $game = input::$game; @@ -53,10 +53,10 @@ class handler { $engines = array('page', 'css', 'js', 'rpc'); } // Get the default engine - if (is_null($handler->defaultEngine)) { - $dEngine = $engines[0]; - } else { + if (isset($handler->defaultEngine)) { $dEngine = $handler->defaultEngine; + } else { + $dEngine = $engines[0]; } // Set the engine type to default if it isn't set diff --git a/scripts/lib/input.inc b/scripts/lib/input.inc index 61d6f8e..2165e39 100644 --- a/scripts/lib/input.inc +++ b/scripts/lib/input.inc @@ -21,7 +21,7 @@ class input { * accessed, and which page should be displayed. */ static function identify() { - $p = $_SERVER["PATH_INFO"]; + $p = $_SERVER["PATH_INFO"] ?? ""; if (preg_match('/\.[a-z0-9]{2,10}$/', $p)) { input::$eType = preg_replace('/^.*\.([a-z0-9]{2,10})$/', '\1', $p); @@ -87,7 +87,7 @@ class input { * quotes" are enabled, remove them. * NOTE: This behaviour should be reversed in a production version. */ - function read() { + static function read() { input::$IE = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/Opera/', $_SERVER['HTTP_USER_AGENT']); input::$safari = preg_match('/AppleWebKit/', $_SERVER['HTTP_USER_AGENT']); @@ -99,18 +99,6 @@ class input { foreach ($_GET as $k => $v) { $p[$k] = $v; } - if (get_magic_quotes_gpc()) { - foreach ($p as $k => $v) { - if (is_scalar($v)) { - $p[$k] = stripslashes($v); - } elseif (is_array($v)) { - $p[$k] = array(); - foreach ($v as $ak => $av) { - $p[$k][$ak] = stripslashes($av); - } - } - } - } input::$input = $p; return $p; } diff --git a/scripts/lib/log.inc b/scripts/lib/log.inc index 43a41ab..b864486 100644 --- a/scripts/lib/log.inc +++ b/scripts/lib/log.inc @@ -82,7 +82,7 @@ class l { /** This function is the default fatal error display function. */ - private function defaultFatalError($errno, $error, $info) { + private static function defaultFatalError($errno, $error, $info) { ob_start(); ?> @@ -113,7 +113,6 @@ class l { return; } - define_syslog_variables(); openlog(self::$syslogPrefix, LOG_PID, LOG_USER); self::$initialised = true; } @@ -142,7 +141,7 @@ class l { /** This method displays one of the game engine's * fatal errors and adds log entries accordingly. */ - public function fatal($errno, $information = null) { + public static function fatal($errno, $information = null) { // Log the error $errorText = self::$engineErrors[$errno] . " [" . sprintf("%03d", $errno) . "]"; self::critical($errorText); @@ -183,17 +182,18 @@ class l { /** This method writes a backtrace to the log, removing all * entries from the logging class. */ - public function backtrace() { + public static function backtrace() { $bt = debug_backtrace(); - while (is_array($bt[1]) && $bt[1]['class'] == 'l') { + while (is_array($bt[1]) && isset($bt[1]['class']) && $bt[1]['class'] == 'l') { array_shift($bt); } self::info("Backtrace to the error:"); $base = dirname(config::$main['scriptdir']); foreach ($bt as $data) { - $cnLength = strlen($data['class']); - $str = "... " . str_repeat(' ', $cnLength > 30 ? 1 : (31 - $cnLength)) . $data['class'] + $class = $data['class'] ?? ''; + $cnLength = strlen($class); + $str = "... " . str_repeat(' ', $cnLength > 30 ? 1 : (31 - $cnLength)) . $class . " :: " . $data['function']; if (!is_null($data['file'])) { $cnLength = strlen($data['function']); @@ -208,7 +208,7 @@ class l { /** This method changes the syslog prefix. */ - public function setSyslogPrefix($prefix) { + public static function setSyslogPrefix($prefix) { self::$syslogPrefix = $prefix; if (self::$initialised) { closelog(); @@ -218,14 +218,14 @@ class l { /** This method changes the string prefix. */ - public function setPrefix($prefix) { + public static function setPrefix($prefix) { self::$prefix = "$prefix "; } /** This method changes the function to call * for fatal errors. */ - public function setFatalHandler($function) { + public static function setFatalHandler($function) { self::$fatalErrorCallback = $function; } @@ -233,7 +233,7 @@ class l { * function call and prevents further logging of * similar occurences. */ - public function deprecated($function) { + public static function deprecated($function) { if (config::$main['debug'] == 2 && !self::$deprecatedLogged) { l::trace("DEPRECATED: $function"); l::backtrace(); @@ -242,7 +242,7 @@ class l { } /** This function logs FIXME's. */ - public function FIXME($text) { + public static function FIXME($text) { if (config::$main['debug'] >= 1 && !self::$fixmeLogged) { l::debug("FIXME: $text"); if (config::$main['debug'] == 2) { @@ -256,19 +256,19 @@ class l { /******************* LOGGING METHODS ************************/ /* These methods should replace logText() wherever possible */ /************************************************************/ - public function crit($txt) { self::init(); self::__write($txt, LOG_CRIT); } - public function critical($txt) { self::init(); self::__write($txt, LOG_CRIT); } - public function error($txt) { self::init(); self::__write($txt, LOG_ERR); } - public function warn($txt) { self::init(); self::__write($txt, LOG_WARNING); } - public function warning($txt) { self::init(); self::__write($txt, LOG_WARNING); } - public function notice($txt) { self::init(); self::__write($txt, LOG_NOTICE); } - public function info($txt) { self::init(); self::__write($txt, LOG_INFO); } - public function debug($txt) { + public static function crit($txt) { self::init(); self::__write($txt, LOG_CRIT); } + public static function critical($txt) { self::init(); self::__write($txt, LOG_CRIT); } + public static function error($txt) { self::init(); self::__write($txt, LOG_ERR); } + public static function warn($txt) { self::init(); self::__write($txt, LOG_WARNING); } + public static function warning($txt) { self::init(); self::__write($txt, LOG_WARNING); } + public static function notice($txt) { self::init(); self::__write($txt, LOG_NOTICE); } + public static function info($txt) { self::init(); self::__write($txt, LOG_INFO); } + public static function debug($txt) { if (config::$main['debug'] >= 1) { self::init(); self::__write($txt, LOG_DEBUG); } } - public function trace($txt) { + public static function trace($txt) { if (config::$main['debug'] == 2) { self::init(); self::__write($txt, LOG_DEBUG); } diff --git a/scripts/lib/version.inc b/scripts/lib/version.inc index 67ea5b1..3a015d1 100644 --- a/scripts/lib/version.inc +++ b/scripts/lib/version.inc @@ -14,13 +14,13 @@ class version { } function addTickDefinition($def) { - if (is_null($this->tickDefs[$def->script])) { + if (!isset($this->tickDefs[$def->script])) { $this->tickDefs[$def->script] = $def; } } function getTickDefinition($id) { - return $this->tickDefs[$id]; + return $this->tickDefs[$id] ?? null; } function getDirectory() { diff --git a/scripts/lib/xml_config.inc b/scripts/lib/xml_config.inc index 96a0235..67f8371 100644 --- a/scripts/lib/xml_config.inc +++ b/scripts/lib/xml_config.inc @@ -12,7 +12,7 @@ class xml_config { private static $games = null; private static $defGame = null; - private function parseMainParams($root) { + private static function parseMainParams($root) { $node = $root->firstChild; while ($node) { @@ -21,7 +21,7 @@ class xml_config { $aValue = $node->getAttribute('value'); if ($aName == "") { l::warn("CONFIG: a main parameter is missing a 'name' attribute"); - } elseif (is_null(xml_config::$mGame->params[$aName])) { + } elseif (!isset(xml_config::$mGame->params[$aName])) { xml_config::$mGame->params[$aName] = $aValue; } else { l::notice("CONFIG: duplicate main parameter '$aName'"); @@ -34,7 +34,7 @@ class xml_config { } - private function parseMainTicks($root) { + private static function parseMainTicks($root) { $node = $root->firstChild; while ($node) { @@ -62,7 +62,7 @@ class xml_config { } - private function parseTickDefinition($version, $root) { + private static function parseTickDefinition($version, $root) { $script = $root->getAttribute('script'); $public = ($root->getAttribute('public') == 1); @@ -127,7 +127,7 @@ class xml_config { } - private function parseVersion($root) { + private static function parseVersion($root) { $id = $root->getAttribute("id"); $cp = ($root->getAttribute("playable") == 1); $tx = $root->getAttribute("text"); @@ -156,7 +156,7 @@ class xml_config { } - private function parseVersions($root) { + private static function parseVersions($root) { $node = $root->firstChild; $versions = array(); @@ -164,10 +164,10 @@ class xml_config { if ($node->nodeType == XML_ELEMENT_NODE && $node->nodeName == 'Version') { $v = xml_config::parseVersion($node); if (!is_null($v)) { - if (is_null($versions[$v->id])) { - $versions[$v->id] = $v; - } else { + if (isset($versions[$v->id])) { l::notice("CONFIG: found duplicate definition for version '{$v->id}'"); + } else { + $versions[$v->id] = $v; } } } elseif ($node->nodeType == XML_ELEMENT_NODE) { @@ -180,7 +180,7 @@ class xml_config { } - private function parseGame($root) { + private static function parseGame($root) { $id = $root->getAttribute('id'); if ($id == '') { l::warn("CONFIG: game definition is missing an identifier"); @@ -225,10 +225,10 @@ class xml_config { $aValue = $node->getAttribute('value'); if ($aName == "") { l::warn("CONFIG: a parameter is missing a 'name' attribute for game '$id'"); - } elseif (is_null($game->params[$aName])) { - $game->params[$aName] = $aValue; - } else { + } elseif (isset($game->params[$aName])) { l::notice("CONFIG: duplicate parameter '$aName'"); + } else { + $game->params[$aName] = $aValue; } } elseif ($node->nodeName == 'Description') { $lang = $node->getAttribute('lang'); @@ -237,7 +237,7 @@ class xml_config { l::warn("CONFIG: a description is missing the 'lang' attribute for game '$id'"); } elseif ($contents == "") { l::warn("CONFIG: description in language '$lang' has no contents for game '$id'"); - } elseif (!is_null($game->descriptions[$lang])) { + } elseif (isset($game->descriptions[$lang])) { l::notice("CONFIG: description in language '$lang' appears twice for game '$id'"); } else { $game->descriptions[$lang] = $contents; @@ -255,11 +255,11 @@ class xml_config { } elseif (is_null($game->version->getTickDefinition($tScript))) { l::warn("CONFIG: no definition for tick '$tScript' in game '$id' " . "(version '$version')"); - } elseif (is_null($game->ticks[$tScript])) { + } elseif (isset($game->ticks[$tScript])) { + l::notice("CONFIG: duplicate tick initialiser for tick '$tScript' in game '$id'"); + } else { new tick_instance($game, $tScript, (int)$tFirst, (int)$tInterval, $tLast ? (int)$tLast : null); - } else { - l::notice("CONFIG: duplicate tick initialiser for tick '$tScript' in game '$id'"); } } else { l::notice("CONFIG: found unexpected tag '{$node->nodeName}' in game '$id' definition"); @@ -272,7 +272,7 @@ class xml_config { } - private function parseGames($root) { + private static function parseGames($root) { $defaultId = $root->getAttribute('default'); $games = array(); @@ -281,10 +281,10 @@ class xml_config { if ($node->nodeType == XML_ELEMENT_NODE && $node->nodeName == 'Game') { $g = xml_config::parseGame($node); if (!is_null($g)) { - if (is_null($games[$g->name])) { - $games[$g->name] = $g; - } else { + if (isset($games[$g->name])) { l::notice("CONFIG: found duplicate definition for game '{$v->name}'"); + } else { + $games[$g->name] = $g; } } } elseif ($node->nodeType == XML_ELEMENT_NODE) { @@ -303,7 +303,7 @@ class xml_config { } - function parse($xmlData) { + public static function parse($xmlData) { $doc = new DOMDocument(); if (!$doc->loadXML($xmlData)) { l::error("CONFIG: error while parsing XML configuration");