feat(archivarix): add wordpress fallback version urls
This commit is contained in:
parent
a1a702b386
commit
5ff62ba34a
|
@ -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 );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user