Skip to:
Content

BuddyPress.org

Changeset 11155


Ignore:
Timestamp:
09/22/2016 01:50:49 AM (10 years ago)
Author:
r-a-y
Message:

Members: Auto-create registration pages when user registration is enabled.

Props r-a-y, boonebgorges.

See #7193.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-members/classes/class-bp-members-admin.php

    r11141 r11155  
    215215                                add_filter( 'set-screen-option',    array( $this, 'signup_screen_options' ), 10, 3 );
    216216                        }
     217
     218                        // Registration is turned on.
     219                        add_action( 'update_site_option_registration',  array( $this, 'multisite_registration_on' ),   10, 2 );
     220                        add_action( 'update_option_users_can_register', array( $this, 'single_site_registration_on' ), 10, 2 );
    217221                }
    218222
     
    232236                        // Filter WP admin users list table to include users of the specified type.
    233237                        add_filter( 'pre_get_users', array( $this, 'users_table_filter_by_type' ) );
     238                }
     239        }
     240
     241        /**
     242         * Create registration pages when multisite user registration is turned on.
     243         *
     244         * @since 2.7.0
     245         *
     246         * @param string $option_name Current option name; value is always 'registration'.
     247         * @param string $value
     248         */
     249        public function multisite_registration_on( $option_name, $value ) {
     250                if ( 'user' === $value || 'all' === $value ) {
     251                        bp_core_add_page_mappings( array(
     252                                'register' => 1,
     253                                'activate' => 1
     254                        ) );
     255                }
     256        }
     257
     258        /**
     259         * Create registration pages when single site registration is turned on.
     260         *
     261         * @since 2.7.0
     262         *
     263         * @param string $old_value
     264         * @param string $value
     265         */
     266        public function single_site_registration_on( $old_value, $value ) {
     267                // Single site.
     268                if ( ! is_multisite() && ! empty( $value ) ) {
     269                        bp_core_add_page_mappings( array(
     270                                'register' => 1,
     271                                'activate' => 1
     272                        ) );
    234273                }
    235274        }
  • trunk/tests/phpunit/testcases/core/functions/bpCoreGetDirectoryPageIds.php

    r9819 r11155  
    286286                $this->assertNotEmpty( $dir_pages->activity );
    287287        }
     288
     289        /**
     290         * @ticket BP7193
     291         */
     292        public function test_bp_core_get_directory_pages_autocreate_register_pages_single_site() {
     293                if ( is_multisite() ) {
     294                        return;
     295                }
     296
     297                // Emulate being in the admin area.
     298                if ( ! class_exists( 'BP_Members_Admin', false ) ) {
     299                        require BP_PLUGIN_DIR . 'bp-members/classes/class-bp-members-admin.php';
     300                }
     301                $admin = new BP_Members_Admin;
     302                add_action( 'update_option_users_can_register', array( $admin, 'single_site_registration_on' ), 10, 2 );
     303
     304                // Emulate turning registration on.
     305                update_option( 'users_can_register', 1 );
     306
     307                // Now check directory pages.
     308                $pages = bp_core_get_directory_pages();
     309
     310                $this->assertNotEmpty( $pages->register );
     311                $this->assertNotEmpty( $pages->activate );
     312
     313                remove_action( 'update_option_users_can_register', array( $admin, 'single_site_registration_on' ), 10, 2 );
     314        }
     315
     316        /**
     317         * @ticket BP7193
     318         */
     319        public function test_bp_core_get_directory_pages_autocreate_register_pages_multisite() {
     320                if ( ! is_multisite() ) {
     321                        return;
     322                }
     323
     324                // Emulate being in the network admin area.
     325                if ( ! class_exists( 'BP_Members_Admin', false ) ) {
     326                        require BP_PLUGIN_DIR . 'bp-members/classes/class-bp-members-admin.php';
     327                }
     328                $admin = new BP_Members_Admin;
     329                add_action( 'update_site_option_registration', array( $admin, 'multisite_registration_on' ), 10, 2 );
     330
     331                // Emulate turning registration on.
     332                update_site_option( 'registration', 'user' );
     333
     334                // Now check directory pages.
     335                $pages = bp_core_get_directory_pages();
     336
     337                $this->assertNotEmpty( $pages->register );
     338                $this->assertNotEmpty( $pages->activate );
     339
     340                remove_action( 'update_site_option_registration', array( $admin, 'multisite_registration_on' ), 10, 2 );
     341        }
    288342}
Note: See TracChangeset for help on using the changeset viewer.