WordPress.org

Plugin Directory

Changeset 581987


Ignore:
Timestamp:
08/05/12 12:33:24 (21 months ago)
Author:
c3mdigital
Message:

Tagging 1.1 and updating trunk

Location:
media-tools
Files:
36 added
7 edited

Legend:

Unmodified
Added
Removed
  • media-tools/tags/1.0.1/README.md

    r579586 r581987  
    22========================= 
    33 
     4=== Media Tools  === 
     5Contributors: c3mdigital 
     6Tags: media, media library, images, featured images, post thumbnails, timthumb 
     7Requires at least: 3.1 
     8Tested up to: 3.4.1 
     9Stable tag: 1.0 
     10Donate link: http://www.redcross.org/ 
     11License: GPLv2 or later 
     12License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     13 
     14A set of tools to help manage your media library. Imports external images and attaches them to your posts, pages or custom post types. 
     15 
    416### A set of tools to help manage your media library.   
    517 
    6 Big improvements are coming to the WordPress media library in 3.5.  If your not using the media library this plugin will 
    7 import all the external images found in your posts or pages and import them into the media library and attach them. 
     18== Description == 
    819 
    9 This plugin will help you recover from your Timthumb addiction.  If you have been using Timthumb now is the time to come clean.   
     20Big improvements are coming to the WordPress media library in 3.5. If your not using the media library this plugin will import all the external images found in your posts or pages and import them into the media library and attach them. 
     21 
     22This plugin will help you convert from using Timthumb to WordPress built in featured image / post thumbnail support 
    1023 
    1124 
     
    2235 
    2336Ajax interface that converts the images with one simple click. 
     37 
     38== Changelog == 
     39 
     40= 1.0 = 
     41 
     42* Initial version added to WordPress.org 
     43 
     44= 1.0.1 = 
     45 
     46* Added WordPress and PHP version check on activation hook 
  • media-tools/tags/1.0.1/media-tools.php

    r579586 r581987  
    88 * Author URI: http://c3mdigital.com 
    99 * License: GPL v2 
    10  *  
     10 * 
    1111 */ 
    1212 
     
    2626    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
    2727*/ 
    28   
     28 
    2929$c3m_media_tools = new C3M_Media_Tools(); 
    3030register_activation_hook( __FILE__, array( $c3m_media_tools, 'activate' ) ); 
  • media-tools/tags/1.0/readme.txt

    r578563 r581987  
    7878 
    7979* Initial version added to WordPress.org 
     80 
     81= 1.0.1 = 
     82 
     83* Added WordPress and PHP version check on activation hook 
  • media-tools/trunk/README.md

    r579587 r581987  
    22========================= 
    33 
    4 === Media Tools  === 
    5 Contributors: c3mdigital 
    6 Tags: media, media library, images, featured images, post thumbnails, timthumb 
    7 Requires at least: 3.1 
    8 Tested up to: 3.4.1 
    9 Stable tag: 1.0 
    10 Donate link: http://www.redcross.org/ 
    11 License: GPLv2 or later 
    12 License URI: http://www.gnu.org/licenses/gpl-2.0.html 
    13  
    14 A set of tools to help manage your media library. Imports external images and attaches them to your posts, pages or custom post types. 
    15  
    164### A set of tools to help manage your media library.   
    175 
    18 == Description == 
     6Big improvements are coming to the WordPress media library in 3.5.  If your not using the media library this plugin will 
     7import all the external images found in your posts or pages and import them into the media library and attach them. 
    198 
    20 Big improvements are coming to the WordPress media library in 3.5. If your not using the media library this plugin will import all the external images found in your posts or pages and import them into the media library and attach them. 
    21  
    22 This plugin will help you convert from using Timthumb to WordPress built in featured image / post thumbnail support 
     9This plugin will help you recover from your Timthumb addiction.  If you have been using Timthumb now is the time to come clean.   
    2310 
    2411 
     
    3522 
    3623Ajax interface that converts the images with one simple click. 
    37  
    38 == Changelog == 
    39  
    40 = 1.0 = 
    41  
    42 * Initial version added to WordPress.org 
    43  
    44 = 1.0.1 = 
    45  
    46 * Added WordPress and PHP version check on activation hook 
  • media-tools/trunk/js/media.tools.ajax.js

    r579587 r581987  
    1010 */ 
    1111 
    12  
    1312!function($) { 
    1413 
    1514    $(function() { 
     15 
     16        var opts = { lines:9, length:17, width:6, radius:12, rotate:24, color:'#000', 
     17                speed:0.9, trail:45, shadow: true, hwaccel:false, className:'spinner', zIndex:2e9, top:30, left: 20 }; 
    1618 
    1719        var form = $('#export-filters'); 
     
    4749 
    4850        }; 
     51            var bar = $("#media-progress"); 
     52            var barPercent = $("#media-progress-percent"); 
     53            var mt_count = 1; 
    4954 
    5055            form.submit(function(e) { 
    51             form.hide(); 
    52             $("#convert-title").replaceWith( "<h3 id='converting'>Running......Please be patient. This could take a while.</h3>" ); 
    53             $("#ajax-spinner").show(); 
     56            form.slideUp(); 
     57 
     58                var target = document.getElementById('featured-ajax-response'); 
     59                var spinner = new Spinner(opts).spin(target); 
     60                $(target).show(); 
     61 
     62            $("#convert-choose").replaceWith( "<h3 id='converting'>Running......Please be patient. This could take a while.</h3>" ); 
     63            bar.progressbar(); 
     64            barPercent.html( "0%" ); 
    5465            var obj  = form.serializeObject(e); 
    5566                $.ajax({ 
    5667                    type: "POST", 
    5768                    url: ajaxurl, 
     69                    dataType: 'json', 
    5870                    data: { 
    5971                        action: "convert-featured", 
     
    6173 
    6274                    }, 
    63                     success: function(data) { 
    64                         $("#featured-ajax-response").html("<pre style='white-space: normal'>" + data + "</pre>"); 
    65                         $("#converting").replaceWith("<h3>Results</h3>"); 
    66                         $("#ajax-spinner").hide(); 
    67                     }, 
     75                     success: function(data) { 
    6876 
    69                     error: function() { 
    70                         return false; 
     77                     var mt_total  = data.length; 
     78 
     79                     var obj = form.serializeObject(e); 
     80                     var arg = obj['choose-tool']; 
     81                         $.each(data, function(i, data) { 
     82                         process(data, arg, mt_total ); 
     83 
     84                         }) 
    7185                    } 
    7286 
    7387                }); 
     88 
     89                        function process(data, obj, mt_total ) { 
     90                            $.ajax({ 
     91                                type:"POST", 
     92                                url:ajaxurl, 
     93                                data:{ 
     94                                    action:"process-data", 
     95                                    args: obj, 
     96                                    ids: data 
     97                                }, 
     98                                success:function (response) { 
     99                                    progressStatus(response, mt_total ); 
     100                                    $("#featured-ajax-response").append("<pre style='white-space: normal'>" + response + "</pre>"); 
     101                                    $("#converting").replaceWith("<h2>Results</h2>"); 
     102 
     103                                }, 
     104                                complete:function (response) { 
     105 
     106                                     ajaxDone(response); 
     107 
     108                                } 
     109                            }); 
     110                         } 
     111                        function ajaxDone(data) { 
     112                            $.ajax({ 
     113                                type: "POST", 
     114                                url: ajaxurl, 
     115                                data: { 
     116                                    action: "ajax-done" 
     117                                }, 
     118                                success: function(done) { 
     119                                    spinner.stop(); 
     120                                    $("#my-message").html("<p><strong>Image processing complete. </strong></p>"); 
     121                                    $("#my-message").show(); 
     122                                } 
     123                            }) 
     124                        } 
     125 
    74126                return false; 
    75         }); 
     127 
     128            }); 
     129 
     130        function progressStatus(response, mt_total) { 
     131 
     132            bar.progressbar("value", ( mt_count / mt_total ) * 100); 
     133            barPercent.html(Math.round(( mt_count / mt_total ) * 1000) / 10 + "%"); 
     134 
     135            mt_count = mt_count + 1; 
     136        } 
     137 
     138 
    76139 
    77140        $("select#choose-tool").change(function(e) { 
     
    83146 
    84147        }).trigger("change"); 
    85  
    86  
    87148    }); 
    88149 
  • media-tools/trunk/media-tools.php

    r579587 r581987  
    44 * Plugin URI: https://github.com/c3mdigital/media-tools-for-WordPress 
    55 * Description: Tools for working with the WordPress media library and converting images to attachments and featured images 
    6  * Version: 1.0.1 
     6 * Version: 1.1 
    77 * Author: Chris Olbekson 
    88 * Author URI: http://c3mdigital.com 
    99 * License: GPL v2 
    10  * 
     10 *  
    1111 */ 
    1212 
     
    2626    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
    2727*/ 
    28  
     28  
    2929$c3m_media_tools = new C3M_Media_Tools(); 
    3030register_activation_hook( __FILE__, array( $c3m_media_tools, 'activate' ) ); 
    3131 
    32  class C3M_Media_Tools { 
     32 
     33class C3M_Media_Tools { 
    3334 
    3435    var $media_settings; 
    3536    var $media_tools; 
     37    static $regen; 
    3638    private $media_tabs_key = 'media_tabs'; 
    3739    private static $thumbnail_support; 
     
    4143 
    4244 
    43  
    4445    function __construct() { 
    45         self:: $thumbnail_support = current_theme_supports( 'post-thumbnails' ) ? true : add_theme_support( 'post-thumbnails' ); 
     46        self::$thumbnail_support = current_theme_supports( 'post-thumbnails' ) ? true : add_theme_support( 'post-thumbnails' ); 
    4647        $this->add_image_sizes(); 
    4748        $this->actions(); 
     
    7273        add_action( 'admin_enqueue_scripts', array ( $this, 'media_tools_js' ) ); 
    7374        add_action( 'wp_ajax_convert-featured', array ( $this, 'ajax_handler' ) ); 
     75        add_action( 'wp_ajax_process-data', array( $this, 'process_image' ) ); 
     76        add_action( 'ap_ajax_ajax-done', array( $this, 'ajax_complete') ); 
    7477        add_action( 'admin_init', array( $this, 'register_media_options' ) ); 
    7578        add_action( 'admin_init', array ( $this, 'register_media_tools' ) ); 
     
    122125 
    123126    function options_tab( $tab ) { 
    124         echo '<form method = "post" action = "options.php" >'; 
    125         wp_nonce_field( 'options.php' ); 
    126             echo '<div style="float:left;width:330px;">'; 
    127             $this->show_thumb_sizes(); 
    128             echo '</div>'; 
     127        echo '<form method="post" action="options.php" >'; 
     128                wp_nonce_field( 'options.php' ); 
     129        echo '<div style="float:left;width:330px;">'; 
     130        $this->show_thumb_sizes(); 
     131        echo '</div>'; 
    129132        echo '<div style="float:left;margin-top:50px;">'; 
    130         settings_fields( $tab ); 
    131         do_settings_sections( $tab ); 
    132         submit_button( 'Add Image Size'); 
     133            settings_fields( $tab ); 
     134            do_settings_sections( $tab ); 
     135            submit_button( 'Add Image Size'); 
    133136        echo '</div>'; 
    134137        echo '</form>'; 
    135138        echo '<div class="clear"></div>'; 
    136         if ( class_exists( 'RegenerateThumbnails') ) { 
    137             $regen = new RegenerateThumbnails; 
     139        if ( class_exists( 'RegenerateThumbnails' ) ) { 
     140            $regen = new RegenerateThumbnails(); 
    138141            $regen->regenerate_interface(); 
     142 
    139143        } else { 
    140144            _e( '<h3>Regenerate Thumbnails</h3>' ); 
    141145            printf( __('<p>Install Regenerate Thumbnails to crop all images that you have uploaded to your blog. This is useful if you\'ve changed any of the thumbnail dimensions above or on the <a href="%s">media settings page</a></p>' ), admin_url( 'options-media.php') ); 
    142  
    143146 
    144147            $url = current_user_can( 'install_plugins' ) ? wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=regenerate-thumbnails' ), 'install-plugin_regenerate-thumbnails' ) : 'http://wordpress.org/extend/plugins/regenerate-thumbnails/'; 
     
    169172        } 
    170173        echo '</ul>'; 
    171  
    172174    } 
    173175 
    174176    /** 
     177     * Enqueue javascript for media tools admin page 
    175178     * @param string $hook reference to current admin page 
    176179     */ 
    177180    function media_tools_js( $hook ) { 
    178         if( 'tools_page_media_tabs' == $hook ) 
    179             wp_enqueue_script( 'media-tools-ajax', plugins_url( 'js/media.tools.ajax.js', __FILE__), array( 'jquery' ) ); 
    180  
     181        if( 'tools_page_media_tabs' != $hook ) 
     182            return; 
     183        wp_enqueue_script( 'media-tools-ajax', plugins_url( 'js/media.tools.ajax.js', __FILE__), array( 'jquery', 'jquery-spin' ), '1.0.1' ); 
     184        wp_enqueue_script( 'jquery-spin', plugins_url( 'js/spin.js', __FILE__), array('jquery' ) ); 
     185        wp_enqueue_script( 'jquery-ui-progressbar', plugins_url( 'js/jquery.ui.progressbar.min.js', __FILE__ ), array ( 'jquery-ui-core', 'jquery-ui-widget' ), '1.8.6' ); 
     186        wp_enqueue_style( 'jquery-ui-redmond', plugins_url( 'js/redmond/jquery-ui-1.7.2.custom.css', __FILE__ ), array (), '1.7.2' ); 
    181187    } 
    182188 
     
    188194        $tab = isset( $_GET['tab'] ) ? $_GET['tab'] : $this->media_tools_key; ?> 
    189195        <div class="wrap"> 
    190             <?php    $this->menu_tabs( $tab ); 
     196            <?php $this->menu_tabs( $tab ); 
    191197 
    192198            switch ( $tab ) : 
     
    200206        </div> 
    201207 
    202 <?php   } 
     208<?php } 
    203209 
    204210 
     
    210216        foreach( $this->media_settings_tabs  as $tab_key => $tab_caption ) : 
    211217            $active = $current_tab == $tab_key ? 'nav-tab-active' : ''; 
    212  
    213218            echo  '<a class="nav-tab '.$active. '" href=?page=' .$this->media_tabs_key. '&tab='.$tab_key. '>' .$tab_caption. '</a>'; 
    214219        endforeach; 
    215             echo  '</h2>'; 
    216  
     220        echo  '</h2>'; 
    217221    } 
    218222 
    219223     function home_tab() { 
    220  
    221224        global $wpdb; 
    222225        $title = __( 'WordPress Media Tools' ); ?> 
     
    226229 
    227230                <p><?php _e( 'WordPress Media Tools are a set of tools to help you manage the media in your posts and pages.<br>' ); ?> 
    228                 <?php _e( 'You can import external images into the media library, attach media to a post or page, and set images as the featured image.' ); ?></p> 
     231                <?php    _e( 'You can import external images into the media library, attach media to a post or page, and set images as the featured image.' ); ?></p> 
    229232 
    230233            </div> 
     
    233236                <h3><?php _e( 'Set Featured Images' ); ?></h3> 
    234237                <p><?php  _e( 'This tool goes through your posts and sets the first image found as the featured image' ); ?> 
    235                 <?php  _e( 'If the post already has a featured image set it will be skipped.<br>' ); ?> 
    236                 <?php  _e( 'If the first image is from an external source or not attached to the post it will be added to the media library and attached to the post' ); ?></p> 
     238                <?php     _e( 'If the post already has a featured image set it will be skipped.<br>' ); ?> 
     239                <?php     _e( 'If the first image is from an external source or not attached to the post it will be added to the media library and attached to the post' ); ?></p> 
    237240            </div> 
    238241            <div class="convert-media"> 
    239242                <h3><?php _e( 'Import External Images' ); ?></h3> 
    240                 <p><?php  _e( 'This tool goes through your chosen posts or pages and imports external images into the media library' ); ?></p> 
    241                 <p><?php  _e( 'The src attribute of any found images are checked against your set uploads dir and will not insert if they match' ); ?></p> 
    242                 <p><?php  _e( 'This also changes the img src attribute to reference the new location in your uploads folder' ); ?> 
     243                <p><?php  _e( 'This tool goes through your chosen posts or pages and imports external images into the media library' ); ?> 
     244                <?php     _e( 'The src attribute of any found images are checked against your set uploads dir and will not insert if they match' ); ?> 
     245                <?php     _e( 'This also changes the img src attribute to reference the new location in your uploads folder' ); ?> 
    243246                <?php     _e( 'You can also choose to make the first image the featured image' ); ?></p> 
    244247            </div> 
    245248 
    246             <h2 id="convert-title"><?php _e( 'Choose tool to run' ); ?></h2> 
     249            <h2 id="convert-choose"><?php _e( 'Choose tool to run' ); ?></h2> 
    247250            <form action="" method="get" id="export-filters"> 
    248                 <p> 
    249                     <select id="choose-tool" name="choose-tool"> 
     251                <p><select id="choose-tool" name="choose-tool"> 
    250252                        <option value="set-featured"><?php _e( 'Set Featured Images' ); ?></option> 
    251253                        <option value="import-media"><?php _e( 'Import External Images' ); ?></option> 
    252254                        <option value="convert-import"><?php _e( 'Import External and Set Featured Image' ) ;?></option> 
    253                     </select></p> 
     255                </select></p> 
     256 
    254257                <h3 id="convert-title"><?php _e( 'Choose content to run the tool on' ); ?></h3> 
    255258                <p><label><input type="radio" name="content" value="all" checked="checked"/> <?php _e( 'All content' ); ?></label></p> 
     
    315318                <?php submit_button( __( 'Set Featured Images' ), 'secondary' ); ?> 
    316319            </form> 
    317                 <div id="ajax-spinner" style="display:none;"><img src="<?php echo admin_url('/images/wpspin_light.gif'); ?>" /></div> 
    318                 <div id="featured-ajax-response"></div> 
    319  
     320                <div id="my-message" class="updated fade" style="display:none"></div> 
     321                <div id="media-progress" style="position:relative;height:25px; margin-right:100px;"> 
     322                    <div id="media-progress-percent" style="position:absolute;left:50%;top:50%;width:300px;margin-left:-150px;height:25px;margin-top:-9px;font-weight:bold;text-align:center;"></div> 
     323                </div> 
     324                <div id="featured-ajax-response" style="height:800px; overflow: scroll; padding-left:30px;margin-right:100px; background: #dfdfdf; display: none;"></div> 
    320325            </div> 
    321326 
    322  
    323327<?php   } 
    324328 
     329    /** 
     330     * Ajax handler function added to the wp_ajax hook 
     331     * @return mixed WP_Error if error encountered | $response is echoed back via ajax on success 
     332     */ 
    325333    function ajax_handler() { 
    326334 
     
    335343        if ( 'post' == $args['content'] ) { 
    336344            if ( $args['cat'] ) 
    337                 $args['category'] = (int)$args['cat']; 
     345                 $args['category'] = (int)$args['cat']; 
    338346 
    339347            if ( $args['post_author'] ) 
    340                 $args['author'] = (int) $args['post_author']; 
     348                 $args['author'] = (int)$args['post_author']; 
    341349 
    342350            if ( $args['post_start_date'] || $args['post_end_date'] ) { 
    343                 $args['start_date'] = $args['post_start_date']; 
    344                 $args['end_date'] = $args['post_end_date']; 
     351                 $args['start_date'] = $args['post_start_date']; 
     352                 $args['end_date']  = $args['post_end_date']; 
    345353            } 
    346354 
    347355            if ( $args['post_status'] ) 
    348                 $args['status'] = $args['post_status']; 
     356                 $args['status'] = $args['post_status']; 
    349357        } elseif ( 'page' == $args['content'] ) { 
    350358            if ( $args['page_author'] ) 
    351                 $args['author'] = $args['page_author']; 
     359                 $args['author'] = $args['page_author']; 
    352360 
    353361            if ( $args['page_start_date'] || $args['page_end_date'] ) { 
    354                 $args['start_date'] = $args['page_start_date']; 
    355                 $args['end_date'] = $args['page_end_date']; 
     362                 $args['start_date'] = $args['page_start_date']; 
     363                 $args['end_date']  = $args['page_end_date']; 
    356364            } 
    357365 
    358366            if ( $args['page_status'] ) 
    359                 $args['status'] = $args['page_status']; 
    360         } 
    361  
     367                 $args['status'] = $args['page_status']; 
     368        } 
     369        $id_array = array(); 
     370        $ids = $this->query( $args ); 
     371            foreach( $ids as $id ) { 
     372                $id_array[] = (int)$id; 
     373            } 
     374 
     375        die( json_encode( $id_array ) ); 
     376    } 
     377 
     378    function ajax_complete() { 
     379        die( 'Done....'); 
     380    } 
     381 
     382    function process_image() { 
    362383        $response = ''; 
    363         echo 'Getting content selected<br>'; 
    364         $ids = $this->query( $args ); 
    365         $count = count( $ids ); 
    366         echo $count.' Posts found....'; 
    367  
    368         /** @var $i @param array $ids The array of post ids returned from the query  */ 
    369         for ( $i = 0; $i < count( $ids ); $i ++ ) { 
    370             $post = get_post( $ids[ $i ] ); 
    371             echo  '<h3>Results for <a href="' . esc_url( admin_url( 'post.php?post=' . $post->ID . '&action=edit' ) ) . '">'.get_the_title( $post->ID ) . '</a></h3>'; 
     384        $data[] = ''; 
     385        $error = 0; 
     386        if (  isset( $_POST['ids'] ) ) 
     387            $ids = $_POST['ids']; 
     388 
     389        $data['choose-tool'] = $_POST['args']; 
     390 
     391            $post = get_post( $ids ); 
     392            $response .=  '<h3><a href="' . esc_url( admin_url( 'post.php?post=' . $post->ID . '&action=edit' ) ) . '" target="_blank">'.get_the_title( $post->ID ) . '</a></h3>'; 
    372393 
    373394            if ( 'import-media' == $data['choose-tool'] ) { 
    374                     echo  'Running import media tool<br>'; 
    375                     echo  $this->extract_multi( $post ); 
    376                     continue; 
     395                    $response .=  'Running import media tool<br>'; 
     396                    $res =  $this->extract_multi( $post ); 
     397                    $response .= $res['response']; 
     398                    $error = $error + (int)$res['error']; 
     399                die( sprintf( $response . '<br>Media tool complete (Post ID %1$s) in %2$s seconds. %3$d errors', esc_html( $post->ID ), timer_stop(), $error = $error > 0 ? $error : 'no' ) ); 
     400 
    377401 
    378402            } elseif ( 'convert-import' == $data['choose-tool'] ) { 
    379                  echo  'Running import and set featured image tool<br>'; 
    380                  echo  $this->extract_multi( $post ); 
     403                 $response .=  'Running import and set featured image tool<br>'; 
     404                 $res =  $this->extract_multi( $post ); 
     405                 $response .= $res['response']; 
     406                 $error = $error +  (int)$res['error']; 
    381407 
    382408            } 
    383409            /** If the post already has an attached thumbnail continue with the loop  */ 
    384410            if ( has_post_thumbnail( $post->ID ) ) { 
    385                 echo 'Featured image already set <br>'; 
    386                 continue; 
     411                $response .= 'Featured image already set <br>'; 
     412                die( sprintf( $response . '<br>Media tool complete (Post ID %1$s) in %2$s seconds. %3$d errors', esc_html( $post->ID ), timer_stop(), $error = $error > 0 ? $error : 'no' ) ); 
    387413            } 
    388414            /** @var $attachments array of attached images to the post */ 
     
    393419                $img = $this->extract_image( $post ); 
    394420                if( empty( $img ) ) { 
    395                     echo 'No images found <br>'; 
    396                     continue; 
     421                    $response .=  'No images found <br>'; 
     422                    die( sprintf( $response . '<br>Media tool complete (Post ID %1$s) in %2$s seconds. %3$d errors', esc_html( $post->ID ), timer_stop(), $error = $error  > 0 ? $error : 'no' ) ); 
     423 
    397424                } 
    398425 
    399426                /** @var $file string or WP_Error of image attached to the post  */ 
    400427                $file = media_sideload_image( $img, (int)$post->ID ); 
    401                     if ( is_wp_error( $file ) ) { 
    402                         echo '<span style="color:red">Upload Error: Could not upload image. Check for malformed img src url</span><br>'; 
    403  
    404                     } else { 
     428                if ( is_wp_error( $file ) ) { 
     429                    $response .= '<span style="color:red">Upload Error: Could not upload image. Check for malformed img src url</span><br>'; 
     430                    $error++; 
     431                } else { 
    405432 
    406433                    $atts = $this->get_attach( $post->ID ); 
    407434                    foreach ( $atts as $a ) { 
    408  
    409435                        $img = set_post_thumbnail( $post->ID, $a['ID'] ); 
    410436                        if ( $img ) { 
    411437                            $thumb = wp_get_attachment_thumb_url( $a['ID'] ); 
    412                             echo '<img src="'.esc_url( $thumb ).'" />'; 
    413                             echo '<a href="' . wp_nonce_url( get_edit_post_link( $a['ID'], true ) ) . '" >' . get_the_title( $a['ID'] ) . '</a>  Set as Featured Image</p>'; 
     438                            $response .= '<img src="'.esc_url( $thumb ).'" /><br>'; 
     439                            $response .= '<a href="' . wp_nonce_url( get_edit_post_link( $a['ID'], true ) ) . '" >' . get_the_title( $a['ID'] ) . '</a>  Set as Featured Image</p><br>'; 
    414440                        } 
    415441                    } 
     
    423449                    if ( $img ) { 
    424450                        $thumb = wp_get_attachment_thumb_url( $a['ID'] ); 
    425                         echo '<img src="' . esc_url( $thumb ) . '" />'; 
    426                         echo '<a href="' . wp_nonce_url( get_edit_post_link( $a['ID'], true ) ) . '" >' . get_the_title( $a['ID'] ) . '</a>  Set as Featured Image</p>'; 
     451                        $response .= '<img src="' . esc_url( $thumb ) . '" /><br>'; 
     452                        $response .=  '<a href="' . wp_nonce_url( get_edit_post_link( $a['ID'], true ) ) . '" >' . get_the_title( $a['ID'] ) . '</a>  Set as Featured Image</p><br>'; 
    427453                    } 
    428454                } 
     
    430456                unset( $a ); 
    431457            } 
    432         } 
    433  
    434         echo '<br>'.$response . ' Media tool complete'; 
    435             die(1); 
    436     } 
    437  
    438  
     458 
     459        die( sprintf( $response.'<br>Media tool complete (Post ID %1$s) in %2$s seconds. %3$d errors', esc_html( $post->ID ), timer_stop(), $error = $error > 0 ? $error : 'no' ) ); 
     460 
     461 
     462    } 
     463 
     464 
     465 
     466    /** 
     467     * Queries for attached images 
     468     * @param int $post_id The post id to check if attachments exist 
     469     * @return array|bool The 1st attached on success false if no attachments 
     470     */ 
    439471    function get_attach( $post_id ) { 
    440472        return get_children( array ( 
     
    442474                'post_type'      => 'attachment', 
    443475                'post_mime_type' => 'image', 
    444                 'post_per_page'  => (int) 1 
    445             ), ARRAY_A 
    446         ); 
    447  
     476                'posts_per_page'  => (int)1 
     477            ), ARRAY_A ); 
    448478    } 
    449479 
    450480    /** 
    451481     * Extracts the first image in the post content 
    452      * 
    453482     * @param object $post the post object 
    454483     * @return bool|string false if no images or img src 
     
    473502 
    474503    /** 
     504     * Extracts all images in content adds to media library if external and updates content with new url 
    475505     * @param object $post The post object 
    476      * 
    477506     * @return array|bool Post id and images converted on success false if no images found in source 
    478507     */ 
    479508    function extract_multi( $post ) { 
    480         global $wpdb; 
    481509        $html = $post->post_content; 
    482510        $path = wp_upload_dir(); 
    483511        $path = $path['baseurl']; 
    484  
     512        $error = 0; 
    485513        $response = ''; 
    486514        if ( stripos( $html, '<img' ) !== false ) { 
    487515 
    488516            $regex = '#<\s*img [^\>]*src\s*=\s*(["\'])(.*?)\1#im'; 
    489              preg_match_all( $regex, $html, $matches ); 
     517            preg_match_all( $regex, $html, $matches ); 
    490518 
    491519            if ( is_array( $matches ) && ! empty( $matches ) ) { 
     
    495523                    /** Compare image source against upload directory to prevent adding same attachment multiple times  */ 
    496524 
    497                         if (  stripos( $img, $path ) !== false ) { 
    498                             $response .= 'Img already in media library<br>'; 
    499                             continue; 
    500                         } 
     525                    if (  stripos( $img, $path ) !== false ) { 
     526                        $response .= 'Img already in media library<br>'; 
     527                        continue; 
     528                    } 
    501529 
    502530                    $tmp = download_url( $img ); 
     
    507535                    // If error storing temporarily, unlink 
    508536                    if ( is_wp_error( $tmp ) ) { 
    509                             @unlink($file_array['tmp_name']); 
    510                             $file_array['tmp_name'] = ''; 
    511                             continue; 
     537                        @unlink($file_array['tmp_name']); 
     538                        $file_array['tmp_name'] = ''; 
     539                        continue; 
    512540                    } 
    513541 
     
    523551                        $response .= '<a href="'. wp_nonce_url( get_edit_post_link( $id, true ) ).'" >'.get_the_title( $id ). '</a>  Imported and attached</p>'; 
    524552                    } else { 
    525                         echo '<span style="color:red">Upload Error: Could not upload image. Check for malformed img src url</span><br>'; 
     553                        $response .= '<span style="color:red">Upload Error: Could not upload image. Check for malformed img src url</span><br>'; 
     554                        $error ++; 
    526555                    } 
    527556                } 
    528557                if( !empty( $new ) ) { 
    529                 $content = str_ireplace( $old, $new, $html ); 
    530                 $post_args = array( 'ID' => $post->ID, 'post_content' => $content, ); 
    531                 if ( !empty( $content ) ) 
    532                     $post_id = wp_update_post( $post_args ); 
    533                     if ( isset( $post_id ) ) 
    534                         $response .= 'Post Content updated for Post: '.$post_id.'<br>'; 
    535                         return $response; 
     558                    $content = str_ireplace( $old, $new, $html ); 
     559                    $post_args = array( 'ID' => $post->ID, 'post_content' => $content, ); 
     560                    if ( !empty( $content ) ) 
     561                        $post_id = wp_update_post( $post_args ); 
     562                        if ( isset( $post_id ) ) 
     563                            $response .= 'Post Content updated for Post: '.esc_html( $post->post_title).'<br>'; 
     564                        return array( 'error' => $error, 'response' => $response ); 
    536565                } else 
    537                     return $response . 'No external images found for ' . $post->ID . '<br>'; 
    538  
     566                     $response .= 'No external images found for ' . esc_html( $post->post_title ) . '<br>'; 
     567                    return array ( 'error' => $error, 'response' => $response ); 
    539568 
    540569            } else { 
    541                 return $response . 'Error processing images for '. $post->ID .'<br>'; 
    542             } 
     570                 $response .= 'Error processing images for '. esc_html( $post->post_title ) .'<br>'; 
     571                return array ( 'error' => $error, 'response' => $response ); 
     572              } 
    543573        } else { 
    544             return $response . 'No images found for ' . $post->ID . '<br>'; 
    545  
    546         } 
     574             $response .= 'No images found for ' . esc_html( $post->post_title) . '<br>'; 
     575            return array ( 'error' => $error, 'response' => $response ); 
     576          } 
    547577    } 
    548578 
     
    552582     * 
    553583     * @param array $args The ajax form array formatted for the query 
    554      * 
    555584     * @return array $post_ids an array of post ids from the query result 
    556585     */ 
     
    567596                $args['content'] = 'post'; 
    568597 
    569         $where = $wpdb->prepare( "{$wpdb->posts}.post_type = %s", $args['content'] ); 
     598            $where = $wpdb->prepare( "{$wpdb->posts}.post_type = %s", $args['content'] ); 
    570599        } else { 
    571600            $post_types = get_post_types(); 
     
    598627                $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_date < %s", date( 'Y-m-d', strtotime('+1 month', strtotime($args['end_date'])) ) ); 
    599628        } 
     629 
    600630        $post_ids = $wpdb->get_col( "SELECT ID FROM {$wpdb->posts} $join WHERE $where" ); 
    601631 
  • media-tools/trunk/readme.txt

    r579587 r581987  
    44Requires at least: 3.1 
    55Tested up to: 3.4.1 
    6 Stable tag: 1.0.1 
     6Stable tag: 1.1 
    77License: GPLv2 or later 
    88License URI: http://www.gnu.org/licenses/gpl-2.0.html 
     
    7575== Changelog == 
    7676 
     77= 1.1 = 
     78 
     79* Added progress bar to show status of importer tools 
     80* Img status for each post now updates as the importer is running 
     81* Separate ajax call for each post to prevent time outs 
     82* Better error handling and messages 
     83* Minor bug fixes 
     84 
    7785= 1.0.1 = 
    7886 
     
    8997== Upgrade Notice == 
    9098 
     99= 1.1 = 
     100 
     101Please Upgrade for better image error handling and new progress bar 
     102 
    91103= 1.0.1 = 
    92104 
Note: See TracChangeset for help on using the changeset viewer.