Skip to:
Content

BuddyPress.org

Ticket #8499: 8499.diff

File 8499.diff, 4.3 KB (added by sbrajesh, 4 years ago)
  • src/bp-templates/bp-nouveau/includes/classes.php

    diff --git a/src/bp-templates/bp-nouveau/includes/classes.php b/src/bp-templates/bp-nouveau/includes/classes.php
    index e898bc8e8..60d0a62a7 100644
    a b class BP_Buttons_Group { 
    4444         */
    4545        public function __construct( $args = array() ) {
    4646                foreach ( $args as $arg ) {
    47                         $r = bp_parse_args(
    48                                 (array) $arg,
    49                                 array(
    50                                         'id'                => '',
    51                                         'position'          => 99,
    52                                         'component'         => '',
    53                                         'must_be_logged_in' => true,
    54                                         'block_self'        => false,
    55                                         'parent_element'    => false,
    56                                         'parent_attr'       => array(),
    57                                         'button_element'    => 'a',
    58                                         'button_attr'       => array(),
    59                                         'link_text'         => '',
    60                                 ),
    61                                 'buttons_group_constructor'
    62                         );
    63 
    64                         // Just don't set the button if a param is missing
    65                         if ( empty( $r['id'] ) || empty( $r['component'] ) || empty( $r['link_text'] ) ) {
    66                                 continue;
    67                         }
    68 
    69                         $r['id'] = sanitize_key( $r['id'] );
    70 
    71                         // If the button already exist don't add it
    72                         if ( isset( $this->group[ $r['id'] ] ) ) {
    73                                 continue;
    74                         }
    75 
    76                         /*
    77                          * If, in bp_nouveau_get_*_buttons(), we pass through a false value for 'parent_element'
    78                          * but we have attributtes for it in the array, let's default to setting a div.
    79                          *
    80                          * Otherwise, the original false value will be passed through to BP buttons.
    81                          * @todo: this needs review, probably trying to be too clever
    82                          */
    83                         if ( ( ! empty( $r['parent_attr'] ) ) && false === $r['parent_element'] ) {
    84                                 $r['parent_element'] = 'div';
    85                         }
    86 
    87                         $this->group[ $r['id'] ] = $r;
     47                        $this->add( $arg );
    8848                }
    8949        }
    9050
    class BP_Buttons_Group { 
    172132                                        $this->group[ $id ],
    173133                                        'buttons_group_update'
    174134                                );
     135                        } else {
     136                                $this->add( $params );
    175137                        }
    176138                }
    177139        }
     140
     141        /**
     142         * Adds a button.
     143         *
     144         * @param array $args Optional array having the following parameters {
     145         *     @type string $id                A string to use as the unique ID for the button. Required.
     146         *     @type int    $position          Where to insert the Button. Defaults to 99.
     147         *     @type string $component         The Component's the button is build for (eg: Activity, Groups..). Required.
     148         *     @type bool   $must_be_logged_in Whether the button should only be displayed to logged in users. Defaults to True.
     149         *     @type bool   $block_self        Optional. True if the button should be hidden when a user is viewing his own profile.
     150         *                                     Defaults to False.
     151         *     @type string $parent_element    Whether to use a wrapper. Defaults to false.
     152         *     @type string $parent_attr       set an array of attributes for the parent element.
     153         *     @type string $button_element    Set this to 'button', 'img', or 'a', defaults to anchor.
     154         *     @type string $button_attr       Any attributes required for the button_element
     155         *     @type string $link_text         The text of the link. Required.
     156         * }
     157         *
     158         * @return bool true on success, false on failure to add.
     159         */
     160        private function add( $args ) {
     161                $r = bp_parse_args(
     162                                (array) $args,
     163                                array(
     164                                                'id'                => '',
     165                                                'position'          => 99,
     166                                                'component'         => '',
     167                                                'must_be_logged_in' => true,
     168                                                'block_self'        => false,
     169                                                'parent_element'    => false,
     170                                                'parent_attr'       => array(),
     171                                                'button_element'    => 'a',
     172                                                'button_attr'       => array(),
     173                                                'link_text'         => '',
     174                                ),
     175                                'buttons_group_constructor'
     176                );
     177
     178                // Just don't set the button if a param is missing
     179                if ( empty( $r['id'] ) || empty( $r['component'] ) || empty( $r['link_text'] ) ) {
     180                        return false;
     181                }
     182
     183                $r['id'] = sanitize_key( $r['id'] );
     184
     185                // If the button already exist don't add it
     186                if ( isset( $this->group[ $r['id'] ] ) ) {
     187                        return false;
     188                }
     189
     190                /*
     191                 * If, in bp_nouveau_get_*_buttons(), we pass through a false value for 'parent_element'
     192                 * but we have attributtes for it in the array, let's default to setting a div.
     193                 *
     194                 * Otherwise, the original false value will be passed through to BP buttons.
     195                 * @todo: this needs review, probably trying to be too clever
     196                 */
     197                if ( ( ! empty( $r['parent_attr'] ) ) && false === $r['parent_element'] ) {
     198                        $r['parent_element'] = 'div';
     199                }
     200
     201                $this->group[ $r['id'] ] = $r;
     202                return true;
     203        }
    178204}
    179205
    180206/**