WordPress.org

Make WordPress Core

Ticket #6392: xmlrpc_enclosure_support.diff

File xmlrpc_enclosure_support.diff, 2.5 KB (added by amandato, 7 years ago)
  • xmlrpc.php

     
    13411341                if ( isset($content_struct['custom_fields']) ) { 
    13421342                        $this->set_custom_fields($post_ID, $content_struct['custom_fields']); 
    13431343                } 
    1344  
     1344                 
     1345                if( isset($content_struct['enclosure']) ) { 
     1346                        $this->meta_enclosure( $post_ID, $content_struct['enclosure'] ); 
     1347                } 
     1348                 
    13451349                $this->attach_uploads( $post_ID, $post_content ); 
    13461350 
    13471351                logIO('O', "Posted ! ID: $post_ID"); 
     
    13621366                        } 
    13631367                } 
    13641368        } 
     1369         
     1370        function meta_enclosure( $post_ID, $enclosure_struct ) { 
     1371                global $wpdb; 
     1372                 
     1373                // Build the meta_value string for wordpress enclosure meta_value, 
     1374                // the first line is the URL, second is the length in bytes, and 
     1375                // the 3rd line is the content type 
     1376                 
     1377                $meta = array('key'=>'enclosure','value'=>'' ); 
     1378                if( isset($enclosure_struct['url']) ) 
     1379                { 
     1380                        $meta['value'] = $enclosure_struct['url']; 
     1381                        if( isset($enclosure_struct['length']) ) 
     1382                        { 
     1383                                $meta['value'] .= "\n" . $enclosure_struct['length']; 
     1384                                if( isset($enclosure_struct['type']) ) 
     1385                                        $meta['value'] .= "\n" . $enclosure_struct['type']; 
     1386                        } 
     1387                } 
     1388                 
     1389                // See if a previous enclosure exists... 
     1390                $meta_prev = $wpdb->get_row("SELECT meta_id, meta_value FROM {$wpdb->postmeta} WHERE post_id = '$post_ID' AND meta_key = 'enclosure'"); 
     1391                 
     1392                // Check to see if anything changed, if it's the same value, save a query 
     1393                if( $meta_prev && $meta_prev->meta_value == $meta['meta_value'] ) { 
     1394                        return; 
     1395                } 
     1396                         
     1397                // If it exists we need to deal with it... 
     1398                if( $meta_prev && $meta_prev->meta_id ) { 
     1399                        $meta['id'] = $meta_prev->meta_id; 
     1400                        if( $meta['value'] == '' ) 
     1401                                unset($meta['key']); // Unset the key so we delete the enclosure 
     1402                } 
     1403                 
     1404                // Doesn't exist in the database and it's been marked for deletion, so do nothing 
     1405                if( !isset($meta['id']) && !isset($meta['key']) ) 
     1406                        return; 
     1407                 
     1408                // Update the custom field in the database 
     1409                $this->set_custom_fields($post_ID, array($meta) ); 
     1410        } 
    13651411 
    13661412        /* metaweblog.editPost ...edits a post */ 
    13671413        function mw_editPost($args) { 
     
    15971643                if ( isset($content_struct['custom_fields']) ) { 
    15981644                        $this->set_custom_fields($post_ID, $content_struct['custom_fields']); 
    15991645                } 
    1600  
     1646                 
     1647                if( isset($content_struct['enclosure']) ) { 
     1648                        $this->meta_enclosure( $post_ID, $content_struct['enclosure'] ); 
     1649                } 
     1650                 
    16011651                $this->attach_uploads( $ID, $post_content ); 
    16021652 
    16031653                logIO('O',"(MW) Edited ! ID: $post_ID");