Various fixes to improve PHP 8.0 compatibility

- XmlParser 클래스가 PHP 내장 클래스가 되어버려서 XeXmlParser로 변경
- 함수나 파라미터의 형태가 맞지 않아서 치명적인 오류 나는 곳 수정
- undefined 변수 및 배열 키 다수 수정 (치명적인 오류는 아님)
- 계속 수정중...
This commit is contained in:
Kijin Sung 2020-10-31 00:25:26 +09:00
parent 90084efd75
commit 8c161bc28d
38 changed files with 136 additions and 100 deletions

View file

@ -342,7 +342,7 @@ class Context
// Set global variables for backward compatibility.
$GLOBALS['oContext'] = self::$_instance;
$GLOBALS['__Context__'] = &self::$_tpl_vars;
$GLOBALS['_time_zone'] = self::$_instance->db_info->time_zone;
$GLOBALS['_time_zone'] = config('locale.default_timezone');
$GLOBALS['lang'] = &$lang;
// set session handler
@ -357,7 +357,7 @@ class Context
}
// start session
$relax_key_checks = (self::$_get_vars->act === 'procFileUpload' && preg_match('/shockwave\s?flash/i', $_SERVER['HTTP_USER_AGENT']));
$relax_key_checks = ((self::$_get_vars->act ?? null) === 'procFileUpload' && preg_match('/shockwave\s?flash/i', $_SERVER['HTTP_USER_AGENT']));
Rhymix\Framework\Session::checkSSO($site_module_info);
Rhymix\Framework\Session::start(false, $relax_key_checks);
@ -1528,11 +1528,11 @@ class Context
*/
public static function getJSCallbackFunc()
{
$js_callback_func = isset($_GET['xe_js_callback']) ? $_GET['xe_js_callback'] : $_POST['xe_js_callback'];
$js_callback_func = isset($_GET['xe_js_callback']) ? $_GET['xe_js_callback'] : ($_POST['xe_js_callback'] ?? null);
if(!preg_match('/^[a-z0-9\.]+$/i', $js_callback_func))
{
unset($js_callback_func);
$js_callback_func = null;
unset($_GET['xe_js_callback']);
unset($_POST['xe_js_callback']);
}
@ -1602,7 +1602,7 @@ class Context
}
// If the first argument is '', reset existing parameters.
if (strval($args_list[0]) === '')
if (!is_array($args_list[0]) && strval($args_list[0]) === '')
{
array_shift($args_list);
$get_vars = array();

View file

@ -27,7 +27,7 @@ class ExtraVar
* @param int $module_srl Sequence of module
* @return ExtraVar
*/
function &getInstance($module_srl)
public static function getInstance($module_srl)
{
return new ExtraVar($module_srl);
}

View file

@ -38,7 +38,7 @@ class Mobile
}
// Not mobile if disabled explicitly.
if (!self::isMobileEnabled() || Context::get('full_browse') || $_COOKIE["FullBrowse"])
if (!self::isMobileEnabled() || Context::get('full_browse') || ($_COOKIE['FullBrowse'] ?? 0))
{
return self::$_ismobile = false;
}

View file

