private function prepare_alias_lookup()
{
if (!empty($this->handlers)) {
$fields = array();
foreach ($this->handlers as $key => $value) {
$fields[] = "'" . $value . "'";
}
$handlers = implode(",", $fields);
$query = "SELECT * FROM " . DB_PERMALINK_ALIAS . " WHERE alias_type IN(" . $handlers . ")";
$this->queries[] = $query;
$aliases = dbquery($query);
if (dbrows($aliases)) {
while ($alias = dbarray($aliases)) {
//$this->replaceAliasPatterns($data);
$alias_php_url = $this->getAliasURL($alias['alias_url'], $alias['alias_php_url'], $alias['alias_type']);
$field = $alias['alias_type'];
if (array_key_exists(1, $alias_php_url) && strcmp(PERMALINK_CURRENT_PATH, $alias_php_url[1]) == 0) {
$this->redirect_301($alias_php_url[0]);
}
// Check If there are any Alias Patterns defined for this Type or not
if (array_key_exists($field, $this->alias_pattern)) {
foreach ($this->alias_pattern[$field] as $replace => $search) {
// Secondly, Replace %alias_target% with Alias PHP URL
$search = str_replace("%alias_target%", $alias['alias_php_url'], $search);
$search_string = $search;
$alias_search = str_replace($this->rewrite_code[$field], $this->rewrite_replace[$field], $search_string);
$alias_search = $this->cleanRegex($alias_search);
$alias_search = "~^" . $alias_search . "\$";
// Now Replace Pattern Tags with suitable Regex Codes
$search = $this->makeSearchRegex($search, $field);
// If the Pattern is found in the Output
if (preg_match($search, $this->output)) {
// Search them all and put them in $matches
preg_match_all($search, $this->output, $matches);
// $matches[0] represents the Array of all the matches for this Pattern
foreach ($matches[0] as $count => $match) {
// First of all, Replace %alias% with the actual Alias Name
$replace_str = str_replace("%alias%", $alias['alias_url'], $replace);
$match = $this->cleanRegex($match);
// Replace Tags with their suitable matches
$replace_str = $this->replaceOtherTags($field, $search_string, $replace_str, $matches, $count);
$replace_str = $this->cleanURL($replace_str);
$this->regex_statements['alias'][$field][] = array($match => $replace_str);
$this->regex_statements['alias_redirect'][$field][] = array($alias_search => $replace_str);
}
} else {
$this->regex_statements['failed_alias'][$field][] = array("search" => $search, "status" => "failed");
}
}
}
$this->aliases[] = $alias;
}
}
}
}