From c41987d1db9269dc3bcdaf3cbe5a73ac8b5a9e1a Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Fri, 5 Jun 2020 14:52:23 -0400 Subject: [PATCH] Bump version to 3.0.159 --- wire/core/PagesParents.php | 3 +++ wire/core/ProcessWire.php | 2 +- wire/core/Sanitizer.php | 8 ++++++-- wire/modules/Process/ProcessPageView.module | 13 ++++++++++--- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/wire/core/PagesParents.php b/wire/core/PagesParents.php index 1943a92d..62d31808 100644 --- a/wire/core/PagesParents.php +++ b/wire/core/PagesParents.php @@ -499,6 +499,8 @@ class PagesParents extends Wire { } } else if($page->parentPrevious && $page->parentPrevious->id != $page->parent->id) { // existing page with parent changed + $this->rebuildAll(); + /* if($page->parentPrevious->numChildren === 0) { // parent no longer has children and doesn’t need entry $numRows += $this->delete($page->parentPrevious); @@ -507,6 +509,7 @@ class PagesParents extends Wire { // first time parent gets added to pages_parents $numRows += $this->rebuild($page->parent); } + */ } return $numRows; diff --git a/wire/core/ProcessWire.php b/wire/core/ProcessWire.php index 5ef38a4b..bd7e1f88 100644 --- a/wire/core/ProcessWire.php +++ b/wire/core/ProcessWire.php @@ -77,7 +77,7 @@ class ProcessWire extends Wire { * Reversion revision number * */ - const versionRevision = 158; + const versionRevision = 159; /** * Version suffix string (when applicable) diff --git a/wire/core/Sanitizer.php b/wire/core/Sanitizer.php index 8cc5334c..146ee089 100644 --- a/wire/core/Sanitizer.php +++ b/wire/core/Sanitizer.php @@ -2169,9 +2169,13 @@ class Sanitizer extends Wire { } // reductions and replacements - $reductions = array('..' => '.', './' => ' ', ' ' => ' ', '--' => '-'); + $reductions = array('..' => '.', './' => ' ', ' ' => ' '); foreach($reductions as $f => $r) { - while(strpos($value, $f) !== false) $value = str_replace($f, $r, $value); + if(strpos($value, $f) === false) continue; + if(in_array($f, $options['whitelist'])) continue; + do { + $value = str_replace($f, $r, $value); + } while(strpos($value, $f) !== false); } $value = trim($value); // trim any kind of whitespace diff --git a/wire/modules/Process/ProcessPageView.module b/wire/modules/Process/ProcessPageView.module index b685ec78..0bb60e32 100644 --- a/wire/modules/Process/ProcessPageView.module +++ b/wire/modules/Process/ProcessPageView.module @@ -307,6 +307,13 @@ class ProcessPageView extends Process { // did URL end with index.php|htm|html? If so we might redirect if a page matches without it. $indexRedirect = false; + // options for $sanitizer->selectorValue() call + $selectorValueOptions = array( + 'maxLength' => 2048, + 'maxBytes' => 6144, + 'allowArray' => false, + ); + /** @var string $shit Dirty URL */ /** @var string $it Clean URL */ @@ -388,7 +395,7 @@ class ProcessPageView extends Process { $this->pageNum = (int) $matches[2]; $page = null; } else { - $spit = $sanitizer->selectorValue($it, 2048); + $spit = $sanitizer->selectorValue($it, $selectorValueOptions); $page = $pages->get("path=$spit, status<" . Page::statusMax); } @@ -413,7 +420,7 @@ class ProcessPageView extends Process { $spit = $sanitizer->pageNameUTF8($trit); if($trit === $spit) { // one segment off root - $spit = $sanitizer->selectorValue($spit, 2048); + $spit = $sanitizer->selectorValue($spit, $selectorValueOptions); $page = $pages->get("name=$spit, status=" . Page::statusUnique); if($page->id && $page->viewable()) { $this->redirectURL = $page->url; @@ -437,7 +444,7 @@ class ProcessPageView extends Process { $urlSegment = substr($it, $pos); $urlSegments[$cnt] = $urlSegment; $it = substr($it, 0, $pos); // $it no longer includes the urlSegment - $selector = "path=" . $sanitizer->selectorValue($it, 2048) . ", status<" . Page::statusMax; + $selector = "path=" . $sanitizer->selectorValue($it, $selectorValueOptions) . ", status<" . Page::statusMax; $page = $pages->get($selector); $cnt++; }