resolver = $resolver; } /** @return string */ public function getName(): string { return __('old permalink structure', '404-solution'); } /** @param ABJ_404_Solution_MatchRequest $request */ public function shouldRun(ABJ_404_Solution_MatchRequest $request): bool { $options = $request->getOptions(); $autoRedirectsRaw = $options['auto_redirects'] ?? '0'; $autoRedirects = is_scalar($autoRedirectsRaw) ? (string)$autoRedirectsRaw : '0'; if ($autoRedirects !== '1') { return false; } $enabledRaw = $options['old_permalink_structure_redirects'] ?? '1'; $enabled = !is_scalar($enabledRaw) || (string)$enabledRaw !== '0'; if (function_exists('apply_filters')) { $enabled = (bool)apply_filters('abj404_old_permalink_structure_redirects_enabled', $enabled, $request); } if (!$enabled) { return false; } return $request->getRequestedURL() !== ''; } /** @param ABJ_404_Solution_MatchRequest $request */ public function match(ABJ_404_Solution_MatchRequest $request): ?ABJ_404_Solution_MatchResult { $resolved = $this->resolver->resolve($request); if ($resolved === null) { return null; } return new ABJ_404_Solution_MatchResult( $resolved['id'], $resolved['type'], $resolved['link'], $resolved['title'], $resolved['score'], $this->getName() ); } }