# 404-solution/4.3.3/includes/engine/OldPermalinkStructureEngine.php

404 Solution, version 4.3.3. 65 lines.

- Page: https://pluginprobe.com/plugins/404-solution/4.3.3/code/includes/engine/OldPermalinkStructureEngine.php
- Raw: https://pluginprobe.com/plugins/404-solution/4.3.3/raw/includes/engine/OldPermalinkStructureEngine.php
- Modified: 2026-07-14T10:28:14+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/404-solution/4.3.3/code/includes/engine/OldPermalinkStructureEngine.php#L10-L20`.

```php
<?php

if (!defined('ABSPATH')) {
    exit;
}

/**
 * Matching engine for URLs generated by an older WordPress permalink structure.
 */
class ABJ_404_Solution_OldPermalinkStructureEngine implements ABJ_404_Solution_MatchingEngine {

    /** @var ABJ_404_Solution_OldPermalinkStructureResolver */
    private $resolver;

    /**
     * @param ABJ_404_Solution_OldPermalinkStructureResolver $resolver
     */
    public function __construct(ABJ_404_Solution_OldPermalinkStructureResolver $resolver) {
        $this->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()
        );
    }
}

```
