Skip to:
Content

BuddyPress.org

Changeset 13134


Ignore:
Timestamp:
10/30/2021 05:27:30 PM (5 years ago)
Author:
imath
Message:

Improve 2 Core Attachments functions

  • stop using a switch() statement in favor of some if/else ones to avoid a possible notice error when getting all allowed BP Attachements.
  • stop using wp_match_mime_types() inside the bp_attachments_get_allowed_mimes() function. Using wp_match_mime_types() was generating unconsistent results when trying to get all BP Attachments allowed mime types.

Fixes #8595 (really)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-core/bp-core-attachments.php

    r13132 r13134  
    175175                $exts = array();
    176176
    177                 switch ( $type ) {
    178                         case 'video':
    179                                 $exts = wp_get_video_extensions();
    180                         break;
    181 
    182                         case 'audio':
    183                                 $exts = wp_get_audio_extensions();
    184                         break;
    185 
    186                         case isset( $wp_exts[ $type ] ):
    187                                 $exts = $wp_exts[ $type ];
    188                         break;
    189 
    190                         default:
    191                                 $allowed_mimes = get_allowed_mime_types();
    192 
    193                                 /**
    194                                  * Search for allowed mimes matching the type.
    195                                  *
    196                                  * Eg: using 'application/vnd.oasis' as the $type
    197                                  * parameter will get all OpenOffice extensions supported
    198                                  * by WordPress and allowed for the current user.
    199                                  */
    200                                 if ( '' !== $type ) {
    201                                         $allowed_mimes = preg_grep( '/' . addcslashes( $type, '/.+-' ) . '/', $allowed_mimes );
    202                                 }
    203 
    204                                 $allowed_types = array_keys( $allowed_mimes );
    205 
    206                                 // Loop to explode keys using '|'.
    207                                 foreach ( $allowed_types as $allowed_type ) {
    208                                         $t = explode( '|', $allowed_type );
    209                                         $exts = array_merge( $exts, (array) $t );
    210                                 }
    211                         break;
     177                if ( 'video' === $type ) {
     178                        $exts = wp_get_video_extensions();
     179                } elseif ( 'audio' === $type ) {
     180                        $exts = wp_get_audio_extensions();
     181                } elseif ( isset( $wp_exts[ $type ] ) ) {
     182                        $exts = $wp_exts[ $type ];
     183                } else {
     184                        $allowed_mimes = get_allowed_mime_types();
     185
     186                        /**
     187                         * Search for allowed mimes matching the type.
     188                         *
     189                         * Eg: using 'application/vnd.oasis' as the $type
     190                         * parameter will get all OpenOffice extensions supported
     191                         * by WordPress and allowed for the current user.
     192                         */
     193                        if ( '' !== $type ) {
     194                                $allowed_mimes = preg_grep( '/' . addcslashes( $type, '/.+-' ) . '/', $allowed_mimes );
     195                        }
     196
     197                        $allowed_types = array_keys( $allowed_mimes );
     198
     199                        // Loop to explode keys using '|'.
     200                        foreach ( $allowed_types as $allowed_type ) {
     201                                $t = explode( '|', $allowed_type );
     202                                $exts = array_merge( $exts, (array) $t );
     203                        }
    212204                }
    213205        }
     
    238230        }
    239231
    240         $validate_mimes = wp_match_mime_types( join( ',', $allowed_types ), wp_get_mime_types() );
    241         $allowed_mimes  = array_map( 'implode', $validate_mimes );
     232        $wp_mimes      = wp_get_mime_types();
     233        $allowed_mimes = array();
     234
     235        foreach ( $allowed_types as $allowed_type ) {
     236                $filetype = wp_check_filetype( '.' . $allowed_type, $wp_mimes );
     237
     238                if ( false === $filetype['ext'] || false === $filetype['type'] ) {
     239                        continue;
     240                }
     241
     242                $allowed_mimes[ $filetype['ext'] ] = $filetype['type'];
     243        }
    242244
    243245        /**
Note: See TracChangeset for help on using the changeset viewer.