From e4d90e883229620df2565e7434c2a38e4b3d5c64 Mon Sep 17 00:00:00 2001 From: Gary Allan <github@gallan.co.uk> Date: Wed, 1 Mar 2023 21:15:41 +0000 Subject: [PATCH] php8: Compatibility fixes Raise supported PHP version to 8.2 --- README.md | 2 +- api/controllers/Addresses.php | 9 +-- api/controllers/Circuits.php | 8 +-- api/controllers/Common.php | 40 +++++++++++-- api/controllers/Devices.php | 9 +-- api/controllers/L2domains.php | 7 ++- api/controllers/Prefix.php | 8 +-- api/controllers/Search.php | 8 +-- api/controllers/Sections.php | 8 +-- api/controllers/Subnets.php | 7 ++- api/controllers/Tools.php | 8 +-- api/controllers/User.php | 13 +++-- api/controllers/Vlans.php | 8 +-- api/controllers/Vrfs.php | 8 +-- api/index.php | 58 +++++++++---------- app/tools/devices/all-devices-filter.php | 4 +- functions/PEAR/OLE/ChainedBlockStream.php | 1 + functions/PEAR/OLE/OLE.php | 1 + functions/PEAR/OLE/PPS.php | 1 + .../Spreadsheet/Excel/Writer/BIFFwriter.php | 2 +- .../PEAR/Spreadsheet/Excel/Writer/Format.php | 1 + .../PEAR/Spreadsheet/Excel/Writer/Parser.php | 1 + functions/checks/check_php_build.php | 2 +- functions/classes/class.Common.php | 2 +- functions/classes/class.Rackspace.php | 2 +- functions/classes/class.SubnetsTable.php | 2 +- 26 files changed, 131 insertions(+), 89 deletions(-) diff --git a/README.md b/README.md index a42a4ea7..8aa4c5e5 100755 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ to be able to display javascript quickly and correctly. phpIPAM has been developed and tested on the following PHP versions.\ The use of untested PHP versions is unsupported and may result in compatibility issues. -- MASTER: PHP versions 5.4 to 8.1 (8.x support work-in-progress) +- MASTER: PHP versions 5.4 to 8.2 (8.x support work-in-progress) - 1.5.x: PHP versions 5.4 to 7.4 - 1.4.x: PHP versions 5.4 to 7.4 - 1.3.x: PHP versions 5.4 to 7.1 diff --git a/api/controllers/Addresses.php b/api/controllers/Addresses.php index dbeac60b..43cffbe1 100644 --- a/api/controllers/Addresses.php +++ b/api/controllers/Addresses.php @@ -28,9 +28,10 @@ class Addresses_controller extends Common_api_functions { * __construct function * * @access public - * @param class $Database - * @param class $Tools - * @param mixed $params // post/get values + * @param PDO_Database $Database + * @param Tools $Tools + * @param API_params $params + * @param Response $response */ public function __construct($Database, $Tools, $params, $Response) { $this->Database = $Database; @@ -612,4 +613,4 @@ class Addresses_controller extends Common_api_functions { $this->_params->state = 2; } } -} \ No newline at end of file +} diff --git a/api/controllers/Circuits.php b/api/controllers/Circuits.php index 261ac5b6..18a23a4d 100644 --- a/api/controllers/Circuits.php +++ b/api/controllers/Circuits.php @@ -26,10 +26,10 @@ class Circuits_controller extends Common_api_functions { * __construct function * * @access public - * @param class $Database - * @param class $Tools - * @param mixed $params // post/get values - * @param class $Response + * @param PDO_Database $Database + * @param Tools $Tools + * @param API_params $params + * @param Response $response */ public function __construct($Database, $Tools, $params, $Response) { $this->Database = $Database; diff --git a/api/controllers/Common.php b/api/controllers/Common.php index 42878822..76df0182 100644 --- a/api/controllers/Common.php +++ b/api/controllers/Common.php @@ -1,4 +1,35 @@ <?php +/** + * API Parameter class + */ +#[AllowDynamicProperties] +class API_params extends stdClass { + + public $controller = null; + + public $id = null; + + public $id2 = null; + + public $id3 = null; + + /** + * Read array of arguments + * + * @param array $args + * @return void + */ + public function read($args) + { + foreach ($args as $i => $v) { + if ($i === "controller") { + $this->{$i} = strtolower($v); + } else { + $this->{$i} = $v; + } + } + } +} /** * phpIPAM API class for common functions @@ -522,10 +553,9 @@ class Common_api_functions { $result["slaves"] = array ("GET"); $result["slaves_recursive"] = array ("GET"); $result["truncate"] = array ("DELETE"); - $result["permissions"] = array ("DELETE"); + $result["permissions"] = array ("DELETE", "PATCH"); $result["resize"] = array ("PATCH"); $result["split"] = array ("PATCH"); - $result["permissions"] = array ("PATCH"); // return return $result; } @@ -626,6 +656,8 @@ class Common_api_functions { * @return void */ protected function transform_address ($result) { + $result_is_object = false; + if (is_object($result)) { $result_is_object = true; $result = [$result]; @@ -812,7 +844,7 @@ class Common_api_functions { if($result->isFolder!="1") { unset($result); } } # return - if($result===NULL) { $this->Response->throw_exception(404, "No folders found"); } + if($result===null) { $this->Response->throw_exception(404, "No folders found"); } else { return $result; } } } @@ -1085,7 +1117,7 @@ class Common_api_functions { if (array_key_exists($key, $this->custom_fields)) { $this->_params->$key = $value; } else { - $this->Response->throw_exception(400, "${key} is not a valid custom field"); + $this->Response->throw_exception(400, "{$key} is not a valid custom field"); } } unset($this->_params->custom_fields); diff --git a/api/controllers/Devices.php b/api/controllers/Devices.php index 9d264d98..f1fd5383 100644 --- a/api/controllers/Devices.php +++ b/api/controllers/Devices.php @@ -18,10 +18,11 @@ class Devices_controller extends Common_api_functions { /** * __construct function. * - * @param class $Database - * @param class $Tools - * @param mixed $params // post/get values - * @param class $Response + * @access public + * @param PDO_Database $Database + * @param Tools $Tools + * @param API_params $params + * @param Response $response */ public function __construct($Database, $Tools, $params, $Response) { $this->Database = $Database; diff --git a/api/controllers/L2domains.php b/api/controllers/L2domains.php index 800c7ba1..7c294255 100644 --- a/api/controllers/L2domains.php +++ b/api/controllers/L2domains.php @@ -12,9 +12,10 @@ class L2domains_controller extends Common_api_functions { * __construct function * * @access public - * @param class $Database - * @param class $Tools - * @param mixed $params // post/get values + * @param PDO_Database $Database + * @param Tools $Tools + * @param API_params $params + * @param Response $response */ public function __construct($Database, $Tools, $params, $Response) { $this->Database = $Database; diff --git a/api/controllers/Prefix.php b/api/controllers/Prefix.php index aeacda66..98d2b7bb 100644 --- a/api/controllers/Prefix.php +++ b/api/controllers/Prefix.php @@ -244,10 +244,10 @@ class Prefix_controller extends Common_api_functions { * __construct function * * @access public - * @param class $Database - * @param class $Tools - * @param mixed $params - * @param mixed $Response + * @param PDO_Database $Database + * @param Tools $Tools + * @param API_params $params + * @param Response $Response */ public function __construct($Database, $Tools, $params, $Response) { $this->Database = $Database; diff --git a/api/controllers/Search.php b/api/controllers/Search.php index 9996a732..16bb54a2 100755 --- a/api/controllers/Search.php +++ b/api/controllers/Search.php @@ -22,10 +22,10 @@ class Search_controller extends Common_api_functions { * __construct function * * @access public - * @param class $Database - * @param class $Tools - * @param mixed $params - * @param mixed $Response + * @param PDO_Database $Database + * @param Tools $Tools + * @param API_params $params + * @param Response $response */ public function __construct($Database, $Tools, $params, $Response) { $this->Database = $Database; diff --git a/api/controllers/Sections.php b/api/controllers/Sections.php index 9d35453a..83b4f2ba 100755 --- a/api/controllers/Sections.php +++ b/api/controllers/Sections.php @@ -11,10 +11,10 @@ class Sections_controller extends Common_api_functions { * __construct function * * @access public - * @param class $Database - * @param class $Tools - * @param mixed $params - * @param mixed $Response + * @param PDO_Database $Database + * @param Tools $Tools + * @param API_params $params + * @param Response $response */ public function __construct($Database, $Tools, $params, $Response) { $this->Database = $Database; diff --git a/api/controllers/Subnets.php b/api/controllers/Subnets.php index c82c72f2..bb34a64e 100644 --- a/api/controllers/Subnets.php +++ b/api/controllers/Subnets.php @@ -20,9 +20,10 @@ class Subnets_controller extends Common_api_functions { * __construct function * * @access public - * @param class $Database - * @param class $Tools - * @param mixed $params // post/get values + * @param PDO_Database $Database + * @param Tools $Tools + * @param API_params $params + * @param Response $response */ public function __construct($Database, $Tools, $params, $Response) { $this->Database = $Database; diff --git a/api/controllers/Tools.php b/api/controllers/Tools.php index 68c91d03..525479ed 100644 --- a/api/controllers/Tools.php +++ b/api/controllers/Tools.php @@ -37,10 +37,10 @@ class Tools_controller extends Common_api_functions { * __construct function * * @access public - * @param class $Database - * @param class $Tools - * @param mixed $params // post/get values - * @param class $Response + * @param PDO_Database $Database + * @param Tools $Tools + * @param API_params $params + * @param Response $response */ public function __construct($Database, $Tools, $params, $Response) { $this->Database = $Database; diff --git a/api/controllers/User.php b/api/controllers/User.php index 07400b43..db31de87 100644 --- a/api/controllers/User.php +++ b/api/controllers/User.php @@ -63,13 +63,14 @@ class User_controller extends Common_api_functions { * __construct function * * @access public - * @param mixed $Database - * @param mixed $Tools - * @param mixed $params - * @param mixed $Response + * @param PDO_Database $Database + * @param Tools $Tools + * @param API_params $params + * @param Response $response */ - public function __construct ($Database, $Tools=null, $params=null, $Response) { + public function __construct ($Database, $Tools, $params, $Response) { $this->Database = $Database; + $this->Tools = $Tools; $this->Response = $Response; $this->_params = $params; // init required objects @@ -455,7 +456,7 @@ class User_controller extends Common_api_functions { * @return void */ private function validate_requested_token () { - return $this->_params->controller=="user" ? $this->validate_requested_token_user () : $this->validate_requested_token_general (); + $this->_params->controller=="user" ? $this->validate_requested_token_user () : $this->validate_requested_token_general (); } /** diff --git a/api/controllers/Vlans.php b/api/controllers/Vlans.php index c1056e7b..c82b7f7a 100755 --- a/api/controllers/Vlans.php +++ b/api/controllers/Vlans.php @@ -21,10 +21,10 @@ class Vlans_controller extends Common_api_functions { * __construct function * * @access public - * @param class $Database - * @param class $Tools - * @param mixed $params // post/get values - * @param class $Response + * @param PDO_Database $Database + * @param Tools $Tools + * @param API_params $params + * @param Response $response */ public function __construct($Database, $Tools, $params, $Response) { $this->Database = $Database; diff --git a/api/controllers/Vrfs.php b/api/controllers/Vrfs.php index 1c92f98a..cd070649 100755 --- a/api/controllers/Vrfs.php +++ b/api/controllers/Vrfs.php @@ -12,10 +12,10 @@ class Vrfs_controller extends Common_api_functions { * __construct function * * @access public - * @param class $Database - * @param class $Tools - * @param mixed $params // post/get values - * @param class $Response + * @param PDO_Database $Database + * @param Tools $Tools + * @param API_params $params + * @param Response $response */ public function __construct($Database, $Tools, $params, $Response) { $this->Database = $Database; diff --git a/api/index.php b/api/index.php index 94ed2d45..ee00f335 100755 --- a/api/index.php +++ b/api/index.php @@ -34,6 +34,7 @@ $Database = new Database_PDO; $Tools = new Tools ($Database); $User = new User ($Database); $Response = new Responses (); +$Params = new API_params (); # get phpipam settings $settings = $Tools->get_settings(); @@ -63,19 +64,21 @@ try { /* Check app security and prepare request parameters ---------- */ + $content_type = isset($_SERVER['CONTENT_TYPE']) ? $_SERVER['CONTENT_TYPE'] : ''; // crypt check if($app->app_security=="crypt") { $encryption_method = Config::ValueOf('api_crypt_encryption_library', 'openssl-128-cbc'); // decrypt request - form_encoded - if(strpos($_SERVER['CONTENT_TYPE'], "application/x-www-form-urlencoded")!==false) { + if(strpos($content_type, "application/x-www-form-urlencoded")!==false) { $decoded = $User->Crypto->decrypt($_GET['enc_request'], $app->app_code, $encryption_method); if ($decoded === false) $Response->throw_exception(503, 'Invalid enc_request'); $decoded = $decoded[0]=="?" ? substr($decoded, 1) : $decoded; parse_str($decoded, $encrypted_params); $encrypted_params['app_id'] = $_GET['app_id']; - $params = (object) $encrypted_params; + + $Params->read($encrypted_params); } // json_encoded else { @@ -83,7 +86,8 @@ try { if ($encrypted_params === false) $Response->throw_exception(503, 'Invalid enc_request'); $encrypted_params = pf_json_decode($encrypted_params, true); $encrypted_params['app_id'] = $_GET['app_id']; - $params = (object) $encrypted_params; + + $Params->read($encrypted_params); } } // SSL checks @@ -94,7 +98,7 @@ try { } // save request parameters - $params = (object) $_GET; + $Params->read($_GET); } // no security elseif($app->app_security=="none") { @@ -104,7 +108,7 @@ try { } // save request parameters - $params = (object) $_GET; + $Params->read($_GET); } // error, invalid security else { @@ -115,33 +119,32 @@ try { // Append Global API parameters / POST parameters if POST,PATCH or DELETE if($_SERVER['REQUEST_METHOD']=="GET" || $_SERVER['REQUEST_METHOD']=="POST" || $_SERVER['REQUEST_METHOD']=="PATCH" || $_SERVER['REQUEST_METHOD']=="DELETE") { // if application tupe is JSON (application/json) - if(strpos($_SERVER['CONTENT_TYPE'], "application/json")!==false){ + if(strpos($content_type, "application/json")!==false){ $rawPostData = file_get_contents('php://input'); if (is_string($rawPostData) && !is_blank($rawPostData)) { $json = pf_json_decode($rawPostData, true); if(!is_array($json)) { $Response->throw_exception(400, 'Invalid JSON: '.json_last_error_msg()); } - $params = array_merge((array) $params, $json); + + $Params->read($json); } - $params = (object) $params; } // if application tupe is XML (application/json) - elseif(strpos($_SERVER['CONTENT_TYPE'], "application/xml")!==false){ + elseif(strpos($content_type, "application/xml")!==false){ $rawPostData = file_get_contents('php://input'); if (is_string($rawPostData) && !is_blank($rawPostData)) { $xml = $Response->xml_to_array($rawPostData); if(!is_array($xml)) { $Response->throw_exception(400, 'Invalid XML'); } - $params = array_merge((array) $params, $xml); + + $Params->read($xml); } - $params = (object) $params; } //if application type is default (application/x-www-form-urlencoded) elseif(sizeof(@$_POST)>0) { - $params = array_merge((array) $params, $_POST); - $params = (object) $params; + $Params->read($_POST); } //url encoded input else { @@ -150,24 +153,20 @@ try { if (!is_blank($input)) { parse_str($input, $out); if(is_array($out)) { - $params = array_merge((array) $params, $out); - $params = (object) $params; + $Params->read($out); } } } } - /* Sanitise input ---------- (user/User/USER) */ - if (isset($params->controller)) $params->controller = strtolower($params->controller); - /* Authentication ---------- */ // authenticate user if required - if (@$params->controller != "user") { + if ($Params->controller != "user") { if($app->app_security=="ssl_token" || $app->app_security=="none") { // start auth class and validate connection require_once( dirname(__FILE__) . '/controllers/User.php'); // authentication and token handling - $Authentication = new User_controller ($Database, $Tools, $params, $Response); + $Authentication = new User_controller ($Database, $Tools, $Params, $Response); $Authentication->check_auth (); } @@ -175,7 +174,7 @@ try { if($app->app_security=="ssl_code") { // start auth class and validate connection require_once( dirname(__FILE__) . '/controllers/User.php'); // authentication and token handling - $Authentication = new User_controller ($Database, $Tools, $params, $Response); + $Authentication = new User_controller ($Database, $Tools, $Params, $Response); $Authentication->check_auth_code ($app->app_id); } } @@ -185,7 +184,7 @@ try { if($app->app_security=="ssl_code" && $_SERVER['REQUEST_METHOD']!="GET") { // start auth class and validate connection require_once( dirname(__FILE__) . '/controllers/User.php'); // authentication and token handling - $Authentication = new User_controller ($Database, $Tools, $params, $Response); + $Authentication = new User_controller ($Database, $Tools, $Params, $Response); $Authentication->check_auth_code ($app->app_id); // passwd @@ -196,11 +195,11 @@ try { /* verify request ---------- */ // check if the request is valid by checking if it's an array and looking for the controller and action - if( $params == false || isset($params->controller) == false ) { + if( empty($Params->controller) ) { $Response->throw_exception(400, 'Request is not valid'); } // verify permissions for delete/create/edit if controller is not user (needed for auth) - if (@$params->controller != "user") { + if ($Params->controller != "user") { if( ($_SERVER['REQUEST_METHOD']=="POST" || $_SERVER['REQUEST_METHOD']=="PATCH" || $_SERVER['REQUEST_METHOD']=="PUT" || $_SERVER['REQUEST_METHOD']=="DELETE" ) @@ -215,8 +214,8 @@ try { /* Initialize controller ---------- */ // get the controller and format it correctly - $controller = ucfirst(strtolower($params->controller))."_controller"; - $controller_file = ucfirst(strtolower($params->controller)); + $controller_name = ucfirst($Params->controller)."_controller"; + $controller_file = ucfirst($Params->controller); // check if the controller exists. if not, throw an exception if( file_exists( dirname(__FILE__) . "/controllers/$controller_file.php") ) { @@ -232,7 +231,7 @@ try { // create a new instance of the controller, and pass // it the parameters from the request and Database object - $controller = new $controller($Database, $Tools, $params, $Response); + $controller = new $controller_name($Database, $Tools, $Params, $Response); // pass app params for links result $controller->app = $app; @@ -294,7 +293,7 @@ try { } // remove transaction lock - if(is_object($controller) && $app->app_lock==1 && strtoupper($_SERVER['REQUEST_METHOD'])=="POST") { + if(isset($controller) && $app->app_lock==1 && strtoupper($_SERVER['REQUEST_METHOD'])=="POST") { if($controller->is_transaction_locked ()) { $controller->remove_transaction_lock (); } @@ -309,8 +308,9 @@ if($time_response) { $time = $stop - $start; } +$customFields = isset($controller) ? $controller->custom_fields : []; //output result -echo $Response->formulate_result ($result, $time, $app->app_nest_custom_fields, $controller->custom_fields); +echo $Response->formulate_result ($result, $time, $app->app_nest_custom_fields, $customFields); // update access time try { $Database->updateObject("api", ["app_id"=>$app->app_id, "app_last_access"=>date("Y-m-d H:i:s")], 'app_id'); } diff --git a/app/tools/devices/all-devices-filter.php b/app/tools/devices/all-devices-filter.php index ea84bdaa..3190c2a6 100644 --- a/app/tools/devices/all-devices-filter.php +++ b/app/tools/devices/all-devices-filter.php @@ -91,7 +91,7 @@ print "<div class='btn-group' style='margin-bottom:7px;'>"; if($Racks->all_racks!==false) { print " <li role='separator' class='divider'></li>"; foreach ($Racks->all_racks as $r) { - $selected = $r->name==$_GET['sPage'] ? "class='active'" : ""; + $selected = isset($_GET['sPage']) && $r->name==$_GET['sPage'] ? "class='active'" : ""; print " <li $selected><a href='".create_link("tools","devices","rack", $r->name)."'>".$r->name."</a></li>"; } } @@ -111,7 +111,7 @@ print "<div class='btn-group' style='margin-bottom:7px;'>"; if($all_locations!==false) { print " <li role='separator' class='divider'></li>"; foreach ($all_locations as $l) { - $selected = $l->name==$_GET['sPage'] ? "class='active'" : ""; + $selected = isset($_GET['sPage']) && $l->name==$_GET['sPage'] ? "class='active'" : ""; print " <li $selected><a href='".create_link("tools","devices","location", $l->name)."'>".$l->name."</a></li>"; } } diff --git a/functions/PEAR/OLE/ChainedBlockStream.php b/functions/PEAR/OLE/ChainedBlockStream.php index 129b77b4..87481c05 100755 --- a/functions/PEAR/OLE/ChainedBlockStream.php +++ b/functions/PEAR/OLE/ChainedBlockStream.php @@ -38,6 +38,7 @@ require_once 'functions/PEAR/OLE.php'; * @link http://pear.php.net/package/OLE * @since Class available since Release 0.6.0 */ +#[AllowDynamicProperties] class OLE_ChainedBlockStream extends PEAR { /** diff --git a/functions/PEAR/OLE/OLE.php b/functions/PEAR/OLE/OLE.php index a30b886e..cfa2798a 100755 --- a/functions/PEAR/OLE/OLE.php +++ b/functions/PEAR/OLE/OLE.php @@ -47,6 +47,7 @@ $GLOBALS['_OLE_INSTANCES'] = array(); * @author Xavier Noguer <xnoguer@php.net> * @author Christian Schmidt <schmidt@php.net> */ +#[AllowDynamicProperties] class OLE extends PEAR { diff --git a/functions/PEAR/OLE/PPS.php b/functions/PEAR/OLE/PPS.php index 353c338c..9b9dcc42 100755 --- a/functions/PEAR/OLE/PPS.php +++ b/functions/PEAR/OLE/PPS.php @@ -30,6 +30,7 @@ require_once 'OLE.php'; * @category Structures * @package OLE */ +#[AllowDynamicProperties] class OLE_PPS extends PEAR { /** diff --git a/functions/PEAR/Spreadsheet/Excel/Writer/BIFFwriter.php b/functions/PEAR/Spreadsheet/Excel/Writer/BIFFwriter.php index b6a251c8..3b18adf4 100755 --- a/functions/PEAR/Spreadsheet/Excel/Writer/BIFFwriter.php +++ b/functions/PEAR/Spreadsheet/Excel/Writer/BIFFwriter.php @@ -50,7 +50,7 @@ require_once 'PEAR.php'; * @category FileFormats * @package Spreadsheet_Excel_Writer */ - +#[AllowDynamicProperties] class Spreadsheet_Excel_Writer_BIFFwriter extends PEAR { /** diff --git a/functions/PEAR/Spreadsheet/Excel/Writer/Format.php b/functions/PEAR/Spreadsheet/Excel/Writer/Format.php index 13c61d0a..8403af5d 100755 --- a/functions/PEAR/Spreadsheet/Excel/Writer/Format.php +++ b/functions/PEAR/Spreadsheet/Excel/Writer/Format.php @@ -42,6 +42,7 @@ require_once 'PEAR.php'; * @package Spreadsheet_Excel_Writer */ +#[AllowDynamicProperties] class Spreadsheet_Excel_Writer_Format extends PEAR { /** diff --git a/functions/PEAR/Spreadsheet/Excel/Writer/Parser.php b/functions/PEAR/Spreadsheet/Excel/Writer/Parser.php index c5e40454..808b5125 100755 --- a/functions/PEAR/Spreadsheet/Excel/Writer/Parser.php +++ b/functions/PEAR/Spreadsheet/Excel/Writer/Parser.php @@ -107,6 +107,7 @@ require_once 'PEAR.php'; * @package Spreadsheet_Excel_Writer */ +#[AllowDynamicProperties] class Spreadsheet_Excel_Writer_Parser extends PEAR { /** diff --git a/functions/checks/check_php_build.php b/functions/checks/check_php_build.php index b88cd21e..54c364c5 100755 --- a/functions/checks/check_php_build.php +++ b/functions/checks/check_php_build.php @@ -15,7 +15,7 @@ if(!defined('PHPIPAM_PHP_MIN')) define('PHPIPAM_PHP_MIN', "5.4"); if(!defined('PHPIPAM_PHP_UNTESTED')) -define('PHPIPAM_PHP_UNTESTED', "8.2"); // PHP 8.2 or greater is untested & unsupported +define('PHPIPAM_PHP_UNTESTED', "8.3"); // PHP 8.3 or greater is untested & unsupported # Empty missing arrays to prevent errors diff --git a/functions/classes/class.Common.php b/functions/classes/class.Common.php index 5a39d0c5..d36fe48d 100644 --- a/functions/classes/class.Common.php +++ b/functions/classes/class.Common.php @@ -1731,7 +1731,7 @@ class Common_functions { */ public function print_custom_field ($type, $value, $delimiter = false, $replacement = false) { // escape - $value = str_replace("'", "'", $value); + $value = str_replace("'", "'", $value ?: ''); // create links $value = $this->create_links ($value, $type); diff --git a/functions/classes/class.Rackspace.php b/functions/classes/class.Rackspace.php index 59dfdcd5..c3217dc0 100755 --- a/functions/classes/class.Rackspace.php +++ b/functions/classes/class.Rackspace.php @@ -605,7 +605,7 @@ class RackDrawer extends Common_functions { $x = imagesx($img) - $width - 8; $y = Imagesy($img) +9; // imagestring($img, $font, $x/2, $y/2, $text, $color); - imagettftext($img, 8, 0, $x/2, $y/2, $color, dirname(__FILE__)."/../../css/fonts/MesloLGS-Regular.ttf", $text ); + imagettftext($img, 8, 0, (int) $x/2, (int) $y/2, $color, dirname(__FILE__)."/../../css/fonts/MesloLGS-Regular.ttf", $text ); } /** diff --git a/functions/classes/class.SubnetsTable.php b/functions/classes/class.SubnetsTable.php index 2784cb36..46daa78e 100644 --- a/functions/classes/class.SubnetsTable.php +++ b/functions/classes/class.SubnetsTable.php @@ -105,7 +105,7 @@ class SubnetsTable { //vlan if (isset($this->all_vlans[$subnet->vlanId]->number)) { - $tr['vlan'] = $this->all_vlans[$subnet->vlanId]->domainId==1 ? $this->all_vlans[$subnet->vlanId]->number : $this->all_vlans[$subnet->vlanId]->number." <span class='badge badge1 badge5' rel='tooltip' title='"._('VLAN is in domain'). ".$this->all_vlans[$subnet->vlanId]->domainName.'>".$this->all_vlans[$subnet->vlanId]->domainName."</span>"; + $tr['vlan'] = $this->all_vlans[$subnet->vlanId]->domainId == 1 ? $this->all_vlans[$subnet->vlanId]->number : $this->all_vlans[$subnet->vlanId]->number . " <span class='badge badge1 badge5' rel='tooltip' title='" . _('VLAN is in domain') . escape_input($this->all_vlans[$subnet->vlanId]->domainName) . "'>" . escape_input($this->all_vlans[$subnet->vlanId]->domainName) . "</span>"; } else { $tr['vlan'] = _('Default'); } -- GitLab