@ -118,7 +118,7 @@ class ModuleHandler extends Handler
$site_module_info = Context::get('site_module_info');
// Check unregistered domain action.
if (!$site_module_info || !isset($site_module_info->domain_srl) || $site_module_info->is_default_replaced)
if (!$site_module_info || !isset($site_module_info->domain_srl) || ($site_module_info->is_default_replaced ?? false))
{
$site_module_info = ModuleModel::getDefaultDomainInfo();
if ($site_module_info)
@ -183,6 +183,10 @@ class ModuleHandler extends Handler
return false;
}
}
else
{
$module_info = null;
}
// Get module info from mid.
if(!$module_info && $this->mid)
@ -373,7 +377,11 @@ class ModuleHandler extends Handler
}
}
if($this->module_info->use_mobile != "Y")
if(!isset($this->module_info->use_mobile))
{
$this->module_info->use_mobile = 'N';
}
if($this->module_info->use_mobile !== 'Y')
{
Mobile::setMobile(FALSE);
}
@ -815,27 +823,27 @@ class ModuleHandler extends Handler
*/
protected static function _setInputErrorToContext()
{
if($_SESSION['XE_VALIDATOR_ERROR'] && !Context::get('XE_VALIDATOR_ERROR'))
if(isset($_SESSION['XE_VALIDATOR_ERROR']) && $_SESSION['XE_VALIDATOR_ERROR'] && !Context::get('XE_VALIDATOR_ERROR'))
{
Context::set('XE_VALIDATOR_ERROR', $_SESSION['XE_VALIDATOR_ERROR']);
}
if($_SESSION['XE_VALIDATOR_MESSAGE'] && !Context::get('XE_VALIDATOR_MESSAGE'))
if(isset($_SESSION['XE_VALIDATOR_MESSAGE']) && $_SESSION['XE_VALIDATOR_MESSAGE'] && !Context::get('XE_VALIDATOR_MESSAGE'))
{
Context::set('XE_VALIDATOR_MESSAGE', $_SESSION['XE_VALIDATOR_MESSAGE']);
}
if($_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] && !Context::get('XE_VALIDATOR_MESSAGE_TYPE'))
if(isset($_SESSION['XE_VALIDATOR_MESSAGE_TYPE']) && $_SESSION['XE_VALIDATOR_MESSAGE_TYPE'] && !Context::get('XE_VALIDATOR_MESSAGE_TYPE'))
{
Context::set('XE_VALIDATOR_MESSAGE_TYPE', $_SESSION['XE_VALIDATOR_MESSAGE_TYPE']);
}
if($_SESSION['XE_VALIDATOR_RETURN_URL'] && !Context::get('XE_VALIDATOR_RETURN_URL'))
if(isset($_SESSION['XE_VALIDATOR_RETURN_URL']) && $_SESSION['XE_VALIDATOR_RETURN_URL'] && !Context::get('XE_VALIDATOR_RETURN_URL'))
{
Context::set('XE_VALIDATOR_RETURN_URL', $_SESSION['XE_VALIDATOR_RETURN_URL']);
}
if($_SESSION['XE_VALIDATOR_ID'] && !Context::get('XE_VALIDATOR_ID'))
if(isset($_SESSION['XE_VALIDATOR_ID']) && $_SESSION['XE_VALIDATOR_ID'] && !Context::get('XE_VALIDATOR_ID'))
{
Context::set('XE_VALIDATOR_ID', $_SESSION['XE_VALIDATOR_ID']);
}
if(countobj($_SESSION['INPUT_ERROR']))
if(isset($_SESSION['INPUT_ERROR']) && countobj($_SESSION['INPUT_ERROR']))
{
Context::set('INPUT_ERROR', $_SESSION['INPUT_ERROR']);
}

View file

