diff --git a/www/index.php b/www/index.php index b9f080a..3b7e777 100644 --- a/www/index.php +++ b/www/index.php @@ -51,27 +51,27 @@ const ARCHIVARIX_PROTOCOL = 'any'; /** * Return 1px.png if image does not exist. */ -const ARCHIVARIX_FIX_MISSING_IMAGES = 1; +const ARCHIVARIX_FIX_MISSING_IMAGES = 0; /** * Return empty.css if css does not exist. */ -const ARCHIVARIX_FIX_MISSING_CSS = 1; +const ARCHIVARIX_FIX_MISSING_CSS = 0; /** * Return empty.js if javascript does not exist. */ -const ARCHIVARIX_FIX_MISSING_JS = 1; +const ARCHIVARIX_FIX_MISSING_JS = 0; /** * Return empty.ico if favicon.ico does not exist. */ -const ARCHIVARIX_FIX_MISSING_ICO = 1; +const ARCHIVARIX_FIX_MISSING_ICO = 0; /** * Redirect missing html pages. */ -const ARCHIVARIX_REDIRECT_MISSING_HTML = '/'; +const ARCHIVARIX_REDIRECT_MISSING_HTML = 0; /** * Replace a custom key-phrase with a text file or php script. @@ -145,6 +145,12 @@ const ARCHIVARIX_SITEMAP_PATH = ''; */ const ARCHIVARIX_CATCH_MISSING = 0; +/** + * This feature is experimental. Catch urls with a missing wordpress version + * and replace them with the most recent version available + */ +const WORDPRESS_FIX_MISSING_VERSION = 1; + /** * Do not edit under this comment */ @@ -165,6 +171,7 @@ $LOADER = [ 'ARCHIVARIX_CUSTOM_DOMAIN' => ARCHIVARIX_CUSTOM_DOMAIN, 'ARCHIVARIX_SITEMAP_PATH' => ARCHIVARIX_SITEMAP_PATH, 'ARCHIVARIX_CATCH_MISSING' => ARCHIVARIX_CATCH_MISSING, + 'WORDPRESS_FIX_MISSING_VERSION' => WORDPRESS_FIX_MISSING_VERSION, ]; $ARCHIVARIX_SETTINGS = array(); @@ -285,6 +292,18 @@ function getFileMetadata( $dsn, $url ) return $metadata; } +function getOtherVersionUrls( $url ) +{ + global $dsn; + $path = parse_url($url, PHP_URL_PATH); + $pdo = new PDO( $dsn ); + $sth = $pdo->prepare( 'SELECT rowid, * FROM structure WHERE url LIKE :urlRegexVersion AND enabled = 1 ORDER BY filetime DESC LIMIT 1' ); + // TODO better LIKE statement based on domain + $sth->execute( ['urlRegexVersion' => 'http://%'.$path.'%'] ); + $metadata = $sth->fetch( PDO::FETCH_ASSOC ); + return $metadata; +} + /** * @return string */ @@ -431,6 +450,12 @@ function handle404( $sourcePath, $url ) http_response_code( 301 ); exit( 0 ); break; + case ( $LOADER['WORDPRESS_FIX_MISSING_VERSION'] ) : + $otherVersionFound = getOtherVersionUrls($url); + if ( $otherVersionFound ) { + render( $otherVersionFound, $sourcePath, $url ); + break; + } default: http_response_code( 404 ); } @@ -597,4 +622,4 @@ try { } catch ( \Exception $e ) { http_response_code( 503 ); error_log( $e ); -} \ No newline at end of file +}