Skip to:
Content

BuddyPress.org

Ticket #6853: 6853.diff

File 6853.diff, 8.7 KB (added by boonebgorges, 9 years ago)
  • src/bp-activity/bp-activity-loader.php

    diff --git src/bp-activity/bp-activity-loader.php src/bp-activity/bp-activity-loader.php
    index 69cbee5..6be0191 100644
    class BP_Activity_Component extends BP_Component { 
    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

    diff --git src/bp-blogs/bp-blogs-loader.php src/bp-blogs/bp-blogs-loader.php
    index 67d84db..b8758c5 100644
    class BP_Blogs_Component extends BP_Component { 
    125125                        'cache',
    126126                        'actions',
    127127                        'screens',
    128                         'classes',
    129128                        'template',
    130129                        'filters',
    131130                        'activity',
    class BP_Blogs_Component extends BP_Component { 
    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

    diff --git src/bp-friends/bp-friends-loader.php src/bp-friends/bp-friends-loader.php
    index 9aff908..16ea47a 100644
    class BP_Friends_Component extends BP_Component { 
    4646                        'actions',
    4747                        'screens',
    4848                        'filters',
    49                         'classes',
    5049                        'activity',
    5150                        'template',
    5251                        'functions',
    class BP_Friends_Component extends BP_Component { 
    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

    diff --git src/bp-groups/bp-groups-loader.php src/bp-groups/bp-groups-loader.php
    index 4c7bc85..a590fa2 100644
    class BP_Groups_Component extends BP_Component { 
    111111                        'actions',
    112112                        'filters',
    113113                        'screens',
    114                         'classes',
    115114                        'widgets',
    116115                        'activity',
    117116                        'template',
    class BP_Groups_Component extends BP_Component { 
    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

    diff --git src/bp-loader.php src/bp-loader.php
    index c59fef2..4d12cfe 100644
    class BuddyPress { 
    101101         */
    102102        public $active_components = array();
    103103
     104        /**
     105         * @var bool Whether autoload is in use.
     106         */
     107        public $do_autoload = false;
     108
    104109        /** Option Overload *******************************************************/
    105110
    106111        /**
    class BuddyPress { 
    457462         * @uses is_admin() If in WordPress admin, load additional file.
    458463         */
    459464        private function includes() {
     465                if ( function_exists( 'spl_autoload_register' ) ) {
     466                        spl_autoload_register( array( $this, 'autoload' ) );
     467                        $this->autoload = true;
     468                }
    460469
    461470                // Load the WP abstraction file so BuddyPress can run on all WordPress setups.
    462471                require( $this->plugin_dir . 'bp-core/bp-core-wpabstraction.php' );
    class BuddyPress { 
    478487                require( $this->plugin_dir . 'bp-core/bp-core-cssjs.php'            );
    479488                require( $this->plugin_dir . 'bp-core/bp-core-update.php'           );
    480489                require( $this->plugin_dir . 'bp-core/bp-core-options.php'          );
    481                 require( $this->plugin_dir . 'bp-core/bp-core-classes.php'          );
    482490                require( $this->plugin_dir . 'bp-core/bp-core-taxonomy.php'         );
    483491                require( $this->plugin_dir . 'bp-core/bp-core-filters.php'          );
    484492                require( $this->plugin_dir . 'bp-core/bp-core-attachments.php'      );
    class BuddyPress { 
    494502                require( $this->plugin_dir . 'bp-core/bp-core-loader.php'           );
    495503                require( $this->plugin_dir . 'bp-core/bp-core-customizer-email.php' );
    496504
     505                if ( ! $this->autoload ) {
     506                        require( $this->plugin_dir . 'bp-core/bp-core-classes.php' );
     507                }
     508
    497509                // Skip or load deprecated content
    498510                if ( false !== $this->load_deprecated ) {
    499511                        require( $this->plugin_dir . 'bp-core/deprecated/1.2.php' );
    class BuddyPress { 
    511523        }
    512524
    513525        /**
     526         * Autoload classes.
     527         *
     528         * @since 2.5.0
     529         *
     530         * @param string $class
     531         */
     532        public function autoload( $class ) {
     533                $class_parts = explode( '_', strtolower( $class ) );
     534
     535                if ( 'bp' !== $class_parts[0] ) {
     536                        return;
     537                }
     538
     539                $components = array(
     540                        'activity',
     541                        'blogs',
     542                        'core',
     543                        'friends',
     544                        'groups',
     545                        'members',
     546                        'messages',
     547                        'notifications',
     548                        'xprofile',
     549                );
     550
     551                // These classes don't have a name that matches their component.
     552                $irregular_map = array(
     553                        'BP_Attachment_Avatar'         => 'core',
     554                        'BP_Attachment_Cover_Image'    => 'core',
     555                        'BP_Attachment'                => 'core',
     556                        'BP_Button'                    => 'core',
     557                        'BP_Date_Query'                => 'core',
     558                        'BP_Email_Delivery'            => 'core',
     559                        'BP_Email_Recipient'           => 'core',
     560                        'BP_Email'                     => 'core',
     561                        'BP_Embed'                     => 'core',
     562                        'BP_Media_Extractor'           => 'core',
     563                        'BP_Members_Suggestions'       => 'core',
     564                        'BP_PHPMailer'                 => 'core',
     565                        'BP_Recursive_Query'           => 'core',
     566                        'BP_Suggestions'               => 'core',
     567                        'BP_User_Query'                => 'core',
     568                        'BP_Walker_Nav_Menu_Checklist' => 'core',
     569                        'BP_Walker_Nav_Menu_Menu'      => 'core',
     570
     571                        'BP_Group_Extension'    => 'groups',
     572                        'BP_Group_Member_Query' => 'groups',
     573
     574                        'BP_Signup' => 'members',
     575                );
     576
     577                $component = null;
     578
     579                // First check to see if the class is one without a properly namespaced name.
     580                if ( isset( $irregular_map[ $class ] ) ) {
     581                        $component = $irregular_map[ $class ];
     582
     583                // Next chunk is usually the component name.
     584                } elseif ( in_array( $class_parts[1], $components, true ) ) {
     585                        $component = $class_parts[1];
     586                }
     587
     588                if ( ! $component ) {
     589                        return;
     590                }
     591
     592                // Sanitize class name.
     593                $class = strtolower( str_replace( '_', '-', $class ) );
     594
     595                require dirname( __FILE__ ) . "/bp-{$component}/classes/class-{$class}.php";
     596        }
     597
     598        /**
    514599         * Set up the default hooks and actions.
    515600         *
    516601         * @since 1.6.0
  • src/bp-members/bp-members-loader.php

    diff --git src/bp-members/bp-members-loader.php src/bp-members/bp-members-loader.php
    index 0b5e60f..4f4a04b 100644
    class BP_Members_Component extends BP_Component { 
    5454                // Always include these files.
    5555                $includes = array(
    5656                        'actions',
    57                         'classes',
    5857                        'filters',
    5958                        'screens',
    6059                        'template',
    class BP_Members_Component extends BP_Component { 
    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

    diff --git src/bp-messages/bp-messages-loader.php src/bp-messages/bp-messages-loader.php
    index cc09026..2b39b86 100644
    class BP_Messages_Component extends BP_Component { 
    6060                        'cache',
    6161                        'actions',
    6262                        'screens',
    63                         'classes',
    6463                        'filters',
    6564                        'template',
    6665                        'functions',
    class BP_Messages_Component extends BP_Component { 
    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

    diff --git src/bp-notifications/bp-notifications-loader.php src/bp-notifications/bp-notifications-loader.php
    index 399fd18..e2fe049 100644
    class BP_Notifications_Component extends BP_Component { 
    4545        public function includes( $includes = array() ) {
    4646                $includes = array(
    4747                        'actions',
    48                         'classes',
    4948                        'screens',
    5049                        'adminbar',
    5150                        'template',
    class BP_Notifications_Component extends BP_Component { 
    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

    diff --git src/bp-xprofile/bp-xprofile-loader.php src/bp-xprofile/bp-xprofile-loader.php
    index 9a76f09..f1bce40 100644
    class BP_XProfile_Component extends BP_Component { 
    6666                        'activity',
    6767                        'screens',
    6868                        'caps',
    69                         'classes',
    7069                        'filters',
    7170                        'settings',
    7271                        'template',
    class BP_XProfile_Component extends BP_Component { 
    7877                        $includes[] = 'admin';
    7978                }
    8079
     80                if ( ! buddypress()->do_autoload ) {
     81                        $includes[] = 'classes';
     82                }
     83
    8184                parent::includes( $includes );
    8285        }
    8386