<?php
require '../db.connect.php';
$page_name = preg_replace( '/^[^a-z0-9]+|[^a-z0-9]+$/', '', strtolower( urldecode( $_SERVER['QUERY_STRING'] ) ) );
$page_keywords = array_unique( preg_split( '/[^a-z0-9]+/', $page_name ) );
$new_page_url = '';
$new_page_name = '';
$page_keywords_new = $page_keywords;
for ( $i = 0; $i < count( $page_keywords ); ++$i )
{
$keyword = $page_keywords[$i];
for ( $j = $i + 1; $j < count( $page_keywords ); ++$j )
{
$keyword .= '-' . $page_keywords[$j];
array_push( $page_keywords_new, $keyword );
}
}
$keyword_list = "'" . join( "','", $page_keywords_new ) . "'";
$blog_page_name = join( '-', $page_keywords );
$blog_page_query_string = <<<EOQ
SELECT bp.blogPostTitle
FROM tblBlogPosts bp
WHERE LOWER(bp.postURL) = ?
EOQ;
$blog_page_query = $mysql->prepare( $blog_page_query_string );
$blog_page_query->bind_param( 's', $blog_page_name );
$blog_page_query->execute();
$blog_page_query->bind_result( $blog_post_title );
if ( $blog_page_query->fetch() )
{
$blog_page_query->close();
header( sprintf( 'Location: /current/%s', $blog_page_name ) );
exit;
}
$blog_page_query->close();
$blog_keyword_query_string = <<<EOQ
SELECT
bp.blogPostID,
COUNT(*),
COUNT(*) / (
SELECT COUNT(*)
FROM tblBlogPostKeywords
WHERE blogPostID = bp.blogPostID
) AS keywordRating,
bp.postUrl,
bp.blogPostTitle
FROM
tblBlogPosts bp,
tblBlogPostKeywords bpk
WHERE
bp.blogPostID = bpk.blogPostID
AND bp.isVisible = 1
AND bpk.keyword IN ( $keyword_list )
GROUP BY
bp.blogPostID,
bp.blogPostTitle
ORDER BY
COUNT(*) DESC,
keywordRating DESC,
bp.blogPostID
EOQ;
// this one just redirects to the most likely page; the extra selects are
// left over from some old functionality that provided a menu.
//
// (note: can't use prepared statements with dynamic IN clauses)
$blog_keyword_query = $mysql->query( $blog_keyword_query_string );
if ( $blog_keyword_row = $blog_keyword_query->fetch_row() )
{
$blog_keyword_query->close();
header( sprintf( 'Location: /current/%s', $blog_keyword_row[3] ) );
exit;
}
$blog_keyword_query->close();
$new_page_query_string = <<<EOQ
SELECT
sp.sitePageURL,
IFNULL( spk.URLAppend, '' ),
sp.sitePageName,
COUNT(*),
COUNT(*) / (
SELECT COUNT(*)
FROM tblSitePageKeywords
WHERE sitePageID = sp.sitePageID
) AS keywordRating
FROM
tblSitePages sp,
tblKeywords k,
tblSitePageKeywords spk
WHERE
sp.sitePageID = spk.sitePageID
AND k.keywordID = spk.keywordID
AND k.keyword IN ( $keyword_list )
GROUP BY
sp.sitePageURL,
sp.sitePageName
ORDER BY
COUNT(*) DESC,
keywordRating DESC,
sp.sitePageName
EOQ;
$new_page_query = $mysql->query( $new_page_query_string );
if ( $new_page_row = $new_page_query->fetch_row() )
{
$new_page_query->close();
header( sprintf( 'Location: /%s%s', preg_replace( '/^\//', '', $new_page_row[0] ), $new_page_row[1] ) );
exit;
}
$new_page_query->close();
require '../classes/Page.php';
$page = new Page();
$page->setTitle( '404' );
$page->setColor( new PaletteColor( 102, 102, 102 ) );
$page->setFontColor( Palette::getColor( Palette::COLOR_WHITE ) );
$page->printPageHeader();
// note: removed old redirect functionality (JS/META implementation, no longer necessary)
?>
<h3>wisdom</h3>
<p>The page you are seeking is not here.</p>
<?php
$page->printPageFooter();
?>