From e51ee110a3e5a4327cf0e9ebbff7ea0658723603 Mon Sep 17 00:00:00 2001 From: Clement Desmidt Date: Wed, 19 Apr 2023 16:50:44 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=AA=20Failing=20tests=20makes=20somes?= =?UTF-8?q?=20rules=20pop=20better?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Entity/Channel.php | 4 ++-- src/Parser/SRSSParser.php | 12 ++++++++++++ src/Validator/Formator.php | 2 +- src/Validator/Validator.php | 21 +++++++++++++++++++++ tests/CompleteBuilderTest.php | 4 ++-- 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/Entity/Channel.php b/src/Entity/Channel.php index c745efd..80f4468 100644 --- a/src/Entity/Channel.php +++ b/src/Entity/Channel.php @@ -96,12 +96,12 @@ class Channel extends HasValidator implements SRSSElement * @validate hour * @format hour */ - protected ?string $skipHours = null; + protected ?array $skipHours = null; /** * @validate day * @format day */ - protected ?string $skipDays = null; + protected ?array $skipDays = null; /** * @return bool diff --git a/src/Parser/SRSSParser.php b/src/Parser/SRSSParser.php index b85c9ec..18dad23 100644 --- a/src/Parser/SRSSParser.php +++ b/src/Parser/SRSSParser.php @@ -110,6 +110,18 @@ class SRSSParser extends DomDocument } $category->value = $child->nodeValue; $this->doc->channel->category = $category; + } elseif ($child->nodeName === 'skipHours') { + foreach ($child->childNodes as $hour) { + if ($hour->nodeType === XML_ELEMENT_NODE) { + $this->doc->channel->skipHours = $hour->nodeValue; + } + } + } elseif ($child->nodeName === 'skipDays') { + foreach ($child->childNodes as $day) { + if ($day->nodeType === XML_ELEMENT_NODE) { + $this->doc->channel->skipDays = $day->nodeValue; + } + } } else { $this->doc->channel->{$child->nodeName} = $child->nodeValue; } diff --git a/src/Validator/Formator.php b/src/Validator/Formator.php index b81ced9..924ecd1 100644 --- a/src/Validator/Formator.php +++ b/src/Validator/Formator.php @@ -143,7 +143,7 @@ class Formator return $check; } - return sprintf('', htmlspecialchars($check)); + return sprintf('', $check); } /** diff --git a/src/Validator/Validator.php b/src/Validator/Validator.php index 6ff38f1..f69700a 100644 --- a/src/Validator/Validator.php +++ b/src/Validator/Validator.php @@ -201,17 +201,38 @@ class Validator private function _validateHour($value): bool { + if (is_array($value)) { + foreach ($value as $val) { + if ($this->_validateHour($val) === false) { + return false; + } + } + + return true; + } + $options = [ 'options' => [ 'min_range' => 0, 'max_range' => 23 ] ]; + return filter_var($value, FILTER_VALIDATE_INT, $options) !== false; } private function _validateDay($value): bool { + if (is_array($value)) { + foreach ($value as $val) { + if ($this->_validateDay($val) === false) { + return false; + } + } + + return true; + } + return in_array( strtolower($value), ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'] diff --git a/tests/CompleteBuilderTest.php b/tests/CompleteBuilderTest.php index f8bcb80..d210203 100644 --- a/tests/CompleteBuilderTest.php +++ b/tests/CompleteBuilderTest.php @@ -37,8 +37,8 @@ class CompleteBuilderTest extends TestCase $image->title = 'title of image'; $rating = 'yes'; $textInput = 'ignore'; - $skipDays = 'monday'; - $skipHours = '8'; + $skipDays = ['monday']; + $skipHours = ['8', '9']; $srss = SRSS::create(); $srss->title = $title;