Make WordPress Core


Ignore:
Timestamp:
07/20/2011 10:04:35 PM (14 years ago)
Author:
ryan
Message:

Introduce register_meta(), get_metadata_by_mid(), and *_post_meta capabilities. fixes #17850

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/class-wp-xmlrpc-server.php

    r18254 r18445  
    235235        foreach ( (array) has_meta($post_id) as $meta ) {
    236236            // Don't expose protected fields.
    237             if ( strpos($meta['meta_key'], '_wp_') === 0 ) {
     237            if ( ! current_user_can( 'edit_post_meta', $post_id , $meta['meta_key'] ) )
    238238                continue;
    239             }
    240239
    241240            $custom_fields[] = array(
     
    263262            if ( isset($meta['id']) ) {
    264263                $meta['id'] = (int) $meta['id'];
    265 
     264                $pmeta = get_metadata_by_mid( 'post', $meta['id'] );
    266265                if ( isset($meta['key']) ) {
    267                     update_meta($meta['id'], $meta['key'], $meta['value']);
     266                    if ( $meta['key'] != $pmeta->meta_key )
     267                        continue;
     268                    if ( current_user_can( 'edit_post_meta', $post_id, $meta['key'] ) )
     269                        update_meta( $meta['id'], $meta['key'], $meta['value'] );
     270                } elseif ( current_user_can( 'delete_post_meta', $post_id, $pmeta->meta_key ) ) {
     271                        delete_meta( $meta['id'] );
    268272                }
    269                 else {
    270                     delete_meta($meta['id']);
    271                 }
    272             }
    273             else {
    274                 $_POST['metakeyinput'] = $meta['key'];
    275                 $_POST['metavalue'] = $meta['value'];
    276                 add_meta($post_id);
     273            } elseif ( current_user_can( 'add_post_meta', $post_id, $meta['key'] ) ) {
     274                    add_post_meta( $post_id, $meta['key'], $meta['value'] );
    277275            }
    278276        }
Note: See TracChangeset for help on using the changeset viewer.