/**
  * Called when the main execute function gets a 404 to check against old 
  * permalink structures and perform redirect if an old post can be 
  * matched.
  */
 function redirect_old_permalink($req_uri)
 {
     global $wp_query, $wp_rewrite;
     global $wp_version;
     $rules = get_option('permalink_redirect_rules');
     if (!$rules) {
         return;
     }
     // Backing up the rewrite object for you, imperative programmers!
     $wp_rewrite_old = $wp_rewrite;
     // Unsetting the globals. Argh! Evil global variables!
     foreach ($wp_query->query_vars as $key => $val) {
         unset($GLOBALS[$key]);
     }
     // Going through the rules.
     foreach ($rules as $rules2) {
         $wp2 = new WP();
         $wp_rewrite = new YLSY_Rewrite();
         $wp_rewrite->index = $wp_rewrite_old->index;
         $wp_rewrite->rules = $rules2;
         $wp2->parse_request();
         if (isset($wp2->query_vars['error']) && $wp2->query_vars['error'] == 404) {
             continue;
         }
         $query = new WP_Query();
         if ($wp_version >= '2.1') {
             $posts = $query->query($wp2->query_vars);
         } else {
             $wp2->build_query_string();
             $posts = $query->query($wp2->query_string);
         }
         if (count($posts) > 0) {
             $wp_rewrite = $wp_rewrite_old;
             $this->execute2($query, false);
             return;
         }
     }
     // Restoring global variables. We don't bother to reset the other
     // variables as we are going to do a 404 anyway.
     $wp_rewrite = $wp_rewrite_old;
 }