WordPress.org

Plugin Directory

Changeset 472873


Ignore:
Timestamp:
12/09/11 15:57:26 (2 years ago)
Author:
MadtownLems
Message:

v1.3 (now shows total AND original size for images)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • media-file-sizes/trunk/media_file_sizes.php

    r413447 r472873  
    33Plugin Name: Media File Sizes 
    44Plugin URI: http://wordpress.org/extend/plugins/media-file-sizes/ 
    5 Description: Displays file sizes next to media items in library.  (For image files, this includes all generated sizes.) 
     5Description: Displays file sizes next to media items in library.  (For image files, also displays total size of all generated sizes.) 
    66Author: Jason Lemahieu 
    7 Version: 1.2 
     7Version: 1.3 
    88*/ 
    99 
     
    2424*/ 
    2525 
    26 /** 
    27  * Establish new column on media library page 
    28  */ 
    29 function mediafilesizes_library_column_header( $cols ) { 
    30     $cols['media_filesizes'] = __('Space Used'); 
    31     return $cols; 
    32 } 
    33 add_filter( 'manage_media_columns', 'mediafilesizes_library_column_header' ); 
    34  
    35 /** 
    36  * Output the actual cell in the media file sizes row on the media library 
    37  */ 
    38 function mediafilesizes_library_column_row( $column_name, $id ) { 
    39      
    40     global $wpmu_version; 
    41      
    42     if ($column_name == 'media_filesizes') { 
    43          
    44         $space = mediafilesizes_get_size($id); 
    45          
    46         $class = '';  //for caution, warning, alert - based on percentage of quota used 
    47         $displayspace = round($space / 1024, 0) . " KB"; 
    48          
    49         // determine percentage of space used. Displayed only if >= 1 
    50          
    51         if (function_exists('get_space_allowed')) { 
    52             $quota = get_space_allowed(); 
    53             $quota = $quota * 1048576; 
    54             $percentage = round($space/$quota*100, 1); 
    55              
    56             if ($percentage >= 1) { 
    57                  
    58                 $class = "media-file-sizes-caution"; 
    59                 if ($percentage >= 3) { 
    60                     $class = "media-file-sizes-warning"; 
    61                     if ($percentage >= 10) { 
    62                         $class = "media-file-sizes-alert"; 
    63                     } 
    64                 }    
    65                 $displayspace .= "<br /><span class='" . $class . "'>".$percentage."%</span>"; 
    66             } 
    67         } 
    68         echo $displayspace; 
    69     } //if column_name == media_filesizes 
    70 } 
    71 add_action( 'manage_media_custom_column', 'mediafilesizes_library_column_row', 10, 2 ); 
    72  
    73 /** 
    74  * Calculate (if necessary), cache (if necessary), and return the size of this media item 
    75  */ 
    76 function mediafilesizes_get_size($id) { 
    77      
    78      
    79      
    80     $saved_size = get_post_meta($id, 'mediafilesize', true); 
    81     if ($saved_size) { 
    82         return $saved_size; 
    83     } 
    84      
    85     $upload_dir = wp_upload_dir(); 
    86     $upload_base_dir = $upload_dir['basedir']; 
    87  
    88      
    89     $space = 0; //totalspace 
     26if (is_admin()) { 
     27 
     28    /** 
     29     * Establish new column on media library page 
     30     */ 
     31    function mediafilesizes_library_column_header( $cols ) { 
     32        $cols['media_filesizes'] = __('Space Used'); 
     33        return $cols; 
     34    } 
     35    add_filter( 'manage_media_columns', 'mediafilesizes_library_column_header' ); 
     36 
     37    /** 
     38     * Output the actual cell in the media file sizes row on the media library 
     39     */ 
     40    function mediafilesizes_library_column_row( $column_name, $id ) { 
     41         
     42        global $wpmu_version; 
     43         
     44        if ($column_name == 'media_filesizes') { 
     45             
     46            $space = mediafilesizes_get_size($id); 
     47            $totalspace = $space['total']; 
     48            $originalspace = $space['original']; 
     49             
     50            $class = '';  //for caution, warning, alert - based on percentage of quota used 
     51             
     52            $displayoriginalspace = round($originalspace / 1024, 0). " KB"; 
     53             
     54             
     55            if ($totalspace) { 
     56                //$original is different from total - display original as well 
     57                $displaytotalspace = round($totalspace / 1024, 0) . " KB"; 
     58                echo _('All Sizes') . ": " . $displaytotalspace . "<br/>"; 
     59                echo _('Original') . ": " . $displayoriginalspace; 
     60                 
     61            } else { 
     62                // just 1 
     63                echo $displayoriginalspace; 
     64            }  
     65             
     66             
     67            // determine percentage of space used. Displayed only if >= 1 
     68             
     69            if (function_exists('get_space_allowed')) { 
     70                $quota = get_space_allowed(); 
     71                $quota = $quota * 1048576; 
     72                $percentage = round($totalspace/$quota*100, 1); 
     73                 
     74                if ($percentage >= 1) { 
     75                     
     76                    $class = "media-file-sizes-caution"; 
     77                    if ($percentage >= 3) { 
     78                        $class = "media-file-sizes-warning"; 
     79                        if ($percentage >= 10) { 
     80                            $class = "media-file-sizes-alert"; 
     81                        } 
     82                    }    
     83                    $quota_info = "<br /><span class='" . $class . "'>".$percentage."% " . _('of allowed space') . "</span>"; 
     84                    echo $quota_info; 
     85                } 
     86            } 
     87             
     88        } //if column_name == media_filesizes 
     89    } 
     90    add_action( 'manage_media_custom_column', 'mediafilesizes_library_column_row', 10, 2 ); 
     91 
     92    /** 
     93     * Calculate (if necessary), cache (if necessary), and return the size of this media item 
     94     */ 
     95    function mediafilesizes_get_size($id) { 
     96         
     97        $return_array = array( 
     98                "original"=> "", 
     99                "total" => "", 
     100        ); 
     101             
     102        $upload_dir = wp_upload_dir(); 
     103        $upload_base_dir = $upload_dir['basedir']; 
     104 
     105         
     106        $space = 0; //totalspace 
    90107        $metadata = wp_get_attachment_metadata($id); 
    91108         
     
    96113            $orig_full_path = $upload_base_dir . "/" . $original_sub_path; 
    97114            $originalsize = filesize($orig_full_path); 
     115             
     116            $return_array['original'] = $originalsize; 
    98117             
    99118            //extract upload path 
     
    106125            if ($metadata['sizes']) { 
    107126                foreach ($metadata['sizes'] as $size) {                  
    108                      
    109                     //var_dump($size); 
    110                      
    111                     $sizepath = $str_path . "/" . $size['file']; 
    112                                              
    113                     //echo "<br>Line " .  __LINE__ . " sizepath: " . $sizepath . "<br>"; 
    114                      
     127                                 
     128                    $sizepath = $str_path . "/" . $size['file'];                 
    115129                    $this_size = filesize($sizepath); 
    116130                    $space = $space + $this_size; 
     
    118132            } 
    119133         
     134            $return_array['total'] = $space; 
    120135                 
    121136        }  else { 
     
    128143            $space = filesize($upload_base_dir . "/" . $path); 
    129144             
     145            $return_array['original'] = $space; 
     146             
    130147        } 
    131148        //cache mediafilesize for sorting purposes 
    132         update_post_meta($id, 'mediafilesize', $space); 
    133         return $space; 
    134 } 
    135  
    136 /** 
    137  * cache media file size as attachment data for performance (and required for sorting) 
    138  */ 
    139 function mediafilesizes_run_metadata() { 
    140     $args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => null );  
    141     $attachments = get_posts( $args ); 
    142      
    143     if ($attachments) { 
    144         foreach ($attachments as $post) { 
    145             setup_postdata($post); 
    146             $size = mediafilesizes_get_size($post->ID); 
    147             update_post_meta($post->ID, 'mediafilesize', $size); 
     149        update_post_meta($id, 'mediafilesize', $return_array['total']); 
     150             
     151        return $return_array; 
     152    } 
     153 
     154    /** 
     155     * cache media file size as attachment data for sorting 
     156     */ 
     157    function mediafilesizes_run_metadata() { 
     158        $args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => null );  
     159        $attachments = get_posts( $args ); 
     160         
     161        if ($attachments) { 
     162            foreach ($attachments as $post) { 
     163                setup_postdata($post); 
     164                $size = mediafilesizes_get_size($post->ID); 
     165                update_post_meta($post->ID, 'mediafilesize', $size); 
     166            } 
    148167        } 
    149168    } 
    150 } 
    151  
    152 /**  
    153  * remove stored metadata with each attachment (on deactivation) 
    154  */ 
    155 function mediafilesizes_clear_metadata() { 
    156     $args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => null );  
    157     $attachments = get_posts( $args ); 
    158      
    159     if ($attachments) { 
    160         foreach ($attachments as $post) { 
    161             setup_postdata($post); 
    162             delete_post_meta($post->ID, 'mediafilesize'); 
     169 
     170    /**  
     171     * remove stored metadata with each attachment (on deactivation) 
     172     */ 
     173    function mediafilesizes_clear_metadata() { 
     174        $args = array( 'post_type' => 'attachment', 'numberposts' => -1, 'post_status' => null, 'post_parent' => null );  
     175        $attachments = get_posts( $args ); 
     176         
     177        if ($attachments) { 
     178            foreach ($attachments as $post) { 
     179                setup_postdata($post); 
     180                delete_post_meta($post->ID, 'mediafilesize'); 
     181            } 
    163182        } 
    164183    } 
    165 } 
    166  
    167 /** 
    168  * check for a plugin upgrade and do any necessary actions. 
    169  */ 
    170 function mediafilesizes_check_upgrade() { 
    171          
    172     $version = get_option('mediafilesize_version', '0'); 
    173     $version = (float) $version; 
    174     if ($version < 1.2) { 
    175         mediafilesizes_clear_metadata(); 
    176         mediafilesizes_run_metadata(); 
    177         update_option('mediafilesize_version', '1.2'); 
    178     } 
    179      
    180 } 
    181  
    182  
    183 /** 
    184  * register the media file size column as sortable (3.1+) 
    185  */ 
    186 function mediafilesizes_library_register_sortable($columns) { 
    187     $columns['media_filesizes'] = 'mediafilesize'; 
    188     return $columns;     
    189 } 
    190 add_filter( 'manage_upload_sortable_columns', 'mediafilesizes_library_register_sortable'); 
    191  
    192 /** 
    193  * Define what it means to sort by 'mediafilesizes' 
    194  */ 
    195 function mediafilesizes_column_orderby( $vars ) { 
    196          
    197     if ( isset( $vars['orderby'] ) && 'mediafilesize' == $vars['orderby'] ) { 
    198              
    199         $vars = array_merge( $vars, array( 
    200             'meta_key' => 'mediafilesize', 
    201             'orderby' => 'meta_value_num'  
    202         ) ); 
    203     }  
    204     return $vars; 
    205 } 
    206 add_filter('request', 'mediafilesizes_column_orderby'); 
    207  
    208  
    209 /** 
    210  * Add CSS to wp_head (for percent coloring) 
    211  */ 
    212 function mediafilesizes_css_admin() { 
    213      
    214     // CSS and Javascript for admin head 
    215     ?> 
    216     <!-- Media File Sizes Admin CSS --> 
    217     <style> 
    218     .media-file-sizes-caution {color: #CC6600;} 
    219     .media-file-sizes-warning {color: #F00;} 
    220     .media-file-sizes-alert {color: #F00; font-weight: bold;} 
    221     </style> 
    222     <?php  
    223 } 
    224 //only embed these on the media page 
    225 if (strpos($_SERVER['REQUEST_URI'], 'upload.php')) { 
    226     add_action('admin_head', 'mediafilesizes_css_admin');    
    227     add_action('admin_head', 'mediafilesizes_check_upgrade'); 
    228 } 
     184 
     185    /** 
     186     * check for a plugin upgrade and do any necessary actions. 
     187     */ 
     188    function mediafilesizes_check_upgrade() { 
     189             
     190        $version = get_option('mediafilesize_version', '0'); 
     191        $version = (float) $version; 
     192        if ($version < 1.3) { 
     193            mediafilesizes_clear_metadata(); 
     194            mediafilesizes_run_metadata(); 
     195            update_option('mediafilesize_version', '1.3'); 
     196        }    
     197    } 
     198 
     199 
     200    /** 
     201     * register the media file size column as sortable (3.1+) 
     202     */ 
     203    function mediafilesizes_library_register_sortable($columns) { 
     204        $columns['media_filesizes'] = 'mediafilesize'; 
     205        return $columns;     
     206    } 
     207    add_filter( 'manage_upload_sortable_columns', 'mediafilesizes_library_register_sortable'); 
     208 
     209    /** 
     210     * Define what it means to sort by 'mediafilesizes' 
     211     */ 
     212    function mediafilesizes_column_orderby( $vars ) { 
     213             
     214        if ( isset( $vars['orderby'] ) && 'mediafilesize' == $vars['orderby'] ) { 
     215                 
     216            $vars = array_merge( $vars, array( 
     217                'meta_key' => 'mediafilesize', 
     218                'orderby' => 'meta_value_num'  
     219            ) ); 
     220        }  
     221        return $vars; 
     222    } 
     223    add_filter('request', 'mediafilesizes_column_orderby'); 
     224 
     225 
     226    /** 
     227     * Add CSS to wp_head (for percent coloring) 
     228     */ 
     229    function mediafilesizes_css_admin() { 
     230         
     231        // CSS and Javascript for admin head 
     232        ?> 
     233        <!-- Media File Sizes Admin CSS --> 
     234        <style> 
     235        .media-file-sizes-caution {color: #CC6600;} 
     236        .media-file-sizes-warning {color: #F00;} 
     237        .media-file-sizes-alert {color: #F00; font-weight: bold;} 
     238        </style> 
     239        <?php  
     240    } 
     241    //only embed these on the media page 
     242    if (strpos($_SERVER['REQUEST_URI'], 'upload.php')) { 
     243        add_action('admin_head', 'mediafilesizes_css_admin');    
     244        add_action('admin_head', 'mediafilesizes_check_upgrade'); 
     245    } 
     246 
     247} //is_admin 
    229248 
    230249/** 
Note: See TracChangeset for help on using the changeset viewer.