Skip to:
Content

BuddyPress.org

Ticket #4728: 4728.01.patch

File 4728.01.patch, 6.2 KB (added by r-a-y, 10 years ago)
  • src/bp-core/bp-core-functions.php

     
    21472147
    21482148        return apply_filters( 'bp_core_get_suggestions', $retval, $args );
    21492149}
     2150
     2151/** Visibility ***************************************************************/
     2152
     2153/**
     2154 * Registers a visiblity level with BuddyPress.
     2155 *
     2156 * Run this on the 'bp_setup_globals' action.
     2157 *
     2158 * @since BuddyPress (2.3.0)
     2159 *
     2160 * @param array $args {
     2161 *     Array of arguments.
     2162 *     @type string $id       The ID for the visibility level. Required.
     2163 *     @type string $label    Label for the visibility level. Required.
     2164 *     @type int    $position Position to order the visibility level. Optional. Default: 99.
     2165 * }
     2166 * @return bool
     2167 */
     2168function bp_register_visibility_level( $args = array() ) {
     2169        $r = bp_parse_args( $args, array(
     2170                'id'       => '',
     2171                'label'    => '',
     2172                'position' => 99
     2173        ), 'register_visibility_level' );
     2174
     2175        if ( empty( $r['id'] ) || empty( $r['label'] ) ) {
     2176                return false;
     2177        }
     2178
     2179        $bp = buddypress();
     2180
     2181        if ( empty( $bp->core->visibility_levels ) ) {
     2182                $bp->core->visibility_levels = array();
     2183        }
     2184
     2185        $id = sanitize_key( $r['id'] );
     2186        unset( $r['id'] );
     2187        if ( ! empty( $bp->core->visibility_levels[ $id ] ) ) {
     2188                return false;
     2189        }
     2190
     2191        // register the level
     2192        $bp->core->visibility_levels[ $id ]['id'] = $id;
     2193
     2194        // left open so plugins can add parameters if needed (callbacks, etc.)
     2195        $bp->core->visibility_levels[ $id ] = array_merge( $bp->core->visibility_levels[ $id ], $r );
     2196
     2197        return true;
     2198}
     2199
     2200/**
     2201 * Deregisters a BuddyPress visiblity level.
     2202 *
     2203 * Run this on the 'bp_setup_globals' if needed.
     2204 *
     2205 * @since BuddyPress (2.3.0)
     2206 *
     2207 * @param string $id The ID of the visibility level to deregister.
     2208 * @return bool
     2209 */
     2210function bp_deregister_visibility_level( $id = '' ) {
     2211        if ( empty( $id ) ) {
     2212                return false;
     2213        }
     2214
     2215        $bp = buddypress();
     2216
     2217        if ( empty( $bp->core->visibility_levels[$id] ) ) {
     2218                return false;
     2219        }
     2220
     2221        // Don't deregister core levels.  Is this necessary?
     2222        // Someone could use the 'bp_core_get_visibility_levels' filter as well...
     2223        /*
     2224        if ( true === in_array( $id, array( 'public', 'adminsonly', 'loggedin' ), true ) ) {
     2225                return false;
     2226        }
     2227        */
     2228
     2229        unset( $bp->core->visibility_levels[$id] );
     2230        return true;
     2231}
     2232
     2233/**
     2234 * Get available visibility levels for BuddyPress.
     2235 *
     2236 * @since BuddyPress (2.3.0)
     2237 *
     2238 * @return array
     2239 */
     2240function bp_core_get_visibility_levels() {
     2241
     2242        /**
     2243         * Filters the visibility levels.
     2244         *
     2245         * @since BuddyPress (2.3.0)
     2246         *
     2247         * @param array Array of visibility levels.
     2248         */
     2249        return apply_filters( 'bp_core_get_visibility_levels', buddypress()->core->visibility_levels );
     2250}
     2251
     2252/**
     2253 * Sorts visibility levels by the 'position' subkey.
     2254 *
     2255 * Used only once.
     2256 *
     2257 * @since BuddyPress (2.3.0)
     2258 *
     2259 * @access private
     2260 */
     2261function _bp_core_sort_visibility_levels() {
     2262        $bp = buddypress();
     2263        $temp = bp_sort_by_key( $bp->core->visibility_levels, 'position', 'num' );
     2264
     2265        $bp->core->visibility_levels = array();
     2266        foreach( $temp as $level ) {
     2267                $bp->core->visibility_levels[ $level['id'] ] = $level;
     2268        }
     2269        unset( $temp );
     2270}
     2271add_action( 'bp_setup_globals', '_bp_core_sort_visibility_levels', 999 );
     2272 No newline at end of file
  • src/bp-friends/bp-friends-loader.php

     
    9595                );
    9696
    9797                parent::setup_globals( $args );
     98
     99                // Register visibility level
     100                bp_register_visibility_level( array(
     101                        'id'    => 'friends',
     102                        'label' => _x( 'My Friends', 'Visibility level setting', 'buddypress' )
     103                ) );
    98104        }
    99105
    100106        /**
  • src/bp-members/bp-members-loader.php

     
    145145                        $bp->profile->slug = 'profile';
    146146                        $bp->profile->id   = 'profile';
    147147                }
     148
     149                /** Visibility ********************************************************/
     150
     151                bp_register_visibility_level( array(
     152                        'id'       => 'public',
     153                        'label'    => _x( 'Everyone', 'Visibility level setting', 'buddypress' ),
     154                        'position' => 10
     155                ) );
     156                bp_register_visibility_level( array(
     157                        'id'       => 'adminsonly',
     158                        'label'    => _x( 'Only Me', 'Visibility level setting', 'buddypress' ),
     159                        'position' => 20
     160                ) );
     161                bp_register_visibility_level( array(
     162                        'id'       => 'loggedin',
     163                        'label'    => _x( 'All Members', 'Visibility level setting', 'buddypress' ),
     164                        'position' => 30
     165                ) );
    148166        }
    149167
    150168        /**
  • src/bp-xprofile/bp-xprofile-functions.php

     
    10281028         *
    10291029         * @param array $visibility_levels Array of visibility levels.
    10301030         */
    1031         return apply_filters( 'bp_xprofile_get_visibility_levels', buddypress()->profile->visibility_levels );
     1031        return apply_filters( 'bp_xprofile_get_visibility_levels', bp_core_get_visibility_levels() );
    10321032}
    10331033
    10341034/**
  • src/bp-xprofile/bp-xprofile-loader.php

     
    116116                // but it must be whitelisted
    117117                $this->field_types[] = 'option';
    118118
    119                 // Register the visibility levels. See bp_xprofile_get_visibility_levels() to filter
    120                 $this->visibility_levels = array(
    121                         'public' => array(
    122                                 'id'      => 'public',
    123                                 'label' => _x( 'Everyone', 'Visibility level setting', 'buddypress' )
    124                         ),
    125                         'adminsonly' => array(
    126                                 'id'      => 'adminsonly',
    127                                 'label' => _x( 'Only Me', 'Visibility level setting', 'buddypress' )
    128                         ),
    129                         'loggedin' => array(
    130                                 'id'      => 'loggedin',
    131                                 'label' => _x( 'All Members', 'Visibility level setting', 'buddypress' )
    132                         )
    133                 );
    134 
    135                 if ( bp_is_active( 'friends' ) ) {
    136                         $this->visibility_levels['friends'] = array(
    137                                 'id'    => 'friends',
    138                                 'label' => _x( 'My Friends', 'Visibility level setting', 'buddypress' )
    139                         );
    140                 }
    141 
    142119                // Tables
    143120                $global_tables = array(
    144121                        'table_name_data'   => $bp->table_prefix . 'bp_xprofile_data',