Skip to:
Content

BuddyPress.org

Ticket #6591: 6591.02.patch

File 6591.02.patch, 3.2 KB (added by imath, 9 years ago)
  • src/bp-core/classes/class-bp-attachment-avatar.php

    diff --git src/bp-core/classes/class-bp-attachment-avatar.php src/bp-core/classes/class-bp-attachment-avatar.php
    index f003b65..b9b6140 100644
    class BP_Attachment_Avatar extends BP_Attachment { 
    4141                                9  => sprintf( __( 'That photo is too big. Please upload one smaller than %s', 'buddypress' ), size_format( bp_core_avatar_original_max_filesize() ) ),
    4242                                10 => sprintf( _n( 'Please upload only this file type: %s.', 'Please upload only these file types: %s.', count( $allowed_types ), 'buddypress' ), self::get_avatar_types( $allowed_types ) ),
    4343                        ),
     44
     45                        // Make sure no argument will be passed to our upload dir filters
     46                        'upload_dir_filter_arg' => 0,
    4447                ) );
    4548        }
    4649
  • src/bp-core/classes/class-bp-attachment.php

    diff --git src/bp-core/classes/class-bp-attachment.php src/bp-core/classes/class-bp-attachment.php
    index f24dabc..f233eb7 100644
    abstract class BP_Attachment { 
    4141                'file_input'            => '',
    4242                'upload_error_strings'  => array(),
    4343                'required_wp_files'     => array( 'file' ),
     44                'upload_dir_filter_arg' => 1,
    4445        );
    4546
    4647        /**
    abstract class BP_Attachment { 
    9192                        } elseif ( 'base_dir' === $key ) {
    9293                                $this->{$key} = sanitize_title( $param );
    9394
     95                        // Sanitize the upload dir filter arg to pass
     96                        } elseif ( 'upload_dir_filter_arg' === $key ) {
     97                                $this->{$key} = (int) $param;
     98
    9499                        // Action & File input are already set and sanitized
    95100                        } elseif ( 'action' !== $key && 'file_input' !== $key ) {
    96101                                $this->{$key} = $param;
    abstract class BP_Attachment { 
    268273
    269274                // Make sure the file will be uploaded in the attachment directory
    270275                if ( ! empty( $upload_dir_filter ) ) {
    271                         add_filter( 'upload_dir', $upload_dir_filter, 10, 0 );
     276                        add_filter( 'upload_dir', $upload_dir_filter, 10, $this->upload_dir_filter_arg );
    272277                }
    273278
    274279                // Upload the attachment
    abstract class BP_Attachment { 
    276281
    277282                // Restore WordPress Uploads data
    278283                if ( ! empty( $upload_dir_filter ) ) {
    279                         remove_filter( 'upload_dir', $upload_dir_filter, 10, 0 );
     284                        remove_filter( 'upload_dir', $upload_dir_filter, 10, $this->upload_dir_filter_arg );
    280285                }
    281286
    282287                // Remove the pre WordPress 4.0 static filter
  • tests/phpunit/testcases/core/class-bp-attachment.php

    diff --git tests/phpunit/testcases/core/class-bp-attachment.php tests/phpunit/testcases/core/class-bp-attachment.php
    index f6e7d13..4789d3f 100644
    class BP_Tests_BP_Attachment_TestCases extends BP_UnitTestCase { 
    328328                // clean up!
    329329                $this->clean_files();
    330330        }
     331
     332        /**
     333         * @group upload
     334         * @group avatar
     335         */
     336        public function test_bp_attachment_upload_dir_filter_arg() {
     337                $attachment_class = new BPTest_Attachment_Extension( array(
     338                        'action'                => 'attachment_action',
     339                        'file_input'            => 'attachment_file_input',
     340                        'base_dir'                  => 'attachment_base_dir',
     341                ) );
     342
     343                $this->assertTrue( 1 === $attachment_class->upload_dir_filter_arg );
     344
     345                $avatar_attachment = new BP_Attachment_Avatar();
     346
     347                $this->assertTrue( 0 === $avatar_attachment->upload_dir_filter_arg );
     348        }
    331349}