[ Index ] |
PHP Cross Reference of BuddyPress |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * BP Activity Blocks Functions. 4 * 5 * @package BuddyPress 6 * @subpackage ActvityBlocks 7 * @since 7.0.0 8 */ 9 10 // Exit if accessed directly. 11 if ( ! defined( 'ABSPATH' ) ) { 12 exit; 13 } 14 15 /** 16 * Callback function to render the Latest Activities Block. 17 * 18 * @since 9.0.0 19 * 20 * @param array $attributes The block attributes. 21 * @return string HTML output. 22 */ 23 function bp_activity_render_latest_activities_block( $attributes = array() ) { 24 $block_args = bp_parse_args( 25 $attributes, 26 array( 27 'title' => __( 'Latest updates', 'buddypress' ), 28 'maxActivities' => 5, 29 'type' => array( 'activity_update' ), 30 'postId' => 0, 31 ) 32 ); 33 34 $max_activities = (int) $block_args['maxActivities']; 35 36 // Should we get a specific member's activities? 37 $member_id = 0; 38 if ( $block_args['postId'] ) { 39 $member_id = (int) get_post_field( 'post_author', $block_args['postId'] ); 40 } else { 41 $member_id = bp_displayed_user_id(); 42 } 43 44 // Set the widget's wrapper attributes. 45 $types = (array) $block_args['type']; 46 $classnames = array_map( 'sanitize_html_class', array_merge( $types, array( 'bp-latest-activities', 'buddypress', 'widget' ) ) ); 47 $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classnames ) ) ); 48 49 // Set the Block's title. 50 $widget_content = sprintf( '<h2 class="widget-title">%s</h2>', esc_html( $block_args['title'] ) ); 51 52 // Avoid conflicts with other activity loops. 53 $reset_activities_template = null; 54 if ( ! empty( $GLOBALS['activities_template'] ) ) { 55 $reset_activities_template = $GLOBALS['activities_template']; 56 } 57 58 /** 59 * Filter here to edit the arguments used by the Latest Activities block. 60 * 61 * @since 9.0.0 62 * 63 * @param array $widget_args The list of arguments for the Activity query. 64 * @param array $block_args The list of Block attributes. 65 */ 66 $widget_args = apply_filters( 67 'bp_activity_block_latest_updates_args', 68 array( 69 'max' => $max_activities, 70 'scope' => 'all', 71 'user_id' => $member_id, 72 'object' => false, 73 'action' => implode( ',', $types ), 74 'primary_id' => 0, 75 'secondary_id' => 0, 76 ), 77 $block_args 78 ); 79 80 // Build the activity loop. 81 if ( 'nouveau' === bp_get_theme_compat_id() ) { 82 $bp_nouveau = bp_nouveau(); 83 84 // Globalize the activity widget arguments. 85 $bp_nouveau->activity->widget_args = $widget_args; 86 87 ob_start(); 88 bp_get_template_part( 'activity/widget' ); 89 $widget_content .= ob_get_clean(); 90 91 // Reset the global. 92 $bp_nouveau->activity->widget_args = array(); 93 } else { 94 $activity_loop = sprintf( '<div class="widget-error"><p>%s</p></div>', esc_html__( 'Sorry, there was no activity found. Please try a different filter.', 'buddypress' ) ); 95 96 if ( bp_has_activities( $widget_args ) ) { 97 $activity_loop = ''; 98 99 while ( bp_activities() ) { 100 bp_the_activity(); 101 102 $activity_footer = ''; 103 $activity_classes = 'activity-item'; 104 if ( bp_activity_has_content() ) { 105 $activity_content = bp_get_activity_content_body(); 106 $activity_footer = sprintf( 107 '<footer> 108 <cite> 109 <a href="%1$s" class="bp-tooltip" data-bp-tooltip="%2$s"> 110 %3$s 111 </a> 112 </cite> 113 %4$s 114 </footer>', 115 bp_get_activity_user_link(), 116 bp_get_activity_member_display_name(), 117 bp_get_activity_avatar( 118 array( 119 'type' => 'thumb', 120 'width' => '40', 121 'height' => '40', 122 ) 123 ), 124 bp_insert_activity_meta() 125 ); 126 } else { 127 $activity_classes .= ' mini'; 128 $activity_content = bp_get_activity_action(); 129 } 130 131 $activity_loop .= sprintf( 132 '<blockquote> 133 <div class="%1$s">%2$s</div> 134 %3$s 135 </blockquote>', 136 $activity_classes, 137 $activity_content, 138 $activity_footer 139 ); 140 } 141 } 142 143 $widget_content .= sprintf( 144 '<div class="activity-list item-list"> 145 %1$s 146 </div>', 147 $activity_loop 148 ); 149 } 150 151 // Adds a container to make sure the block is styled even when used into the Columns parent block. 152 $widget_content = sprintf( '<div class="bp-latest-activities-block">%s</div>', "\n" . $widget_content . "\n" ); 153 154 // Reset the global template loop. 155 $GLOBALS['activities_template'] = $reset_activities_template; 156 157 // Only add a block wrapper if not loaded into a Widgets sidebar. 158 if ( ! did_action( 'dynamic_sidebar_before' ) ) { 159 return sprintf( 160 '<div %1$s>%2$s</div>', 161 $wrapper_attributes, 162 $widget_content 163 ); 164 } 165 166 return $widget_content; 167 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 24 01:00:53 2024 | Cross-referenced by PHPXref 0.7.1 |