Skip to:
Content

BuddyPress.org

Ticket #6853: 6853.02.patch

File 6853.02.patch, 7.9 KB (added by r-a-y, 8 years ago)
  • src/bp-activity/bp-activity-loader.php

     
    5353                        'actions',
    5454                        'screens',
    5555                        'filters',
    56                         'classes',
    5756                        'template',
    5857                        'functions',
    5958                        'notifications',
    6059                        'cache'
    6160                );
    6261
     62                if ( ! buddypress()->do_autoload ) {
     63                        $includes[] = 'classes';
     64                }
     65
    6366                // Load Akismet support if Akismet is configured.
    6467                $akismet_key = bp_get_option( 'wordpress_api_key' );
    6568
  • src/bp-blogs/bp-blogs-loader.php

     
    125125                        'cache',
    126126                        'actions',
    127127                        'screens',
    128                         'classes',
    129128                        'template',
    130129                        'filters',
    131130                        'activity',
     
    136135                        $includes[] = 'widgets';
    137136                }
    138137
     138                if ( ! buddypress()->do_autoload ) {
     139                        $includes[] = 'classes';
     140                }
     141
    139142                // Include the files.
    140143                parent::includes( $includes );
    141144        }
  • src/bp-friends/bp-friends-loader.php

     
    4646                        'actions',
    4747                        'screens',
    4848                        'filters',
    49                         'classes',
    5049                        'activity',
    5150                        'template',
    5251                        'functions',
     
    5453                        'widgets',
    5554                );
    5655
     56                if ( ! buddypress()->do_autoload ) {
     57                        $includes[] = 'classes';
     58                }
     59
    5760                parent::includes( $includes );
    5861        }
    5962
  • src/bp-groups/bp-groups-loader.php

     
    111111                        'actions',
    112112                        'filters',
    113113                        'screens',
    114                         'classes',
    115114                        'widgets',
    116115                        'activity',
    117116                        'template',
     
    124123                        $includes[] = 'admin';
    125124                }
    126125
     126                if ( ! buddypress()->do_autoload ) {
     127                        $includes[] = 'classes';
     128                }
     129
    127130                parent::includes( $includes );
    128131        }
    129132
  • src/bp-loader.php

     
    101101         */
    102102        public $active_components = array();
    103103
     104        /**
     105         * Whether autoload is in use.
     106         *
     107         * @since 2.5.0
     108         * @var bool
     109         */
     110        public $do_autoload = false;
     111
    104112        /** Option Overload *******************************************************/
    105113
    106114        /**
     
    457465         * @uses is_admin() If in WordPress admin, load additional file.
    458466         */
    459467        private function includes() {
     468                if ( function_exists( 'spl_autoload_register' ) ) {
     469                        spl_autoload_register( array( $this, 'autoload' ) );
     470                        $this->do_autoload = true;
     471                }
    460472
    461473                // Load the WP abstraction file so BuddyPress can run on all WordPress setups.
    462474                require( $this->plugin_dir . 'bp-core/bp-core-wpabstraction.php' );
     
    478490                require( $this->plugin_dir . 'bp-core/bp-core-cssjs.php'            );
    479491                require( $this->plugin_dir . 'bp-core/bp-core-update.php'           );
    480492                require( $this->plugin_dir . 'bp-core/bp-core-options.php'          );
    481                 require( $this->plugin_dir . 'bp-core/bp-core-classes.php'          );
    482493                require( $this->plugin_dir . 'bp-core/bp-core-taxonomy.php'         );
    483494                require( $this->plugin_dir . 'bp-core/bp-core-filters.php'          );
    484495                require( $this->plugin_dir . 'bp-core/bp-core-attachments.php'      );
     
    494505                require( $this->plugin_dir . 'bp-core/bp-core-loader.php'           );
    495506                require( $this->plugin_dir . 'bp-core/bp-core-customizer-email.php' );
    496507
     508                if ( ! $this->do_autoload ) {
     509                        require( $this->plugin_dir . 'bp-core/bp-core-classes.php' );
     510                }
     511
    497512                // Skip or load deprecated content
    498513                if ( false !== $this->load_deprecated ) {
    499514                        require( $this->plugin_dir . 'bp-core/deprecated/1.2.php' );
     
    511526        }
    512527
    513528        /**
     529         * Autoload classes.
     530         *
     531         * @since 2.5.0
     532         *
     533         * @param string $class
     534         */
     535        public function autoload( $class ) {
     536                $class_parts = explode( '_', strtolower( $class ) );
     537
     538                if ( 'bp' !== $class_parts[0] ) {
     539                        return;
     540                }
     541
     542                $components = array(
     543                        'activity',
     544                        'blogs',
     545                        'core',
     546                        'friends',
     547                        'groups',
     548                        'members',
     549                        'messages',
     550                        'notifications',
     551                        'xprofile',
     552                );
     553
     554                // These classes don't have a name that matches their component.
     555                $irregular_map = array(
     556                        'BP_Attachment_Avatar'         => 'core',
     557                        'BP_Attachment_Cover_Image'    => 'core',
     558                        'BP_Attachment'                => 'core',
     559                        'BP_Button'                    => 'core',
     560                        'BP_Date_Query'                => 'core',
     561                        'BP_Email_Delivery'            => 'core',
     562                        'BP_Email_Recipient'           => 'core',
     563                        'BP_Email'                     => 'core',
     564                        'BP_Embed'                     => 'core',
     565                        'BP_Media_Extractor'           => 'core',
     566                        'BP_Members_Suggestions'       => 'core',
     567                        'BP_PHPMailer'                 => 'core',
     568                        'BP_Recursive_Query'           => 'core',
     569                        'BP_Suggestions'               => 'core',
     570                        'BP_User_Query'                => 'core',
     571                        'BP_Walker_Nav_Menu_Checklist' => 'core',
     572                        'BP_Walker_Nav_Menu_Menu'      => 'core',
     573
     574                        'BP_Group_Extension'    => 'groups',
     575                        'BP_Group_Member_Query' => 'groups',
     576
     577                        'BP_Signup' => 'members',
     578                );
     579
     580                $component = null;
     581
     582                // First check to see if the class is one without a properly namespaced name.
     583                if ( isset( $irregular_map[ $class ] ) ) {
     584                        $component = $irregular_map[ $class ];
     585
     586                // Next chunk is usually the component name.
     587                } elseif ( in_array( $class_parts[1], $components, true ) ) {
     588                        $component = $class_parts[1];
     589                }
     590
     591                if ( ! $component ) {
     592                        return;
     593                }
     594
     595                // Sanitize class name.
     596                $class = strtolower( str_replace( '_', '-', $class ) );
     597
     598                require dirname( __FILE__ ) . "/bp-{$component}/classes/class-{$class}.php";
     599        }
     600
     601        /**
    514602         * Set up the default hooks and actions.
    515603         *
    516604         * @since 1.6.0
  • src/bp-members/bp-members-loader.php

     
    5454                // Always include these files.
    5555                $includes = array(
    5656                        'actions',
    57                         'classes',
    5857                        'filters',
    5958                        'screens',
    6059                        'template',
     
    6867                        $includes[] = 'activity';
    6968                }
    7069
     70                if ( ! buddypress()->do_autoload ) {
     71                        $includes[] = 'classes';
     72                }
     73
    7174                // Include these only if in admin.
    7275                if ( is_admin() ) {
    7376                        $includes[] = 'admin';
  • src/bp-messages/bp-messages-loader.php

     
    6060                        'cache',
    6161                        'actions',
    6262                        'screens',
    63                         'classes',
    6463                        'filters',
    6564                        'template',
    6665                        'functions',
     
    6867                        'widgets',
    6968                );
    7069
     70                if ( ! buddypress()->do_autoload ) {
     71                        $includes[] = 'classes';
     72                }
     73
    7174                // Conditional includes.
    7275                if ( bp_is_active( $this->id, 'star' ) ) {
    7376                        $includes[] = 'star';
  • src/bp-notifications/bp-notifications-loader.php

     
    4545        public function includes( $includes = array() ) {
    4646                $includes = array(
    4747                        'actions',
    48                         'classes',
    4948                        'screens',
    5049                        'adminbar',
    5150                        'template',
     
    5352                        'cache',
    5453                );
    5554
     55                if ( ! buddypress()->do_autoload ) {
     56                        $includes[] = 'classes';
     57                }
     58
    5659                parent::includes( $includes );
    5760        }
    5861
  • src/bp-xprofile/bp-xprofile-loader.php

     
    6666                        'activity',
    6767                        'screens',
    6868                        'caps',
    69                         'classes',
    7069                        'filters',
    7170                        'settings',
    7271                        'template',
     
    7877                        $includes[] = 'admin';
    7978                }
    8079
     80                if ( ! buddypress()->do_autoload ) {
     81                        $includes[] = 'classes';
     82                }
     83
    8184                parent::includes( $includes );
    8285        }
    8386