Skip to:
Content

BuddyPress.org

Ticket #2086: 2086.01.patch

File 2086.01.patch, 13.3 KB (added by boonebgorges, 13 years ago)
  • bp-activity/bp-activity-actions.php

    diff --git bp-activity/bp-activity-actions.php bp-activity/bp-activity-actions.php
    index 509d2bd..f73e579 100644
    add_action( 'bp_actions', 'bp_activity_action_mentions_feed' ); 
    577577function bp_activity_action_favorites_feed() {
    578578        global $bp, $wp_query;
    579579
    580         if ( !bp_is_user_activity() || !bp_is_current_action( 'favorites' ) || !bp_is_action_variable( 'feed', 0 ) )
     580        if ( !bp_is_user_activity() || !bp_is_current_action( bp_get_activity_favorites_slug() ) || !bp_is_action_variable( 'feed', 0 ) )
    581581                return false;
    582582
    583583        $wp_query->is_404 = false;
  • bp-activity/bp-activity-loader.php

    diff --git bp-activity/bp-activity-loader.php bp-activity/bp-activity-loader.php
    index 700fb72..6d53d67 100644
    class BP_Activity_Component extends BP_Component { 
    7676                // Define a slug, if necessary
    7777                if ( !defined( 'BP_ACTIVITY_SLUG' ) )
    7878                        define( 'BP_ACTIVITY_SLUG', $this->id );
     79               
     80                $slug_defaults = array(
     81                        'root_slug' => isset( $bp->pages->activity->slug ) ? $bp->pages->activity->slug : BP_ACTIVITY_SLUG,
     82                        'slug'      => BP_ACTIVITY_SLUG,
     83                        'just-me'   => 'just-me',
     84                        'favorites' => 'favorites',
     85                        'mentions'  => 'mentions'
     86                );
     87               
     88                $slugs = bp_parse_component_slugs( 'activity', $slug_defaults );
    7989
    8090                // Global tables for activity component
    8191                $global_tables = array(
    class BP_Activity_Component extends BP_Component { 
    8797                // Note that global_tables is included in this array.
    8898                $globals = array(
    8999                        'path'                  => BP_PLUGIN_DIR,
    90                         'slug'                  => BP_ACTIVITY_SLUG,
    91                         'root_slug'             => isset( $bp->pages->activity->slug ) ? $bp->pages->activity->slug : BP_ACTIVITY_SLUG,
     100                        'slugs'                 => $slugs,
     101                        'slug'                  => $slugs['slug'],
     102                        'root_slug'             => $slugs['root_slug'],
    92103                        'has_directory'         => true,
    93104                        'search_string'         => __( 'Search Activity...', 'buddypress' ),
    94105                        'global_tables'         => $global_tables,
    class BP_Activity_Component extends BP_Component { 
    118129                        'slug'                => $this->slug,
    119130                        'position'            => 10,
    120131                        'screen_function'     => 'bp_activity_screen_my_activity',
    121                         'default_subnav_slug' => 'just-me',
     132                        'default_subnav_slug' => $this->slugs['just-me'],
    122133                        'item_css_id'         => $this->id
    123134                );
    124135
    class BP_Activity_Component extends BP_Component { 
    140151                // Add the subnav items to the activity nav item if we are using a theme that supports this
    141152                $sub_nav[] = array(
    142153                        'name'            => __( 'Personal', 'buddypress' ),
    143                         'slug'            => 'just-me',
     154                        'slug'            => $this->slugs['just-me'],
    144155                        'parent_url'      => $activity_link,
    145156                        'parent_slug'     => $this->slug,
    146157                        'screen_function' => 'bp_activity_screen_my_activity',
    class BP_Activity_Component extends BP_Component { 
    150161                // @ mentions
    151162                $sub_nav[] = array(
    152163                        'name'            => __( 'Mentions', 'buddypress' ),
    153                         'slug'            => 'mentions',
     164                        'slug'            => $this->slugs['mentions'],
    154165                        'parent_url'      => $activity_link,
    155166                        'parent_slug'     => $this->slug,
    156167                        'screen_function' => 'bp_activity_screen_mentions',
    class BP_Activity_Component extends BP_Component { 
    161172                // Favorite activity items
    162173                $sub_nav[] = array(
    163174                        'name'            => __( 'Favorites', 'buddypress' ),
    164                         'slug'            => 'favorites',
     175                        'slug'            => $this->slugs['favorites'],
    165176                        'parent_url'      => $activity_link,
    166177                        'parent_slug'     => $this->slug,
    167178                        'screen_function' => 'bp_activity_screen_favorites',
    class BP_Activity_Component extends BP_Component { 
    245256                                'parent' => 'my-account-' . $this->id,
    246257                                'id'     => 'my-account-' . $this->id . '-mentions',
    247258                                'title'  => $title,
    248                                 'href'   => trailingslashit( $activity_link . 'mentions' )
     259                                'href'   => trailingslashit( $activity_link . bp_get_activity_mentions_slug() )
    249260                        );
    250261
    251262                        // Personal
    class BP_Activity_Component extends BP_Component { 
    261272                                'parent' => 'my-account-' . $this->id,
    262273                                'id'     => 'my-account-' . $this->id . '-favorites',
    263274                                'title'  => __( 'Favorites', 'buddypress' ),
    264                                 'href'   => trailingslashit( $activity_link . 'favorites' )
     275                                'href'   => trailingslashit( $activity_link . bp_get_activity_favorites_slug() )
    265276                        );
    266277
    267278                        // Friends?
  • bp-activity/bp-activity-template.php

    diff --git bp-activity/bp-activity-template.php bp-activity/bp-activity-template.php
    index 049d347..2d1b827 100644
    function bp_activity_slug() { 
    2525         *
    2626         * @since 1.5.0
    2727         *
    28          * @global object $bp BuddyPress global settings
    2928         * @uses apply_filters() To call the 'bp_get_activity_slug' hook
    3029         */
    3130        function bp_get_activity_slug() {
    32                 global $bp;
    33                 return apply_filters( 'bp_get_activity_slug', $bp->activity->slug );
     31                return apply_filters( 'bp_get_activity_slug', bp_get_slug( 'activity', 'slug' ) );
    3432        }
    3533
    3634/**
    function bp_activity_root_slug() { 
    4846         *
    4947         * @since 1.5.0
    5048         *
    51          * @global object $bp BuddyPress global settings
    5249         * @uses apply_filters() To call the 'bp_get_activity_root_slug' hook
    5350         */
    5451        function bp_get_activity_root_slug() {
    55                 global $bp;
    56                 return apply_filters( 'bp_get_activity_root_slug', $bp->activity->root_slug );
     52                return apply_filters( 'bp_get_activity_root_slug', bp_get_slug( 'activity', 'root_slug' ) );
     53        }
     54
     55/**
     56 * Output the activity component 'just-me' slug
     57 *
     58 * @since 1.6
     59 *
     60 * @uses bp_get_activity_justme_slug()
     61 */
     62function bp_activity_justme_slug() {
     63        echo bp_get_activity_justme_slug();
     64}
     65        /**
     66         * Return the activity component 'just-me' slug
     67         *
     68         * @since 1.6
     69         *
     70         * @uses apply_filters() To call the 'bp_get_activity_justme_slug' hook
     71         */
     72        function bp_get_activity_justme_slug() {
     73                return apply_filters( 'bp_get_activity_justme_slug', bp_get_slug( 'activity', 'just-me' ) );
     74        }
     75
     76/**
     77 * Output the activity component 'favorites' slug
     78 *
     79 * @since 1.6
     80 *
     81 * @uses bp_get_activity_favorites_slug()
     82 */
     83function bp_activity_favorites_slug() {
     84        echo bp_get_activity_favorites_slug();
     85}
     86        /**
     87         * Return the activity component 'favorites' slug
     88         *
     89         * @since 1.6
     90         *
     91         * @uses apply_filters() To call the 'bp_get_activity_favorites_slug' hook
     92         */
     93        function bp_get_activity_favorites_slug() {
     94                return apply_filters( 'bp_get_activity_favorites_slug', bp_get_slug( 'activity', 'favorites' ) );
     95        }
     96
     97/**
     98 * Output the activity component 'mentions' slug
     99 *
     100 * @since 1.6
     101 *
     102 * @uses bp_get_activity_mentions_slug()
     103 */
     104function bp_activity_mentions_slug() {
     105        echo bp_get_activity_mentions_slug();
     106}
     107        /**
     108         * Return the activity component 'mentions' slug
     109         *
     110         * @since 1.6
     111         *
     112         * @uses apply_filters() To call the 'bp_get_activity_mentions_slug' hook
     113         */
     114        function bp_get_activity_mentions_slug() {
     115                return apply_filters( 'bp_get_activity_mentions_slug', bp_get_slug( 'activity', 'mentions' ) );
    57116        }
    58117
    59118/**
    function bp_has_activities( $args = '' ) { 
    279338        // The default scope should recognize custom slugs
    280339        if ( array_key_exists( $bp->current_action, (array)$bp->loaded_components ) ) {
    281340                $scope = $bp->loaded_components[$bp->current_action];
    282         }
    283         else
     341        } else if ( $slug_index = array_search( bp_current_action(), $bp->activity->slugs ) ) {
     342                $scope = $slug_index;
     343        } else {
    284344                $scope = bp_current_action();
     345        }
    285346
    286347        // Support for permalinks on single item pages: /groups/my-group/activity/124/
    287348        if ( bp_is_current_action( bp_get_activity_slug() ) )
    function bp_activities_member_rss_link() { echo bp_get_member_activity_feed_link 
    24862547        function bp_get_member_activity_feed_link() {
    24872548                global $bp;
    24882549
    2489                 if ( bp_is_profile_component() || bp_is_current_action( 'just-me' ) )
     2550                if ( bp_is_profile_component() || bp_is_current_action( bp_get_activity_justme_slug() ) )
    24902551                        $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/feed/';
    24912552                elseif ( bp_is_active( 'friends' ) && bp_is_current_action( bp_get_friends_slug() ) )
    24922553                        $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_friends_slug() . '/feed/';
    2493                 elseif ( bp_is_active( 'groups'  ) && bp_is_current_action( bp_get_groups_slug()  ) )
     2554                elseif ( bp_is_active( 'groups' ) && bp_is_current_action( bp_get_groups_slug()  ) )
    24942555                        $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_groups_slug() . '/feed/';
    2495                 elseif ( 'favorites' == $bp->current_action )
    2496                         $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/favorites/feed/';
    2497                 elseif ( 'mentions' == $bp->current_action )
    2498                         $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/mentions/feed/';
     2556                elseif ( bp_is_current_action( bp_get_activity_favorites_slug() ) )
     2557                        $link = bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_activity_favorites_slug() . '/feed/';
     2558                elseif ( bp_is_current_action( bp_get_activity_mentions_slug() ) )
     2559                        $link = bp_displayed_user_domain() . bp_get_activity_slug() . bp_get_activity_mentions_slug() . '/feed/';
    24992560                else
    25002561                        $link = '';
    25012562
  • bp-core/bp-core-component.php

    diff --git bp-core/bp-core-component.php bp-core/bp-core-component.php
    index b857b24..2094fd6 100644
    class BP_Component { 
    2828         * @var Unique ID (normally for custom post type)
    2929         */
    3030        var $id;
     31       
     32        /**
     33         * @var array Slugs for this component (used to construct permalinks)
     34         */
     35        var $slugs;
    3136
    3237        /**
    3338         * @var string Unique slug (used in query string and permalinks)
    class BP_Component { 
    106111                /** Slugs *************************************************************/
    107112
    108113                $defaults = array(
     114                        'slugs'                 => array(),
    109115                        'slug'                  => $this->id,
    110116                        'root_slug'             => '',
    111117                        'has_directory'         => false,
    class BP_Component { 
    115121                );
    116122                $r = wp_parse_args( $args, $defaults );
    117123
     124                // Component slugs
     125                $this->slugs         = apply_filters( 'bp_' . $this->id . '_slugs',         $r['slugs'] );
     126
    118127                // Slug used for permalink URI chunk after root
    119128                $this->slug          = apply_filters( 'bp_' . $this->id . '_slug',          $r['slug']          );
    120129
    class BP_Component { 
    205214         */
    206215        function setup_actions() {
    207216
     217                // Setup slugs
     218                add_action( 'bp_setup_slugs',            array ( $this, 'setup_slugs'            ), 10 );
     219
    208220                // Setup globals
    209221                add_action( 'bp_setup_globals',          array ( $this, 'setup_globals'          ), 10 );
    210222
  • bp-core/bp-core-functions.php

    diff --git bp-core/bp-core-functions.php bp-core/bp-core-functions.php
    index 378715a..5fb37c1 100644
    function bp_core_get_root_options() { 
    11131113                // BuddyPress core settings
    11141114                'bp-deactivated-components'       => serialize( array( ) ),
    11151115                'bp-blogs-first-install'          => '0',
    1116                 'bp-disable-blogforum-comments'  => '0',
     1116                'bp-disable-blogforum-comments'   => '0',
    11171117                'bp-xprofile-base-group-name'     => 'Base',
    11181118                'bp-xprofile-fullname-field-name' => 'Name',
    11191119                'bp-disable-profile-sync'         => '0',
    function bp_core_get_root_options() { 
    11221122                'bp-disable-blogforum-comments'   => '0',
    11231123                'bb-config-location'              => ABSPATH . 'bb-config.php',
    11241124                'hide-loggedout-adminbar'         => '0',
     1125                'bp-slugs'                        => serialize( array() ),
    11251126
    11261127                // Useful WordPress settings
    11271128                'registration'                    => '0',
    function bp_core_get_root_options() { 
    11841185        } else {
    11851186                // Loop through our results and make them usable
    11861187                foreach ( $root_blog_options_meta as $root_blog_option )
    1187                         $root_blog_options[$root_blog_option->name] = $root_blog_option->value;
     1188                        $root_blog_options[$root_blog_option->name] = maybe_unserialize( $root_blog_option->value );
    11881189
    11891190                // Copy the options no the return val
    11901191                $root_blog_options_meta = $root_blog_options;
    function bp_update_is_item_mod( $is_item_mod = false, $component = '' ) { 
    15811582}
    15821583
    15831584/**
     1585 * Fetch a slug from the $bp global
     1586 *
     1587 * @since 1.6
     1588 * @global obj $bp
     1589 *
     1590 * @param str $component_id The id of the component that the slug belongs to
     1591 * @param str $slug_name The name of the slug you're fetching
     1592 */
     1593function bp_get_slug( $component_id = '', $slug_name = '' ) {
     1594        global $bp;
     1595       
     1596        $slug = '';
     1597       
     1598        if ( $component_id && $slug_name ) {
     1599                if ( isset( $bp->{$component_id}->slugs[$slug_name] ) ) {
     1600                        $slug = $bp->{$component_id}->slugs[$slug_name];
     1601                }
     1602        }
     1603       
     1604        return apply_filters( 'bp_get_slug', $slug, $component_id, $slug_name );
     1605}
     1606
     1607/**
     1608 * Parse a component's default slugs with the custom slugs saved to the database by the user
     1609 *
     1610 * Custom components should pass their slugs through this function in their setup_globals() method
     1611 * so that they can be customized by site admins.
     1612 *
     1613 * @since 1.6
     1614 * @global obj $bp
     1615 *
     1616 * @param str $component_id The id of the component the slugs belong to
     1617 * @param array $slugs The default slugs passed along from the component loader
     1618 */
     1619function bp_parse_component_slugs( $component_id = '', $slugs = array() ) {
     1620        global $bp;
     1621       
     1622        $parsed_slugs = array();
     1623        $saved_slugs  = (array)bp_get_option( 'bp-slugs' );
     1624        if ( !empty( $saved_slugs[$component_id] ) ) {
     1625                $parsed_slugs = wp_parse_args( (array)$saved_slugs[$component_id], $slugs );
     1626        }
     1627       
     1628        return apply_filters( 'bp_parse_component_slugs', $parsed_slugs, $component_id, $slugs );
     1629}
     1630
     1631/**
    15841632 * Trigger a 404
    15851633 *
    15861634 * @global object $bp Global BuddyPress settings object