diff --git a/src/services/Redirects.php b/src/services/Redirects.php index c9309ee8..f02a12cc 100644 --- a/src/services/Redirects.php +++ b/src/services/Redirects.php @@ -24,6 +24,7 @@ use nystudio107\retour\events\RedirectResolvedEvent; use nystudio107\retour\events\ResolveRedirectEvent; use nystudio107\retour\fields\ShortLink; +use nystudio107\retour\helpers\Text as TextHelper; use nystudio107\retour\helpers\UrlHelper; use nystudio107\retour\models\StaticRedirects as StaticRedirectsModel; use nystudio107\retour\Retour; @@ -467,11 +468,11 @@ public function getStaticRedirect(string $fullUrl, string $pathOnly, $siteId, bo 'or', ['and', ['redirectSrcMatch' => 'pathonly'], - ['redirectSrcUrlParsed' => $pathOnly], + ['redirectSrcUrlParsed' => TextHelper::cleanupText($pathOnly)], ], ['and', ['redirectSrcMatch' => 'fullurl'], - ['redirectSrcUrlParsed' => $fullUrl], + ['redirectSrcUrlParsed' => TextHelper::cleanupText($fullUrl)], ], ]; @@ -1227,7 +1228,7 @@ public function getRedirectByRedirectSrcUrl(string $redirectSrcUrl, int $siteId // Query the db table $query = (new Query()) ->from(['{{%retour_static_redirects}}']) - ->where(['redirectSrcUrl' => $redirectSrcUrl]); + ->where(['redirectSrcUrl' => TextHelper::cleanupText($redirectSrcUrl)]); if ($siteId) { $query ->andWhere(['or', [ diff --git a/src/services/Statistics.php b/src/services/Statistics.php index ab1be1db..a09ac9c1 100644 --- a/src/services/Statistics.php +++ b/src/services/Statistics.php @@ -17,6 +17,7 @@ use craft\helpers\Db; use craft\helpers\UrlHelper; use DateTime; +use nystudio107\retour\helpers\Text as TextHelper; use nystudio107\retour\models\Stats as StatsModel; use nystudio107\retour\Retour; use yii\db\Exception; @@ -194,7 +195,7 @@ public function incrementStatistics(string $url, bool $handled = false, $siteId // Find any existing retour_stats record $statsConfig = (new Query()) ->from(['{{%retour_stats}}']) - ->where(['redirectSrcUrl' => $stats->redirectSrcUrl]) + ->where(['redirectSrcUrl' => TextHelper::cleanupText($stats->redirectSrcUrl)]) ->one(); // If no record is found, initialize some values if ($statsConfig === null) { @@ -275,28 +276,6 @@ public function saveStatistics(array $statsConfig): void } } - /** - * Don't trim more than a given interval, so that performance is not affected - * - * @return bool - */ - protected function rateLimited(): bool - { - $limited = false; - $now = round(microtime(true) * 1000); - $cache = Craft::$app->getCache(); - $then = $cache->get(self::LAST_STATISTICS_TRIM_CACHE_KEY); - if (($then !== false) && ($now - (int)$then < Retour::$settings->statisticsRateLimitMs)) { - $limited = true; - } - $cache->set(self::LAST_STATISTICS_TRIM_CACHE_KEY, $now, 0); - - return $limited; - } - - // Protected Methods - // ========================================================================= - /** * Trim the retour_stats db table based on the statsStoredLimit config.php * setting @@ -364,4 +343,26 @@ public function trimStatistics(int $limit = null): int return $affectedRows; } + + // Protected Methods + // ========================================================================= + + /** + * Don't trim more than a given interval, so that performance is not affected + * + * @return bool + */ + protected function rateLimited(): bool + { + $limited = false; + $now = round(microtime(true) * 1000); + $cache = Craft::$app->getCache(); + $then = $cache->get(self::LAST_STATISTICS_TRIM_CACHE_KEY); + if (($then !== false) && ($now - (int)$then < Retour::$settings->statisticsRateLimitMs)) { + $limited = true; + } + $cache->set(self::LAST_STATISTICS_TRIM_CACHE_KEY, $now, 0); + + return $limited; + } }