From 32459b11b65331ac47b62d6159a4c17c6003e8a0 Mon Sep 17 00:00:00 2001 From: Diego Surita Date: Mon, 29 Jan 2024 18:49:02 -0300 Subject: [PATCH] Fix some deprecation warnings (#64) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix PHP 8.1 deprecation warnings on Helper and FormHelper - fix deprecation warning when Helper::_entityPath is null - fix `strftime` function deprecation warning on FormHelper::_getDateTimeValue method ref: ARCH-11 * Switch deprecated utf8_encode function to mb_convert_encoding function ref: ARCH-13 * Hide strftime deprecation warning Since CakePHP 2 doesn't require the installation of `intl` PHP extension in it's documentation, I can't use the alternative `IntlDateFormatter::format` because it relies such extension. ref: ARCH-13 * Roll back the use of strftime ref: ARCH-11 * Fix preg_split subject param null deprecated on FormHelper::dateTime * Fix preg_split deprecated null param limit on CakeResponse::checkNotModified * fix: get rid of (some) PHP deprecation warnings - CakeResponse.php strotime() and preg_split() warnings * Ignore hide srtftime function deprecation warning from PHPCS * Fix typo on phpcs ignore comments --------- Co-authored-by: Jan Pešek --- .gitignore | 1 + Makefile | 10 ++++++++++ lib/Cake/Test/Case/Utility/CakeTimeTest.php | 16 ++++++++++++---- lib/Cake/Utility/CakeTime.php | 6 ++++-- lib/Cake/View/Helper.php | 2 +- lib/Cake/View/Helper/FormHelper.php | 10 +++++++--- 6 files changed, 35 insertions(+), 10 deletions(-) create mode 100644 Makefile diff --git a/.gitignore b/.gitignore index 4af649de7..afebb500c 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ /dist /tags *.mo +.phpunit.result.cache # IDE and editor specific files # ################################# diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..e17f27731 --- /dev/null +++ b/Makefile @@ -0,0 +1,10 @@ +.PHONY: bash up down + +up: + docker-compose up -d + +down: + docker-compose down -v + +bash: + docker-compose exec web bash diff --git a/lib/Cake/Test/Case/Utility/CakeTimeTest.php b/lib/Cake/Test/Case/Utility/CakeTimeTest.php index c0b738134..f9ce1158c 100644 --- a/lib/Cake/Test/Case/Utility/CakeTimeTest.php +++ b/lib/Cake/Test/Case/Utility/CakeTimeTest.php @@ -279,7 +279,9 @@ class CakeTimeTest extends CakeTestCase { $this->assertEquals('on 2007-09-25', $result); $result = $this->Time->timeAgoInWords('2007-9-25', '%x'); - $this->assertEquals('on ' . strftime('%x', strtotime('2007-9-25')), $result); + // @codingStandardsIgnoreStart + $this->assertEquals('on ' . @strftime('%x', strtotime('2007-9-25')), $result); + // @codingStandardsIgnoreEnd $result = $this->Time->timeAgoInWords( strtotime('+2 weeks +2 days'), @@ -303,7 +305,9 @@ class CakeTimeTest extends CakeTestCase { strtotime('+2 months +2 days'), array('end' => '1 month', 'format' => '%x') ); - $this->assertEquals('on ' . strftime('%x', strtotime('+2 months +2 days')), $result); + // @codingStandardsIgnoreStart + $this->assertEquals('on ' . @strftime('%x', strtotime('+2 months +2 days')), $result); + // @codingStandardsIgnoreEnd } /** @@ -1174,7 +1178,9 @@ class CakeTimeTest extends CakeTestCase { $this->assertEquals($expected, $result); $result = $this->Time->i18nFormat($time, '%c'); - $expected = 'jue 14 ene 2010 13:59:28 ' . utf8_encode(strftime('%Z', $time)); + // @codingStandardsIgnoreStart + $expected = 'jue 14 ene 2010 13:59:28 ' . mb_convert_encoding(@strftime('%Z', $time), 'UTF-8', 'ISO-8859-1'); + // @codingStandardsIgnoreEnd $this->assertEquals($expected, $result); $result = $this->Time->i18nFormat($time, 'Time is %r, and date is %x'); @@ -1188,7 +1194,9 @@ class CakeTimeTest extends CakeTestCase { $this->assertEquals($expected, $result); $result = $this->Time->i18nFormat($time, '%c'); - $expected = 'mié 13 ene 2010 13:59:28 ' . utf8_encode(strftime('%Z', $time)); + // @codingStandardsIgnoreStart + $expected = 'mié 13 ene 2010 13:59:28 ' . mb_convert_encoding(@strftime('%Z', $time), 'UTF-8', 'ISO-8859-1'); + // @codingStandardsIgnoreEnd $this->assertEquals($expected, $result); $result = $this->Time->i18nFormat($time, 'Time is %r, and date is %x'); diff --git a/lib/Cake/Utility/CakeTime.php b/lib/Cake/Utility/CakeTime.php index 63911bfde..75fae995e 100644 --- a/lib/Cake/Utility/CakeTime.php +++ b/lib/Cake/Utility/CakeTime.php @@ -1167,7 +1167,9 @@ class CakeTime { * @return string formatted string with correct encoding. */ protected static function _strftime($format, $timestamp) { - $format = strftime($format, $timestamp); + // @codingStandardsIgnoreStart + $format = @strftime($format, $timestamp); + // @codingStandardsIgnoreEnd $encoding = Configure::read('App.encoding'); if (!empty($encoding) && $encoding === 'UTF-8') { if (function_exists('mb_check_encoding')) { @@ -1176,7 +1178,7 @@ class CakeTime { $valid = Multibyte::checkMultibyte($format); } if (!$valid) { - $format = utf8_encode($format); + $format = mb_convert_encoding($format, 'UTF-8', 'ISO-8859-1'); } } return $format; diff --git a/lib/Cake/View/Helper.php b/lib/Cake/View/Helper.php index 5ed869461..7512e5c89 100644 --- a/lib/Cake/View/Helper.php +++ b/lib/Cake/View/Helper.php @@ -632,7 +632,7 @@ class Helper extends CakeObject { * @return array An array containing the identity elements of an entity */ public function entity() { - return explode('.', $this->_entityPath); + return explode('.', (string)$this->_entityPath); } /** diff --git a/lib/Cake/View/Helper/FormHelper.php b/lib/Cake/View/Helper/FormHelper.php index 376ce8d39..89b7f1127 100644 --- a/lib/Cake/View/Helper/FormHelper.php +++ b/lib/Cake/View/Helper/FormHelper.php @@ -2708,7 +2708,7 @@ class FormHelper extends AppHelper { } $selects = array(); - foreach (preg_split('//', $dateFormat, -1, PREG_SPLIT_NO_EMPTY) as $char) { + foreach (preg_split('//', (string)$dateFormat, -1, PREG_SPLIT_NO_EMPTY) as $char) { switch ($char) { case 'Y': $attrs['Year']['value'] = $year; @@ -2767,7 +2767,9 @@ class FormHelper extends AppHelper { } if (is_numeric($value)) { - $value = strftime('%Y-%m-%d %H:%M:%S', $value); + // @codingStandardsIgnoreStart + $value = @strftime('%Y-%m-%d %H:%M:%S', $value); + // @codingStandardsIgnoreEnd } $meridian = 'am'; $pos = strpos($value, '-'); @@ -3021,7 +3023,9 @@ class FormHelper extends AppHelper { $data = $options['monthNames']; } else { for ($m = 1; $m <= 12; $m++) { - $data[sprintf("%02s", $m)] = strftime("%m", mktime(1, 1, 1, $m, 1, 1999)); + // @codingStandardsIgnoreStart + $data[sprintf("%02s", $m)] = @strftime("%m", mktime(1, 1, 1, $m, 1, 1999)); + // @codingStandardsIgnoreEnd } } break;