Changeset 11146 for trunk/src/bp-groups/bp-groups-template.php
- Timestamp:
- 09/21/2016 10:59:04 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/bp-groups/bp-groups-template.php
r11145 r11146 127 127 */ 128 128 return apply_filters( 'bp_get_groups_directory_permalink', trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() ) ); 129 } 130 131 /** 132 * Output group type directory permalink. 133 * 134 * @since 2.7.0 135 * 136 * @param string $group_type Optional. Group type. 137 */ 138 function bp_group_type_directory_permalink( $group_type = '' ) { 139 echo esc_url( bp_get_group_type_directory_permalink( $group_type ) ); 140 } 141 /** 142 * Return group type directory permalink. 143 * 144 * @since 2.7.0 145 * 146 * @param string $group_type Optional. Group type. Defaults to current group type. 147 * @return string Group type directory URL on success, an empty string on failure. 148 */ 149 function bp_get_group_type_directory_permalink( $group_type = '' ) { 150 151 if ( $group_type ) { 152 $_group_type = $group_type; 153 } else { 154 // Fall back on the current group type. 155 $_group_type = bp_get_current_group_directory_type(); 156 } 157 158 $type = bp_groups_get_group_type_object( $_group_type ); 159 160 // Bail when member type is not found or has no directory. 161 if ( ! $type || ! $type->has_directory ) { 162 return ''; 163 } 164 165 /** 166 * Filters the group type directory permalink. 167 * 168 * @since 2.7.0 169 * 170 * @param string $value Group type directory permalink. 171 * @param object $type Group type object. 172 * @param string $member_type Group type name, as passed to the function. 173 */ 174 return apply_filters( 'bp_get_group_type_directory_permalink', trailingslashit( bp_get_groups_directory_permalink() . bp_get_groups_group_type_base() . '/' . $type->directory_slug ), $type, $group_type ); 175 } 176 177 /** 178 * Output group type directory link. 179 * 180 * @since 2.7.0 181 * 182 * @param string $group_type Unique group type identifier as used in bp_groups_register_group_type(). 183 */ 184 function bp_group_type_directory_link( $group_type = '' ) { 185 echo bp_get_group_type_directory_link( $group_type ); 186 } 187 /** 188 * Return group type directory link. 189 * 190 * @since 2.7.0 191 * 192 * @param string $group_type Unique group type identifier as used in bp_groups_register_group_type(). 193 * @return string 194 */ 195 function bp_get_group_type_directory_link( $group_type = '' ) { 196 if ( empty( $group_type ) ) { 197 return ''; 198 } 199 200 return sprintf( '<a href="%s">%s</a>', esc_url( bp_get_group_type_directory_permalink( $group_type ) ), bp_groups_get_group_type_object( $group_type )->labels['name'] ); 201 } 202 203 /** 204 * Output a comma-delimited list of group types. 205 * 206 * @since 2.7.0 207 * @see bp_get_group_type_list() for parameter documentation. 208 */ 209 function bp_group_type_list( $group_id = 0, $r = array() ) { 210 echo bp_get_group_type_list( $group_id, $r ); 211 } 212 /** 213 * Return a comma-delimited list of group types. 214 * 215 * @since 2.7.0 216 * 217 * @param int $group_id Group ID. Defaults to current group ID if on a group page. 218 * @param array|string $args { 219 * Array of parameters. All items are optional. 220 * @type string $parent_element Element to wrap around the list. Defaults to 'p'. 221 * @type array $parent_attr Element attributes for parent element. Defaults to 222 * array( 'class' => 'bp-group-type-list' ). 223 * @type string $label Label to add before the list. Defaults to 'Group Types:'. 224 * @type string $label_element Element to wrap around the label. Defaults to 'strong'. 225 * @type array $label_attr Element attributes for label element. Defaults to array(). 226 * } 227 * @return string 228 */ 229 function bp_get_group_type_list( $group_id = 0, $r = array() ) { 230 if ( empty( $group_id ) ) { 231 $group_id = bp_get_current_group_id(); 232 } 233 234 $r = bp_parse_args( $r, array( 235 'parent_element' => 'p', 236 'parent_attr' => array( 237 'class' => 'bp-group-type-list', 238 ), 239 'label' => __( 'Group Types:', 'buddypress' ), 240 'label_element' => 'strong', 241 'label_attr' => array() 242 ), 'group_type_list' ); 243 244 $retval = ''; 245 246 if ( $types = bp_groups_get_group_type( $group_id, false ) ) { 247 // Make sure we can show the type in the list. 248 $types = array_intersect( bp_groups_get_group_types( array( 'show_in_list' => true ) ), $types ); 249 if ( empty( $types ) ) { 250 return $retval; 251 } 252 253 $before = $after = $label = ''; 254 255 // Render parent element. 256 if ( ! empty( $r['parent_element'] ) ) { 257 $parent_elem = new BP_Core_HTML_Element( array( 258 'element' => $r['parent_element'], 259 'attr' => $r['parent_attr'] 260 ) ); 261 262 // Set before and after. 263 $before = $parent_elem->get( 'open_tag' ); 264 $after = $parent_elem->get( 'close_tag' ); 265 } 266 267 // Render label element. 268 if ( ! empty( $r['label_element'] ) ) { 269 $label = new BP_Core_HTML_Element( array( 270 'element' => $r['label_element'], 271 'attr' => $r['label_attr'], 272 'inner_html' => esc_html( $r['label'] ) 273 ) ); 274 $label = $label->contents() . ' '; 275 276 // No element, just the label. 277 } else { 278 $label = esc_html( $r['label'] ); 279 } 280 281 // Comma-delimit each type into the group type directory link. 282 $label .= implode( ', ', array_map( 'bp_get_group_type_directory_link', $types ) ); 283 284 // Retval time! 285 $retval = $before . $label . $after; 286 } 287 288 return $retval; 129 289 } 130 290
Note: See TracChangeset
for help on using the changeset viewer.