Merge pull request #8 from kamilwylegala/fix-notices

Fix notices
This commit is contained in:
Kamil Wylegala 2022-01-04 19:52:19 +01:00 committed by GitHub
commit 300f245160
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 5 deletions

View file

@ -333,7 +333,7 @@ class Mysql extends DboSource {
* Returns an array of the fields in given table name. * Returns an array of the fields in given table name.
* *
* @param Model|string $model Name of database table to inspect or model instance * @param Model|string $model Name of database table to inspect or model instance
* @return array Fields in table. Keys are name and type * @return array|bool Fields in table. Keys are name and type. Returns false if result is empty.
* @throws CakeException * @throws CakeException
*/ */
public function describe($model) { public function describe($model) {
@ -344,7 +344,7 @@ class Mysql extends DboSource {
} }
$table = $this->fullTableName($model); $table = $this->fullTableName($model);
$fields = false; $fields = array();
$cols = $this->_execute('SHOW FULL COLUMNS FROM ' . $table); $cols = $this->_execute('SHOW FULL COLUMNS FROM ' . $table);
if (!$cols) { if (!$cols) {
throw new CakeException(__d('cake_dev', 'Could not describe table for %s', $table)); throw new CakeException(__d('cake_dev', 'Could not describe table for %s', $table));
@ -361,7 +361,8 @@ class Mysql extends DboSource {
$fields[$column->Field]['unsigned'] = $this->_unsigned($column->Type); $fields[$column->Field]['unsigned'] = $this->_unsigned($column->Type);
} }
if (in_array($fields[$column->Field]['type'], array('timestamp', 'datetime')) && if (in_array($fields[$column->Field]['type'], array('timestamp', 'datetime')) &&
in_array(strtoupper($column->Default), array('CURRENT_TIMESTAMP', 'CURRENT_TIMESTAMP()')) //Falling back to default empty string due to PHP8.1 deprecation notice.
in_array(strtoupper($column->Default ?? ""), array('CURRENT_TIMESTAMP', 'CURRENT_TIMESTAMP()'))
) { ) {
$fields[$column->Field]['default'] = null; $fields[$column->Field]['default'] = null;
} }
@ -382,6 +383,12 @@ class Mysql extends DboSource {
} }
$this->_cacheDescription($key, $fields); $this->_cacheDescription($key, $fields);
$cols->closeCursor(); $cols->closeCursor();
//Fields must be an array for compatibility with PHP8.1 (deprecation notice) but also let's keep backwards compatibility for method.
if (count($fields) === 0) {
return false;
}
return $fields; return $fields;
} }

View file

@ -2070,7 +2070,8 @@ class DboSource extends DataSource {
* @return string * @return string
*/ */
public function renderJoinStatement($data) { public function renderJoinStatement($data) {
if (strtoupper($data['type']) === 'CROSS' || empty($data['conditions'])) { //Fixed deprecation notice in PHP8.1 - fallback to empty string
if (strtoupper($data['type'] ?? "") === 'CROSS' || empty($data['conditions'])) {
return "{$data['type']} JOIN {$data['table']} {$data['alias']}"; return "{$data['type']} JOIN {$data['table']} {$data['alias']}";
} }
return trim("{$data['type']} JOIN {$data['table']} {$data['alias']} ON ({$data['conditions']})"); return trim("{$data['type']} JOIN {$data['table']} {$data['alias']} ON ({$data['conditions']})");

View file

@ -470,7 +470,8 @@ class CakeRoute {
//check patterns for routed params //check patterns for routed params
if (!empty($this->options)) { if (!empty($this->options)) {
foreach ($this->options as $key => $pattern) { foreach ($this->options as $key => $pattern) {
if (array_key_exists($key, $url) && !preg_match('#^' . $pattern . '$#', $url[$key])) { //Fixing deprecation notice about null $subject in PHP8.1.
if (array_key_exists($key, $url) && !preg_match('#^' . $pattern . '$#', $url[$key] ?? "")) {
return false; return false;
} }
} }