1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-13 01:54:12 +02:00

Fix all PHP 8.1 test failures

* `strftime()` has been replaced with a polyfill based on `DateTime`.
* Explicit type casts/assertions added where required by PHP 8.1
* `filter_var(…, FILTER_SANITIZE_STRING)` replaced with `strip_tags()`
  or HTML entity encoding of quotation marks, depending on a guess of
  what the intended "sanitization" was
* `http_build_query()` usage type mismatches fixed
* Removed usages of the `FILE_TEXT` constant
* To avoid breaking PHP 5.6 compatibility (function return types),
  `e_session_db` no longer implements `SessionHandlerInterface`.
  Instead, the alternative non-OOP invocation of
  `session_set_save_handler()` is used instead to apply the session
  handler.
* The shim for `strptime()` still calls the native function if available
  but now suppresses the deprecation warning.

* `e_db_pdo` explicitly asks for `PDO::ATTR_STRINGIFY_FETCHES` to
  maintain consistent behavior with past versions of PHP.
* `e_db_mysql` explicitly sets `mysqli_report(MYSQLI_REPORT_OFF)` to
  maintain consistent behavior with past versions of PHP.

* Removed pointless random number generator seed from `banner` plugin
* Workaround for `COUNT(*)` SQL query in
  `validatorClass::dbValidateArray()` without a proper API for avoiding
  SQL injection
This commit is contained in:
Nick Liu
2021-09-04 15:06:19 +02:00
parent 64cd796605
commit 20882920a0
54 changed files with 295 additions and 157 deletions

View File

@@ -6686,9 +6686,10 @@ class e_admin_ui extends e_admin_controller_ui
protected function parseAliases()
{
// parse table
if(strpos($this->table, '.') !== false)
$tableName = $this->getTableName();
if(strpos($tableName, '.') !== false)
{
$tmp = explode('.', $this->table, 2);
$tmp = explode('.', $tableName, 2);
$this->table = $tmp[1];
$this->tableAlias = $tmp[0];
unset($tmp);
@@ -7443,7 +7444,7 @@ class e_admin_form_ui extends e_form
$vars = $this->getController()->getQuery();
$vars['from'] = '[FROM]';
$paginate = http_build_query($vars, null, '&');
$paginate = http_build_query($vars, '', '&');
e107::js('footer-inline', "
\$('#admin-ui-list-filter a.nextprev-item').on('click', function() {
@@ -7517,7 +7518,7 @@ class e_admin_form_ui extends e_form
$gridAction = $this->getController()->getAction() === 'grid' ? 'list' : 'grid';
$gridQuery = (array) $_GET;
$gridQuery['action'] = $gridAction;
$toggleUrl = e_REQUEST_SELF. '?' .http_build_query($gridQuery, null, '&');
$toggleUrl = e_REQUEST_SELF. '?' .http_build_query($gridQuery, '', '&');
$gridIcon = ($gridAction === 'grid') ? ADMIN_GRID_ICON : ADMIN_LIST_ICON;
$gridTitle = ($gridAction === 'grid') ? LAN_UI_VIEW_GRID_LABEL : LAN_UI_VIEW_LIST_LABEL;
$gridToggle = "<a class='btn btn-default' href='".$toggleUrl."' title=\"".$gridTitle. '">' .$gridIcon. '</a>';
@@ -8082,10 +8083,10 @@ class e_admin_form_ui extends e_form
$parms['__options'] = $fopts;
}
if(!is_array(varset($parms['__options'])))
if (!isset($parms['__options'])) $parms['__options'] = null;
if(!is_array($parms['__options']))
{
parse_str($parms['__options'], $parms['__options']);
parse_str((string) $parms['__options'], $parms['__options']);
}
$opts = $parms['__options'];
if(!empty($opts['multiple']) && $type === 'batch')