/** * Hooked to `bp_activity_entry_meta` * * Show privacy dropdown inside activity loop along with activity meta buttons. */ function update_activity_privacy_option() { if (function_exists('bp_activity_user_can_delete') && bp_activity_user_can_delete() && is_rtmedia_privacy_enable() && is_rtmedia_privacy_user_overide() && apply_filters('rtm_load_bp_activity_privacy_update_ui', true)) { global $activities_template; $selected = 0; if (isset($activities_template->activity->privacy)) { $selected = intval($activities_template->activity->privacy); } //todo strict standard error self::select_privacy_ui(true, 'rtm-ac-privacy-' . $activities_template->activity->id, array('rtm-activity-privacy-opt'), $selected); } }
/** * Test if a non-admin can delete their own activity. */ public function test_user_can_delete_for_nonadmin() { // save the current user and override logged-in user $old_user = get_current_user_id(); $u = $this->factory->user->create(); $this->set_current_user($u); // create an activity update for the user $this->factory->activity->create(array('component' => buddypress()->activity->id, 'type' => 'activity_update', 'user_id' => $u)); // start the activity loop bp_has_activities(array('user_id' => $u)); while (bp_activities()) { bp_the_activity(); // assert! $this->assertTrue(bp_activity_user_can_delete()); } // reset $this->set_current_user($old_user); }
/** * get_activity function. * * @access public * @param mixed $filter * @return void */ public function get_activity($filter) { $args = $filter; if (bp_has_activities($args)) { while (bp_activities()) { bp_the_activity(); $activity = array('avatar' => bp_core_fetch_avatar(array('html' => false, 'item_id' => bp_get_activity_id())), 'action' => bp_get_activity_action(), 'content' => bp_get_activity_content_body(), 'activity_id' => bp_get_activity_id(), 'activity_username' => bp_core_get_username(bp_get_activity_user_id()), 'user_id' => bp_get_activity_user_id(), 'comment_count' => bp_activity_get_comment_count(), 'can_comment' => bp_activity_can_comment(), 'can_favorite' => bp_activity_can_favorite(), 'is_favorite' => bp_get_activity_is_favorite(), 'can_delete' => bp_activity_user_can_delete()); $activity = apply_filters('bp_json_prepare_activity', $activity); $activities[] = $activity; } $data = array('activity' => $activities, 'has_more_items' => bp_activity_has_more_items()); $data = apply_filters('bp_json_prepare_activities', $data); } else { return new WP_Error('bp_json_activity', __('No Activity Found.', 'buddypress'), array('status' => 200)); } $response = new WP_REST_Response(); $response->set_data($data); $response = rest_ensure_response($response); return $response; }
function bp_dtheme_delete_activity() { global $bp; // Check the nonce check_admin_referer('bp_activity_delete_link'); if (!is_user_logged_in() || empty($_POST['id']) || !is_numeric($_POST['id'])) { echo '-1'; return false; } $activity = new BP_Activity_Activity((int) $_POST['id']); // Check access if (empty($activity->user_id) || !bp_activity_user_can_delete($activity)) { echo '-1'; return false; } // Call the action before the delete so plugins can still fetch information about it do_action('bp_activity_before_action_delete_activity', $activity->id, $activity->user_id); if (!bp_activity_delete(array('id' => $activity->id, 'user_id' => $activity->user_id))) { echo '-1<div id="message" class="error"><p>' . __('There was a problem when deleting. Please try again.', 'buddypress') . '</p></div>'; return false; } do_action('bp_activity_action_delete_activity', $activity->id, $activity->user_id); return true; }
?> "><?php _e('Remove Favorite', 'firmasite'); ?> </a> <?php } ?> <?php } ?> <?php if (bp_activity_user_can_delete()) { bp_activity_delete_link(); } ?> <?php do_action('bp_activity_entry_meta'); ?> </div> <?php } ?> </div>
/** * Deletes an Activity item received via a POST request. * * @return mixed String on error, void on success * @since BuddyPress (1.2) */ function bp_legacy_theme_delete_activity() { // Bail if not a POST action if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) { return; } // Check the nonce check_admin_referer('bp_activity_delete_link'); if (!is_user_logged_in()) { exit('-1'); } if (empty($_POST['id']) || !is_numeric($_POST['id'])) { exit('-1'); } $activity = new BP_Activity_Activity((int) $_POST['id']); // Check access if (!bp_activity_user_can_delete($activity)) { exit('-1'); } /** This action is documented in bp-activity/bp-activity-actions.php */ do_action('bp_activity_before_action_delete_activity', $activity->id, $activity->user_id); if (!bp_activity_delete(array('id' => $activity->id, 'user_id' => $activity->user_id))) { exit('-1<div id="message" class="error bp-ajax-message"><p>' . __('There was a problem when deleting. Please try again.', 'buddypress') . '</p></div>'); } /** This action is documented in bp-activity/bp-activity-actions.php */ do_action('bp_activity_action_delete_activity', $activity->id, $activity->user_id); exit; }
/** * Deletes an Activity item received via a POST request. * * @return mixed String on error, void on success * @since BuddyPress (1.2) */ function bp_dtheme_delete_activity() { // Bail if not a POST action if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) { return; } // Check the nonce check_admin_referer('bp_activity_delete_link'); if (!is_user_logged_in()) { exit('-1'); } if (empty($_POST['id']) || !is_numeric($_POST['id'])) { exit('-1'); } $activity = new BP_Activity_Activity((int) $_POST['id']); // Check access if (empty($activity->user_id) || !bp_activity_user_can_delete($activity)) { exit('-1'); } // Call the action before the delete so plugins can still fetch information about it do_action('bp_activity_before_action_delete_activity', $activity->id, $activity->user_id); if (!bp_activity_delete(array('id' => $activity->id, 'user_id' => $activity->user_id))) { exit('-1<div id="message" class="error"><p>' . __('There was a problem when deleting. Please try again.', 'logicalboneshug') . '</p></div>'); } do_action('bp_activity_action_delete_activity', $activity->id, $activity->user_id); exit; }
function show_comment_form() { $activity_id = get_post_meta($this->id, 'bp_media_child_activity', true); if (bp_has_activities(array( 'display_comments' => 'stream', 'include' => $activity_id, 'max' => 1 ))) : while (bp_activities()) : bp_the_activity(); do_action('bp_before_activity_entry'); ?> <div class="activity"> <ul id="activity-stream" class="activity-list item-list"> <li class="activity activity_update" id="activity-<?php echo $activity_id; ?>"> <div class="activity-content"> <?php do_action('bp_activity_entry_content'); ?> <?php if (is_user_logged_in()) : ?> <div class="activity-meta no-ajax"> <?php if (bp_activity_can_comment()) : ?> <a href="<?php bp_get_activity_comment_link(); ?>" class="button acomment-reply bp-primary-action" id="acomment-comment-<?php bp_activity_id(); ?>"><?php printf(__('Comment <span>%s</span>', 'buddypress'), bp_activity_get_comment_count()); ?></a> <?php endif; ?> <?php if (bp_activity_can_favorite()) : ?> <?php if (!bp_get_activity_is_favorite()) : ?> <a href="<?php bp_activity_favorite_link(); ?>" class="button fav bp-secondary-action" title="<?php esc_attr_e('Mark as Favorite', 'buddypress'); ?>"><?php _e('Favorite', 'buddypress') ?></a> <?php else : ?> <a href="<?php bp_activity_unfavorite_link(); ?>" class="button unfav bp-secondary-action" title="<?php esc_attr_e('Remove Favorite', 'buddypress'); ?>"><?php _e('Remove Favorite', 'buddypress') ?></a> <?php endif; ?> <?php endif; ?> <?php if (bp_activity_user_can_delete()) bp_activity_delete_link(); ?> <?php do_action('bp_activity_entry_meta'); ?> </div> <?php endif; ?> </div> <?php do_action('bp_before_activity_entry_comments'); ?> <?php if (( is_user_logged_in() && bp_activity_can_comment() ) || bp_activity_get_comment_count()) : ?> <div class="activity-comments"> <?php bp_activity_comments(); ?> <?php if (is_user_logged_in()) : ?> <form action="<?php bp_activity_comment_form_action(); ?>" method="post" id="ac-form-<?php bp_activity_id(); ?>" class="ac-form"<?php bp_activity_comment_form_nojs_display(); ?>> <div class="ac-reply-avatar"><?php bp_loggedin_user_avatar('width=' . BP_AVATAR_THUMB_WIDTH . '&height=' . BP_AVATAR_THUMB_HEIGHT); ?></div> <div class="ac-reply-content"> <div class="ac-textarea"> <textarea id="ac-input-<?php bp_activity_id(); ?>" class="ac-input" name="ac_input_<?php bp_activity_id(); ?>"></textarea> </div> <input type="submit" name="ac_form_submit" value="<?php _e('Post', 'buddypress'); ?>" /> <?php _e('or press esc to cancel.', 'buddypress'); ?> <input type="hidden" name="comment_form_id" value="<?php bp_activity_id(); ?>" /> </div> <?php do_action('bp_activity_entry_comments'); ?> <?php wp_nonce_field('new_activity_comment', '_wpnonce_new_activity_comment'); ?> </form> <?php endif; ?> </div> <?php endif; ?> <?php do_action('bp_after_activity_entry_comments'); ?> </li> </ul> </div> <?php endwhile; else: ?> <div class="activity"> <ul id="activity-stream" class="activity-list item-list"> <li class="activity activity_update" id="activity-<?php echo $activity_id; ?>"> <div class="activity-content"> <?php do_action('bp_activity_entry_content'); ?> <?php if (is_user_logged_in()) : ?> <div class="activity-meta no-ajax"> <a href="<?php echo $this->get_delete_url(); ?>" class="button item-button bp-secondary-action delete-activity-single confirm" rel="nofollow">Delete</a> </div> <?php endif; ?> </div> </li> </ul> </div> <? endif; }
/** * Delete specific activity item and redirect to previous page. * * @since 1.1.0 * * @uses bp_is_activity_component() * @uses bp_is_current_action() * @uses bp_action_variable() * @uses check_admin_referer() * @uses bp_activity_user_can_delete() * @uses do_action() Calls 'bp_activity_before_action_delete_activity' hook to allow actions to be taken before the activity is deleted. * @uses bp_activity_delete() * @uses bp_core_add_message() * @uses do_action() Calls 'bp_activity_action_delete_activity' hook to allow actions to be taken after the activity is deleted. * @uses bp_core_redirect() * * @param int $activity_id Activity id to be deleted. Defaults to 0. * @return bool False on failure. */ function bp_activity_action_delete_activity($activity_id = 0) { // Not viewing activity or action is not delete. if (!bp_is_activity_component() || !bp_is_current_action('delete')) { return false; } if (empty($activity_id) && bp_action_variable(0)) { $activity_id = (int) bp_action_variable(0); } // Not viewing a specific activity item. if (empty($activity_id)) { return false; } // Check the nonce. check_admin_referer('bp_activity_delete_link'); // Load up the activity item. $activity = new BP_Activity_Activity($activity_id); // Check access. if (!bp_activity_user_can_delete($activity)) { return false; } /** * Fires before the deletion so plugins can still fetch information about it. * * @since 1.5.0 * * @param int $activity_id The activity ID. * @param int $user_id The user associated with the activity. */ do_action('bp_activity_before_action_delete_activity', $activity_id, $activity->user_id); // Delete the activity item and provide user feedback. if (bp_activity_delete(array('id' => $activity_id, 'user_id' => $activity->user_id))) { bp_core_add_message(__('Activity deleted successfully', 'buddypress')); } else { bp_core_add_message(__('There was an error when deleting that activity', 'buddypress'), 'error'); } /** * Fires after the deletion so plugins can act afterwards based on the activity. * * @since 1.1.0 * * @param int $activity_id The activity ID. * @param int $user_id The user associated with the activity. */ do_action('bp_activity_action_delete_activity', $activity_id, $activity->user_id); // Check for the redirect query arg, otherwise let WP handle things. if (!empty($_GET['redirect_to'])) { bp_core_redirect(esc_url($_GET['redirect_to'])); } else { bp_core_redirect(wp_get_referer()); } }
/** * Delete specific activity item and redirect to previous page. * * @since BuddyPress (1.1) * * @param int $activity_id Activity id to be deleted. Defaults to 0. * * @uses bp_is_activity_component() * @uses bp_is_current_action() * @uses bp_action_variable() * @uses check_admin_referer() * @uses bp_activity_user_can_delete() * @uses do_action() Calls 'bp_activity_before_action_delete_activity' hook to allow actions to be taken before the activity is deleted. * @uses bp_activity_delete() * @uses bp_core_add_message() * @uses do_action() Calls 'bp_activity_action_delete_activity' hook to allow actions to be taken after the activity is deleted. * @uses bp_core_redirect() * * @return bool False on failure. */ function bp_activity_action_delete_activity($activity_id = 0) { // Not viewing activity or action is not delete if (!bp_is_activity_component() || !bp_is_current_action('delete')) { return false; } if (empty($activity_id) && bp_action_variable(0)) { $activity_id = (int) bp_action_variable(0); } // Not viewing a specific activity item if (empty($activity_id)) { return false; } // Check the nonce check_admin_referer('bp_activity_delete_link'); // Load up the activity item $activity = new BP_Activity_Activity($activity_id); // Check access if (!bp_activity_user_can_delete($activity)) { return false; } // Call the action before the delete so plugins can still fetch information about it do_action('bp_activity_before_action_delete_activity', $activity_id, $activity->user_id); // Delete the activity item and provide user feedback if (bp_activity_delete(array('id' => $activity_id, 'user_id' => $activity->user_id))) { bp_core_add_message(__('Activity deleted successfully', 'buddypress')); } else { bp_core_add_message(__('There was an error when deleting that activity', 'buddypress'), 'error'); } do_action('bp_activity_action_delete_activity', $activity_id, $activity->user_id); // Check for the redirect query arg, otherwise let WP handle things if (!empty($_GET['redirect_to'])) { bp_core_redirect(esc_url($_GET['redirect_to'])); } else { bp_core_redirect(wp_get_referer()); } }
/** * @deprecated gears_get_activity_stream */ function gears_get_activity_stream() { $output = ''; $output .= '<li class="' . bp_get_activity_css_class() . '" id="activity-' . bp_get_activity_id() . '">'; $output .= '<div class="activity-avatar">'; $output .= '<a class="gears-activity-avatar" title="' . __('View Profile', 'gears') . '" href="' . bp_get_activity_user_link() . '">'; $output .= bp_get_activity_avatar(); $output .= '</a>'; $output .= '</div>'; // activity content $output .= '<div class="activity-content">'; $output .= '<div class="activity-header">'; $output .= bp_get_activity_action(); $output .= '</div>'; $output .= '<div class="activity-inner">'; if (bp_activity_has_content()) { $output .= bp_get_activity_content_body(); } $output .= '</div>'; do_action('bp_activity_entry_content'); $output .= '<div class="activity-meta">'; if (bp_get_activity_type() == 'activity_comment') { $output .= '<a href="' . bp_get_activity_thread_permalink() . '" class="view bp-secondary-action" title="' . __('View Conversation', 'gears') . '">' . __('View Conversation', 'gears') . '</a>'; } if (is_user_logged_in()) { if (bp_activity_can_favorite()) { if (!bp_get_activity_is_favorite()) { $output .= '<a href="' . bp_get_activity_favorite_link() . '" class="fav bp-secondary-action" title="' . esc_attr(__('Mark as Favorite', 'gears')) . '">' . __('Favorite', 'gears') . '</a>'; } else { $output .= '<a href="' . bp_get_activity_unfavorite_link() . '" class="unfav bp-secondary-action" title="' . esc_attr(__('Remove Favorite', 'gears')) . '">' . __('Remove Favorite', 'gears') . '</a>'; } } if (bp_activity_user_can_delete()) { $output .= bp_get_activity_delete_link(); } do_action('bp_activity_entry_meta'); } $output .= '</div>'; if (bp_get_activity_type() == 'activity_comment') { $output .= '<a href="' . bp_get_activity_thread_permalink() . '" class="view bp-secondary-action" title="' . __('View Conversation', 'gears') . '">' . __('View Conversation', 'gears'); } // end bp_get_activity_type() $output .= '</div>'; // end activity content $output .= '</li>'; return $output; }
/** * Callback for activity images removal * @param string $content Shortcode content parsed for images * @param BP_Activity_Activity Activity which contains the shortcode - used for privilege check * @return bool */ private function _clean_up_content_images($content, $activity) { if (!Bpfb_Data::get('cleanup_images')) { return false; } if (!bp_activity_user_can_delete($activity)) { return false; } $images = BpfbCodec::extract_images($content); if (empty($images)) { return false; } foreach ($images as $image) { $info = pathinfo(trim($image)); // Make sure we have the info we need if (empty($info['filename']) || empty($info['extension'])) { continue; } // Make sure we're dealing with the image $ext = strtolower($info['extension']); if (!in_array($ext, self::_get_supported_image_extensions())) { continue; } // Construct the filenames $thumbnail = bpfb_get_image_dir($activity_blog_id) . $info['filename'] . '-bpfbt.' . $ext; $full = bpfb_get_image_dir($activity_blog_id) . trim($image); // Actually remove the images if (file_exists($thumbnail) && is_writable($thumbnail)) { @unlink($thumbnail); } if (file_exists($full) && is_writable($full)) { @unlink($full); } } return true; }