Changeset 1752

Show
Ignore:
Timestamp:
10/06/04 02:18:37 (4 years ago)
Author:
rboren
Message:

Page/subpage URIs.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/wp-admin/admin-functions.php

    r1747 r1752  
    486486} 
    487487 
     488function save_mod_rewrite_rules() { 
     489    global $is_apache; 
     490    $home = get_settings('home'); 
     491    if ( $home != '' && $home != get_settings('siteurl') ) { 
     492        $home_path = parse_url($home); 
     493        $home_path = $home_root['path']; 
     494        $root = str_replace($_SERVER["PHP_SELF"], '', $_SERVER["PATH_TRANSLATED"]); 
     495        $home_path = $root . $home_path . "/"; 
     496    } else { 
     497        $home_path = ABSPATH; 
     498    } 
     499 
     500    if ( (!file_exists($home_path.'.htaccess') && is_writable($home_path)) || is_writable($home_path.'.htaccess') ) 
     501        $writable = true; 
     502    else 
     503        $writable = false; 
     504 
     505    $permalink_structure = get_settings('permalink_structure'); 
     506 
     507    if ( strstr($permalink_structure, 'index.php') ) // If they're using  
     508        $usingpi = true; 
     509    else 
     510        $usingpi = false; 
     511 
     512    if ( $writable && !$usingpi && $is_apache ) { 
     513        $rules = explode("\n", mod_rewrite_rules($permalink_structure)); 
     514        insert_with_markers($home_path.'.htaccess', 'WordPress', $rules); 
     515    } 
     516} 
     517 
     518function generate_page_rewrite_rules() { 
     519    global $wpdb; 
     520    $posts = $wpdb->get_results("SELECT ID, post_name FROM $wpdb->posts WHERE post_status = 'static'"); 
     521 
     522    $page_rewrite_rules = array(); 
     523 
     524    foreach ($posts as $post) { 
     525        // URI => page name 
     526        $uri = get_page_uri($post->ID); 
     527 
     528        $page_rewrite_rules[$uri] = $post->post_name; 
     529    } 
     530 
     531    update_option('page_uris', $page_rewrite_rules); 
     532 
     533    save_mod_rewrite_rules(); 
     534} 
     535 
    488536function the_quicktags () { 
    489537// Browser detection sucks, but until Safari supports the JS needed for this to work people just assume it's a bug in WP 
     
    708756} 
    709757 
    710 function parent_dropdown($parent = 0, $level = 0) { 
     758function parent_dropdown($default = 0, $parent = 0, $level = 0) { 
    711759    global $wpdb; 
    712760    $items = $wpdb->get_results("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = $parent AND post_status = 'static' ORDER BY menu_order"); 
     
    714762        foreach ($items as $item) { 
    715763            $pad = str_repeat(' ', $level * 3); 
    716             if ($item->ID == $current) 
     764            if ($item->ID == $default) 
    717765                $current = ' selected="selected"'; 
    718766            else 
     
    720768 
    721769            echo "\n\t<option value='$item->ID'$current>$pad $item->post_title</a></option>"; 
    722                parent_dropdown($item->ID, $level + 1); 
     770            parent_dropdown($default, $item->ID, $level + 1); 
    723771        } 
    724772    } else { 
  • trunk/wp-admin/edit-page-form.php

    r1747 r1752  
    5353      <div><select name="parent_id"> 
    5454        <option value='0'>Main Page (no parent)</option> 
    55             <?php parent_dropdown(); ?> 
     55            <?php parent_dropdown($post_parent); ?> 
    5656        </select> 
    5757      </div> 
  • trunk/wp-admin/edit-pages.php

    r1747 r1752  
    6868    $ping_status = get_settings('default_ping_status'); 
    6969    $post_pingback = get_settings('default_pingback_flag'); 
     70    $post_parent = 0; 
    7071 
    7172    include('edit-page-form.php'); 
  • trunk/wp-admin/options-permalink.php

    r1689 r1752  
    3232} 
    3333 
     34generate_page_rewrite_rules(); 
     35 
    3436if ( (!file_exists($home_path.'.htaccess') && is_writable($home_path)) || is_writable($home_path.'.htaccess') ) 
    3537    $writable = true; 
     
    4244    $usingpi = false; 
    4345 
    44 if ( $writable && !$usingpi && $is_apache ) { 
    45     $rules = explode("\n", mod_rewrite_rules($permalink_structure)); 
    46     insert_with_markers($home_path.'.htaccess', 'WordPress', $rules); 
    47 
     46save_mod_rewrite_rules(); 
    4847?> 
    4948 
  • trunk/wp-admin/post.php

    r1751 r1752  
    5757        $post_status = $_POST['post_status']; 
    5858        $post_name = $_POST['post_name']; 
     59        $post_parent = 0; 
     60        if (isset($_POST['parent_id'])) { 
     61            $post_parent = $_POST['parent_id']; 
     62        } 
    5963 
    6064        if (empty($post_status)) $post_status = 'draft'; 
     
    109113 
    110114    $postquery ="INSERT INTO $wpdb->posts 
    111             (ID, post_author, post_date, post_date_gmt, post_content, post_title, post_excerpt,  post_status, comment_status, ping_status, post_password, post_name, to_ping, post_modified, post_modified_gmt
     115            (ID, post_author, post_date, post_date_gmt, post_content, post_title, post_excerpt,  post_status, comment_status, ping_status, post_password, post_name, to_ping, post_modified, post_modified_gmt, post_parent
    112116            VALUES 
    113             ('0', '$user_ID', '$now', '$now_gmt', '$content', '$post_title', '$excerpt', '$post_status', '$comment_status', '$ping_status', '$post_password', '$post_name', '$trackback', '$now', '$now_gmt'
     117            ('0', '$user_ID', '$now', '$now_gmt', '$content', '$post_title', '$excerpt', '$post_status', '$comment_status', '$ping_status', '$post_password', '$post_name', '$trackback', '$now', '$now_gmt', '$post_parent'
    114118            "; 
    115119 
     
    195199    } // end if publish 
    196200 
     201    if ($post_status = 'static') { 
     202        generate_page_rewrite_rules(); 
     203    } 
     204 
    197205    exit(); 
    198206    break; 
     
    223231        $pinged = $postdata->pinged; 
    224232        $post_name = $postdata->post_name; 
    225  
    226         if ($post_status == 'static') { 
    227             include('edit-page-form.php'); 
    228         } else { 
    229             include('edit-form-advanced.php'); 
    230         } 
     233        $post_parent = $postdata->post_parent; 
     234 
     235        if ($post_status == 'static') { 
     236            include('edit-page-form.php'); 
     237        } else { 
     238            include('edit-form-advanced.php'); 
     239        } 
    231240 
    232241        $post = $wpdb->get_row("SELECT * FROM $wpdb->posts WHERE ID = '$post_ID'"); 
     
    287296        if (empty($post_name)) { 
    288297          $post_name = $post_title; 
     298        } 
     299 
     300        $post_parent = 0; 
     301        if (isset($_POST['parent_id'])) { 
     302            $post_parent = $_POST['parent_id']; 
    289303        } 
    290304 
     
    354368            to_ping = '$trackback', 
    355369            post_modified = '$now', 
    356             post_modified_gmt = '$now_gmt' 
     370            post_modified_gmt = '$now_gmt', 
     371      post_parent = '$post_parent' 
    357372        WHERE ID = $post_ID "); 
    358373 
     
    421436        } 
    422437    } // end if publish 
     438 
     439    if ($post_status = 'static') { 
     440        generate_page_rewrite_rules(); 
     441    } 
    423442 
    424443    do_action('edit_post', $post_ID); 
  • trunk/wp-admin/upgrade-schema.php

    r1749 r1752  
    212212    add_option('stylesheet', 'default'); 
    213213    add_option('comment_whitelist', 0); 
     214    add_option('page_uris'); 
    214215 
    215216    // Delete unused options 
  • trunk/wp-includes/functions.php

    r1746 r1752  
    12161216} 
    12171217 
     1218function get_page_uri($page) { 
     1219    global $wpdb; 
     1220    $page = $wpdb->get_row("SELECT post_name, post_parent FROM $wpdb->posts WHERE ID = '$page'"); 
     1221 
     1222    $uri = $page->post_name; 
     1223 
     1224    while ($page->post_parent != 0) { 
     1225        $page = $wpdb->get_row("SELECT post_name, post_parent FROM $wpdb->posts WHERE ID = '$page->post_parent'"); 
     1226        $uri = $page->post_name . "/" . $uri; 
     1227    } 
     1228 
     1229    return $uri; 
     1230} 
     1231 
     1232function page_rewrite_rules() { 
     1233    $uris = get_settings('page_uris'); 
     1234 
     1235    $rewrite_rules = array(); 
     1236    foreach ($uris as $uri => $pagename) { 
     1237        $rewrite_rules += array($uri . '/?$' => "index.php?pagename=$pagename"); 
     1238    } 
     1239 
     1240    return $rewrite_rules; 
     1241} 
     1242 
    12181243function generate_rewrite_rules($permalink_structure = '', $matches = '') { 
    12191244    $rewritecode =  
     
    14101435    $page_rewrite = generate_rewrite_rules($page_structure, $matches); 
    14111436 
     1437        // Pages 
     1438        $pages_rewrite = page_rewrite_rules(); 
     1439 
    14121440    // Put them together. 
    1413     $rewrite = $site_rewrite + $page_rewrite + $search_rewrite + $category_rewrite + $author_rewrite; 
     1441    $rewrite = $pages_rewrite + $site_rewrite + $page_rewrite + $search_rewrite + $category_rewrite + $author_rewrite; 
    14141442 
    14151443    // Add on archive rewrite rules if needed. 
  • trunk/wp-includes/template-functions-links.php

    r1695 r1752  
    5050    } 
    5151 
     52    if ($idpost->post_status == 'static') { 
     53        return get_page_link(); 
     54    } 
     55     
    5256    $permalink = get_settings('permalink_structure'); 
    5357 
    5458    if ('' != $permalink) { 
    55         if ($idpost->post_status == 'static') 
    56             $permalink = page_permastruct(); 
    57  
    5859        $unixtime = strtotime($idpost->post_date); 
    5960 
     
    7980    } else { // if they're not using the fancy permalink option 
    8081        $permalink = get_settings('home') . '/' . get_settings('blogfilename') . '?p=' . $idpost->ID; 
    81         if ($idpost->post_status == 'static') 
    82             $permalink .=  '&static=1'; 
    8382        return $permalink; 
    8483    } 
     84} 
     85 
     86function get_page_link($id = false) { 
     87    global $post; 
     88 
     89    if (! $id) { 
     90        $id = $post->ID; 
     91    } 
     92 
     93    $permalink = get_settings('permalink_structure'); 
     94 
     95    if ('' != $permalink) { 
     96        $link = get_page_uri($id); 
     97        $link = get_settings('home') . "/$link/"; 
     98    } else { 
     99        $link = get_settings('home') . "/index.php?p=$id&static=1"; 
     100    } 
     101 
     102    return $link; 
    85103} 
    86104