<?php
/*
Plugin Name: Next-Previous Page
Version: 0.3
Plugin URI: http://wordpress.org/support/topic/43071
Description: Next and Previous Page navigation; by post date or Page (menu) order.
Author: Kaf Oseo
Author URI: http://szub.net

    Copyright (c) 2005, 2007 Kaf Oseo (http://szub.net)
    Next-Previous Page is released under the GNU General Public
    License (GPL) http://www.gnu.org/licenses/gpl.txt

    This is a WordPress plugin (http://wordpress.org).

~Changelog:
0.3 (Oct-30-2007)
Update to support WordPress 2.3.

0.2 (Aug-28-2005)
Added feature for organizing next/previous Pages by menu order.
*/

function next_page($orderby='post_date'$link='Next Page: %'$before=''$after=''$title_attr='Next Page: %') {
    global 
$wpdb$wp_query$wp_version;

    if(
is_page()) {
        
$post $wp_query->post;
        if((
'page_order' == $orderby) || ('menu_order' == $orderby)) {
            
$orderby 'menu_order';
            
$typeselect "menu_order > '$post->menu_order'";
        } else {
            
$orderby 'post_date';
            
$typeselect "post_date > '$post->post_date'";
        }

        
$pagestatus = ($wp_version >= 2.3) ? "post_type = 'page' AND post_status = 'publish'" "post_status = 'static'";
        
$nextpage = @$wpdb->get_row("SELECT ID, post_title FROM $wpdb->posts WHERE $typeselect AND $pagestatus AND ID != $post->ID ORDER BY $orderby ASC LIMIT 0, 1");

        if (
$nextpage) {
            
$title apply_filters('the_title'$nextpage->post_title);
            
$link str_replace('%'$title$link);
            
$title_attr str_replace('%'$title$title_attr);

            echo 
$before.'<a href="'.get_permalink($nextpage->ID).'"';
            if(
$title_attr)
                echo 
' title="'.$title_attr.'"';
            echo 
'>'.$link.'</a>'.$after;
        }
    }
}

function 
previous_page($orderby='post_date'$link='Previous Page: %'$before=''$after=''$title_attr='Previous Page: %') {
    global 
$wpdb$wp_query$wp_version;

    if(
is_page()) {
        
$post $wp_query->post;
        if((
'page_order' == $orderby) || ('menu_order' == $orderby)) {
            
$orderby 'menu_order';
            
$typeselect "menu_order < '$post->menu_order'";
        } else {
            
$orderby 'post_date';
            
$typeselect "post_date < '$post->post_date'";
        }

        
$pagestatus = ($wp_version >= 2.3) ? "post_type = 'page' AND post_status = 'publish'" "post_status = 'static'";
        
$lastpage = @$wpdb->get_row("SELECT ID, post_title FROM $wpdb->posts WHERE $typeselect AND $pagestatus AND ID != $post->ID ORDER BY $orderby DESC LIMIT 0, 1");

        if (
$lastpage) {
            
$title apply_filters('the_title'$lastpage->post_title);
            
$link str_replace('%'$title$link);
            
$title_attr str_replace('%'$title$title_attr);

            echo 
$before.'<a href="'.get_permalink($lastpage->ID).'"';
            if(
$title_attr)
                echo 
' title="'.$title_attr.'"';
            echo 
'>'.$link.'</a>'.$after;
        }
    }
}
?>