WordPress.org

Make WordPress Core

Ticket #7607: wordpress_gallery-2.7.x.patch

File wordpress_gallery-2.7.x.patch, 21.7 KB (added by ShaneF, 7 years ago)

grrrr... extra space not needed

  • wp-admin/includes/media.php

     
    5555 
    5656        $html = get_image_tag($id, $alt, $title, $align, $size); 
    5757 
     58 
    5859        $rel = $rel ? ' rel="attachment wp-att-'.attribute_escape($id).'"' : ''; 
    5960 
    6061        if ( $url ) 
    61                 $html = '<a href="' . clean_url($url) . "\"$rel>$html</a>"; 
     62                $html = '<a href="' . clean_url($url) . "\" title=\"". attribute_escape($title) ."\"$rel>$html</a>"; 
    6263 
    6364        $html = apply_filters( 'image_send_to_editor', $html, $id, $alt, $title, $align, $url, $size ); 
    6465 
     
    256257                        $post['post_title'] = $attachment['post_title']; 
    257258                if ( isset($attachment['post_excerpt']) ) 
    258259                        $post['post_excerpt'] = $attachment['post_excerpt']; 
     260                if ( isset($attachment['group_number']) ) 
     261                        $post['group_number'] = $attachment['group_number']; 
    259262                if ( isset($attachment['menu_order']) ) 
    260263                        $post['menu_order'] = $attachment['menu_order']; 
    261264 
     
    274277                                wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false); 
    275278        } 
    276279 
    277         if ( isset($_POST['insert-gallery']) ) 
    278                 return media_send_to_editor('[gallery]'); 
    279  
     280        if ( isset($_POST['insert-gallery']) ) { 
     281                if ( isset($_POST['gallery_insert']) ) { 
     282                        return media_send_to_editor('[gallery group="'.$_POST['gallery_insert'].'"]'); 
     283                } else { 
     284                        return media_send_to_editor('[gallery]'); 
     285                } 
     286                 
     287        } 
     288         
     289        if ( isset($_POST['gallery_delete']) && !is_null($_POST['gallery_delete']) ) 
     290                wp_delete_gallery($post, $_POST['gallery_delete']); 
     291         
     292        if ( isset($_POST['new-gallery']) ) 
     293                wp_new_gallery($post); 
     294                 
    280295        if ( isset($_POST['send']) ) { 
    281296                $keys = array_keys($_POST['send']); 
    282297                $send_id = (int) array_shift($keys); 
     
    317332                        $align = attribute_escape($_POST['insertonly']['align']); 
    318333                        $class = " class='align$align'"; 
    319334                } 
     335                if ( isset($_POST['insertonly']['title']) ) { 
     336                        $title = " title='".attribute_escape($_POST['insertonly']['title'])."'"; 
     337                } 
    320338                if ( !empty($src) ) 
    321                         $html = "<img src='$src' alt='$alt'$class />"; 
     339                        $html = "<img src='$src' alt='$alt'$title$class />"; 
    322340                return media_send_to_editor($html); 
    323341        } 
    324342 
     
    637655add_filter('attachment_fields_to_save', 'image_attachment_fields_to_save', 10, 2); 
    638656 
    639657function image_media_send_to_editor($html, $attachment_id, $attachment) { 
     658 
    640659        $post =& get_post($attachment_id); 
    641660        if ( substr($post->post_mime_type, 0, 5) == 'image' ) { 
    642661                $url = $attachment['url']; 
     
    662681add_filter('media_send_to_editor', 'image_media_send_to_editor', 10, 3); 
    663682 
    664683function get_attachment_fields_to_edit($post, $errors = null) { 
     684         
    665685        if ( is_int($post) ) 
    666686                $post =& get_post($post); 
    667687        if ( is_array($post) ) 
     
    691711                        'html'       => image_link_input_fields($post, get_option('image_default_link_type')), 
    692712                        'helps'      => __('Enter a link URL or click above for presets.'), 
    693713                ), 
     714        'group_number'   => array( 
     715                        'value'      => $edit_post->group_number 
     716                ), 
    694717        'menu_order'   => array( 
    695718                        'label'      => __('Order'), 
    696719                        'value'      => $edit_post->menu_order 
     
    726749        return $form_fields; 
    727750} 
    728751 
    729 function get_media_items( $post_id, $errors ) { 
     752function get_media_items( $post_id, $group, $errors ) { 
     753        global $wpdb; 
    730754        if ( $post_id ) { 
    731755                $post = get_post($post_id); 
    732                 if ( $post && $post->post_type == 'attachment' ) 
     756                if ( $post && $post->post_type == 'attachment' ) { 
    733757                        $attachments = array($post->ID => $post); 
    734                 else 
    735                         $attachments = get_children( array( 'post_parent' => $post_id, 'post_type' => 'attachment', 'orderby' => 'menu_order ASC, ID', 'order' => 'DESC') ); 
     758                } else { 
     759                        $attachments = get_children( array( 'post_parent' => $post_id, 'post_type' => 'attachment', 'group_number' => $group, 'orderby' => 'menu_order ASC, ID', 'order' => 'DESC'));            
     760                        $images_in_group = intval($wpdb->get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = '%d' AND group_number = %d", $post_id, $group))); 
     761                         
     762                        if ($images_in_group == 0) { 
     763                                $output = "\n<div class='media-item media-no-items child-of-$post_id preloaded'><div class='progress'><div class='bar'></div></div><div id='media-upload-error-$id'></div><div class='filename'></div><div class='filename new'>". __("No images in this group. Move items to this group.") ."</div></div>"; 
     764                                return $output; 
     765                        } 
     766                } 
    736767        } else { 
    737768                if ( is_array($GLOBALS['wp_the_query']->posts) ) 
    738769                        foreach ( $GLOBALS['wp_the_query']->posts as $attachment ) 
     
    743774                return ''; 
    744775 
    745776        foreach ( $attachments as $id => $attachment ) 
    746                 if ( $item = get_media_item( $id, array( 'errors' => isset($errors[$id]) ? $errors[$id] : null) ) ) 
     777                if ( $item = get_media_item( $id, $group, array( 'errors' => isset($errors[$id]) ? $errors[$id] : null) ) ) 
    747778                        $output .= "\n<div id='media-item-$id' class='media-item child-of-$attachment->post_parent preloaded'><div class='progress'><div class='bar'></div></div><div id='media-upload-error-$id'></div><div class='filename'></div>$item\n</div>"; 
    748779 
    749780        return $output; 
    750781} 
    751782 
    752 function get_media_item( $attachment_id, $args = null ) { 
     783function get_media_item( $attachment_id, $group = null, $args = null ) { 
    753784        global $redir_tab; 
    754785 
    755786        $default_args = array( 'errors' => null, 'send' => true, 'delete' => true, 'toggle' => true ); 
     
    771802 
    772803        $post = get_post($attachment_id); 
    773804 
     805        if (!is_null($group) && ($post->group_number != $group)) { return; } 
     806 
    774807        $filename = basename($post->guid); 
    775808        $title = attribute_escape($post->post_title); 
    776809        $description = attribute_escape($post->post_content); 
     
    804837        $gallery = ( (isset($_REQUEST['tab']) && 'gallery' == $_REQUEST['tab']) || (isset($redir_tab) && 'gallery' == $redir_tab) ) ? true : false; 
    805838        $order = ''; 
    806839 
    807         foreach ( $form_fields as $key => $val ) { 
     840        foreach ( $form_fields as $key => $val ) {               
     841                 
    808842                if ( 'menu_order' == $key ) { 
    809843                        if ( $gallery ) 
    810844                                $order = '<div class="menu_order"> <input class="menu_order_input" type="text" id="attachments['.$attachment_id.'][menu_order]" name="attachments['.$attachment_id.'][menu_order]" value="'.$val['value'].'" /></div>'; 
     
    812846                                $order = '<input type="hidden" name="attachments['.$attachment_id.'][menu_order]" value="'.$val['value'].'" />'; 
    813847 
    814848                        unset($form_fields['menu_order']); 
    815                         break; 
    816849                } 
     850                 
     851                if ( 'group_number' == $key ) {                  
     852                        $groupnum = '<input type="hidden" class="group-value" name="attachments['.$attachment_id.'][group_number]" value="'.$val['value'].'" />'; 
     853                        unset($form_fields['group_number']); 
     854                } 
    817855        } 
    818  
     856         
    819857        $item = " 
    820858        $type 
    821859        $toggle_links 
    822860        $order 
     861        $groupnum 
    823862        <div class='filename new'>$display_title</div> 
    824863        <table class='slidetoggle describe $class'> 
    825864                <thead class='media-item-info'> 
     
    10001039        <p> 
    10011040        <input type="file" name="async-upload" id="async-upload" /> <input type="submit" class="button" name="html-upload" value="<?php echo attribute_escape(__('Upload')); ?>" /> <a href="#" onclick="return top.tb_remove();"><?php _e('Cancel'); ?></a> 
    10021041        </p> 
    1003  
    10041042        <br class="clear" /> 
    10051043        <?php if ( is_lighttpd_before_150() ): ?> 
    10061044        <p><?php _e('If you want to use all capabilities of the uploader, like uploading multiple files at once, please upgrade to lighttpd 1.5.'); ?></p> 
     
    10821120                html = '<img alt="'+alt+'" src="'+f.src.value+'"'+title+cls+' width="'+t.width+'" height="'+t.height+'" />'; 
    10831121 
    10841122                if ( f.url.value ) 
    1085                         html = '<a href="'+f.url.value+'">'+html+'</a>'; 
     1123                        html = '<a href="'+f.url.value+'"'+title+'>'+html+'</a>'; 
    10861124 
    10871125                if ( caption ) 
    10881126                        html = '[caption id="" align="'+t.align+'" width="'+t.width+'" caption="'+caption+'"]'+html+'[/caption]'; 
     
    11391177} 
    11401178 
    11411179function media_upload_gallery_form($errors) { 
    1142         global $redir_tab; 
     1180        global $wpdb, $redir_tab; 
    11431181 
    11441182        $redir_tab = 'gallery'; 
    11451183        media_upload_header(); 
    11461184 
    11471185        $post_id = intval($_REQUEST['post_id']); 
     1186        $group_results = $wpdb->get_row($wpdb->prepare("SELECT groups FROM $wpdb->posts WHERE ID = %d", $post_id)); 
     1187        $groups = split(",", $group_results->groups); 
     1188         
    11481189        $form_action_url = admin_url("media-upload.php?type={$GLOBALS['type']}&tab=gallery&post_id=$post_id"); 
    11491190?> 
    11501191 
     
    11541195        var preloaded = $(".media-item.preloaded"); 
    11551196        if ( preloaded.length > 0 ) { 
    11561197                preloaded.each(function(){prepareMediaItem({id:this.id.replace(/[^0-9]/g, '')},'');}); 
    1157                 updateMediaForm(); 
    11581198        } 
     1199         
     1200        jQuery("a.del-group").click(function () { 
     1201                 
     1202                var deleteConfirmation = confirm('<?php _e("Are you sure you want to delete this gallery group?"); ?>'); 
     1203                if (!deleteConfirmation) { return; } 
     1204                if (jQuery("#media-group-" + jQuery(this).attr('value') + " .media-item input.group-value").length) 
     1205                { 
     1206                        jQuery.each(jQuery("#media-group-delete-" + jQuery(this).attr('value') + " .media-item input.group-value"), function(i, id) { 
     1207                                jQuery(id)[0].value = 0;        //      we are going to set all the items to group 0             
     1208                        }); 
     1209                } 
     1210                jQuery("#gallery-delete").val( jQuery(this).attr('value') );    //      set the gallery we are deleting 
     1211                jQuery("#media-group-" + jQuery(this).attr('value')).hide();    //      hide the gallery and then... 
     1212                jQuery(".savebutton").click(); 
     1213                 
     1214        }); 
     1215         
     1216        jQuery("a.insert-group").click(function () { 
     1217                jQuery("#gallery-insert").val( jQuery(this).attr('value') );    //      set the gallery we are inserting 
     1218                jQuery(".insert-gallery").click();               
     1219        }); 
     1220         
     1221         
    11591222}); 
    11601223--> 
    11611224</script> 
     
    11631226<form enctype="multipart/form-data" method="post" action="<?php echo attribute_escape($form_action_url); ?>" class="media-upload-form validate" id="gallery-form"> 
    11641227<?php wp_nonce_field('media-form'); ?> 
    11651228<?php //media_upload_form( $errors ); ?> 
     1229 
     1230<div id="media-items"> 
     1231<?php 
     1232foreach ($groups as $group => $group_number) 
     1233{ 
     1234?> 
     1235<div id="media-group-<?php echo $group_number; ?>" class="media-groups"> 
     1236<input type="hidden" id="media-group-value-<?php echo $group_number; ?>" value="<?php echo $group_number; ?>" /> 
    11661237<table class="widefat"> 
    11671238<thead><tr> 
    1168 <th><?php _e('Media'); ?></th> 
     1239<th> 
     1240<?php  
     1241        if ($group_number > 0) {  
     1242                 
     1243                $delete = "<a href=\"#media-group-delete-value-".$group_number."\" value=\"".$group_number."\" class=\"del-group\">" . __('Delete Group') . "</a>"; 
     1244                $insert = "<a href=\"#media-group-insert-value-".$group_number."\" value=\"".$group_number."\" class=\"insert-group\">" . __('Insert Group') . "</a>"; 
     1245                $group_link = "<small>(".$delete." | " .$insert.")</small>"; 
     1246                 
     1247                _e('Media Group ('.$group_number.'): ' . $group_link);  
     1248        } else {  
     1249                _e('Media: Non-grouped items.');  
     1250        } 
     1251?> 
     1252</th> 
    11691253<th class="order-head"><?php _e('Order'); ?></th> 
    11701254</tr></thead> 
    11711255</table> 
    1172 <div id="media-items"> 
    1173 <?php echo get_media_items($post_id, $errors); ?> 
     1256<?php echo get_media_items($post_id, $group_number, $errors); ?> 
    11741257</div> 
     1258<?php 
     1259} 
     1260?> 
     1261</div> 
    11751262<p class="ml-submit"> 
    11761263<input type="submit" class="button savebutton" name="save" value="<?php echo attribute_escape( __( 'Save all changes' ) ); ?>" /> 
    1177 <input type="submit" class="button insert-gallery" name="insert-gallery" value="<?php echo attribute_escape( __( 'Insert gallery into post' ) ); ?>" /> 
     1264<input type="submit" class="button new-gallery" name="new-gallery" value="<?php echo attribute_escape( __( 'Create new gallery' ) ); ?>" /> 
     1265<input type="submit" class="button insert-gallery" name="insert-gallery" value="<?php echo attribute_escape( __( 'Insert full gallery into post' ) ); ?>" /> 
     1266<input type="hidden" name="gallery_delete" id="gallery-delete" value="" /> 
     1267<input type="hidden" name="gallery_insert" id="gallery-insert" value="" /> 
    11781268<input type="hidden" name="post_id" id="post_id" value="<?php echo (int) $post_id; ?>" /> 
    11791269<input type="hidden" name="type" value="<?php echo attribute_escape( $GLOBALS['type'] ); ?>" /> 
    11801270<input type="hidden" name="tab" value="<?php echo attribute_escape( $GLOBALS['tab'] ); ?>" /> 
    11811271</p> 
    11821272</form> 
     1273 
     1274<script type="text/javascript"> 
     1275<!-- 
     1276        updateMediaForm(); 
     1277--> 
     1278</script> 
     1279 
    11831280<?php 
    11841281} 
    11851282 
     
    13191416</script> 
    13201417 
    13211418<div id="media-items"> 
    1322 <?php echo get_media_items(null, $errors); ?> 
     1419<?php echo get_media_items(null, null, $errors); ?> 
    13231420</div> 
    13241421<p class="ml-submit"> 
    13251422<input type="submit" class="button savebutton" name="save" value="<?php echo attribute_escape( __( 'Save all changes' ) ); ?>" /> 
  • wp-admin/includes/schema.php

     
    119119  post_content_filtered text NOT NULL, 
    120120  post_parent bigint(20) NOT NULL default '0', 
    121121  guid varchar(255) NOT NULL default '', 
     122  groups varchar(255) NOT NULL default '0', 
     123  group_number int(11) NOT NULL default '0', 
    122124  menu_order int(11) NOT NULL default '0', 
    123125  post_type varchar(20) NOT NULL default 'post', 
    124126  post_mime_type varchar(100) NOT NULL default '', 
  • wp-admin/includes/upgrade.php

     
    764764function upgrade_270() { 
    765765        if ( $wp_current_db_version < 8530 ) 
    766766                populate_roles_270(); 
     767         
     768        add_clean_index($wpdb->posts, 'groups'); 
     769        add_clean_index($wpdb->posts, 'group_number'); 
    767770} 
    768771 
    769772 
  • wp-admin/js/gallery.js

     
    11jQuery(function($) { 
    22        var gallerySortable; 
     3 
    34        var gallerySortableInit = function() { 
    45                gallerySortable = $('#media-items').sortable( { 
    56                        items: '.media-item', 
    67                        placeholder: 'sorthelper', 
    78                        axis: 'y', 
    89                        distance: 2, 
    9                         update: galleryReorder 
     10                        update: galleryHandle, 
    1011                } ); 
    1112        } 
    12  
    13         // When an update has occurred, adjust the order for each item 
     13         
     14        var galleryHandle = function (e, sort) { 
     15                galleryReorder(e, sort);  
     16                gallerySortGroups(); 
     17        } 
     18         
     19        // @todo: fix me! 
     20        // When an update has occurred, adjust the order for each item..  
    1421        var galleryReorder = function(e, sort) { 
     22                var o = 0; 
    1523                jQuery.each(sort['element'].sortable('toArray'), function(i, id) { 
    16                         jQuery('#' + id + ' .menu_order input')[0].value = (1+i); 
     24                        if (id) 
     25                        { 
     26                                o++; 
     27                                jQuery('#' + id + ' .menu_order input')[0].value = o; 
     28                        } 
    1729                }); 
    1830        } 
    19  
     31         
     32        var gallerySortGroups = function () { 
     33                var mediaGroups = jQuery(".media-groups").length; 
     34                for (g = 0; g < mediaGroups; g++) 
     35                { 
     36                        jQuery.each(jQuery("#media-group-" + g + " .media-item input.group-value"), function(i, id) { 
     37                                jQuery(id)[0].value = g;                 
     38                        }); 
     39                } 
     40        } 
     41         
    2042        // initialize sortable 
    2143        gallerySortableInit(); 
    2244}); 
  • wp-admin/post.php

     
    8383        check_admin_referer('add-post'); 
    8484 
    8585        if ( 'post-quickpress-publish' == $action ) 
     86                 
     87                $_POST['comment_status'] = get_option('default_comment_status'); 
     88                $_POST['ping_status'] = get_option('default_ping_status'); 
     89                 
    8690                $_POST['publish'] = 'publish'; // tell write_post() to publish 
    8791 
    8892        if ( !empty( $_POST['quickpress_post_ID'] ) ) { 
  • wp-includes/js/swfupload/handlers.js

     
    125125        } 
    126126 
    127127        // Only show Save buttons when there is at least one file. 
    128         if ( jQuery('#media-items>*').not('.media-blank').length > 0 ) 
     128        if ( jQuery('#media-items .media-item').not('.media-no-items').length > 0 ) 
    129129                jQuery('.savebutton').show(); 
    130130        else 
    131131                jQuery('.savebutton').hide(); 
    132132 
     133        // Only show new Gallery button when there are at least two files. 
     134        if ( jQuery('#media-items .media-item').not('.media-no-items').length > 1 ) 
     135                jQuery('.new-gallery').show(); 
     136        else 
     137                jQuery('.new-gallery').hide(); 
     138 
    133139        // Only show Gallery button when there are at least two files. 
    134         if ( jQuery('#media-items>*').length > 1 ) 
     140        if ( jQuery('#media-items .media-groups').length > 1 ) 
    135141                jQuery('.insert-gallery').show(); 
    136142        else 
    137143                jQuery('.insert-gallery').hide(); 
     144                 
    138145} 
    139146 
    140147function uploadSuccess(fileObj, serverData) { 
  • wp-includes/media.php

     
    487487                'icontag'    => 'dt', 
    488488                'captiontag' => 'dd', 
    489489                'columns'    => 3, 
     490                'group'          => null, 
    490491                'size'       => 'thumbnail', 
    491492        ), $attr)); 
    492493 
     
    508509        $captiontag = tag_escape($captiontag); 
    509510        $columns = intval($columns); 
    510511        $itemwidth = $columns > 0 ? floor(100/$columns) : 100; 
    511  
     512         
    512513        $output = apply_filters('gallery_style', " 
    513514                <style type='text/css'> 
    514515                        .gallery { 
     
    528529                </style> 
    529530                <!-- see gallery_shortcode() in wp-includes/media.php --> 
    530531                <div class='gallery'>"); 
    531  
     532         
    532533        foreach ( $attachments as $id => $attachment ) { 
    533                 $link = wp_get_attachment_link($id, $size, true); 
    534                 $output .= "<{$itemtag} class='gallery-item'>"; 
    535                 $output .= " 
    536                         <{$icontag} class='gallery-icon'> 
    537                                 $link 
    538                         </{$icontag}>"; 
    539                 if ( $captiontag && trim($attachment->post_excerpt) ) { 
     534         
     535                        if (!is_null($group)) { 
     536                                if ($attachment->group_number != $group) { 
     537                                        continue; 
     538                                } 
     539                        } else { 
     540                                if ($attachment->group_number == 0) { 
     541                                        continue; 
     542                                } 
     543                        } 
     544         
     545                        $link = wp_get_attachment_link($id, $size, true); 
     546                        $output .= "<{$itemtag} class='gallery-item'>"; 
    540547                        $output .= " 
    541                                 <{$captiontag} class='gallery-caption'> 
    542                                 {$attachment->post_excerpt} 
    543                                 </{$captiontag}>"; 
    544                 } 
    545                 $output .= "</{$itemtag}>"; 
    546                 if ( $columns > 0 && ++$i % $columns == 0 ) 
    547                         $output .= '<br style="clear: both" />'; 
     548                                <{$icontag} class='gallery-icon'> 
     549                                        $link 
     550                                </{$icontag}>"; 
     551                        if ( $captiontag && trim($attachment->post_excerpt) ) { 
     552                                $output .= " 
     553                                        <{$captiontag} class='gallery-caption'> 
     554                                        {$attachment->post_excerpt} 
     555                                        </{$captiontag}>"; 
     556                        } 
     557                        $output .= "</{$itemtag}>"; 
     558                        if ( $columns > 0 && ++$i % $columns == 0 ) 
     559                                $output .= '<br style="clear: both" />'; 
    548560        } 
    549561 
    550562        $output .= " 
  • wp-includes/post.php

     
    14401440        } 
    14411441 
    14421442        // expected_slashed (everything!) 
    1443         $data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'guid' ) ); 
     1443        $data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'guid', 'groups' ) ); 
    14441444        $data = apply_filters('wp_insert_post_data', $data, $postarr); 
    14451445        $data = stripslashes_deep( $data ); 
    14461446        $where = array( 'ID' => $post_ID ); 
     
    15131513} 
    15141514 
    15151515/** 
     1516 * Insert a new gallery into the post. 
     1517 * 
     1518 * @since 2.7.0 
     1519 * 
     1520 * @param array $postarr post data 
     1521 */ 
     1522function wp_new_gallery($postarr = array()) 
     1523{ 
     1524        if ( is_object($postarr) ) 
     1525                $postarr = get_object_vars($postarr); 
     1526 
     1527        // First, get all of the original fields 
     1528        $post = wp_get_single_post($postarr['post_parent'], ARRAY_A); 
     1529 
     1530        // create new group 
     1531        $last_group = split(",", $post['groups']); 
     1532        $new_groups = array(count($last_group) => count($last_group)); 
     1533        $post_newgroup['groups'] = implode(",", array_merge($last_group, $new_groups)); 
     1534         
     1535        // Merge old and new fields with new fields overwriting old ones. 
     1536        $postarr = array_merge($post, $post_newgroup); 
     1537         
     1538        // update the post 
     1539        wp_update_post($postarr); 
     1540         
     1541} 
     1542 
     1543/** 
     1544 *  
     1545 * Delete a gallery and reset the gallery numbers of those items inside the gallery. 
     1546 * 
     1547 * @since 2.7.0 
     1548 * 
     1549 * @param array $postarr post data 
     1550 * @param int $gallery_number data 
     1551 */ 
     1552function wp_delete_gallery($postarr = array(), $gallery_number) 
     1553{ 
     1554        global $wpdb; 
     1555 
     1556        if ( is_object($postarr) ) 
     1557                $postarr = get_object_vars($postarr); 
     1558 
     1559        // First, get all of the original fields 
     1560        $post = wp_get_single_post($postarr['post_parent'], ARRAY_A); 
     1561         
     1562        // groups 
     1563        $current_groups = split(",", $post['groups']); 
     1564        $i = 0; 
     1565        foreach ($current_groups as $item => $value) 
     1566        { 
     1567                if ($gallery_number != $value) { 
     1568                        $new_groupnumber = $i; 
     1569                        $newgroup[] = $new_groupnumber; 
     1570                        $wpdb->query($wpdb->prepare("UPDATE $wpdb->posts SET group_number = %d WHERE post_parent = %d AND group_number = %d", $new_groupnumber, $post['ID'], $value)); 
     1571                        $i++; 
     1572                } 
     1573        } 
     1574        $new_groups_update = array("groups" => implode(",", $newgroup)); 
     1575 
     1576        // Merge old and new fields with new fields overwriting old ones. 
     1577        $postarr = array_merge($post, $new_groups_update); 
     1578         
     1579        // update the post 
     1580        wp_update_post($postarr); 
     1581} 
     1582 
     1583/** 
    15161584 * Update a post with new post data. 
    15171585 * 
    15181586 * The date does not have to be set for drafts. You can set the date and it will 
     
    23162384                $pinged = ''; 
    23172385 
    23182386        // expected_slashed (everything!) 
    2319         $data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'post_mime_type', 'guid' ) ); 
     2387        $data = compact( array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_content_filtered', 'post_title', 'post_excerpt', 'post_status', 'post_type', 'comment_status', 'ping_status', 'post_password', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_parent', 'menu_order', 'post_mime_type', 'guid', 'group_number' ) ); 
    23202388        $data = stripslashes_deep( $data ); 
    23212389 
    23222390        if ( $update ) {