Ticket #5183: general_meta_table.diff

File general_meta_table.diff, 4.4 kB (added by filosofo, 1 year ago)
  • wp-includes/functions.php

    old new  
    391391        return true; 
    392392} 
    393393 
     394function get_general_meta( $meta_type = '', $object_id = 0, $meta_key = '') { 
     395        global $wpdb; 
     396        $object_id = (int) $object_id; 
    394397 
     398        if ( !$object_id ) 
     399                return false; 
     400 
     401        if ( !empty($meta_key) ) { 
     402                $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key); 
     403                $metas = $wpdb->get_results("SELECT meta_value FROM $wpdb->meta WHERE object_id = '$object_id' AND meta_key = '$meta_key'"); 
     404        } else { 
     405                $metas = $wpdb->get_results("SELECT meta_value FROM $wpdb->meta WHERE object_id = '$object_id'"); 
     406        } 
     407 
     408        if ( empty($metas) ) { 
     409                if ( empty($meta_key) ) 
     410                        return array(); 
     411                else 
     412                        return ''; 
     413        } 
     414 
     415        foreach ($metas as $meta)  
     416                $values[] = maybe_unserialize($meta->meta_value); 
     417 
     418        if ( count($values) == 1 ) 
     419                return $values[0]; 
     420        else 
     421                return $values; 
     422} 
     423 
     424function update_general_meta( $meta_type = '', $object_id = 0, $meta_key = '', $meta_value = '') { 
     425        global $wpdb; 
     426        $object_id = (int) $object_id; 
     427 
     428        if ( !$object_id ) 
     429                return false; 
     430 
     431        if ( empty( $meta_key ) ) 
     432                return false; 
     433        $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key); 
     434        if ( is_string($meta_value) ) 
     435                $meta_value = stripslashes($meta_value); 
     436        $meta_value = maybe_serialize($meta_value); 
     437 
     438        $where = $wpdb->prepare("object_id = %d AND meta_key = %s ", $object_id, $meta_key); 
     439        $where .= ( empty($meta_type) ) ? '' : $wpdb->prepare("AND meta_type = %s ", $meta_type); 
     440 
     441        $cur = $wpdb->get_row("SELECT * FROM $wpdb->meta WHERE $where"); 
     442        if ( !$cur ) { 
     443                $wpdb->db_insert($wpdb->meta, array( 
     444                        'meta_type' => $meta_type, 
     445                        'object_id' => $object_id,  
     446                        'meta_key' => $meta_key, 
     447                        'meta_value' => $meta_value, 
     448                )); 
     449        } else if ( $cur->meta_value != $meta_value ) { 
     450                $wpdb->query($wpdb->prepare("UPDATE $wpdb->meta SET meta_value = %s WHERE $where",$meta_value)); 
     451        } else { 
     452                return false; 
     453        } 
     454        return true; 
     455} 
     456 
     457function delete_general_meta( $meta_type = '', $object_id = 0, $meta_key = '', $meta_value = '') { 
     458        global $wpdb; 
     459        $object_id = (int) $object_id; 
     460 
     461        if ( !$object_id ) 
     462                return false; 
     463 
     464        if ( empty( $meta_key ) ) 
     465                return false; 
     466        $meta_key = preg_replace('|[^a-z0-9_]|i', '', $meta_key); 
     467 
     468        if ( ! empty($meta_value) ) { 
     469                if ( is_string($meta_value) ) 
     470                        $meta_value = stripslashes($meta_value); 
     471                $meta_value = maybe_serialize($meta_value); 
     472        } 
     473 
     474        $where = $wpdb->prepare("object_id = %d AND meta_key = %s ", $object_id, $meta_key); 
     475        $where .= ( empty($meta_type) ) ? '' : $wpdb->prepare("AND meta_type = %s ", $meta_type); 
     476        $where .= ( empty($meta_value) ) ? '' : $wpdb->prepare("AND meta_value = %s ",$meta_value); 
     477 
     478        $cur = $wpdb->get_row("SELECT * FROM $wpdb->meta WHERE $where"); 
     479        if ( !$cur ) { 
     480                return false; 
     481        } else { 
     482                $wpdb->query("DELETE FROM $wpdb->meta WHERE $where"); 
     483        } 
     484        return true; 
     485} 
     486 
    395487function maybe_serialize( $data ) { 
    396488        if ( is_string( $data ) ) 
    397489                $data = trim( $data ); 
  • wp-settings.php

    old new  
    135135$wpdb->link2cat       = $wpdb->prefix . 'link2cat'; 
    136136$wpdb->links          = $wpdb->prefix . 'links'; 
    137137$wpdb->options        = $wpdb->prefix . 'options'; 
     138$wpdb->meta           = $wpdb->prefix . 'meta'; 
    138139$wpdb->postmeta       = $wpdb->prefix . 'postmeta'; 
    139140$wpdb->usermeta       = $wpdb->prefix . 'usermeta'; 
    140141$wpdb->terms          = $wpdb->prefix . 'terms'; 
  • wp-admin/includes/schema.php

    old new  
    1010                $charset_collate .= " COLLATE $wpdb->collate"; 
    1111} 
    1212 
    13 $wp_queries="CREATE TABLE $wpdb->terms ( 
     13$wp_queries="CREATE TABLE $wpdb->meta ( 
     14  meta_id bigint(20) NOT NULL auto_increment, 
     15  object_id bigint(20) NOT NULL default '0', 
     16  meta_type varchar(32) NOT NULL default '', 
     17  meta_key varchar(255) default NULL, 
     18  meta_value longtext, 
     19  PRIMARY KEY  (meta_id), 
     20  KEY object_id (object_id), 
     21  KEY meta_type (meta_type), 
     22  KEY meta_key (meta_key) 
     23) $charset_collate; 
     24CREATE TABLE $wpdb->terms ( 
    1425 term_id bigint(20) NOT NULL auto_increment, 
    1526 name varchar(55) NOT NULL default '', 
    1627 slug varchar(200) NOT NULL default '',