本文整理汇总了PHP中bbp_is_reply_published函数的典型用法代码示例。如果您正苦于以下问题:PHP bbp_is_reply_published函数的具体用法?PHP bbp_is_reply_published怎么用?PHP bbp_is_reply_published使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bbp_is_reply_published函数的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: test_bbp_is_reply_published
/**
* @covers ::bbp_is_reply_published
*/
public function test_bbp_is_reply_published()
{
$forum_id = $this->factory->forum->create();
$topic_id = $this->factory->topic->create(array('post_parent' => $forum_id, 'topic_meta' => array('forum_id' => $forum_id)));
$reply_id = $this->factory->reply->create(array('post_parent' => $topic_id, 'reply_meta' => array('forum_id' => $forum_id, 'topic_id' => $topic_id)));
$r = $this->factory->reply->create(array('post_parent' => $topic_id, 'reply_meta' => array('forum_id' => $forum_id, 'topic_id' => $topic_id)));
$reply_published = bbp_is_reply_published($r);
$this->assertTrue($reply_published);
$reply_published = bbp_is_reply_published($reply_id);
$this->assertTrue($reply_published);
}
示例2: notify_on_reply
/**
* Send a notification to subscribers
*
* @wp-filter bbp_new_reply 1
*/
public function notify_on_reply($reply_id = 0, $topic_id = 0, $forum_id = 0, $anonymous_data = false, $reply_author = 0)
{
if ($this->handler === null) {
return false;
}
global $wpdb;
if (!bbp_is_subscriptions_active()) {
return false;
}
$reply_id = bbp_get_reply_id($reply_id);
$topic_id = bbp_get_topic_id($topic_id);
$forum_id = bbp_get_forum_id($forum_id);
if (!bbp_is_reply_published($reply_id)) {
return false;
}
if (!bbp_is_topic_published($topic_id)) {
return false;
}
$user_ids = bbp_get_topic_subscribers($topic_id, true);
if (empty($user_ids)) {
return false;
}
// Poster name
$reply_author_name = apply_filters('bbsub_reply_author_name', bbp_get_reply_author_display_name($reply_id));
do_action('bbp_pre_notify_subscribers', $reply_id, $topic_id, $user_ids);
// Don't send notifications to the person who made the post
$send_to_author = Falcon::get_option('bbsub_send_to_author', false);
if (!$send_to_author && !empty($reply_author)) {
$user_ids = array_filter($user_ids, function ($id) use($reply_author) {
return (int) $id !== (int) $reply_author;
});
}
// Get userdata for all users
$user_ids = array_map(function ($id) {
return get_userdata($id);
}, $user_ids);
// Sanitize the HTML into text
$content = apply_filters('bbsub_html_to_text', bbp_get_reply_content($reply_id));
// Build email
$text = "%1\$s\n\n";
$text .= "---\nReply to this email directly or view it online:\n%2\$s\n\n";
$text .= "You are receiving this email because you subscribed to it. Login and visit the topic to unsubscribe from these emails.";
$text = sprintf($text, $content, bbp_get_reply_url($reply_id));
$text = apply_filters('bbsub_email_message', $text, $reply_id, $topic_id, $content);
$subject = apply_filters('bbsub_email_subject', 'Re: [' . get_option('blogname') . '] ' . bbp_get_topic_title($topic_id), $reply_id, $topic_id);
$options = array('id' => $topic_id, 'author' => $reply_author_name);
$this->handler->send_mail($user_ids, $subject, $text, $options);
do_action('bbp_post_notify_subscribers', $reply_id, $topic_id, $user_ids);
return true;
}
示例3: row_actions
/**
* Reply Row actions
*
* Remove the quick-edit action link under the reply title and add the
* content and spam link
*
* @since 2.0.0 bbPress (r2577)
*
* @param array $actions Actions
* @param array $reply Reply object
* @uses bbp_get_reply_post_type() To get the reply post type
* @uses bbp_reply_content() To output reply content
* @uses bbp_get_reply_url() To get the reply link
* @uses bbp_get_reply_title() To get the reply title
* @uses current_user_can() To check if the current user can edit or
* delete the reply
* @uses bbp_is_reply_spam() To check if the reply is marked as spam
* @uses get_post_type_object() To get the reply post type object
* @uses add_query_arg() To add custom args to the url
* @uses remove_query_arg() To remove custom args from the url
* @uses wp_nonce_url() To nonce the url
* @uses get_delete_post_link() To get the delete post link of the reply
* @return array $actions Actions
*/
public function row_actions($actions, $reply)
{
if ($this->bail()) {
return $actions;
}
unset($actions['inline hide-if-no-js']);
// Reply view links to topic
$actions['view'] = '<a href="' . esc_url(bbp_get_reply_url($reply->ID)) . '" title="' . esc_attr(sprintf(__('View “%s”', 'bbpress'), bbp_get_reply_title($reply->ID))) . '" rel="permalink">' . esc_html__('View', 'bbpress') . '</a>';
// User cannot view replies in trash
if (bbp_get_trash_status_id() === $reply->post_status && !current_user_can('view_trash')) {
unset($actions['view']);
}
// Only show the actions if the user is capable of viewing them
if (current_user_can('moderate', $reply->ID)) {
// Show the 'approve' link on pending posts only and 'unapprove' on published posts only
$approve_uri = wp_nonce_url(add_query_arg(array('reply_id' => $reply->ID, 'action' => 'bbp_toggle_reply_approve'), remove_query_arg(array('bbp_reply_toggle_notice', 'reply_id', 'failed', 'super'))), 'approve-reply_' . $reply->ID);
if (bbp_is_reply_published($reply->ID)) {
$actions['unapproved'] = '<a href="' . esc_url($approve_uri) . '" title="' . esc_attr__('Unapprove this reply', 'bbpress') . '">' . _x('Unapprove', 'Unapprove reply', 'bbpress') . '</a>';
} elseif (!bbp_is_reply_private($reply->ID)) {
$actions['approved'] = '<a href="' . esc_url($approve_uri) . '" title="' . esc_attr__('Approve this reply', 'bbpress') . '">' . _x('Approve', 'Approve reply', 'bbpress') . '</a>';
}
// Show the 'spam' link on published and pending replies and 'not spam' on spammed replies
if (in_array($reply->post_status, array(bbp_get_public_status_id(), bbp_get_pending_status_id(), bbp_get_spam_status_id()))) {
$spam_uri = wp_nonce_url(add_query_arg(array('reply_id' => $reply->ID, 'action' => 'bbp_toggle_reply_spam'), remove_query_arg(array('bbp_reply_toggle_notice', 'reply_id', 'failed', 'super'))), 'spam-reply_' . $reply->ID);
if (bbp_is_reply_spam($reply->ID)) {
$actions['spam'] = '<a href="' . esc_url($spam_uri) . '" title="' . esc_attr__('Mark the reply as not spam', 'bbpress') . '">' . esc_html__('Not spam', 'bbpress') . '</a>';
} else {
$actions['spam'] = '<a href="' . esc_url($spam_uri) . '" title="' . esc_attr__('Mark this reply as spam', 'bbpress') . '">' . esc_html__('Spam', 'bbpress') . '</a>';
}
}
}
// Trash
if (current_user_can('delete_reply', $reply->ID)) {
if (bbp_get_trash_status_id() === $reply->post_status) {
$post_type_object = get_post_type_object(bbp_get_reply_post_type());
$actions['untrash'] = "<a title='" . esc_attr__('Restore this item from the Trash', 'bbpress') . "' href='" . esc_url(add_query_arg(array('_wp_http_referer' => add_query_arg(array('post_type' => bbp_get_reply_post_type()), admin_url('edit.php'))), wp_nonce_url(admin_url(sprintf($post_type_object->_edit_link . '&action=untrash', $reply->ID)), 'untrash-' . $reply->post_type . '_' . $reply->ID))) . "'>" . esc_html__('Restore', 'bbpress') . "</a>";
} elseif (EMPTY_TRASH_DAYS) {
$actions['trash'] = "<a class='submitdelete' title='" . esc_attr__('Move this item to the Trash', 'bbpress') . "' href='" . esc_url(add_query_arg(array('_wp_http_referer' => add_query_arg(array('post_type' => bbp_get_reply_post_type()), admin_url('edit.php'))), get_delete_post_link($reply->ID))) . "'>" . esc_html__('Trash', 'bbpress') . "</a>";
}
if (bbp_get_trash_status_id() === $reply->post_status || !EMPTY_TRASH_DAYS) {
$actions['delete'] = "<a class='submitdelete' title='" . esc_attr__('Delete this item permanently', 'bbpress') . "' href='" . esc_url(add_query_arg(array('_wp_http_referer' => add_query_arg(array('post_type' => bbp_get_reply_post_type()), admin_url('edit.php'))), get_delete_post_link($reply->ID, '', true))) . "'>" . esc_html__('Delete Permanently', 'bbpress') . "</a>";
} elseif (bbp_get_spam_status_id() === $reply->post_status) {
unset($actions['trash']);
}
}
return $actions;
}
示例4: bbp_update_topic_last_reply_id
/**
* Update the topic with the most recent reply ID
*
* @since bbPress (r2625)
*
* @param int $topic_id Optional. Topic id to update
* @param int $reply_id Optional. Reply id
* @uses bbp_is_reply() To check if the passed topic id is a reply
* @uses bbp_get_reply_id() To get the reply id
* @uses bbp_get_reply_topic_id() To get the reply topic id
* @uses bbp_get_topic_id() To get the topic id
* @uses bbp_get_reply_post_type() To get the reply post type
* @uses bbp_get_public_child_last_id() To get the last public reply id
* @uses update_post_meta() To update the topic last reply id meta
* @uses apply_filters() Calls 'bbp_update_topic_last_reply_id' with the reply
* id and topic id
* @return int Reply id
*/
function bbp_update_topic_last_reply_id($topic_id = 0, $reply_id = 0)
{
// If it's a reply, then get the parent (topic id)
if (empty($reply_id) && bbp_is_reply($topic_id)) {
$reply_id = bbp_get_reply_id($topic_id);
$topic_id = bbp_get_reply_topic_id($reply_id);
} else {
$reply_id = bbp_get_reply_id($reply_id);
$topic_id = bbp_get_topic_id($topic_id);
}
if (empty($reply_id)) {
$reply_id = bbp_get_public_child_last_id($topic_id, bbp_get_reply_post_type());
}
// Adjust last_id's based on last_reply post_type
if (empty($reply_id) || !bbp_is_reply($reply_id)) {
$reply_id = 0;
}
// Update if reply is published
if (bbp_is_reply_published($reply_id)) {
update_post_meta($topic_id, '_bbp_last_reply_id', (int) $reply_id);
}
return apply_filters('bbp_update_topic_last_reply_id', (int) $reply_id, $topic_id);
}
示例5: bbp_update_forum_last_reply_id
/**
* Update the forum last reply id
*
* @since bbPress (r2625)
*
* @param int $forum_id Optional. Forum id
* @param int $reply_id Optional. Reply id
* @uses bbp_get_forum_id() To get the forum id
* @uses bbp_forum_query_subforum_ids() To get the subforum ids
* @uses bbp_update_forum_last_reply_id() To update the last reply id of child
* forums
* @uses bbp_forum_query_topic_ids() To get the topic ids in the forum
* @uses bbp_forum_query_last_reply_id() To get the forum's last reply id
* @uses bbp_is_reply_published() To make sure the reply is published
* @uses update_post_meta() To update the forum's last active id meta
* @uses apply_filters() Calls 'bbp_update_forum_last_reply_id' with the last
* reply id and forum id
* @return bool True on success, false on failure
*/
function bbp_update_forum_last_reply_id($forum_id = 0, $reply_id = 0)
{
$forum_id = bbp_get_forum_id($forum_id);
// Define local variable(s)
$children_last_reply = 0;
// Do some calculation if not manually set
if (empty($reply_id)) {
// Loop through children and get the most recent reply id
$children = bbp_forum_query_subforum_ids($forum_id);
if (!empty($children)) {
foreach ((array) $children as $child) {
$children_last_reply = bbp_update_forum_last_reply_id($child);
// Recursive
}
}
// If this forum has topics...
$topic_ids = bbp_forum_query_topic_ids($forum_id);
if (!empty($topic_ids)) {
// ...get the most recent reply from those topics...
$reply_id = bbp_forum_query_last_reply_id($forum_id, $topic_ids);
// ...and compare it to the most recent topic id...
$reply_id = $reply_id > max($topic_ids) ? $reply_id : max($topic_ids);
}
}
// Cast as integer in case of empty or string
$reply_id = (int) $reply_id;
$children_last_reply = (int) $children_last_reply;
// If child forums have higher ID, check for newer reply id
if (!empty($children) && $children_last_reply > $reply_id) {
$reply_id = $children_last_reply;
}
// Update the last public reply ID
if (bbp_is_reply_published($reply_id)) {
update_post_meta($forum_id, '_bbp_last_reply_id', $reply_id);
}
return (int) apply_filters('bbp_update_forum_last_reply_id', $reply_id, $forum_id);
}
示例6: bbp_update_reply_walker
/**
* Walk up the ancestor tree from the current reply, and update all the counts
*
* @since bbPress (r2884)
*
* @param int $reply_id Optional. Reply id
* @param string $last_active_time Optional. Last active time
* @param int $forum_id Optional. Forum id
* @param int $topic_id Optional. Topic id
* @param bool $refresh If set to true, unsets all the previous parameters.
* Defaults to true
* @uses bbp_get_reply_id() To get the reply id
* @uses bbp_get_reply_topic_id() To get the reply topic id
* @uses bbp_get_reply_forum_id() To get the reply forum id
* @uses get_post_ancestors() To get the ancestors of the reply
* @uses bbp_is_reply() To check if the ancestor is a reply
* @uses bbp_is_topic() To check if the ancestor is a topic
* @uses bbp_update_topic_last_reply_id() To update the topic last reply id
* @uses bbp_update_topic_last_active_id() To update the topic last active id
* @uses bbp_get_topic_last_active_id() To get the topic last active id
* @uses get_post_field() To get the post date of the last active id
* @uses bbp_update_topic_last_active_time() To update the last active topic meta
* @uses bbp_update_topic_voice_count() To update the topic voice count
* @uses bbp_update_topic_reply_count() To update the topic reply count
* @uses bbp_update_topic_reply_count_hidden() To update the topic hidden reply
* count
* @uses bbp_is_forum() To check if the ancestor is a forum
* @uses bbp_update_forum_last_topic_id() To update the last topic id forum meta
* @uses bbp_update_forum_last_reply_id() To update the last reply id forum meta
* @uses bbp_update_forum_last_active_id() To update the forum last active id
* @uses bbp_get_forum_last_active_id() To get the forum last active id
* @uses bbp_update_forum_last_active_time() To update the forum last active time
* @uses bbp_update_forum_reply_count() To update the forum reply count
*/
function bbp_update_reply_walker($reply_id, $last_active_time = '', $forum_id = 0, $topic_id = 0, $refresh = true)
{
// Verify the reply ID
$reply_id = bbp_get_reply_id($reply_id);
// Reply was passed
if (!empty($reply_id)) {
// Get the topic ID if none was passed
if (empty($topic_id)) {
$topic_id = bbp_get_reply_topic_id($reply_id);
}
// Get the forum ID if none was passed
if (empty($forum_id)) {
$forum_id = bbp_get_reply_forum_id($reply_id);
}
}
// Set the active_id based on topic_id/reply_id
$active_id = empty($reply_id) ? $topic_id : $reply_id;
// Setup ancestors array to walk up
$ancestors = array_values(array_unique(array_merge(array($topic_id, $forum_id), (array) get_post_ancestors($topic_id))));
// If we want a full refresh, unset any of the possibly passed variables
if (true === $refresh) {
$forum_id = $topic_id = $reply_id = $active_id = $last_active_time = 0;
}
// Walk up ancestors
if (!empty($ancestors)) {
foreach ($ancestors as $ancestor) {
// Reply meta relating to most recent reply
if (bbp_is_reply($ancestor)) {
// @todo - hierarchical replies
// Topic meta relating to most recent reply
} elseif (bbp_is_topic($ancestor)) {
// Last reply and active ID's
bbp_update_topic_last_reply_id($ancestor, $reply_id);
bbp_update_topic_last_active_id($ancestor, $active_id);
// Get the last active time if none was passed
$topic_last_active_time = $last_active_time;
if (empty($last_active_time)) {
$topic_last_active_time = get_post_field('post_date', bbp_get_topic_last_active_id($ancestor));
}
// Only update if reply is published
if (bbp_is_reply_published($reply_id)) {
bbp_update_topic_last_active_time($ancestor, $topic_last_active_time);
}
// Counts
bbp_update_topic_voice_count($ancestor);
bbp_update_topic_reply_count($ancestor);
bbp_update_topic_reply_count_hidden($ancestor);
// Forum meta relating to most recent topic
} elseif (bbp_is_forum($ancestor)) {
// Last topic and reply ID's
bbp_update_forum_last_topic_id($ancestor, $topic_id);
bbp_update_forum_last_reply_id($ancestor, $reply_id);
// Last Active
bbp_update_forum_last_active_id($ancestor, $active_id);
// Get the last active time if none was passed
$forum_last_active_time = $last_active_time;
if (empty($last_active_time)) {
$forum_last_active_time = get_post_field('post_date', bbp_get_forum_last_active_id($ancestor));
}
// Only update if reply is published
if (bbp_is_reply_published($reply_id)) {
bbp_update_forum_last_active_time($ancestor, $forum_last_active_time);
}
// Counts
bbp_update_forum_reply_count($ancestor);
}
//.........这里部分代码省略.........
示例7: reply_create
/**
* Record an activity stream entry when a reply is created
*
* @since bbPress (r3395)
* @param int $topic_id
* @param int $forum_id
* @param array $anonymous_data
* @param int $topic_author_id
* @uses bbp_get_reply_id()
* @uses bbp_get_topic_id()
* @uses bbp_get_forum_id()
* @uses bbp_get_user_profile_link()
* @uses bbp_get_reply_url()
* @uses bbp_get_reply_content()
* @uses bbp_get_topic_permalink()
* @uses bbp_get_topic_title()
* @uses bbp_get_forum_permalink()
* @uses bbp_get_forum_title()
* @uses bp_create_excerpt()
* @uses apply_filters()
* @return Bail early if topic is by anonywous user
*/
public function reply_create($reply_id, $topic_id, $forum_id, $anonymous_data, $reply_author_id)
{
// Do not log activity of anonymous users
if (!empty($anonymous_data)) {
return;
}
// Bail if site is private
if (!bbp_is_site_public()) {
return;
}
// Validate activity data
$user_id = $reply_author_id;
$reply_id = bbp_get_reply_id($reply_id);
$topic_id = bbp_get_topic_id($topic_id);
$forum_id = bbp_get_forum_id($forum_id);
// Bail if user is not active
if (bbp_is_user_inactive($user_id)) {
return;
}
// Bail if reply is not published
if (!bbp_is_reply_published($reply_id)) {
return;
}
// Setup links for activity stream
$user_link = bbp_get_user_profile_link($user_id);
// Reply
$reply_url = bbp_get_reply_url($reply_id);
$reply_content = get_post_field('post_content', $reply_id, 'raw');
// Topic
$topic_permalink = bbp_get_topic_permalink($topic_id);
$topic_title = get_post_field('post_title', $topic_id, 'raw');
$topic_link = '<a href="' . $topic_permalink . '" title="' . $topic_title . '">' . $topic_title . '</a>';
// Forum
$forum_permalink = bbp_get_forum_permalink($forum_id);
$forum_title = get_post_field('post_title', $forum_id, 'raw');
$forum_link = '<a href="' . $forum_permalink . '" title="' . $forum_title . '">' . $forum_title . '</a>';
// Activity action & text
$activity_text = sprintf(__('%1$s replied to the topic %2$s in the forum %3$s', 'bbpress'), $user_link, $topic_link, $forum_link);
$activity_action = apply_filters('bbp_activity_reply_create', $activity_text, $user_id, $reply_id, $topic_id);
$activity_content = apply_filters('bbp_activity_reply_create_excerpt', bp_create_excerpt($reply_content), $reply_content);
// Compile the activity stream results
$activity = array('id' => $this->get_activity_id($reply_id), 'user_id' => $user_id, 'action' => $activity_action, 'content' => $activity_content, 'primary_link' => $reply_url, 'type' => $this->reply_create, 'item_id' => $reply_id, 'secondary_item_id' => $topic_id, 'recorded_time' => get_post_time('Y-m-d H:i:s', true, $reply_id), 'hide_sitewide' => !bbp_is_forum_public($forum_id, false));
// Record the activity
$activity_id = $this->record_activity($activity);
// Add the activity entry ID as a meta value to the reply
if (!empty($activity_id)) {
update_post_meta($reply_id, '_bbp_activity_id', $activity_id);
}
}
示例8: bbp_notify_topic_subscribers
/**
* Sends notification emails for new replies to subscribed topics
*
* Gets new post's ID and check if there are subscribed users to that topic, and
* if there are, send notifications
*
* Note: in bbPress 2.6, we've moved away from 1 email per subscriber to 1 email
* with everyone BCC'd. This may have negative repercussions for email services
* that limit the number of addresses in a BCC field (often to around 500.) In
* those cases, we recommend unhooking this function and creating your own
* custom emailer script.
*
* @since 2.6.0 bbPress (r5413)
*
* @param int $reply_id ID of the newly made reply
* @param int $topic_id ID of the topic of the reply
* @param int $forum_id ID of the forum of the reply
* @param mixed $anonymous_data Array of anonymous user data
* @param int $reply_author ID of the topic author ID
*
* @uses bbp_is_subscriptions_active() To check if the subscriptions are active
* @uses bbp_get_reply_id() To validate the reply ID
* @uses bbp_get_topic_id() To validate the topic ID
* @uses bbp_get_forum_id() To validate the forum ID
* @uses bbp_get_reply() To get the reply
* @uses bbp_is_reply_published() To make sure the reply is published
* @uses bbp_get_topic_id() To validate the topic ID
* @uses bbp_get_topic() To get the reply's topic
* @uses bbp_is_topic_published() To make sure the topic is published
* @uses bbp_get_reply_author_display_name() To get the reply author's display name
* @uses do_action() Calls 'bbp_pre_notify_subscribers' with the reply id,
* topic id and user id
* @uses bbp_get_topic_subscribers() To get the topic subscribers
* @uses apply_filters() Calls 'bbp_subscription_mail_message' with the
* message, reply id, topic id and user id
* @uses apply_filters() Calls 'bbp_subscription_mail_title' with the
* topic title, reply id, topic id and user id
* @uses apply_filters() Calls 'bbp_subscription_mail_headers'
* @uses get_userdata() To get the user data
* @uses wp_mail() To send the mail
* @uses do_action() Calls 'bbp_post_notify_subscribers' with the reply id,
* topic id and user id
* @return bool True on success, false on failure
*/
function bbp_notify_topic_subscribers($reply_id = 0, $topic_id = 0, $forum_id = 0, $anonymous_data = false, $reply_author = 0)
{
// Bail if subscriptions are turned off
if (!bbp_is_subscriptions_active()) {
return false;
}
/** Validation ************************************************************/
$reply_id = bbp_get_reply_id($reply_id);
$topic_id = bbp_get_topic_id($topic_id);
$forum_id = bbp_get_forum_id($forum_id);
/** Topic *****************************************************************/
// Bail if topic is not published
if (!bbp_is_topic_published($topic_id)) {
return false;
}
/** Reply *****************************************************************/
// Bail if reply is not published
if (!bbp_is_reply_published($reply_id)) {
return false;
}
// Poster name
$reply_author_name = bbp_get_reply_author_display_name($reply_id);
/** Mail ******************************************************************/
// Remove filters from reply content and topic title to prevent content
// from being encoded with HTML entities, wrapped in paragraph tags, etc...
remove_all_filters('bbp_get_reply_content');
remove_all_filters('bbp_get_topic_title');
// Strip tags from text and setup mail data
$topic_title = strip_tags(bbp_get_topic_title($topic_id));
$reply_content = strip_tags(bbp_get_reply_content($reply_id));
$reply_url = bbp_get_reply_url($reply_id);
$blog_name = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
// For plugins to filter messages per reply/topic/user
$message = sprintf(__('%1$s wrote:
%2$s
Post Link: %3$s
-----------
You are receiving this email because you subscribed to a forum topic.
Login and visit the topic to unsubscribe from these emails.', 'bbpress'), $reply_author_name, $reply_content, $reply_url);
$message = apply_filters('bbp_subscription_mail_message', $message, $reply_id, $topic_id);
if (empty($message)) {
return;
}
// For plugins to filter titles per reply/topic/user
$subject = apply_filters('bbp_subscription_mail_title', '[' . $blog_name . '] ' . $topic_title, $reply_id, $topic_id);
if (empty($subject)) {
return;
}
/** Users *****************************************************************/
// Get the noreply@ address
$no_reply = bbp_get_do_not_reply_address();
//.........这里部分代码省略.........
示例9: test_bbp_create_initial_content
/**
* @group canonical
* @covers ::bbp_create_initial_content
*/
public function test_bbp_create_initial_content()
{
$category_id = $this->factory->forum->create(array('forum_meta' => array('_bbp_forum_type' => 'category', '_bbp_status' => 'open')));
bbp_create_initial_content(array('forum_parent' => $category_id));
$forum_id = bbp_forum_query_subforum_ids($category_id);
$forum_id = (int) $forum_id[0];
$topic_id = bbp_get_forum_last_topic_id($forum_id);
$reply_id = bbp_get_forum_last_reply_id($forum_id);
// Forum post
$this->assertSame('General', bbp_get_forum_title($forum_id));
$this->assertSame('General chit-chat', bbp_get_forum_content($forum_id));
$this->assertSame('open', bbp_get_forum_status($forum_id));
$this->assertTrue(bbp_is_forum_public($forum_id));
$this->assertSame($category_id, bbp_get_forum_parent_id($forum_id));
// Topic post
$this->assertSame($forum_id, bbp_get_topic_forum_id($topic_id));
$this->assertSame('Hello World!', bbp_get_topic_title($topic_id));
remove_all_filters('bbp_get_topic_content');
$topic_content = "I am the first topic in your new forums.";
$this->assertSame($topic_content, bbp_get_topic_content($topic_id));
$this->assertSame('publish', bbp_get_topic_status($topic_id));
$this->assertTrue(bbp_is_topic_published($topic_id));
// Reply post
$this->assertSame($forum_id, bbp_get_reply_forum_id($reply_id));
$this->assertSame('Reply To: Hello World!', bbp_get_reply_title($reply_id));
$this->assertSame($reply_id, bbp_get_reply_title_fallback($reply_id));
remove_all_filters('bbp_get_reply_content');
$reply_content = "Oh, and this is what a reply looks like.";
$this->assertSame($reply_content, bbp_get_reply_content($reply_id));
$this->assertSame('publish', bbp_get_reply_status($reply_id));
$this->assertTrue(bbp_is_reply_published($reply_id));
// Category meta
$this->assertSame(1, bbp_get_forum_subforum_count($category_id, true));
$this->assertSame(0, bbp_get_forum_topic_count($category_id, false, true));
$this->assertSame(0, bbp_get_forum_topic_count_hidden($category_id, true));
$this->assertSame(0, bbp_get_forum_reply_count($category_id, false, true));
$this->assertSame(1, bbp_get_forum_topic_count($category_id, true, true));
$this->assertSame(1, bbp_get_forum_reply_count($category_id, true, true));
$this->assertSame(0, bbp_get_forum_post_count($category_id, false, true));
$this->assertSame(2, bbp_get_forum_post_count($category_id, true, true));
$this->assertSame($topic_id, bbp_get_forum_last_topic_id($category_id));
$this->assertSame('Hello World!', bbp_get_forum_last_topic_title($category_id));
$this->assertSame($reply_id, bbp_get_forum_last_reply_id($category_id));
$this->assertSame('Reply To: Hello World!', bbp_get_forum_last_reply_title($category_id));
$this->assertSame($reply_id, bbp_get_forum_last_active_id($category_id));
$this->assertSame('1 day, 16 hours ago', bbp_get_forum_last_active_time($category_id));
// Forum meta
$this->assertSame(0, bbp_get_forum_subforum_count($forum_id, true));
$this->assertSame(1, bbp_get_forum_topic_count($forum_id, false, true));
$this->assertSame(0, bbp_get_forum_topic_count_hidden($forum_id, true));
$this->assertSame(1, bbp_get_forum_reply_count($forum_id, false, true));
$this->assertSame(1, bbp_get_forum_topic_count($forum_id, true, true));
$this->assertSame(1, bbp_get_forum_reply_count($forum_id, true, true));
$this->assertSame(2, bbp_get_forum_post_count($forum_id, false, true));
$this->assertSame(2, bbp_get_forum_post_count($forum_id, true, true));
$this->assertSame($topic_id, bbp_get_forum_last_topic_id($forum_id));
$this->assertSame('Hello World!', bbp_get_forum_last_topic_title($forum_id));
$this->assertSame($reply_id, bbp_get_forum_last_reply_id($forum_id));
$this->assertSame('Reply To: Hello World!', bbp_get_forum_last_reply_title($forum_id));
$this->assertSame($reply_id, bbp_get_forum_last_active_id($forum_id));
$this->assertSame('1 day, 16 hours ago', bbp_get_forum_last_active_time($forum_id));
// Topic meta
$this->assertSame('127.0.0.1', bbp_current_author_ip($topic_id));
$this->assertSame($forum_id, bbp_get_topic_forum_id($topic_id));
$this->assertSame(1, bbp_get_topic_voice_count($topic_id, true));
$this->assertSame(1, bbp_get_topic_reply_count($topic_id, true));
$this->assertSame(0, bbp_get_topic_reply_count_hidden($topic_id, true));
$this->assertSame($reply_id, bbp_get_topic_last_reply_id($topic_id));
$this->assertSame($reply_id, bbp_get_topic_last_active_id($topic_id));
$this->assertSame('1 day, 16 hours ago', bbp_get_topic_last_active_time($topic_id));
// Reply Meta
$this->assertSame('127.0.0.1', bbp_current_author_ip($reply_id));
$this->assertSame($forum_id, bbp_get_reply_forum_id($reply_id));
$this->assertSame($topic_id, bbp_get_reply_topic_id($reply_id));
}
示例10: bbp_notify_subscribers
/**
* Sends notification emails for new posts
*
* Gets new post's ID and check if there are subscribed users to that topic, and
* if there are, send notifications
*
* @since bbPress (r2668)
*
* @param int $reply_id ID of the newly made reply
* @uses bbp_is_subscriptions_active() To check if the subscriptions are active
* @uses bbp_get_reply_id() To validate the reply ID
* @uses bbp_get_reply() To get the reply
* @uses bbp_get_reply_topic_id() To get the topic ID of the reply
* @uses bbp_is_reply_published() To make sure the reply is published
* @uses bbp_get_topic_id() To validate the topic ID
* @uses bbp_get_topic() To get the reply's topic
* @uses bbp_is_topic_published() To make sure the topic is published
* @uses get_the_author_meta() To get the author's display name
* @uses do_action() Calls 'bbp_pre_notify_subscribers' with the reply id and
* topic id
* @uses bbp_get_topic_subscribers() To get the topic subscribers
* @uses apply_filters() Calls 'bbp_subscription_mail_message' with the
* message, reply id, topic id and user id
* @uses get_userdata() To get the user data
* @uses wp_mail() To send the mail
* @uses do_action() Calls 'bbp_post_notify_subscribers' with the reply id
* and topic id
* @return bool True on success, false on failure
*/
function bbp_notify_subscribers($reply_id = 0, $topic_id = 0, $forum_id = 0, $anonymous_data = false, $reply_author = 0)
{
// Bail if subscriptions are turned off
if (!bbp_is_subscriptions_active()) {
return false;
}
/** Validation ************************************************************/
$reply_id = bbp_get_reply_id($reply_id);
$topic_id = bbp_get_topic_id($topic_id);
$forum_id = bbp_get_forum_id($forum_id);
/** Reply *****************************************************************/
// Bail if reply is not published
if (!bbp_is_reply_published($reply_id)) {
return false;
}
/** Topic *****************************************************************/
// Bail if topic is not published
if (!bbp_is_topic_published($topic_id)) {
return false;
}
/** User ******************************************************************/
// Get subscribers and bail if empty
$user_ids = bbp_get_topic_subscribers($topic_id, true);
if (empty($user_ids)) {
return false;
}
// Poster name
$reply_author_name = bbp_get_reply_author_display_name($reply_id);
/** Mail ******************************************************************/
do_action('bbp_pre_notify_subscribers', $reply_id, $topic_id, $user_ids);
// Remove filters from reply content and topic title to prevent content
// from being encoded with HTML entities, wrapped in paragraph tags, etc...
remove_all_filters('bbp_get_reply_content');
remove_all_filters('bbp_get_topic_title');
// Strip tags from text
$topic_title = strip_tags(bbp_get_topic_title($topic_id));
$reply_content = strip_tags(bbp_get_reply_content($reply_id));
$reply_url = bbp_get_reply_url($reply_id);
$blog_name = get_option('blogname');
// Loop through users
foreach ((array) $user_ids as $user_id) {
// Don't send notifications to the person who made the post
if (!empty($reply_author) && (int) $user_id == (int) $reply_author) {
continue;
}
// For plugins to filter messages per reply/topic/user
$message = sprintf(__('%1$s wrote:
%2$s
Post Link: %3$s
-----------
You are receiving this email because you subscribed to a forum topic.
Login and visit the topic to unsubscribe from these emails.', 'bbpress'), $reply_author_name, $reply_content, $reply_url);
$message = apply_filters('bbp_subscription_mail_message', $message, $reply_id, $topic_id, $user_id);
if (empty($message)) {
continue;
}
// For plugins to filter titles per reply/topic/user
$subject = apply_filters('bbp_subscription_mail_title', '[' . $blog_name . '] ' . $topic_title, $reply_id, $topic_id, $user_id);
if (empty($subject)) {
continue;
}
// Custom headers
$headers = apply_filters('bbp_subscription_mail_headers', array());
// Get user data of this user
$user = get_userdata($user_id);
// Send notification email
//.........这里部分代码省略.........
示例11: bbp_update_reply_walker
//.........这里部分代码省略.........
* @uses bbp_get_reply_forum_id() To get the reply forum id
* @uses get_post_ancestors() To get the ancestors of the reply
* @uses bbp_is_reply() To check if the ancestor is a reply
* @uses bbp_is_topic() To check if the ancestor is a topic
* @uses bbp_update_topic_last_reply_id() To update the topic last reply id
* @uses bbp_update_topic_last_active_id() To update the topic last active id
* @uses bbp_get_topic_last_active_id() To get the topic last active id
* @uses get_post_field() To get the post date of the last active id
* @uses bbp_update_topic_last_active_time() To update the last active topic meta
* @uses bbp_update_topic_voice_count() To update the topic voice count
* @uses bbp_update_topic_reply_count() To update the topic reply count
* @uses bbp_update_topic_reply_count_hidden() To update the topic hidden reply
* count
* @uses bbp_is_forum() To check if the ancestor is a forum
* @uses bbp_update_forum_last_topic_id() To update the last topic id forum meta
* @uses bbp_update_forum_last_reply_id() To update the last reply id forum meta
* @uses bbp_update_forum_last_active_id() To update the forum last active id
* @uses bbp_get_forum_last_active_id() To get the forum last active id
* @uses bbp_update_forum_last_active_time() To update the forum last active time
* @uses bbp_update_forum_reply_count() To update the forum reply count
*/
function bbp_update_reply_walker($reply_id, $last_active_time = '', $forum_id = 0, $topic_id = 0, $refresh = true)
{
// Verify the reply ID
$reply_id = bbp_get_reply_id($reply_id);
// Reply was passed
if (!empty($reply_id)) {
// Get the topic ID if none was passed
if (empty($topic_id)) {
$topic_id = bbp_get_reply_topic_id($reply_id);
// Make every effort to get topic id
// https://bbpress.trac.wordpress.org/ticket/2529
if (empty($topic_id) && current_filter() === 'bbp_deleted_reply') {
$topic_id = get_post_field('post_parent', $reply_id);
}
}
// Get the forum ID if none was passed
if (empty($forum_id)) {
$forum_id = bbp_get_reply_forum_id($reply_id);
}
}
// Set the active_id based on topic_id/reply_id
$active_id = empty($reply_id) ? $topic_id : $reply_id;
// Setup ancestors array to walk up
$ancestors = array_values(array_unique(array_merge(array($topic_id, $forum_id), (array) get_post_ancestors($topic_id))));
// If we want a full refresh, unset any of the possibly passed variables
if (true === $refresh) {
$forum_id = $topic_id = $reply_id = $active_id = $last_active_time = 0;
}
// Walk up ancestors
if (!empty($ancestors)) {
foreach ($ancestors as $ancestor) {
// Reply meta relating to most recent reply
if (bbp_is_reply($ancestor)) {
// @todo - hierarchical replies
// Topic meta relating to most recent reply
} elseif (bbp_is_topic($ancestor)) {
// Last reply and active ID's
bbp_update_topic_last_reply_id($ancestor, $reply_id);
bbp_update_topic_last_active_id($ancestor, $active_id);
// Get the last active time if none was passed
$topic_last_active_time = $last_active_time;
if (empty($last_active_time)) {
$topic_last_active_time = get_post_field('post_date', bbp_get_topic_last_active_id($ancestor));
}
// Update the topic last active time regardless of reply status.
// See https://bbpress.trac.wordpress.org/ticket/2838
bbp_update_topic_last_active_time($ancestor, $topic_last_active_time);
// Counts
bbp_update_topic_voice_count($ancestor);
// Only update reply count if we're deleting a reply, or in the dashboard.
if (in_array(current_filter(), array('bbp_deleted_reply', 'save_post'), true)) {
bbp_update_topic_reply_count($ancestor);
bbp_update_topic_reply_count_hidden($ancestor);
}
// Forum meta relating to most recent topic
} elseif (bbp_is_forum($ancestor)) {
// Last topic and reply ID's
bbp_update_forum_last_topic_id($ancestor, $topic_id);
bbp_update_forum_last_reply_id($ancestor, $reply_id);
// Last Active
bbp_update_forum_last_active_id($ancestor, $active_id);
// Get the last active time if none was passed
$forum_last_active_time = $last_active_time;
if (empty($last_active_time)) {
$forum_last_active_time = get_post_field('post_date', bbp_get_forum_last_active_id($ancestor));
}
// Only update if reply is published
if (bbp_is_reply_published($reply_id)) {
bbp_update_forum_last_active_time($ancestor, $forum_last_active_time);
}
// Counts
// Only update reply count if we're deleting a reply, or in the dashboard.
if (in_array(current_filter(), array('bbp_deleted_reply', 'save_post'), true)) {
bbp_update_forum_reply_count($ancestor);
}
}
}
}
}