bp_nouveau_ajax_object_template_loader()
Load the template loop for the current object.
Return Return
(string) Template loop for the specified object
Source Source
File: bp-templates/bp-nouveau/includes/ajax.php
function bp_nouveau_ajax_object_template_loader() { if ( ! bp_is_post_request() ) { wp_send_json_error(); } if ( empty( $_POST['object'] ) ) { wp_send_json_error(); } $object = sanitize_title( $_POST['object'] ); // Bail if object is not an active component to prevent arbitrary file inclusion. if ( ! bp_is_active( $object ) ) { wp_send_json_error(); } // Nonce check! if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_' . $object ) ) { wp_send_json_error(); } $result = array(); if ( 'activity' === $object ) { $scope = ''; if ( ! empty( $_POST['scope'] ) ) { $scope = sanitize_text_field( $_POST['scope'] ); } // We need to calculate and return the feed URL for each scope. switch ( $scope ) { case 'friends': $feed_url = bp_loggedin_user_domain() . bp_nouveau_get_component_slug( 'activity' ) . '/friends/feed/'; break; case 'groups': $feed_url = bp_loggedin_user_domain() . bp_nouveau_get_component_slug( 'activity' ) . '/groups/feed/'; break; case 'favorites': $feed_url = bp_loggedin_user_domain() . bp_nouveau_get_component_slug( 'activity' ) . '/favorites/feed/'; break; case 'mentions': $feed_url = bp_loggedin_user_domain() . bp_nouveau_get_component_slug( 'activity' ) . '/mentions/feed/'; // Get user new mentions $new_mentions = bp_get_user_meta( bp_loggedin_user_id(), 'bp_new_mentions', true ); // If we have some, include them into the returned json before deleting them if ( is_array( $new_mentions ) ) { $result['new_mentions'] = $new_mentions; // Clear new mentions bp_activity_clear_new_mentions( bp_loggedin_user_id() ); } break; default: $feed_url = bp_get_sitewide_activity_feed_link(); break; } /** * Filters the browser URL for the template loader. * * @since 3.0.0 * * @param string $feed_url Template feed url. * @param string $scope Current component scope. */ $result['feed_url'] = apply_filters( 'bp_nouveau_ajax_object_template_loader', $feed_url, $scope ); } /* * AJAX requests happen too early to be seen by bp_update_is_directory() * so we do it manually here to ensure templates load with the correct * context. Without this check, templates will load the 'single' version * of themselves rather than the directory version. */ if ( ! bp_current_action() ) { bp_update_is_directory( true, bp_current_component() ); } // Get the template path based on the 'template' variable via the AJAX request. $template = isset( $_POST['template'] ) ? wp_unslash( $_POST['template'] ) : ''; switch ( $template ) { case 'group_members' : case 'groups/single/members' : $template_part = 'groups/single/members-loop.php'; break; case 'group_requests' : $template_part = 'groups/single/requests-loop.php'; break; case 'friend_requests' : $template_part = 'members/single/friends/requests-loop.php'; break; case 'member_notifications' : $template_part = 'members/single/notifications/notifications-loop.php'; break; default : $template_part = $object . '/' . $object . '-loop.php'; break; } ob_start(); $template_path = bp_locate_template( array( $template_part ), false ); /** * Filters the server path for the template loader. * * @since 3.0.0 * * @param string Template file path. */ $template_path = apply_filters( 'bp_nouveau_object_template_path', $template_path ); load_template( $template_path ); $result['contents'] = ob_get_contents(); ob_end_clean(); // Locate the object template. wp_send_json_success( $result ); }
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
3.0.0 | Introduced. |