@ -196,11 +196,11 @@ class ModuleObject extends BaseObject
{
// Set default variables
$this->mid = $module_info->mid;
$this->module_srl = $module_info->module_srl;
$this->module_srl = $module_info->module_srl ?? null;
$this->module_info = $module_info;
$this->origin_module_info = $module_info;
$this->xml_info = $xml_info;
$this->skin_vars = $module_info->skin_vars;
$this->skin_vars = $module_info->skin_vars ?? null;
$this->module_config = ModuleModel::getInstance()->getModuleConfig($this->module, $module_info->site_srl);
// Set privileges(granted) information

View file

@ -8,85 +8,85 @@ class Password
Rhymix\Framework\Password::addAlgorithm($name, $regexp, $callback);
}
public function getSupportedAlgorithms()
public static function getSupportedAlgorithms()
{
return Rhymix\Framework\Password::getSupportedAlgorithms();
}
public function getBestAlgorithm()
public static function getBestAlgorithm()
{
return Rhymix\Framework\Password::getBestSupportedAlgorithm();
}
public function getCurrentlySelectedAlgorithm()
public static function getCurrentlySelectedAlgorithm()
{
return Rhymix\Framework\Password::getDefaultAlgorithm();
}
public function getWorkFactor()
public static function getWorkFactor()
{
return Rhymix\Framework\Password::getWorkFactor();
}
public function createHash($password, $algorithm = null)
public static function createHash($password, $algorithm = null)
{
return Rhymix\Framework\Password::hashPassword($password, $algorithm);
}
public function checkPassword($password, $hash, $algorithm = null)
public static function checkPassword($password, $hash, $algorithm = null)
{
return Rhymix\Framework\Password::checkPassword($password, $hash, $algorithm);
}
function checkAlgorithm($hash)
public static function checkAlgorithm($hash)
{
$algos = Rhymix\Framework\Password::checkAlgorithm($hash);
return count($algos) ? $algos[0] : false;
}
function checkWorkFactor($hash)
public static function checkWorkFactor($hash)
{
return Rhymix\Framework\Password::checkWorkFactor($hash);
}
public function createSecureSalt($length, $format = 'hex')
public static function createSecureSalt($length, $format = 'hex')
{
return Rhymix\Framework\Security::getRandom($length, $format);
}
public function createTemporaryPassword($length = 16)
public static function createTemporaryPassword($length = 16)
{
return Rhymix\Framework\Password::getRandomPassword($length);
}
public function createSignature($string)
public static function createSignature($string)
{
return Rhymix\Framework\Security::createSignature($string);
}
public function checkSignature($string, $signature)
public static function checkSignature($string, $signature)
{
return Rhymix\Framework\Security::verifySignature($string, $signature);
}
public function getSecretKey()
public static function getSecretKey()
{
return config('crypto.authentication_key');
}
public function pbkdf2($password, $salt, $algorithm = 'sha256', $iterations = 8192, $length = 24)
public static function pbkdf2($password, $salt, $algorithm = 'sha256', $iterations = 8192, $length = 24)
{
$hash = Rhymix\Framework\Security::pbkdf2($password, $salt, $algorithm, $iterations, $length);
$hash = explode(':', $hash);
return base64_decode($hash[3]);
}
public function bcrypt($password, $salt = null)
public static function bcrypt($password, $salt = null)
{
return Rhymix\Framework\Security::bcrypt($password, $salt);
}
function strcmpConstantTime($a, $b)
public static function strcmpConstantTime($a, $b)
{
return Rhymix\Framework\Security::compareStrings($a, $b);
}

View file

@ -124,7 +124,7 @@ class Validator
return FALSE;
}
$parser = new XmlParser();
$parser = new XeXmlParser();
$xml = $parser->loadXmlFile($xml_path);
if(!isset($xml->ruleset) || !isset($xml->ruleset->fields) || !isset($xml->ruleset->fields->field))
{

View file

@ -46,7 +46,7 @@
* @package /classes/xml
* @version 0.2
*/
class XmlJsFilter extends XmlParser
class XmlJsFilter extends XeXmlParser
{
/**

View file

@ -8,7 +8,7 @@
* @package /classes/xml
* @version 0.1
*/
class XmlLangParser extends XmlParser
class XmlLangParser extends XeXmlParser
{
/**

View file

@ -35,7 +35,7 @@ class Xml_Node_
* @package /classes/xml
* @version 0.1
*/
class XmlParser
class XeXmlParser
{
/**
@ -75,7 +75,7 @@ class XmlParser
}
$buff = FileHandler::readFile($filename);
$oXmlParser = new XmlParser();
$oXmlParser = new self();
return $oXmlParser->parse($buff);
}
@ -232,5 +232,14 @@ class XmlParser
}
}
/**
* Alias to XmlParser for backward compatibility.
*/
if (!class_exists('XmlParser'))
{
class_alias('XeXmlParser', 'XmlParser');
}
/* End of file XmlParser.class.php */
/* Location: ./classes/xml/XmlParser.class.php */