Make WordPress Core


Ignore:
Timestamp:
11/09/2005 09:30:40 PM (21 years ago)
Author:
ryan
Message:

Fix commit gone wild.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/functions.php

    r3025 r3026  
    261261
    262262function get_settings($setting) {
    263         global $wpdb, $cache_settings, $cache_nonexistantoptions;
     263        global $wpdb;
    264264        if ( strstr($_SERVER['REQUEST_URI'], 'wp-admin/install.php') || defined('WP_INSTALLING') )
    265265                return false;
    266266
    267         if ( empty($cache_settings) )
    268                 $cache_settings = get_alloptions();
    269 
    270         if ( empty($cache_nonexistantoptions) )
    271                 $cache_nonexistantoptions = array();
    272 
    273         if ( 'home' == $setting && '' == $cache_settings->home )
    274                 return apply_filters('option_' . $setting, $cache_settings->siteurl);
    275 
    276         if ( isset($cache_settings->$setting) ) :
    277                 return apply_filters('option_' . $setting, $cache_settings->$setting);
    278         else :
    279                 // for these cases when we're asking for an unknown option
    280                 if ( isset($cache_nonexistantoptions[$setting]) )
    281                         return false;
    282 
    283                 $option = $wpdb->get_var("SELECT option_value FROM $wpdb->options WHERE option_name = '$setting'");
    284 
    285                 if (!$option) :
    286                         $cache_nonexistantoptions[$setting] = true;
    287                         return false;
    288                 endif;
    289 
    290                 @ $kellogs = unserialize($option);
    291                 if ( $kellogs !== FALSE )
    292                         return apply_filters('option_' . $setting, $kellogs);
    293                 else return apply_filters('option_' . $setting, $option);
    294         endif;
     267        $value = wp_cache_get($setting, 'options');
     268
     269        if ( false === $value ) {
     270                $value = $wpdb->get_row("SELECT option_value FROM $wpdb->options WHERE option_name = '$setting'");
     271                if( is_object( $value ) ) {
     272                        $value = $value->option_value;
     273                        wp_cache_set($setting, $value, 'options');
     274                }
     275        }
     276
     277        // If home is not set use siteurl.
     278        if ( 'home' == $setting && '' == $value )
     279                return get_settings('siteurl');
     280
     281        if ( 'siteurl' == $setting || 'home' == $setting || 'category_base' == $setting )
     282                $value = preg_replace('|/+$|', '', $value);
     283
     284        @ $kellogs = unserialize($value);
     285        if ( $kellogs !== FALSE )
     286                return apply_filters('option_' . $setting, $kellogs);
     287        else
     288                return apply_filters('option_' . $setting, $value);
    295289}
    296290
     
    339333
    340334function update_option($option_name, $newvalue) {
    341         global $wpdb, $cache_settings;
     335        global $wpdb;
    342336
    343337        if ( is_string($newvalue) )
     
    353347        // If it's not there add it
    354348        if ( !$wpdb->get_var("SELECT option_name FROM $wpdb->options WHERE option_name = '$option_name'") )
    355                 add_option($option_name);
     349                add_option($option_name, $newvalue);
     350
     351        wp_cache_set($option_name, $newvalue, 'options');
    356352
    357353        $newvalue = $wpdb->escape($newvalue);
    358         $option_name = $wpdb->escape( $option_name );
     354        $option_name = $wpdb->escape($option_name);
    359355        $wpdb->query("UPDATE $wpdb->options SET option_value = '$newvalue' WHERE option_name = '$option_name'");
    360         $cache_settings = get_alloptions(); // Re cache settings
    361356        return true;
    362357}
     
    371366// thx Alex Stapleton, http://alex.vort-x.net/blog/
    372367function add_option($name, $value = '', $description = '', $autoload = 'yes') {
    373         global $wpdb, $cache_settings;
     368        global $wpdb;
    374369
    375370        // Make sure the option doesn't already exist
    376         if ( isset($cache_settings->$name) )
     371        if ( false !== get_option($name) )
    377372                return;
    378373
     
    381376                $value = serialize($value);
    382377
    383         if ( !$wpdb->get_var("SELECT option_name FROM $wpdb->options WHERE option_name = '$name'") ) {
    384                 $name = $wpdb->escape($name);
    385                 $value = $wpdb->escape($value);
    386                 $description = $wpdb->escape($description);
    387                 $wpdb->query("INSERT INTO $wpdb->options (option_name, option_value, option_description, autoload) VALUES ('$name', '$value', '$description', '$autoload')");
    388 
    389                 if ( $wpdb->insert_id ) {
    390                         global $cache_settings;
    391                         $cache_settings->{$name} = $original;
    392                 }
    393         }
     378        wp_cache_set($name, $value, 'options');
     379
     380        $name = $wpdb->escape($name);
     381        $value = $wpdb->escape($value);
     382        $description = $wpdb->escape($description);
     383        $wpdb->query("INSERT INTO $wpdb->options (option_name, option_value, option_description, autoload) VALUES ('$name', '$value', '$description', '$autoload')");
     384
    394385        return;
    395386}
     
    401392        if ( !$option_id ) return false;
    402393        $wpdb->query("DELETE FROM $wpdb->options WHERE option_name = '$name'");
     394        wp_cache_delete($name, 'options');
    403395        return true;
    404396}
     
    569561                        $_post = & $post_cache[$post];
    570562                else {
    571                         $query = "SELECT * FROM $wpdb->posts WHERE ID = '$post'";
     563                        $query = "SELECT * FROM $wpdb->posts WHERE ID = '$post' LIMIT 1";
    572564                        $post_cache[$post] = & $wpdb->get_row($query);
    573565                        $_post = & $post_cache[$post];
     
    589581// Handles page caching.
    590582function &get_page(&$page, $output = OBJECT) {
    591         global $page_cache, $wpdb;
     583        global $wpdb;
    592584
    593585        if ( empty($page) ) {
    594                 if ( isset($GLOBALS['page']) )
     586                if ( isset($GLOBALS['page']) ) {
    595587                        $_page = & $GLOBALS['page'];
    596                 else
     588                        wp_cache_add($_page->ID, $_page, 'pages');
     589                } else {
    597590                        $_page = null;
     591                }
    598592        } elseif ( is_object($page) ) {
    599                 if ( !isset($page_cache[$page->ID]) )
    600                         $page_cache[$page->ID] = &$page;
    601                 $_page = & $page_cache[$page->ID];
    602         } else {
    603                 if ( isset($GLOBALS['page']) && ($page == $GLOBALS['page']->ID) )
     593                wp_cache_add($page->ID, $page, 'pages');
     594                $_page = $page;
     595        } else {
     596                if ( isset($GLOBALS['page']) && ($page == $GLOBALS['page']->ID) ) {
    604597                        $_page = & $GLOBALS['page'];
    605                 elseif ( isset($page_cache[$page]) )
    606                         $_page = & $page_cache[$page];
    607                 else {
    608                         $query = "SELECT * FROM $wpdb->posts WHERE ID= '$page'";
    609                         $page_cache[$page] = & $wpdb->get_row($query);
    610                         $_page = & $page_cache[$page];
     598                        wp_cache_add($_page->ID, $_page, 'pages');
     599                } elseif ( $_page = wp_cache_get($page, 'pages') ) {
     600                        // Got it.
     601                } else {
     602                        $query = "SELECT * FROM $wpdb->posts WHERE ID= '$page' LIMIT 1";
     603                        $_page = & $wpdb->get_row($query);
     604                        wp_cache_add($_page->ID, $_page, 'pages');
    611605                }
    612606        }
     
    623617}
    624618
     619function set_category_path($cat) {
     620        $cat->fullpath = '/' . $cat->category_nicename;
     621        $path = $cat->fullpath;
     622        $curcat = $cat;
     623        while ($curcat->category_parent != 0) {
     624                $curcat = get_category($curcat->category_parent);
     625                $path = '/' . $curcat->category_nicename . $path;
     626        }
     627       
     628        $cat->fullpath = $path;
     629
     630        return $cat;
     631}
     632
    625633// Retrieves category data given a category ID or category object.
    626634// Handles category caching.
    627635function &get_category(&$category, $output = OBJECT) {
    628         global $cache_categories, $wpdb;
     636        global $wpdb;
    629637
    630638        if ( empty($category) )
    631639                return null;
    632640
    633         if ( !isset($cache_categories) )
    634                 update_category_cache();
    635 
    636641        if ( is_object($category) ) {
    637                 if ( !isset($cache_categories[$category->cat_ID]) )
    638                         $cache_categories[$category->cat_ID] = &$category;
    639                 $_category = & $cache_categories[$category->cat_ID];
    640         } else {
    641                 if ( !isset($cache_categories[$category]) ) {
    642                         $_category = $wpdb->get_row("SELECT * FROM $wpdb->categories WHERE cat_ID = '$category'");
    643                         $cache_categories[$category->cat_ID] = & $_category;
    644                 } else {
    645                         $_category = & $cache_categories[$category];
    646                 }
     642                wp_cache_add($category->cat_ID, $category, 'category');
     643                $_category = $category;
     644        } else {
     645                if ( ! $_category = wp_cache_get($category, 'category') ) {
     646                        $_category = $wpdb->get_row("SELECT * FROM $wpdb->categories WHERE cat_ID = '$category' LIMIT 1");
     647                        wp_cache_add($category, $_category, 'category');
     648                }
     649        }
     650
     651        if ( !isset($_category->fullpath) ) {
     652                $_category = set_category_path($_category);
     653                wp_cache_replace($_category->cat_ID, $_category, 'category');   
    647654        }
    648655
     
    672679        } else {
    673680                if ( !isset($comment_cache[$comment]) ) {
    674                         $_comment = $wpdb->get_row("SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment'");
     681                        $_comment = $wpdb->get_row("SELECT * FROM $wpdb->comments WHERE comment_ID = '$comment' LIMIT 1");
    675682                        $comment_cache[$comment->comment_ID] = & $_comment;
    676683                } else {
     
    693700        $category = &get_category($cat_ID);
    694701        return $category->cat_name;
     702}
     703
     704function get_all_category_ids() {
     705        global $wpdb;
     706       
     707        if ( ! $cat_ids = wp_cache_get('all_category_ids', 'category') ) {
     708                $cat_ids = $wpdb->get_col("SELECT cat_ID FROM $wpdb->categories");
     709                wp_cache_add('all_category_ids', $cat_ids, 'category');
     710        }
     711       
     712        return $cat_ids;
    695713}
    696714
     
    12321250        for ($i = 0; $i < count($pages); $i++) {
    12331251                $page_cache[$pages[$i]->ID] = &$pages[$i];
     1252                wp_cache_add($pages[$i]->ID, $pages[$i], 'pages');
    12341253        }
    12351254}
     
    12441263
    12451264function update_post_category_cache($post_ids) {
    1246         global $wpdb, $category_cache, $cache_categories;
     1265        global $wpdb, $category_cache;
    12471266
    12481267        if ( empty($post_ids) )
     
    12561275        WHERE category_id = cat_ID AND post_id IN ($post_ids)");
    12571276
    1258         if ( !isset($cache_categories) )
    1259                 update_category_cache();
    1260 
    1261         if ( !empty($dogs) ) {
    1262                 foreach ($dogs as $catt) {
    1263                         $category_cache[$catt->post_id][$catt->cat_ID] = &$cache_categories[$catt->cat_ID];
    1264                 }
    1265         }
     1277        if ( empty($dogs) )
     1278                return;
     1279               
     1280        foreach ($dogs as $catt)
     1281                $category_cache[$catt->post_id][$catt->cat_ID] = &get_category($catt->cat_ID);
    12661282}
    12671283
     
    13231339
    13241340function update_category_cache() {
    1325         global $cache_categories, $wpdb;
    1326         if ( $dogs = $wpdb->get_results("SELECT * FROM $wpdb->categories") ):
    1327                 foreach ($dogs as $catt)
    1328                         $cache_categories[$catt->cat_ID] = $catt;
    1329 
    1330                 foreach ($cache_categories as $catt) {
    1331                         $curcat = $catt->cat_ID;
    1332                         $cache_categories[$catt->cat_ID]->fullpath = '/' . $cache_categories[$catt->cat_ID]->category_nicename;
    1333                         while ($cache_categories[$curcat]->category_parent != 0) {
    1334                                 $curcat = $cache_categories[$curcat]->category_parent;
    1335                                 $cache_categories[$catt->cat_ID]->fullpath = '/' . $cache_categories[$curcat]->category_nicename . $cache_categories[$catt->cat_ID]->fullpath;
    1336                         }
    1337                 }
    1338                 return true;
    1339         else :
    1340                 return false;
    1341         endif;
    1342 }
    1343 
    1344 function clean_user_cache($id) {
    1345         global $cache_userdata;
    1346 
    1347         if ( isset( $cache_userdata[$id] ) )
    1348                 unset( $cache_userdata[$id] );
     1341        return true;
    13491342}
    13501343
     
    21242117        if ( $cur->meta_value != $meta_value )
    21252118                $wpdb->query("UPDATE $wpdb->usermeta SET meta_value = '$meta_value' WHERE user_id = '$user_id' AND meta_key = '$meta_key'");
     2119
     2120        wp_cache_delete($user_id, 'users');
     2121        // FIXME: Need to delete username keyed cache object.
    21262122}
    21272123
Note: See TracChangeset for help on using the changeset viewer.