Adding a url field to the boost_cache table will be better then this function.
function boost_reverse_urls_from_db($filename = NULL, $start = NULL, $end = NULL) {
Global $base_url;
$urls = array();
if (!isset($filename) && !isset($start) && !isset($end)) {
$result = db_query('SELECT filename, base_dir, extension FROM {boost_cache}');
}
elseif (!isset($filename) && isset($start) && isset($end)) (
$result = db_query_range('SELECT filename, base_dir, extension FROM {boost_cache}', $start, $end);
}
elseif (isset($filename)) (
$result = db_query("SELECT filename, base_dir, extension FROM {boost_cache} WHERE filename = '%s'", $filename);
}
else {
return FALSE;
}
while ($boost = db_fetch_array($result)) {
$url = explode($boost['base_dir'], $boost['filename']);
array_shift($url);
$url = ltrim(implode($boost['base_dir'], $url), '/');
$url = explode($boost['extension'], $url);
array_pop($url);
$url = implode($boost['extension'], $url);
$len_before = strlen($url);
$url = rtrim($url, '_');
$len_after = strlen($url);
if ($len_before != $len_after) {
$urls[] = $base_url . '/' . $url;
}
else {
//query string in URL
$temp = explode('=', $url);
if (substr_count($temp[0], '_') <= 1) {
$temp[0] = str_replace('_', '?', $temp[0]);
$url = implode('=', $temp);
$urls[] = $base_url . '/' . $url;
}
else {
$strings = explode('_', $temp[0]);
$search = '';
$found = FALSE;
foreach($strings as $str) {
$search .= $str;
// Try Menu Router
if (db_fetch_array(db_query("SELECT path FROM {menu_router} WHERE path = '%s'", $search))) {
$found = TRUE;
break;
}
// Try URL Alias
elseif (db_fetch_array(db_query("SELECT dst FROM {url_alias} WHERE dst = '%s'", $search))) {
$found = TRUE;
break;
}
$search .= '_';
}
if ($found == TRUE) {
$url = str_replace($search . '_', $search . '?', $url);
$urls[] = $base_url . '/' . $url;
}
else {
//$urls[] = FALSE;
}
}
}
}
return $urls;
}
Comments
Comment #1
mikeytown2 commentedComment #2
mikeytown2 commentedcommitted