Skip to:
Content

BuddyPress.org

Ticket #6749: 6749-2.diff

File 6749-2.diff, 55.1 KB (added by espellcaste, 4 years ago)
  • src/bp-groups/bp-groups-functions.php

    diff --git src/bp-groups/bp-groups-functions.php src/bp-groups/bp-groups-functions.php
    index 9ecddaad7..3a4062df8 100644
    function groups_get_group( $group_id ) { 
    6969        return apply_filters( 'groups_get_group', $group );
    7070}
    7171
     72/**
     73 * Retrieve group by a given field.
     74 *
     75 * @since 10.0.0
     76 *
     77 * @param string|int $field (Required) The field to retrieve the group. id | ID | slug.
     78 * @param string|int $value (Required) A value for $field. A group ID or slug.
     79 * @return BP_Groups_Group|false BP_Groups_Group object on success, false on failure.
     80 */
     81function bp_get_group_by( $field, $value ) {
     82        $group_id = $value;
     83
     84        if ( 'slug' === $field && is_string( $value ) ) {
     85                $group_id = groups_get_id( $value );
     86        }
     87
     88        $group = groups_get_group( array( 'group_id' => (int) $group_id ) );
     89
     90        if ( empty( $group->id ) ) {
     91                return false;
     92        }
     93
     94        return $group;
     95}
     96
     97/**
     98 * Retrieve a group, defaults to the current group in loop at BP_Groups_Template.
     99 *
     100 * @since 10.0.0
     101 *
     102 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     103 *                                          Default: current group in loop.
     104 * @return BP_Groups_Group|false BP_Groups_Group object on success, false on failure.
     105 */
     106function bp_get_group( $group = false ) {
     107        global $groups_template;
     108
     109        $group_obj = false;
     110
     111        if ( $group instanceof BP_Groups_Group ) {
     112                $group_obj = $group;
     113        } elseif ( is_string( $group ) ) {
     114                $group_obj = bp_get_group_by( 'slug', $group );
     115        } elseif ( is_numeric( $group ) ) {
     116                $group_obj = bp_get_group_by( 'id', $group );
     117        } elseif ( isset( $groups_template->group ) && is_object( $groups_template->group ) ) {
     118                $group_obj = $groups_template->group;
     119        }
     120
     121        return $group_obj;
     122}
     123
    72124/** Group Creation, Editing & Deletion ****************************************/
    73125
    74126/**
  • src/bp-groups/bp-groups-template.php

    diff --git src/bp-groups/bp-groups-template.php src/bp-groups/bp-groups-template.php
    index 91df7d46e..0ca2afbcb 100644
    function bp_groups_group_type_base() { 
    8989                 *
    9090                 * @since 2.7.0
    9191                 *
    92                  * @param string $base
     92                 * @param string $base Base slug of the group type.
    9393                 */
    9494                return apply_filters( 'bp_groups_group_type_base', _x( 'type', 'group type URL base', 'buddypress' ) );
    9595        }
    function bp_groups() { 
    541541 *
    542542 * @since 1.0.0
    543543 *
    544  * @return object
     544 * @return BP_Groups_Group
    545545 */
    546546function bp_the_group() {
    547547        global $groups_template;
    function bp_the_group() { 
    549549}
    550550
    551551/**
    552  * Is the group accessible to the currently logged-in user?
     552 * Is the group accessible to a user?
    553553 * Despite the name of the function, it has historically checked
    554554 * whether a user has access to a group.
    555555 * In BP 2.9, a property was added to the BP_Groups_Group class,
    function bp_the_group() { 
    558558 * bp_current_user_can( 'groups_see_group' ).
    559559 *
    560560 * @since 1.0.0
     561 * @since 10.0.0 Updated to use `bp_get_group` and added the `$user_id` parameter.
    561562 *
    562  * @param BP_Groups_Group|null $group Optional. Group object. Default: current group in loop.
     563 * @param int|string|BP_Groups_Group $group   (Optional) Group identifier.
     564 *                                   Default: current group in loop.
     565 * @param int                        $user_id ID of the User.
     566 *                                   Default: current logged in user.
    563567 * @return bool
    564568 */
    565 function bp_group_is_visible( $group = null ) {
    566         global $groups_template;
     569function bp_group_is_visible( $group = false, $user_id = 0 ) {
     570        $group = bp_get_group( $group );
    567571
    568         if ( bp_current_user_can( 'bp_moderate' ) ) {
    569                 return true;
     572        if ( empty( $group->id ) ) {
     573                return false;
    570574        }
    571575
    572         if ( empty( $group ) ) {
    573                 $group =& $groups_template->group;
     576        if ( empty( $user_id ) ) {
     577                $user_id = bp_loggedin_user_id();
    574578        }
    575579
    576         return bp_current_user_can( 'groups_access_group', array( 'group_id' => $group->id ) );
     580        return (bool) ( bp_current_user_can( 'bp_moderate' ) || bp_user_can( $user_id, 'groups_access_group', array( 'group_id' => $group->id ) ) );
    577581}
    578582
    579583/**
    580  * Output the ID of the current group in the loop.
     584 * Output the ID of the group.
    581585 *
    582586 * @since 1.0.0
    583587 *
    584  * @param object|bool $group Optional. Group object. Default: current group in loop.
     588 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     589 *                                   Default: current group in loop.
    585590 */
    586591function bp_group_id( $group = false ) {
    587592        echo bp_get_group_id( $group );
    588593}
    589594        /**
    590          * Get the ID of the current group in the loop.
     595         * Get the ID of the group.
    591596         *
    592597         * @since 1.0.0
     598         * @since 10.0.0 Updated to use `bp_get_group`
    593599         *
    594          * @param object|bool $group Optional. Group object.
    595          *                           Default: current group in loop.
     600         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     601         *                                   Default: current group in loop.
    596602         * @return int
    597603         */
    598604        function bp_get_group_id( $group = false ) {
    599                 global $groups_template;
     605                $group = bp_get_group( $group );
    600606
    601                 if ( empty( $group ) ) {
    602                         $group =& $groups_template->group;
     607                if ( empty( $group->id ) ) {
     608                        return 0;
    603609                }
    604610
    605611                /**
    606                  * Filters the ID of the current group in the loop.
     612                 * Filters the ID of the group.
    607613                 *
    608614                 * @since 1.0.0
    609615                 * @since 2.5.0 Added the `$group` parameter.
    610616                 *
    611                  * @param int    $id    ID of the current group in the loop.
    612                  * @param object $group Group object.
     617                 * @param int             $id    ID of the group.
     618                 * @param BP_Groups_Group $group The group object.
    613619                 */
    614620                return apply_filters( 'bp_get_group_id', $group->id, $group );
    615621        }
    function bp_group_class( $classes = array() ) { 
    696702        }
    697703
    698704/**
    699  * Output the name of the current group in the loop.
     705 * Output the name of the group.
    700706 *
    701707 * @since 1.0.0
    702708 *
    703  * @param object|bool $group Optional. Group object.
    704  *                           Default: current group in loop.
     709 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     710 *                                   Default: current group in loop.
    705711 */
    706712function bp_group_name( $group = false ) {
    707713        echo bp_get_group_name( $group );
    708714}
    709715        /**
    710          * Get the name of the current group in the loop.
     716         * Get the name of the group.
    711717         *
    712718         * @since 1.0.0
     719         * @since 10.0.0 Updated to use `bp_get_group`
    713720         *
    714          * @param object|bool $group Optional. Group object.
    715          *                           Default: current group in loop.
     721         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     722         *                                   Default: current group in loop.
    716723         * @return string
    717          */
     724         */
    718725        function bp_get_group_name( $group = false ) {
    719                 global $groups_template;
     726                $group = bp_get_group( $group );
    720727
    721                 if ( empty( $group ) ) {
    722                         $group =& $groups_template->group;
     728                if ( empty( $group->id ) ) {
     729                        return '';
    723730                }
    724731
    725732                /**
    726                  * Filters the name of the current group in the loop.
     733                 * Filters the name of the group.
    727734                 *
    728735                 * @since 1.0.0
    729736                 * @since 2.5.0 Added the `$group` parameter.
    730737                 *
    731                  * @param string $name  Name of the current group in the loop.
    732                  * @param object $group Group object.
     738                 * @param string          $name  Name of the group.
     739                 * @param BP_Groups_Group $group The group object.
    733740                 */
    734741                return apply_filters( 'bp_get_group_name', $group->name, $group );
    735742        }
    736743
    737744/**
    738  * Output the type of the current group in the loop.
     745 * Output the type of the group.
    739746 *
    740747 * @since 1.0.0
    741748 *
    742  * @param object|bool $group Optional. Group object.
    743  *                           Default: current group in loop.
     749 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     750 *                                   Default: current group in loop.
    744751 */
    745752function bp_group_type( $group = false ) {
    746753        echo bp_get_group_type( $group );
    747754}
    748 
    749 /**
    750  * Get the type of the current group in the loop.
    751  *
    752  * @since 1.0.0
    753  *
    754  * @param object|bool $group Optional. Group object.
    755  *                           Default: current group in loop.
    756  * @return string
    757  */
    758 function bp_get_group_type( $group = false ) {
    759         global $groups_template;
    760 
    761         if ( empty( $group ) ) {
    762                 $group =& $groups_template->group;
    763         }
    764 
    765         if ( 'public' == $group->status ) {
    766                 $type = __( "Public Group", 'buddypress' );
    767         } elseif ( 'hidden' == $group->status ) {
    768                 $type = __( "Hidden Group", 'buddypress' );
    769         } elseif ( 'private' == $group->status ) {
    770                 $type = __( "Private Group", 'buddypress' );
    771         } else {
    772                 $type = ucwords( $group->status ) . ' ' . __( 'Group', 'buddypress' );
    773         }
    774 
    775755        /**
    776          * Filters the type for the current group in the loop.
     756         * Get the type of the group.
    777757         *
    778758         * @since 1.0.0
    779          * @since 2.5.0 Added the `$group` parameter.
     759         * @since 10.0.0 Updated to use `bp_get_group`
    780760         *
    781          * @param string $type  Type for the current group in the loop.
    782          * @param object $group Group object.
     761         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     762     *                                          Default: current group in loop.
     763         * @return string
    783764         */
    784         return apply_filters( 'bp_get_group_type', $type, $group );
    785 }
     765        function bp_get_group_type( $group = false ) {
     766                $group = bp_get_group( $group );
     767
     768                if ( empty( $group->id ) ) {
     769                        return '';
     770                }
     771
     772                if ( 'public' === $group->status ) {
     773                        $type = __( "Public Group", 'buddypress' );
     774                } elseif ( 'hidden' === $group->status ) {
     775                        $type = __( "Hidden Group", 'buddypress' );
     776                } elseif ( 'private' === $group->status ) {
     777                        $type = __( "Private Group", 'buddypress' );
     778                } else {
     779                        $type = ucwords( $group->status ) . ' ' . __( 'Group', 'buddypress' );
     780                }
     781
     782                /**
     783                 * Filters the type for the group.
     784                 *
     785                 * @since 1.0.0
     786                 * @since 2.5.0 Added the `$group` parameter.
     787                 *
     788                 * @param string          $type  Type for the group.
     789                 * @param BP_Groups_Group $group The group object.
     790                 */
     791                return apply_filters( 'bp_get_group_type', $type, $group );
     792        }
     793
    786794/**
    787  * Output the status of the current group in the loop.
     795 * Output the status of the group.
    788796 *
    789797 * @since 1.1.0
    790798 *
    791  * @param object|bool $group Optional. Group object.
    792  *                           Default: current group in loop.
     799 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     800 *                                          Default: current group in loop.
    793801 */
    794802function bp_group_status( $group = false ) {
    795803        echo bp_get_group_status( $group );
    796804}
    797805        /**
    798          * Get the status of the current group in the loop.
     806         * Get the status of the group.
    799807         *
    800808         * @since 1.1.0
     809         * @since 10.0.0 Updated to use `bp_get_group`
    801810         *
    802          * @param object|bool $group Optional. Group object.
    803          *                           Default: current group in loop.
     811         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     812     *                                          Default: current group in loop.
    804813         * @return string
    805814         */
    806815        function bp_get_group_status( $group = false ) {
    807                 global $groups_template;
     816                $group  = bp_get_group( $group );
    808817
    809                 if ( empty( $group ) ) {
    810                         $group =& $groups_template->group;
     818                if ( empty( $group->id ) ) {
     819                        return '';
    811820                }
    812821
    813822                /**
    814                  * Filters the status of the current group in the loop.
     823                 * Filters the status of the group.
    815824                 *
    816825                 * @since 1.0.0
    817826                 * @since 2.5.0 Added the `$group` parameter.
    818827                 *
    819                  * @param string $status Status of the current group in the loop.
    820                  * @param object $group  Group object.
     828                 * @param string          $status Status of the group.
     829                 * @param BP_Groups_Group $group  The group object.
    821830                 */
    822831                return apply_filters( 'bp_get_group_status', $group->status, $group );
    823832        }
    824833
    825834/**
    826  * Output the group avatar while in the groups loop.
     835 * Output the group avatar.
    827836 *
    828837 * @since 1.0.0
     838 * @since 10.0.0 Added the `$group` parameter.
    829839 *
    830840 * @param array|string $args {
    831841 *      See {@link bp_get_group_avatar()} for description of arguments.
    832842 * }
     843 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     844 *                                          Default: current group in loop.
    833845 */
    834 function bp_group_avatar( $args = '' ) {
    835         echo bp_get_group_avatar( $args );
     846function bp_group_avatar( $args = '', $group = false ) {
     847        echo bp_get_group_avatar( $args, $group );
    836848}
    837849        /**
    838850         * Get a group's avatar.
    839851         *
    840852         * @since 1.0.0
     853         * @since 10.0.0 Added the `$group` parameter.
    841854         *
    842855         * @see bp_core_fetch_avatar() For a description of arguments and return values.
    843856         *
    function bp_group_avatar( $args = '' ) { 
    845858         *     Arguments are listed here with an explanation of their defaults.
    846859         *     For more information about the arguments, see {@link bp_core_fetch_avatar()}.
    847860         *
    848          *     @type string   $alt     Default: 'Group logo of [group name]'.
    849          *     @type string   $class   Default: 'avatar'.
    850          *     @type string   $type    Default: 'full'.
    851          *     @type int|bool $width   Default: false.
    852          *     @type int|bool $height  Default: false.
    853          *     @type bool     $id      Passed to `$css_id` parameter.
     861         *     @type string       $type    Default: 'full'.
     862         *     @type int|bool     $width   Default: false.
     863         *     @type int|bool     $height  Default: false.
     864         *     @type string       $class   Default: 'avatar'.
     865         *     @type bool         $no_grav Default: false.
     866         *     @type bool         $html    Default: false.
     867         *     @type string|bool  $id      Passed to `$css_id` parameter. Default: false.
     868         *     @type string       $alt     Default: 'Group logo of [group name]'.
    854869         * }
    855          * @return string Group avatar string.
     870         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     871     *                                          Default: current group in loop.
     872         * @return string|bool Group avatar string or false if avatar uploads is disabled.
    856873         */
    857         function bp_get_group_avatar( $args = '' ) {
    858                 global $groups_template;
     874        function bp_get_group_avatar( $args = '', $group = false ) {
     875                $group = bp_get_group( $group );
     876
     877                if ( empty( $group->id ) ) {
     878                        return '';
     879                }
    859880
    860881                // Bail if avatars are turned off.
    861882                if ( bp_disable_group_avatar_uploads() || ! buddypress()->avatar->show_avatars ) {
    function bp_group_avatar( $args = '' ) { 
    863884                }
    864885
    865886                // Parse the arguments.
    866                 $r = bp_parse_args( $args, array(
    867                         'type'   => 'full',
    868                         'width'  => false,
    869                         'height' => false,
    870                         'class'  => 'avatar',
    871                         'id'     => false,
    872                         'alt'    => sprintf( __( 'Group logo of %s', 'buddypress' ), $groups_template->group->name )
    873                 ) );
     887                $r = bp_parse_args(
     888                        $args,
     889                        array(
     890                                'type'    => 'full',
     891                                'width'   => false,
     892                                'height'  => false,
     893                                'class'   => 'avatar',
     894                                'no_grav' => false,
     895                                'html'    => false,
     896                                'id'      => false,
     897                                // translators: %1$s is the name of the group.
     898                                'alt'     => sprintf( __( 'Group logo of %1$s', 'buddypress' ), $group->name ),
     899                        )
     900                );
    874901
    875902                // Fetch the avatar from the folder.
    876                 $avatar = bp_core_fetch_avatar( array(
    877                         'item_id'    => $groups_template->group->id,
    878                         'avatar_dir' => 'group-avatars',
    879                         'object'     => 'group',
    880                         'type'       => $r['type'],
    881                         'alt'        => $r['alt'],
    882                         'css_id'     => $r['id'],
    883                         'class'      => $r['class'],
    884                         'width'      => $r['width'],
    885                         'height'     => $r['height'],
    886                 ) );
     903                $avatar = bp_core_fetch_avatar(
     904                        array(
     905                                'item_id'    => $group->id,
     906                                'avatar_dir' => 'group-avatars',
     907                                'object'     => 'group',
     908                                'type'       => $r['type'],
     909                                'html'       => $r['html'],
     910                                'alt'        => $r['alt'],
     911                                'no_grav'    => $r['no_grav'],
     912                                'css_id'     => $r['id'],
     913                                'class'      => $r['class'],
     914                                'width'      => $r['width'],
     915                                'height'     => $r['height'],
     916                        )
     917                );
    887918
    888                 // If No avatar found, provide some backwards compatibility.
     919                // If no avatar is found, provide some backwards compatibility.
    889920                if ( empty( $avatar ) ) {
    890                         $avatar = '<img src="' . esc_url( $groups_template->group->avatar_thumb ) . '" class="avatar" alt="' . esc_attr( $groups_template->group->name ) . '" />';
     921                        $avatar = sprintf(
     922                                '<img src"%1$s" class="avatar" alt="%2$s" />',
     923                                esc_url( bp_get_group_avatar_thumb( $group ) ),
     924                                esc_attr( $group->name )
     925                        );
    891926                }
    892927
    893928                /**
    894                  * Filters the group avatar while in the groups loop.
     929                 * Filters the group avatar.
    895930                 *
    896931                 * @since 1.0.0
     932                 * @since 10.0.0 Added the `$group` paremeter.
    897933                 *
    898                  * @param string $avatar HTML image element holding the group avatar.
    899                  * @param array  $r      Array of parsed arguments for the group avatar.
     934                 * @param string          $avatar HTML image element holding the group avatar.
     935                 * @param array           $r      Array of parsed arguments for the group avatar.
     936                 * @param BP_Groups_Group $group  The group object.
    900937                 */
    901                 return apply_filters( 'bp_get_group_avatar', $avatar, $r );
     938                return apply_filters( 'bp_get_group_avatar', $avatar, $r, $group );
    902939        }
    903940
    904941/**
    905  * Output the group avatar thumbnail while in the groups loop.
     942 * Output the group avatar thumbnail.
    906943 *
    907944 * @since 1.0.0
    908945 *
    909  * @param object|bool $group Optional. Group object.
    910  *                           Default: current group in loop.
     946 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     947 *                                          Default: current group in loop.
    911948 */
    912949function bp_group_avatar_thumb( $group = false ) {
    913950        echo bp_get_group_avatar_thumb( $group );
    914951}
    915952        /**
    916          * Return the group avatar thumbnail while in the groups loop.
     953         * Return the group avatar thumbnail.
    917954         *
    918955         * @since 1.0.0
    919956         *
    920          * @param object|bool $group Optional. Group object.
    921          *                           Default: current group in loop.
     957         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     958         *                                          Default: current group in loop.
    922959         * @return string
    923960         */
    924961        function bp_get_group_avatar_thumb( $group = false ) {
    925                 return bp_get_group_avatar( array(
    926                         'type' => 'thumb',
    927                         'id'   => ! empty( $group->id ) ? $group->id : false
    928                 ) );
     962                return bp_get_group_avatar(
     963                        array(
     964                                'type' => 'thumb',
     965                                'id'   => ! empty( $group->id ) ? $group->id : false,
     966                        ),
     967                        $group
     968                );
    929969        }
    930970
    931971/**
    932  * Output the miniature group avatar thumbnail while in the groups loop.
     972 * Output the miniature group avatar thumbnail.
    933973 *
    934974 * @since 1.0.0
    935975 *
    936  * @param object|bool $group Optional. Group object.
    937  *                           Default: current group in loop.
     976 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     977 *                                          Default: current group in loop.
    938978 */
    939979function bp_group_avatar_mini( $group = false ) {
    940980        echo bp_get_group_avatar_mini( $group );
    941981}
    942982        /**
    943          * Return the miniature group avatar thumbnail while in the groups loop.
     983         * Return the miniature group avatar thumbnail.
    944984         *
    945985         * @since 1.0.0
    946986         *
    947          * @param object|bool $group Optional. Group object.
    948          *                           Default: current group in loop.
     987         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     988         *                                          Default: current group in loop.
    949989         * @return string
    950990         */
    951991        function bp_get_group_avatar_mini( $group = false ) {
    952                 return bp_get_group_avatar( array(
    953                         'type'   => 'thumb',
    954                         'width'  => 30,
    955                         'height' => 30,
    956                         'id'     => ! empty( $group->id ) ? $group->id : false
    957                 ) );
     992                return bp_get_group_avatar(
     993                        array(
     994                                'type'   => 'thumb',
     995                                'width'  => 30,
     996                                'height' => 30,
     997                                'id'     => ! empty( $group->id ) ? $group->id : false,
     998                        ),
     999                        $group
     1000                );
    9581001        }
    9591002
    9601003/**
    961  * Returns the group avatar URL.
     1004 * Output the group avatar URL.
    9621005 *
    963  * @since 5.0.0
     1006 * @since 10.0.0
    9641007 *
    965  * @param object|bool $group Optional. Group object. Default current group in loop.
    966  * @param string      $type  Optional. The type of the avatar ('full' or 'thumb'). Default 'full'.
    967  * @return string The avatar URL.
     1008 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1009 *                                   Default: current group in loop.
     1010 * @param string                     $type  Optional. The type of the avatar ('full' or 'thumb').
     1011 *                                   Default 'full'.
    9681012 */
    969 function bp_get_group_avatar_url( $group = false, $type = 'full' ) {
    970         $group_id = bp_get_group_id( $group );
    971 
    972         if ( ! $group_id ) {
    973                 return '';
    974         }
    975 
    976         return bp_core_fetch_avatar(
    977                 array(
    978                         'type'    => $type,
    979                         'object'  => 'group',
    980                         'item_id' => $group_id,
    981                         'html'    => false,
    982                 )
    983         );
     1013function bp_group_avatar_url( $group = false, $type = 'full' ) {
     1014        echo bp_get_group_avatar_url( $group, $type );
    9841015}
     1016        /**
     1017         * Returns the group avatar URL.
     1018         *
     1019         * @since 5.0.0
     1020         * @since 10.0.0 Updated to use `bp_get_group_avatar`
     1021         *
     1022         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1023         *                                   Default: current group in loop.
     1024         * @param string                     $type  Optional. The type of the avatar ('full' or 'thumb').
     1025         *                                   Default 'full'.
     1026         * @return string
     1027         */
     1028        function bp_get_group_avatar_url( $group = false, $type = 'full' ) {
     1029                return bp_get_group_avatar( array( 'type' => $type ), $group );
     1030        }
    9851031
    9861032/** Group cover image *********************************************************/
    9871033
    9881034/**
    989  * Should we use the group's cover image header.
     1035 * Check if the group's cover image header enabled/active.
    9901036 *
    9911037 * @since 2.4.0
    9921038 *
    993  * @return bool True if the displayed user has a cover image,
    994  *              False otherwise
     1039 * @return bool True if the cover image header is enabled, false otherwise.
    9951040 */
    9961041function bp_group_use_cover_image_header() {
    9971042        return (bool) bp_is_active( 'groups', 'cover_image' ) && ! bp_disable_group_cover_image_uploads();
    function bp_group_use_cover_image_header() { 
    10011046 * Returns the group cover image URL.
    10021047 *
    10031048 * @since 5.0.0
     1049 * @since 10.0.0 Updated to use `bp_get_group`
    10041050 *
    1005  * @param object|bool $group Optional. Group object. Default current group in loop.
     1051 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1052 *                                          Default: current group in loop.
    10061053 * @return string The cover image URL or empty string if not found.
    10071054 */
    10081055function bp_get_group_cover_url( $group = false ) {
    1009         $group_id = bp_get_group_id( $group );
     1056        $group = bp_get_group( $group );
    10101057
    1011         if ( ! $group_id ) {
     1058        if ( empty( $group->id ) ) {
    10121059                return '';
    10131060        }
    10141061
    function bp_get_group_cover_url( $group = false ) { 
    10161063                'url',
    10171064                array(
    10181065                        'object_dir' => 'groups',
    1019                         'item_id'    => $group_id,
     1066                        'item_id'    => $group->id,
    10201067                )
    10211068        );
    10221069
    function bp_get_group_cover_url( $group = false ) { 
    10281075}
    10291076
    10301077/**
    1031  * Output the 'last active' string for the current group in the loop.
     1078 * Output the 'last active' string for the group.
    10321079 *
    10331080 * @since 1.0.0
    1034  * @since 2.7.0 Added $args as a parameter.
     1081 * @since 2.7.0 Added `$args` as a parameter.
    10351082 *
    1036  * @param object|bool  $group Optional. Group object. Default: current group in loop.
    1037  * @param array|string $args Optional. {@see bp_get_group_last_active()}.
     1083 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1084 *                                          Default: current group in loop.
     1085 * @param array|string               $args  Optional. {@see bp_get_group_last_active()}.
    10381086 */
    10391087function bp_group_last_active( $group = false, $args = array() ) {
    10401088        echo bp_get_group_last_active( $group, $args );
    10411089}
    10421090        /**
    1043          * Return the 'last active' string for the current group in the loop.
     1091         * Return the 'last active' string for the group.
    10441092         *
    10451093         * @since 1.0.0
    1046          * @since 2.7.0 Added $args as a parameter.
     1094         * @since 2.7.0  Added `$args` as a parameter.
     1095         * @since 10.0.0 Updated to use `bp_get_group`
    10471096         *
    1048          * @param object|bool  $group Optional. Group object. Default: current group in loop.
     1097         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1098     *                                          Default: current group in loop.
    10491099         * @param array|string $args {
    10501100         *     Array of optional parameters.
    10511101         *
    function bp_group_last_active( $group = false, $args = array() ) { 
    10551105         * @return string
    10561106         */
    10571107        function bp_get_group_last_active( $group = false, $args = array() ) {
    1058                 global $groups_template;
     1108                $group = bp_get_group( $group );
    10591109
    1060                 if ( empty( $group ) ) {
    1061                         $group =& $groups_template->group;
     1110                if ( empty( $group->id ) ) {
     1111                        return '';
    10621112                }
    10631113
    10641114                $r = bp_parse_args( $args, array(
    function bp_group_last_active( $group = false, $args = array() ) { 
    10861136                         * @since 1.0.0
    10871137                         * @since 2.5.0 Added the `$group` parameter.
    10881138                         *
    1089                          * @param string $value Determined last active value for the current group.
    1090                          * @param object $group Group object.
     1139                         * @param string               $value Determined last active value for the current group.
     1140                         * @param BP_Groups_Group|null $group The group object.
    10911141                         */
    10921142                        return apply_filters( 'bp_get_group_last_active', bp_core_time_since( $last_active ), $group );
    10931143                }
    10941144        }
    10951145
    10961146/**
    1097  * Output the permalink for the current group in the loop.
     1147 * Output the permalink for the group.
    10981148 *
    10991149 * @since 1.0.0
    11001150 *
    1101  * @param BP_Groups_Group|null $group Optional. Group object. Default: current group in loop.
     1151 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1152 *                                   Default: current group in loop.
    11021153 */
    1103 function bp_group_permalink( $group = null ) {
     1154function bp_group_permalink( $group = false ) {
    11041155        echo bp_get_group_permalink( $group );
    11051156}
    11061157        /**
    1107          * Return the permalink for the current group in the loop.
     1158         * Return the permalink for the group.
    11081159         *
    11091160         * @since 1.0.0
     1161         * @since 10.0.0 Updated to use `bp_get_group`
    11101162         *
    1111          * @param BP_Groups_Group|null $group Optional. Group object. Default: current group in loop.
     1163         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1164     *                                   Default: current group in loop.
    11121165         * @return string
    11131166         */
    1114         function bp_get_group_permalink( $group = null ) {
    1115                 global $groups_template;
     1167        function bp_get_group_permalink( $group = false ) {
     1168                $group = bp_get_group( $group );
    11161169
    1117                 if ( empty( $group ) ) {
    1118                         $group =& $groups_template->group;
     1170                if ( empty( $group->id ) ) {
     1171                        return '';
    11191172                }
    11201173
    11211174                /**
    1122                  * Filters the permalink for the current group in the loop.
     1175                 * Filters the permalink for the group.
    11231176                 *
    11241177                 * @since 1.0.0
    11251178                 * @since 2.5.0 Added the `$group` parameter.
    11261179                 *
    1127                  * @param string $value Permalink for the current group in the loop.
    1128                  * @param object $group Group object.
     1180                 * @param string          $permalink Permalink for the group.
     1181                 * @param BP_Groups_Group $group     The group object.
    11291182                 */
    11301183                return apply_filters( 'bp_get_group_permalink', trailingslashit( bp_get_groups_directory_permalink() . bp_get_group_slug( $group ) . '/' ), $group );
    11311184        }
    11321185
    11331186/**
    1134  * Output an HTML-formatted link for the current group in the loop.
     1187 * Output an HTML-formatted link for the group.
    11351188 *
    11361189 * @since 2.9.0
    11371190 *
    1138  * @param BP_Groups_Group|null $group Optional. Group object.
    1139  *                                    Default: current group in loop.
     1191 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1192 *                                   Default: current group in loop.
    11401193 */
    1141 function bp_group_link( $group = null ) {
     1194function bp_group_link( $group = false ) {
    11421195        echo bp_get_group_link( $group );
    11431196}
    11441197        /**
    1145          * Return an HTML-formatted link for the current group in the loop.
     1198         * Return an HTML-formatted link for the group.
    11461199         *
    11471200         * @since 2.9.0
     1201         * @since 10.0.0 Updated to use `bp_get_group`
    11481202         *
    1149          * @param BP_Groups_Group|null $group Optional. Group object.
    1150          *                                    Default: current group in loop.
     1203         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1204     *                                   Default: current group in loop.
    11511205         * @return string
    11521206         */
    1153         function bp_get_group_link( $group = null ) {
    1154                 global $groups_template;
     1207        function bp_get_group_link( $group = false ) {
     1208                $group = bp_get_group( $group );
    11551209
    1156                 if ( empty( $group ) ) {
    1157                         $group =& $groups_template->group;
     1210                if ( empty( $group->id ) ) {
     1211                        return '';
    11581212                }
    11591213
    11601214                $link = sprintf(
    function bp_group_link( $group = null ) { 
    11651219                );
    11661220
    11671221                /**
    1168                  * Filters the HTML-formatted link for the current group in the loop.
     1222                 * Filters the HTML-formatted link for the group.
    11691223                 *
    11701224                 * @since 2.9.0
    11711225                 *
    1172                  * @param string          $value HTML-formatted link for the
    1173                  *                               current group in the loop.
    1174                  * @param BP_Groups_Group $group The current group object.
     1226                 * @param string          $link  HTML-formatted link for the group.
     1227                 * @param BP_Groups_Group $group The group object.
    11751228                 */
    11761229                return apply_filters( 'bp_get_group_link', $link, $group );
    11771230        }
    11781231
    11791232/**
    1180  * Output the permalink for the admin section of the current group in the loop.
     1233 * Output the permalink for the admin section of the group.
    11811234 *
    11821235 * @since 1.0.0
    11831236 *
    1184  * @param object|bool $group Optional. Group object.
    1185  *                           Default: current group in loop.
     1237 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1238 *                                   Default: current group in loop.
    11861239 */
    11871240function bp_group_admin_permalink( $group = false ) {
    11881241        echo bp_get_group_admin_permalink( $group );
    11891242}
    11901243        /**
    1191          * Return the permalink for the admin section of the current group in the loop.
     1244         * Return the permalink for the admin section of the group.
    11921245         *
    11931246         * @since 1.0.0
     1247         * @since 10.0.0 Updated to use `bp_get_group`
    11941248         *
    1195          * @param object|bool $group Optional. Group object.
    1196          *                           Default: current group in loop.
     1249         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1250     *                                   Default: current group in loop.
    11971251         * @return string
    11981252         */
    11991253        function bp_get_group_admin_permalink( $group = false ) {
    1200                 global $groups_template;
     1254                $group = bp_get_group( $group );
    12011255
    1202                 if ( empty( $group ) ) {
    1203                         $group =& $groups_template->group;
     1256                if ( empty( $group->id ) ) {
     1257                        return '';
    12041258                }
    12051259
    12061260                /**
    1207                  * Filters the permalink for the admin section of the current group in the loop.
     1261                 * Filters the permalink for the admin section of the group.
    12081262                 *
    12091263                 * @since 1.0.0
    12101264                 * @since 2.5.0 Added the `$group` parameter.
    12111265                 *
    1212                  * @param string $value Permalink for the admin section of the current group in the loop.
    1213                  * @param object $group Group object.
     1266                 * @param string          $permalink Permalink for the admin section of the group.
     1267                 * @param BP_Groups_Group $group     The group object.
    12141268                 */
    12151269                return apply_filters( 'bp_get_group_admin_permalink', trailingslashit( bp_get_group_permalink( $group ) . 'admin' ), $group );
    12161270        }
    12171271
    12181272/**
    1219  * Return the slug for the current group in the loop.
     1273 * Output the slug for the group.
    12201274 *
    12211275 * @since 1.0.0
    12221276 *
    1223  * @param object|bool $group Optional. Group object.
    1224  *                           Default: current group in loop.
     1277 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1278 *                                   Default: current group in loop.
    12251279 */
    12261280function bp_group_slug( $group = false ) {
    12271281        echo bp_get_group_slug( $group );
    12281282}
    12291283        /**
    1230          * Return the slug for the current group in the loop.
     1284         * Return the slug for the group.
    12311285         *
    12321286         * @since 1.0.0
     1287         * @since 10.0.0 Updated to use `bp_get_group`
    12331288         *
    1234          * @param object|bool $group Optional. Group object.
    1235          *                           Default: current group in loop.
     1289         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1290     *                                   Default: current group in loop.
    12361291         * @return string
    12371292         */
    12381293        function bp_get_group_slug( $group = false ) {
    1239                 global $groups_template;
     1294                $group = bp_get_group( $group );
    12401295
    1241                 if ( empty( $group ) ) {
    1242                         $group =& $groups_template->group;
     1296                if ( empty( $group->id ) ) {
     1297                        return '';
    12431298                }
    12441299
    12451300                /**
    1246                  * Filters the slug for the current group in the loop.
     1301                 * Filters the slug for the group.
    12471302                 *
    12481303                 * @since 1.0.0
    12491304                 * @since 2.5.0 Added the `$group` parameter.
    12501305                 *
    1251                  * @param string $slug  Slug for the current group in the loop.
    1252                  * @param object $group Group object.
     1306                 * @param string          $slug  Slug for the group.
     1307                 * @param BP_Groups_Group $group The group object.
    12531308                 */
    12541309                return apply_filters( 'bp_get_group_slug', $group->slug, $group );
    12551310        }
    12561311
    12571312/**
    1258  * Output the description for the current group in the loop.
     1313 * Output the description for the group.
    12591314 *
    12601315 * @since 1.0.0
    12611316 *
    1262  * @param object|bool $group Optional. Group object.
    1263  *                           Default: current group in loop.
     1317 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1318 *                                   Default: current group in loop.
    12641319 */
    12651320function bp_group_description( $group = false ) {
    12661321        echo bp_get_group_description( $group );
    12671322}
    12681323        /**
    1269          * Return the description for the current group in the loop.
     1324         * Return the description for the group.
    12701325         *
    12711326         * @since 1.0.0
     1327         * @since 10.0.0 Updated to use `bp_get_group`
    12721328         *
    1273          * @param object|bool $group Optional. Group object.
    1274          *                           Default: current group in loop.
     1329         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1330     *                                   Default: current group in loop.
    12751331         * @return string
    12761332         */
    12771333        function bp_get_group_description( $group = false ) {
    1278                 global $groups_template;
     1334                $group = bp_get_group( $group );
    12791335
    1280                 if ( empty( $group ) ) {
    1281                         $group =& $groups_template->group;
     1336                if ( empty( $group->id ) ) {
     1337                        return '';
    12821338                }
    12831339
    12841340                /**
    1285                  * Filters the description for the current group in the loop.
     1341                 * Filters the description for the group.
    12861342                 *
    12871343                 * @since 1.0.0
    12881344                 * @since 2.5.0 Added the `$group` parameter.
    12891345                 *
    1290                  * @param string $value Description for the current group.
    1291                  * @param object $group Group object.
     1346                 * @param string          $description Description for the group.
     1347                 * @param BP_Groups_Group $group       The group object.
    12921348                 */
    12931349                return apply_filters( 'bp_get_group_description', stripslashes( $group->description ), $group );
    12941350        }
    12951351
    12961352/**
    1297  * Output the description for the current group in the loop, for use in a textarea.
     1353 * Output the description for the group, for use in a textarea.
    12981354 *
    12991355 * @since 1.0.0
    13001356 *
    1301  * @param object|bool $group Optional. Group object.
    1302  *                           Default: current group in loop.
     1357 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1358 *                                          Default: current group in loop.
    13031359 */
    13041360function bp_group_description_editable( $group = false ) {
    13051361        echo bp_get_group_description_editable( $group );
    13061362}
    13071363        /**
    1308          * Return the permalink for the current group in the loop, for use in a textarea.
     1364         * Return the permalink for the group, for use in a textarea.
    13091365         *
    13101366         * 'bp_get_group_description_editable' does not have the formatting
    13111367         * filters that 'bp_get_group_description' has, which makes it
    13121368         * appropriate for "raw" editing.
    13131369         *
    13141370         * @since 1.0.0
     1371         * @since 10.0.0 Updated to use `bp_get_group`
    13151372         *
    1316          * @param object|bool $group Optional. Group object.
    1317          *                           Default: current group in loop.
     1373         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1374     *                                   Default: current group in loop.
    13181375         * @return string
    13191376         */
    13201377        function bp_get_group_description_editable( $group = false ) {
    1321                 global $groups_template;
     1378                $group = bp_get_group( $group );
    13221379
    1323                 if ( empty( $group ) ) {
    1324                         $group =& $groups_template->group;
     1380                if ( empty( $group->id ) ) {
     1381                        return '';
    13251382                }
    13261383
    13271384                /**
    1328                  * Filters the permalink for the current group in the loop, for use in a textarea.
     1385                 * Filters the permalink for the group, for use in a textarea.
    13291386                 *
    13301387                 * 'bp_get_group_description_editable' does not have the formatting filters that
    13311388                 * 'bp_get_group_description' has, which makes it appropriate for "raw" editing.
    function bp_group_description_editable( $group = false ) { 
    13331390                 * @since 1.0.0
    13341391                 * @since 2.5.0 Added the `$group` parameter.
    13351392                 *
    1336                  * @param string $description Description for the current group in the loop.
    1337                  * @param object $group       Group object.
     1393                 * @param string          $description Description for the group.
     1394                 * @param BP_Groups_Group $group       The group object.
    13381395                 */
    13391396                return apply_filters( 'bp_get_group_description_editable', $group->description, $group );
    13401397        }
    function bp_group_description_editable( $group = false ) { 
    13441401 *
    13451402 * @since 1.0.0
    13461403 *
    1347  * @param object|bool $group  Optional. The group being referenced.
    1348  *                            Defaults to the group currently being
    1349  *                            iterated on in the groups loop.
    1350  * @param int         $length Optional. Length of returned string, including ellipsis.
    1351  *                            Default: 225.
     1404 * @param int|string|BP_Groups_Group $group  (Optional) Group identifier.
     1405 *                                           Default: current group in loop.
     1406 * @param int                        $length Optional. Length of returned string, including ellipsis.
     1407 *                                           Default: 225.
    13521408 */
    13531409function bp_group_description_excerpt( $group = false, $length = 225 ) {
    13541410        echo bp_get_group_description_excerpt( $group, $length );
    function bp_group_description_excerpt( $group = false, $length = 225 ) { 
    13571413         * Get an excerpt of a group description.
    13581414         *
    13591415         * @since 1.0.0
     1416         * @since 10.0.0 Updated to use `bp_get_group`
    13601417         *
    1361          * @param object|bool $group  Optional. The group being referenced.
    1362          *                            Defaults to the group currently being
    1363          *                            iterated on in the groups loop.
    1364          * @param int         $length Optional. Length of returned string, including ellipsis.
    1365          *                            Default: 225.
    1366          * @return string Excerpt.
     1418         * @param int|string|BP_Groups_Group $group  (Optional) Group identifier.
     1419     *                                   Default: current group in loop.
     1420         * @param int                        $length Optional. Length of returned string, including ellipsis.
     1421         *                                   Default: 225.
     1422         * @return string
    13671423         */
    13681424        function bp_get_group_description_excerpt( $group = false, $length = 225 ) {
    1369                 global $groups_template;
     1425                $group = bp_get_group( $group );
    13701426
    1371                 if ( empty( $group ) ) {
    1372                         $group =& $groups_template->group;
     1427                if ( empty( $group->id ) ) {
     1428                        return '';
    13731429                }
    13741430
    13751431                /**
    function bp_group_description_excerpt( $group = false, $length = 225 ) { 
    13771433                 *
    13781434                 * @since 1.0.0
    13791435                 *
    1380                  * @param string $value Excerpt of a group description.
    1381                  * @param object $group Object for group whose description is made into an excerpt.
     1436                 * @param string          $description Excerpt of a group description.
     1437                 * @param BP_Groups_Group $group       The group object.
    13821438                 */
    13831439                return apply_filters( 'bp_get_group_description_excerpt', bp_create_excerpt( $group->description, $length ), $group );
    13841440        }
    13851441
    13861442/**
    1387  * Output the created date of the current group in the loop.
     1443 * Output the created date of the group.
    13881444 *
    13891445 * @since 1.0.0
    1390  * @since 2.7.0 Added $args as a parameter.
     1446 * @since 2.7.0 Added `$args` as a parameter.
    13911447 *
    1392  * @param object|bool  $group Optional. Group object. Default: current group in loop.
    1393  * @param array|string $args  {@see bp_get_group_date_created()}.
     1448 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1449 *                                          Default: current group in loop.
     1450 * @param array|string               $args  {@see bp_get_group_date_created()}.
    13941451 */
    13951452function bp_group_date_created( $group = false, $args = array() ) {
    13961453        echo bp_get_group_date_created( $group, $args );
    13971454}
    13981455        /**
    1399          * Return the created date of the current group in the loop.
     1456         * Return the created date of the group.
    14001457         *
    14011458         * @since 1.0.0
    1402          * @since 2.7.0 Added $args as a parameter.
     1459         * @since 2.7.0  Added `$args` as a parameter.
     1460         * @since 10.0.0 Updated to use `bp_get_group`
    14031461         *
    1404          * @param object|bool  $group Optional. Group object. Default: current group in loop.
    1405          * @param array|string $args {
     1462         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1463     *                                   Default: current group in loop.
     1464         * @param array|string               $args {
    14061465         *     Array of optional parameters.
    14071466         *
    14081467         *     @type bool $relative Optional. If true, returns relative created date. eg. active 5 months ago.
    function bp_group_date_created( $group = false, $args = array() ) { 
    14111470         * @return string
    14121471         */
    14131472        function bp_get_group_date_created( $group = false, $args = array() ) {
    1414                 global $groups_template;
    1415 
    1416                 $r = bp_parse_args( $args, array(
    1417                         'relative' => true,
    1418                 ), 'group_date_created' );
     1473                $group = bp_get_group( $group );
    14191474
    1420                 if ( empty( $group ) ) {
    1421                         $group =& $groups_template->group;
     1475                if ( empty( $group->id ) ) {
     1476                        return '';
    14221477                }
    14231478
     1479                $r = bp_parse_args(
     1480                        $args,
     1481                        array( 'relative' => true ),
     1482                        'group_date_created'
     1483                );
     1484
    14241485                // We do not want relative time, so return now.
    14251486                // @todo Should the 'bp_get_group_date_created' filter be applied here?
    14261487                if ( ! $r['relative'] ) {
    function bp_group_date_created( $group = false, $args = array() ) { 
    14281489                }
    14291490
    14301491                /**
    1431                  * Filters the created date of the current group in the loop.
     1492                 * Filters the created date of the group.
    14321493                 *
    14331494                 * @since 1.0.0
    14341495                 * @since 2.5.0 Added the `$group` parameter.
    14351496                 *
    1436                  * @param string $value Created date for the current group.
    1437                  * @param object $group Group object.
     1497                 * @param string          $date  Created date for the group.
     1498                 * @param BP_Groups_Group $group The group object.
    14381499                 */
    14391500                return apply_filters( 'bp_get_group_date_created', bp_core_time_since( $group->date_created ), $group );
    14401501        }
    14411502
    14421503/**
    1443  * Output the username of the creator of the current group in the loop.
     1504 * Output the username of the creator of the group.
    14441505 *
    14451506 * @since 1.7.0
    14461507 *
    1447  * @param object|bool $group Optional. Group object.
    1448  *                           Default: current group in loop.
     1508 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1509 *                                          Default: current group in loop.
    14491510 */
    14501511function bp_group_creator_username( $group = false ) {
    14511512        echo bp_get_group_creator_username( $group );
    14521513}
    14531514        /**
    1454          * Return the username of the creator of the current group in the loop.
     1515         * Return the username of the creator of the group.
    14551516         *
    14561517         * @since 1.7.0
     1518         * @since 10.0.0 Updated to use `bp_get_group`
    14571519         *
    1458          * @param object|bool $group Optional. Group object.
    1459          *                           Default: current group in loop.
     1520         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1521     *                                   Default: current group in loop.
    14601522         * @return string
    14611523         */
    14621524        function bp_get_group_creator_username( $group = false ) {
    1463                 global $groups_template;
     1525                $group = bp_get_group( $group );
    14641526
    1465                 if ( empty( $group ) ) {
    1466                         $group =& $groups_template->group;
     1527                if ( empty( $group->id ) ) {
     1528                        return '';
    14671529                }
    14681530
    14691531                /**
    1470                  * Filters the username of the creator of the current group in the loop.
     1532                 * Filters the username of the creator of the group.
    14711533                 *
    14721534                 * @since 1.7.0
    14731535                 * @since 2.5.0 Added the `$group` parameter.
    14741536                 *
    1475                  * @param string $value Username of the group creator.
    1476                  * @param object $group Group object.
     1537                 * @param string          $creator_id Username of the group creator.
     1538                 * @param BP_Groups_Group $group      The group object.
    14771539                 */
    14781540                return apply_filters( 'bp_get_group_creator_username', bp_core_get_user_displayname( $group->creator_id ), $group );
    14791541        }
    14801542
    14811543/**
    1482  * Output the user ID of the creator of the current group in the loop.
     1544 * Output the user ID of the creator of the group.
    14831545 *
    14841546 * @since 1.7.0
    14851547 *
    1486  * @param object|bool $group Optional. Group object.
    1487  *                           Default: current group in loop.
     1548 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1549 *                                          Default: current group in loop.
    14881550 */
    14891551function bp_group_creator_id( $group = false ) {
    14901552        echo bp_get_group_creator_id( $group );
    14911553}
    14921554        /**
    1493          * Return the user ID of the creator of the current group in the loop.
     1555         * Return the user ID of the creator of the group.
    14941556         *
    14951557         * @since 1.7.0
     1558         * @since 10.0.0 Updated to use `bp_get_group`
    14961559         *
    1497          * @param object|bool $group Optional. Group object.
    1498          *                           Default: current group in loop.
     1560         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1561     *                                   Default: current group in loop.
    14991562         * @return int
    15001563         */
    15011564        function bp_get_group_creator_id( $group = false ) {
    1502                 global $groups_template;
     1565                $group = bp_get_group( $group );
    15031566
    1504                 if ( empty( $group ) ) {
    1505                         $group =& $groups_template->group;
     1567                if ( empty( $group->id ) ) {
     1568                        return 0;
    15061569                }
    15071570
    15081571                /**
    1509                  * Filters the user ID of the creator of the current group in the loop.
     1572                 * Filters the user ID of the creator of the group.
    15101573                 *
    15111574                 * @since 1.7.0
    15121575                 * @since 2.5.0 Added the `$group` parameter.
    15131576                 *
    1514                  * @param int $creator_id User ID of the group creator.
    1515                  * @param object $group Group object.
     1577                 * @param int             $creator_id User ID of the group creator.
     1578                 * @param BP_Groups_Group $group      The group object.
    15161579                 */
    15171580                return apply_filters( 'bp_get_group_creator_id', $group->creator_id, $group );
    15181581        }
    15191582
    15201583/**
    1521  * Output the permalink of the creator of the current group in the loop.
     1584 * Output the permalink of the creator of the group.
    15221585 *
    15231586 * @since 1.7.0
    15241587 *
    1525  * @param object|bool $group Optional. Group object.
    1526  *                           Default: current group in loop.
     1588 * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1589 *                                          Default: current group in loop.
    15271590 */
    15281591function bp_group_creator_permalink( $group = false ) {
    15291592        echo bp_get_group_creator_permalink( $group );
    15301593}
    15311594        /**
    1532          * Return the permalink of the creator of the current group in the loop.
     1595         * Return the permalink of the creator of the group.
    15331596         *
    15341597         * @since 1.7.0
     1598         * @since 10.0.0 Updated to use `bp_get_group`
    15351599         *
    1536          * @param object|bool $group Optional. Group object.
    1537          *                           Default: current group in loop.
     1600         * @param int|string|BP_Groups_Group $group (Optional) Group identifier.
     1601     *                                   Default: current group in loop.
    15381602         * @return string
    15391603         */
    15401604        function bp_get_group_creator_permalink( $group = false ) {
    1541                 global $groups_template;
     1605                $group = bp_get_group( $group );
    15421606
    1543                 if ( empty( $group ) ) {
    1544                         $group =& $groups_template->group;
     1607                if ( empty( $group->id ) ) {
     1608                        return '';
    15451609                }
    15461610
    15471611                /**
    1548                  * Filters the permalink of the creator of the current group in the loop.
     1612                 * Filters the permalink of the creator of the group.
    15491613                 *
    15501614                 * @since 1.7.0
    15511615                 * @since 2.5.0 Added the `$group` parameter.
    15521616                 *
    1553                  * @param string $value Permalink of the group creator.
    1554                  * @param object $group Group object.
     1617                 * @param string          $permalink Permalink of the group creator.
     1618                 * @param BP_Groups_Group $group     The group object.
    15551619                 */
    15561620                return apply_filters( 'bp_get_group_creator_permalink', bp_core_get_user_domain( $group->creator_id ), $group );
    15571621        }
    15581622
    15591623/**
    1560  * Determine whether a user is the creator of the current group in the loop.
     1624 * Determine whether a user is the creator of the group.
    15611625 *
    15621626 * @since 1.7.0
     1627 * @since 10.0.0 Updated to use `bp_get_group`
    15631628 *
    1564  * @param BP_Groups_Group|null $group   Optional. Group object. Default: current group in loop.
    1565  * @param int                  $user_id ID of the user.
     1629 * @param int|string|BP_Groups_Group $group   (Optional) Group identifier.
     1630 *                                            Default: current group in loop.
     1631 * @param int                        $user_id ID of the user.
     1632 *                                            Default: current logged in user.
    15661633 * @return bool
    15671634 */
    1568 function bp_is_group_creator( $group = null, $user_id = 0 ) {
    1569         global $groups_template;
     1635function bp_is_group_creator( $group = false, $user_id = 0 ) {
     1636        $group = bp_get_group( $group );
    15701637
    1571         if ( empty( $group ) ) {
    1572                 $group =& $groups_template->group;
     1638        if ( empty( $group->id ) ) {
     1639                return false;
    15731640        }
    15741641
    15751642        if ( empty( $user_id ) ) {
    15761643                $user_id = bp_loggedin_user_id();
    15771644        }
    15781645
    1579         return (bool) ( $group->creator_id == $user_id );
     1646        return (bool) ( $group->creator_id === $user_id );
    15801647}
    15811648
    15821649/**
    function bp_group_current_avatar( $type = 'thumb' ) { 
    54315498 * Return whether a group has an avatar.
    54325499 *
    54335500 * @since 1.1.0
     5501 * @since 10.0.0 Updated to use `bp_get_group_avatar`
    54345502 *
    54355503 * @param int|bool $group_id Group ID to check.
    5436  * @return boolean
     5504 * @return bool
    54375505 */
    54385506function bp_get_group_has_avatar( $group_id = false ) {
    54395507
    5440         if ( false === $group_id ) {
     5508        if ( empty( $group_id ) ) {
    54415509                $group_id = bp_get_current_group_id();
    54425510        }
    54435511
    54445512        $avatar_args = array(
    5445                 'item_id' => $group_id,
    5446                 'object'  => 'group',
    54475513                'no_grav' => true,
    54485514                'html'    => false,
    54495515                'type'    => 'thumb',
    54505516        );
    54515517
    5452         $group_avatar = bp_core_fetch_avatar( $avatar_args );
    5453 
    5454         if ( bp_core_avatar_default( 'local', $avatar_args ) === $group_avatar ) {
    5455                 return false;
    5456         }
     5518        $group_avatar = bp_get_group_avatar( $avatar_args, $group_id );
     5519        $avatar_args  = array_merge(
     5520                $avatar_args,
     5521                array(
     5522                        'item_id' => $group_id,
     5523                        'object'  => 'group',
     5524                )
     5525        );
    54575526
    5458         return true;
     5527        return ( bp_core_avatar_default( 'local', $avatar_args ) !== $group_avatar );
    54595528}
    54605529
    54615530/**
  • new file tests/phpunit/testcases/groups/functions/get-group.php

    diff --git tests/phpunit/testcases/groups/functions/get-group.php tests/phpunit/testcases/groups/functions/get-group.php
    new file mode 100644
    index 000000000..c86240832
    - +  
     1<?php
     2
     3/**
     4 * @group groups
     5 * @group functions
     6 */
     7class BP_Tests_Get_Groups_Param extends BP_UnitTestCase {
     8
     9        public function setUp() {
     10                parent::setUp();
     11
     12                if ( isset( $GLOBALS['groups_template'] ) ) {
     13                        $this->groups_template = $GLOBALS['groups_template'];
     14                }
     15        }
     16
     17        public function tearDown() {
     18                if ( $this->groups_template ) {
     19                        $GLOBALS['groups_template'] = $this->groups_template;
     20                }
     21
     22                parent::tearDown();
     23        }
     24
     25        public function test_bp_get_group_with_no_group() {
     26                $this->assertFalse( bp_get_group() );
     27                $this->assertFalse( bp_get_group_by( 'id', 0 ) );
     28        }
     29
     30        public function test_bp_get_group_with_id() {
     31                $g = $this->factory->group->create();
     32
     33                $this->assertSame( $g, bp_get_group( $g )->id );
     34                $this->assertSame( $g, bp_get_group_by( 'id', $g )->id );
     35                $this->assertSame( $g, bp_get_group_by( 'ID', $g )->id );
     36        }
     37
     38        public function test_bp_get_group_with_slug() {
     39                $slug = 'test-group';
     40                $g    = $this->factory->group->create( array( 'slug' => $slug ) );
     41                $g1   = bp_get_group( $slug );
     42
     43                $this->assertSame( $g, $g1->id );
     44                $this->assertSame( $slug, $g1->slug );
     45
     46                $g2 = bp_get_group_by( 'slug', $slug );
     47
     48                $this->assertSame( $g, $g2->id );
     49                $this->assertSame( $slug, $g2->slug );
     50        }
     51
     52        public function test_bp_get_group_with_object() {
     53                $g = $this->factory->group->create_and_get();
     54
     55                $this->assertSame( $g->id, bp_get_group( $g )->id );
     56        }
     57
     58        public function test_bp_get_group_from_groups_template() {
     59                $g = $this->factory->group->create( array( 'status' => 'private' ) );
     60
     61                // Fake the current group.
     62                $GLOBALS['groups_template'] = new stdClass;
     63                $GLOBALS['groups_template']->group = groups_get_group( $g );
     64
     65                $this->assertSame( $g, bp_get_group()->id );
     66        }
     67}
  • new file tests/phpunit/testcases/groups/template/group-is-visible.php

    diff --git tests/phpunit/testcases/groups/template/group-is-visible.php tests/phpunit/testcases/groups/template/group-is-visible.php
    new file mode 100644
    index 000000000..c1f78148b
    - +  
     1<?php
     2
     3/**
     4 * @group groups
     5 * @group template
     6 */
     7class BP_Tests_Groups_Template_Is_Visible extends BP_UnitTestCase {
     8
     9        public function setUp() {
     10                parent::setUp();
     11
     12                if ( isset( $GLOBALS['groups_template'] ) ) {
     13                        $this->groups_template = $GLOBALS['groups_template'];
     14                }
     15        }
     16
     17        public function tearDown() {
     18                if ( $this->groups_template ) {
     19                        $GLOBALS['groups_template'] = $this->groups_template;
     20                }
     21
     22                parent::tearDown();
     23        }
     24
     25        public function test_bp_group_is_visible_no_member() {
     26                $g = $this->factory->group->create( array( 'status' => 'private' ) );
     27
     28                $this->assertFalse( bp_group_is_visible( $g ) );
     29        }
     30
     31        public function test_bp_group_is_visible_regular_member() {
     32                $g = $this->factory->group->create( array( 'status' => 'private' ) );
     33                $u = $this->factory->user->create();
     34
     35                $this->set_current_user( $u );
     36
     37                $this->assertFalse( bp_group_is_visible( $g ) );
     38        }
     39
     40        public function test_bp_group_is_visible_regular_member_from_group() {
     41                $g = $this->factory->group->create( array( 'status' => 'private' ) );
     42                $u = $this->factory->user->create();
     43
     44                $this->set_current_user( $u );
     45
     46                $this->add_user_to_group( $u, $g );
     47
     48                $this->assertTrue( bp_group_is_visible( $g ) );
     49        }
     50
     51        public function test_bp_group_is_visible_invalid_group() {
     52                $u = $this->factory->user->create();
     53
     54                // Empty the current group.
     55                $GLOBALS['groups_template'] = new stdClass;
     56                $GLOBALS['groups_template']->group = null;
     57
     58                $this->set_current_user( $u );
     59
     60                $this->assertFalse( bp_group_is_visible() );
     61        }
     62
     63        public function test_bp_group_is_visible_admin() {
     64                $g = $this->factory->group->create( array( 'status' => 'private' ) );
     65                $u = $this->factory->user->create( array( 'role' => 'administrator' ) );
     66
     67                $this->set_current_user( $u );
     68
     69                $this->assertTrue( bp_group_is_visible( $g ) );
     70        }
     71
     72        public function test_bp_group_is_visible_using_user_id() {
     73                $g = $this->factory->group->create( array( 'status' => 'hidden' ) );
     74                $u = $this->factory->user->create();
     75
     76                $this->add_user_to_group( $u, $g );
     77
     78                $this->assertTrue( bp_group_is_visible( $g, $u ) );
     79        }
     80
     81        public function test_bp_group_is_not_visible_using_user_id() {
     82                $g = $this->factory->group->create( array( 'status' => 'private' ) );
     83                $u = $this->factory->user->create();
     84
     85                $this->assertFalse( bp_group_is_visible( $g, $u ) );
     86        }
     87
     88        public function test_bp_group_is_visible_with_group_slug() {
     89                $slug = 'test-group';
     90
     91                $this->factory->group->create(
     92                        array(
     93                                'status' => 'private',
     94                                'slug'   => $slug,
     95                        )
     96                );
     97
     98                $u = $this->factory->user->create( array( 'role' => 'administrator' ) );
     99
     100                $this->set_current_user( $u );
     101
     102                $this->assertTrue( bp_group_is_visible( $slug ) );
     103        }
     104
     105        public function test_bp_group_is_visible_from_current_group() {
     106                $g = $this->factory->group->create( array( 'status' => 'private' ) );
     107                $u = $this->factory->user->create( array( 'role' => 'administrator' ) );
     108
     109                // Fake the current group.
     110                $GLOBALS['groups_template'] = new stdClass;
     111                $GLOBALS['groups_template']->group = groups_get_group( $g );
     112
     113                $this->set_current_user( $u );
     114
     115                $this->assertTrue( bp_group_is_visible() );
     116        }
     117}
  • tests/phpunit/testcases/groups/template/

    diff --git tests/phpunit/testcases/groups/template/bpGroupStatusMessage.php tests/phpunit/testcases/groups/template/status-message.php
    similarity index 97%
    rename from tests/phpunit/testcases/groups/template/bpGroupStatusMessage.php
    rename to tests/phpunit/testcases/groups/template/status-message.php
    index bcc1ff3eb..c4fd836f7 100644
    old new  
    22
    33/**
    44 * @group groups
     5 * @group template
    56 */
    6 class BP_Tests_Groups_Template_BpGroupStatusMessage extends BP_UnitTestCase {
     7class BP_Tests_Groups_Template_Status_Message extends BP_UnitTestCase {
    78        private $current_user;
    89        private $groups_template = null;
    910