From 2da2c45382efafabb786a2e42b192f7014344b8b Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Fri, 8 Jul 2022 13:02:33 -0400 Subject: [PATCH] Additional updates for processwire/processwire-issues#1467 --- wire/core/FilenameArray.php | 1 + wire/core/Inputfield.php | 2 ++ wire/core/PageFinder.php | 2 +- wire/modules/Fieldtype/FieldtypeDatetime.module | 6 +++--- wire/modules/Fieldtype/FieldtypeFile/FieldtypeFile.module | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/wire/core/FilenameArray.php b/wire/core/FilenameArray.php index e7b650ac..b5a936f0 100644 --- a/wire/core/FilenameArray.php +++ b/wire/core/FilenameArray.php @@ -41,6 +41,7 @@ class FilenameArray implements \IteratorAggregate, \Countable { * */ protected function getKey($filename) { + $filename = (string) $filename; $pos = strpos($filename, '?'); $key = $pos ? substr($filename, 0, $pos) : $filename; return md5($key); diff --git a/wire/core/Inputfield.php b/wire/core/Inputfield.php index 672a03c0..ac7d31f7 100644 --- a/wire/core/Inputfield.php +++ b/wire/core/Inputfield.php @@ -1831,6 +1831,8 @@ abstract class Inputfield extends WireData implements Module { /** @var Sanitizer $sanitizer */ $sanitizer = $this->wire('sanitizer'); + $str = (string) $str; + // if already encoded, then un-encode it if(strpos($str, '&') !== false && preg_match('/&(#\d+|[a-zA-Z]+);/', $str)) { $str = $sanitizer->unentities($str); diff --git a/wire/core/PageFinder.php b/wire/core/PageFinder.php index 40d64cbe..a1fe5f94 100644 --- a/wire/core/PageFinder.php +++ b/wire/core/PageFinder.php @@ -2788,7 +2788,7 @@ class PageFinder extends Wire { } else if(in_array($field, array('created', 'modified', 'published'))) { // prepare value for created, modified or published date fields - if(!ctype_digit($value)) { + if(!ctype_digit("$value")) { $value = $datetime->strtotime($value); } if(empty($value)) { diff --git a/wire/modules/Fieldtype/FieldtypeDatetime.module b/wire/modules/Fieldtype/FieldtypeDatetime.module index e735b9e1..364878f3 100644 --- a/wire/modules/Fieldtype/FieldtypeDatetime.module +++ b/wire/modules/Fieldtype/FieldtypeDatetime.module @@ -367,7 +367,8 @@ class FieldtypeDatetime extends Fieldtype { public function ___getConfigInputfields(Field $field) { $inputfields = parent::___getConfigInputfields($field); - $wdt = $this->wire('datetime'); + $wdt = $this->wire('datetime'); /** @var WireDateTime $wdt */ + $dateOutputFormat = (string) $field->get('dateOutputFormat'); /** @var InputfieldSelect $f */ $f = $this->modules->get('InputfieldSelect'); @@ -384,7 +385,7 @@ class FieldtypeDatetime extends Fieldtype { $dateFormatted = $wdt->formatDate($date, $format); if($format == 'U') $dateFormatted .= " " . $this->_('(unix timestamp)'); $f->addOption($format, "$dateFormatted [$format]"); - if(!$found && strpos($field->get('dateOutputFormat'), $format) !== false) { + if(!$found && strpos($dateOutputFormat, $format) !== false) { $f->attr('value', $format); $found = true; } @@ -400,7 +401,6 @@ class FieldtypeDatetime extends Fieldtype { $f->addOption('', $this->_('None')); $f->columnWidth = 50; $date = strtotime('5:10:02 PM'); - $dateOutputFormat = $field->get('dateOutputFormat'); foreach($wdt->getTimeFormats() as $format) { $timeFormatted = $wdt->formatDate($date, $format); $f->addOption($format, "$timeFormatted [$format]"); diff --git a/wire/modules/Fieldtype/FieldtypeFile/FieldtypeFile.module b/wire/modules/Fieldtype/FieldtypeFile/FieldtypeFile.module index fdd4eb76..965171d2 100644 --- a/wire/modules/Fieldtype/FieldtypeFile/FieldtypeFile.module +++ b/wire/modules/Fieldtype/FieldtypeFile/FieldtypeFile.module @@ -1565,7 +1565,7 @@ class FieldtypeFile extends FieldtypeMulti implements ConfigurableModule, Fieldt $extensions = array(); $badExtensions = array(); $whitelistExtensions = array(); - $extensionsStr = $field->get('extensions'); + $extensionsStr = (string) $field->get('extensions'); $okExtensions = $field->get('okExtensions'); $validators = array();