本文整理汇总了PHP中bbp_add_error函数的典型用法代码示例。如果您正苦于以下问题:PHP bbp_add_error函数的具体用法?PHP bbp_add_error怎么用?PHP bbp_add_error使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bbp_add_error函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: bbp_buddypress_mark_notifications
/**
* Mark notifications as read when reading a topic
*
* @since 2.5.0 bbPress (r5155)
*
* @return If not trying to mark a notification as read
*/
function bbp_buddypress_mark_notifications($action = '')
{
// Bail if no topic ID is passed
if (empty($_GET['topic_id'])) {
return;
}
// Bail if action is not for this function
if ('bbp_mark_read' !== $action) {
return;
}
// Get required data
$user_id = bp_loggedin_user_id();
$topic_id = intval($_GET['topic_id']);
// Check nonce
if (!bbp_verify_nonce_request('bbp_mark_topic_' . $topic_id)) {
bbp_add_error('bbp_notification_topic_id', __('<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress'));
// Check current user's ability to edit the user
} elseif (!current_user_can('edit_user', $user_id)) {
bbp_add_error('bbp_notification_permissions', __('<strong>ERROR</strong>: You do not have permission to mark notifications for that user.', 'bbpress'));
}
// Bail if we have errors
if (!bbp_has_errors()) {
// Attempt to clear notifications for the current user from this topic
$success = bp_notifications_mark_notifications_by_item_id($user_id, $topic_id, bbp_get_component_name(), 'bbp_new_reply');
// Do additional subscriptions actions
do_action('bbp_notifications_handler', $success, $user_id, $topic_id, $action);
}
// Redirect to the topic
$redirect = bbp_get_reply_url($topic_id);
// Redirect
bbp_redirect($redirect);
}
示例2: bbp_edit_user_handler
/**
* Handles the front end user editing
*
* @uses is_multisite() To check if it's a multisite
* @uses bbp_is_user_home() To check if the user is at home (the display page
* is the one of the logged in user)
* @uses get_option() To get the displayed user's new email id option
* @uses wpdb::prepare() To sanitize our sql query
* @uses wpdb::get_var() To execute our query and get back the variable
* @uses wpdb::query() To execute our query
* @uses wp_update_user() To update the user
* @uses delete_option() To delete the displayed user's email id option
* @uses bbp_get_user_profile_edit_url() To get the edit profile url
* @uses wp_safe_redirect() To redirect to the url
* @uses bbp_verify_nonce_request() To verify the nonce and check the request
* @uses current_user_can() To check if the current user can edit the user
* @uses do_action() Calls 'personal_options_update' or
* 'edit_user_options_update' (based on if it's the user home)
* with the displayed user id
* @uses edit_user() To edit the user based on the post data
* @uses get_userdata() To get the user data
* @uses is_email() To check if the string is an email id or not
* @uses wpdb::get_blog_prefix() To get the blog prefix
* @uses is_network_admin() To check if the user is the network admin
* @uses is_super_admin() To check if the user is super admin
* @uses revoke_super_admin() To revoke super admin priviledges
* @uses grant_super_admin() To grant super admin priviledges
* @uses is_wp_error() To check if the value retrieved is a {@link WP_Error}
*/
function bbp_edit_user_handler()
{
// Bail if not a POST action
if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) {
return;
}
// Bail if action is not 'bbp-update-user'
if (empty($_POST['action']) || 'bbp-update-user' !== $_POST['action']) {
return;
}
// Get the displayed user ID
$user_id = bbp_get_displayed_user_id();
// Execute confirmed email change. See send_confirmation_on_profile_email().
if (is_multisite() && bbp_is_user_home_edit() && isset($_GET['newuseremail'])) {
$new_email = get_option($user_id . '_new_email');
if ($new_email['hash'] == $_GET['newuseremail']) {
$user = new stdClass();
$user->ID = $user_id;
$user->user_email = esc_html(trim($new_email['newemail']));
global $wpdb;
if ($wpdb->get_var($wpdb->prepare("SELECT user_login FROM {$wpdb->signups} WHERE user_login = %s", bbp_get_displayed_user_field('user_login')))) {
$wpdb->query($wpdb->prepare("UPDATE {$wpdb->signups} SET user_email = %s WHERE user_login = %s", $user->user_email, bbp_get_displayed_user_field('user_login')));
}
wp_update_user(get_object_vars($user));
delete_option($user_id . '_new_email');
wp_safe_redirect(add_query_arg(array('updated' => 'true'), bbp_get_user_profile_edit_url($user_id)));
exit;
}
// Delete new email address from user options
} elseif (is_multisite() && bbp_is_user_home_edit() && !empty($_GET['dismiss']) && $user_id . '_new_email' == $_GET['dismiss']) {
delete_option($user_id . '_new_email');
wp_safe_redirect(add_query_arg(array('updated' => 'true'), bbp_get_user_profile_edit_url($user_id)));
exit;
}
// Nonce check
if (!bbp_verify_nonce_request('update-user_' . $user_id)) {
bbp_add_error('bbp_update_user_nonce', __('<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress'));
return;
}
// Cap check
if (!current_user_can('edit_user', $user_id)) {
bbp_add_error('bbp_update_user_capability', __('<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress'));
return;
}
// Do action based on who's profile you're editing
$edit_action = bbp_is_user_home_edit() ? 'personal_options_update' : 'edit_user_profile_update';
do_action($edit_action, $user_id);
// Handle user edit
$edit_user = edit_user($user_id);
// Error(s) editng the user, so copy them into the global
if (is_wp_error($edit_user)) {
bbpress()->errors = $edit_user;
// Successful edit to redirect
} elseif (is_integer($edit_user)) {
// Maybe update super admin ability
if (is_multisite() && !bbp_is_user_home_edit()) {
empty($_POST['super_admin']) ? revoke_super_admin($edit_user) : grant_super_admin($edit_user);
}
$redirect = add_query_arg(array('updated' => 'true'), bbp_get_user_profile_edit_url($edit_user));
wp_safe_redirect($redirect);
exit;
}
}
示例3: bbp_filter_anonymous_post_data
/**
* Filter anonymous post data
*
* We use REMOTE_ADDR here directly. If you are behind a proxy, you should
* ensure that it is properly set, such as in wp-config.php, for your
* environment. See {@link https://core.trac.wordpress.org/ticket/9235}
*
* Note that bbp_pre_anonymous_filters() is responsible for sanitizing each
* of the filtered core anonymous values here.
*
* If there are any errors, those are directly added to {@link bbPress:errors}
*
* @since 2.0.0 bbPress (r2734)
*
* @param array $args Optional. If no args are there, then $_POST values are
* used.
* @uses apply_filters() Calls 'bbp_pre_anonymous_post_author_name' with the
* anonymous user name
* @uses apply_filters() Calls 'bbp_pre_anonymous_post_author_email' with the
* anonymous user email
* @uses apply_filters() Calls 'bbp_pre_anonymous_post_author_website' with the
* anonymous user website
* @return bool|array False on errors, values in an array on success
*/
function bbp_filter_anonymous_post_data($args = array())
{
// Parse arguments against default values
$r = bbp_parse_args($args, array('bbp_anonymous_name' => !empty($_POST['bbp_anonymous_name']) ? $_POST['bbp_anonymous_name'] : false, 'bbp_anonymous_email' => !empty($_POST['bbp_anonymous_email']) ? $_POST['bbp_anonymous_email'] : false, 'bbp_anonymous_website' => !empty($_POST['bbp_anonymous_website']) ? $_POST['bbp_anonymous_website'] : false), 'filter_anonymous_post_data');
// Filter variables and add errors if necessary
$r['bbp_anonymous_name'] = apply_filters('bbp_pre_anonymous_post_author_name', $r['bbp_anonymous_name']);
if (empty($r['bbp_anonymous_name'])) {
bbp_add_error('bbp_anonymous_name', __('<strong>ERROR</strong>: Invalid author name.', 'bbpress'));
}
$r['bbp_anonymous_email'] = apply_filters('bbp_pre_anonymous_post_author_email', $r['bbp_anonymous_email']);
if (empty($r['bbp_anonymous_email'])) {
bbp_add_error('bbp_anonymous_email', __('<strong>ERROR</strong>: Invalid email address.', 'bbpress'));
}
// Website is optional
$r['bbp_anonymous_website'] = apply_filters('bbp_pre_anonymous_post_author_website', $r['bbp_anonymous_website']);
// Return false if we have any errors
$retval = bbp_has_errors() ? false : $r;
// Finally, return sanitized data or false
return apply_filters('bbp_filter_anonymous_post_data', $retval, $r);
}
示例4: bbp_toggle_reply_handler
/**
* Handles the front end spamming/unspamming and trashing/untrashing/deleting of
* replies
*
* @since bbPress (r2740)
*
* @param string $action The requested action to compare this function to
* @uses bbp_get_reply() To get the reply
* @uses current_user_can() To check if the user is capable of editing or
* deleting the reply
* @uses check_ajax_referer() To verify the nonce and check the referer
* @uses bbp_get_reply_post_type() To get the reply post type
* @uses bbp_is_reply_spam() To check if the reply is marked as spam
* @uses bbp_spam_reply() To make the reply as spam
* @uses bbp_unspam_reply() To unmark the reply as spam
* @uses wp_trash_post() To trash the reply
* @uses wp_untrash_post() To untrash the reply
* @uses wp_delete_post() To delete the reply
* @uses do_action() Calls 'bbp_toggle_reply_handler' with success, post data
* and action
* @uses bbp_get_reply_url() To get the reply url
* @uses wp_safe_redirect() To redirect to the reply
* @uses bbPress::errors:add() To log the error messages
*/
function bbp_toggle_reply_handler($action = '')
{
// Bail if required GET actions aren't passed
if (empty($_GET['reply_id'])) {
return;
}
// Setup possible get actions
$possible_actions = array('bbp_toggle_reply_spam', 'bbp_toggle_reply_trash');
// Bail if actions aren't meant for this function
if (!in_array($action, $possible_actions)) {
return;
}
$failure = '';
// Empty failure string
$view_all = false;
// Assume not viewing all
$reply_id = (int) $_GET['reply_id'];
// What's the reply id?
$success = false;
// Flag
$post_data = array('ID' => $reply_id);
// Prelim array
// Make sure reply exists
$reply = bbp_get_reply($reply_id);
if (empty($reply)) {
return;
}
// What is the user doing here?
if (!current_user_can('edit_reply', $reply->ID) || 'bbp_toggle_reply_trash' === $action && !current_user_can('delete_reply', $reply->ID)) {
bbp_add_error('bbp_toggle_reply_permission', __('<strong>ERROR:</strong> You do not have the permission to do that!', 'bbpress'));
return;
}
// What action are we trying to perform?
switch ($action) {
// Toggle spam
case 'bbp_toggle_reply_spam':
check_ajax_referer('spam-reply_' . $reply_id);
$is_spam = bbp_is_reply_spam($reply_id);
$success = $is_spam ? bbp_unspam_reply($reply_id) : bbp_spam_reply($reply_id);
$failure = $is_spam ? __('<strong>ERROR</strong>: There was a problem unmarking the reply as spam!', 'bbpress') : __('<strong>ERROR</strong>: There was a problem marking the reply as spam!', 'bbpress');
$view_all = !$is_spam;
break;
// Toggle trash
// Toggle trash
case 'bbp_toggle_reply_trash':
$sub_action = in_array($_GET['sub_action'], array('trash', 'untrash', 'delete')) ? $_GET['sub_action'] : false;
if (empty($sub_action)) {
break;
}
switch ($sub_action) {
case 'trash':
check_ajax_referer('trash-' . bbp_get_reply_post_type() . '_' . $reply_id);
$view_all = true;
$success = wp_trash_post($reply_id);
$failure = __('<strong>ERROR</strong>: There was a problem trashing the reply!', 'bbpress');
break;
case 'untrash':
check_ajax_referer('untrash-' . bbp_get_reply_post_type() . '_' . $reply_id);
$success = wp_untrash_post($reply_id);
$failure = __('<strong>ERROR</strong>: There was a problem untrashing the reply!', 'bbpress');
break;
case 'delete':
check_ajax_referer('delete-' . bbp_get_reply_post_type() . '_' . $reply_id);
$success = wp_delete_post($reply_id);
$failure = __('<strong>ERROR</strong>: There was a problem deleting the reply!', 'bbpress');
break;
}
break;
}
// Do additional reply toggle actions
do_action('bbp_toggle_reply_handler', $success, $post_data, $action);
// No errors
if (false !== $success && !is_wp_error($success)) {
/** Redirect **********************************************************/
// Redirect to
$redirect_to = bbp_get_redirect_to();
//.........这里部分代码省略.........
示例5: recaptcha_check
/**
* bbP recaptcha Check
*
* @return void
*/
function recaptcha_check()
{
if (!WP_reCaptcha::instance()->recaptcha_check()) {
bbp_add_error('bbp-recaptcha-error', __('<strong>Error:</strong> the Captcha didn’t verify.', 'wp-recaptcha-integration'), 'error');
}
}
示例6: bbp_login_notices
/**
* Handle the login and registration template notices
*
* @since 2.0.0 bbPress (r2970)
*
* @uses WP_Error bbPress::errors::add() To add an error or message
*/
function bbp_login_notices()
{
// loggedout was passed
if (!empty($_GET['loggedout']) && true === $_GET['loggedout']) {
bbp_add_error('loggedout', __('You are now logged out.', 'bbpress'), 'message');
// registration is disabled
} elseif (!empty($_GET['registration']) && 'disabled' === $_GET['registration']) {
bbp_add_error('registerdisabled', __('New user registration is currently not allowed.', 'bbpress'));
// Prompt user to check their email
} elseif (!empty($_GET['checkemail']) && in_array($_GET['checkemail'], array('confirm', 'newpass', 'registered'))) {
switch ($_GET['checkemail']) {
// Email needs confirmation
case 'confirm':
bbp_add_error('confirm', __('Check your e-mail for the confirmation link.', 'bbpress'), 'message');
break;
// User requested a new password
// User requested a new password
case 'newpass':
bbp_add_error('newpass', __('Check your e-mail for your new password.', 'bbpress'), 'message');
break;
// User is newly registered
// User is newly registered
case 'registered':
bbp_add_error('registered', __('Registration complete. Please check your e-mail.', 'bbpress'), 'message');
break;
}
}
}
示例7: create_screen_save
/**
* Save the Group Forum data on create
*
* @since bbPress (r3465)
*/
public function create_screen_save($group_id = 0)
{
// Nonce check
if (!bbp_verify_nonce_request('groups_create_save_' . $this->slug)) {
bbp_add_error('bbp_create_group_forum_screen_save', __('<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress'));
return;
}
// Check for possibly empty group_id
if (empty($group_id)) {
$group_id = bp_get_new_group_id();
}
$create_forum = !empty($_POST['bbp-create-group-forum']) ? true : false;
$forum_id = 0;
$forum_ids = bbp_get_group_forum_ids($group_id);
if (!empty($forum_ids)) {
$forum_id = (int) is_array($forum_ids) ? $forum_ids[0] : $forum_ids;
}
// Create a forum, or not
switch ($create_forum) {
case true:
// Bail if initial content was already created
if (!empty($forum_id)) {
return;
}
// Set the default forum status
switch (bp_get_new_group_status()) {
case 'hidden':
$status = bbp_get_hidden_status_id();
break;
case 'private':
$status = bbp_get_private_status_id();
break;
case 'public':
default:
$status = bbp_get_public_status_id();
break;
}
// Create the initial forum
$forum_id = bbp_insert_forum(array('post_parent' => bbp_get_group_forums_root_id(), 'post_title' => bp_get_new_group_name(), 'post_content' => bp_get_new_group_description(), 'post_status' => $status));
// Run the BP-specific functions for new groups
$this->new_forum(array('forum_id' => $forum_id));
// Update forum active
groups_update_groupmeta(bp_get_new_group_id(), '_bbp_forum_enabled_' . $forum_id, true);
// Toggle forum on
$this->toggle_group_forum(bp_get_new_group_id(), true);
break;
case false:
// Forum was created but is now being undone
if (!empty($forum_id)) {
// Delete the forum
wp_delete_post($forum_id, true);
// Delete meta values
groups_delete_groupmeta(bp_get_new_group_id(), 'forum_id');
groups_delete_groupmeta(bp_get_new_group_id(), '_bbp_forum_enabled_' . $forum_id);
// Toggle forum off
$this->toggle_group_forum(bp_get_new_group_id(), false);
}
break;
}
}
示例8: bbp_topic_notices
/**
* Displays topic notices
*
* @since 2.0.0 bbPress (r2744)
*
* @uses bbp_is_single_topic() To check if it's a topic page
* @uses bbp_get_topic_status() To get the topic status
* @uses bbp_get_topic_id() To get the topic id
* @uses apply_filters() Calls 'bbp_topic_notices' with the notice text, topic
* status and topic id
* @uses bbp_add_error() To add an error message
*/
function bbp_topic_notices()
{
// Bail if not viewing a topic
if (!bbp_is_single_topic()) {
return;
}
// Get the topic_status
$topic_status = bbp_get_topic_status();
// Get the topic status
switch ($topic_status) {
// Spam notice
case bbp_get_spam_status_id():
$notice_text = __('This topic is marked as spam.', 'bbpress');
break;
// Trashed notice
// Trashed notice
case bbp_get_trash_status_id():
$notice_text = __('This topic is in the trash.', 'bbpress');
break;
// Standard status
// Standard status
default:
$notice_text = '';
break;
}
// Filter notice text and bail if empty
$notice_text = apply_filters('bbp_topic_notices', $notice_text, $topic_status, bbp_get_topic_id());
if (empty($notice_text)) {
return;
}
bbp_add_error('topic_notice', $notice_text, 'message');
}
示例9: check_bbpress_captcha
/**
* Validates bbpress topics and replies
*/
public function check_bbpress_captcha()
{
if (isset($_POST['mc-value']) && $_POST['mc-value'] !== '') {
if (Math_Captcha()->cookie_session->session_ids['default'] !== '' && get_transient('bbp_' . Math_Captcha()->cookie_session->session_ids['default']) !== false) {
if (strcmp(get_transient('bbp_' . Math_Captcha()->cookie_session->session_ids['default']), sha1(AUTH_KEY . $_POST['mc-value'] . Math_Captcha()->cookie_session->session_ids['default'], false)) !== 0) {
bbp_add_error('math-captcha-wrong', $this->error_messages['wrong']);
}
} else {
bbp_add_error('math-captcha-wrong', $this->error_messages['time']);
}
} else {
bbp_add_error('math-captcha-wrong', $this->error_messages['fill']);
}
}
示例10: bbp_toggle_topic_handler
/**
* Handles the front end opening/closing, spamming/unspamming,
* sticking/unsticking and trashing/untrashing/deleting of topics
*
* @since 2.0.0 bbPress (r2727)
*
* @param string $action The requested action to compare this function to
* @uses bbp_get_topic() To get the topic
* @uses current_user_can() To check if the user is capable of editing or
* deleting the topic
* @uses bbp_get_topic_post_type() To get the topic post type
* @uses check_ajax_referer() To verify the nonce and check the referer
* @uses bbp_is_topic_open() To check if the topic is open
* @uses bbp_close_topic() To close the topic
* @uses bbp_open_topic() To open the topic
* @uses bbp_is_topic_sticky() To check if the topic is a sticky
* @uses bbp_unstick_topic() To unstick the topic
* @uses bbp_stick_topic() To stick the topic
* @uses bbp_is_topic_spam() To check if the topic is marked as spam
* @uses bbp_spam_topic() To make the topic as spam
* @uses bbp_unspam_topic() To unmark the topic as spam
* @uses wp_trash_post() To trash the topic
* @uses wp_untrash_post() To untrash the topic
* @uses wp_delete_post() To delete the topic
* @uses do_action() Calls 'bbp_toggle_topic_handler' with success, post data
* and action
* @uses bbp_get_forum_permalink() To get the forum link
* @uses bbp_get_topic_permalink() To get the topic link
* @uses bbp_redirect() To redirect to the topic
* @uses bbPress::errors:add() To log the error messages
*/
function bbp_toggle_topic_handler($action = '')
{
// Bail if required GET actions aren't passed
if (empty($_GET['topic_id'])) {
return;
}
// What's the topic id?
$topic_id = bbp_get_topic_id((int) $_GET['topic_id']);
// Get possible topic-handler toggles
$toggles = bbp_get_topic_toggles($topic_id);
// Bail if actions aren't meant for this function
if (!in_array($action, $toggles, true)) {
return;
}
// Make sure topic exists
$topic = bbp_get_topic($topic_id);
if (empty($topic)) {
bbp_add_error('bbp_toggle_topic_missing', __('<strong>ERROR:</strong> This topic could not be found or no longer exists.', 'bbpress'));
return;
}
// What is the user doing here?
if (!current_user_can('edit_topic', $topic_id) || 'bbp_toggle_topic_trash' === $action && !current_user_can('delete_topic', $topic_id)) {
bbp_add_error('bbp_toggle_topic_permission', __('<strong>ERROR:</strong> You do not have permission to do that.', 'bbpress'));
return;
}
// Sub-action?
$sub_action = !empty($_GET['sub_action']) ? sanitize_key($_GET['sub_action']) : false;
// Preliminary array
$post_data = array('ID' => $topic_id);
// Do the topic toggling
$retval = bbp_toggle_topic(array('id' => $topic_id, 'action' => $action, 'sub_action' => $sub_action, 'data' => $post_data));
// Do additional topic toggle actions
do_action('bbp_toggle_topic_handler', $retval['status'], $post_data, $action);
// No errors
if (false !== $retval['status'] && !is_wp_error($retval['status'])) {
bbp_redirect($retval['redirect_to']);
// Handle errors
} else {
bbp_add_error('bbp_toggle_topic', $retval['message']);
}
}
示例11: block_spam
/**
* Block certain recurring spam topics
* @version 2.0
*/
function block_spam($topic_title)
{
// Set up an array of banned words
$illegals = array('vashikaran', 'baba ji', 'love problem', 'marriage problem', '+91', '+91', '+O99', '91-85', '91-99', '919914');
// Get the all-lowercase title
$spam_title = strtolower($topic_title);
// Check for any of the illegals in the title
foreach ($illegals as $illegal) {
if (strpos($spam_title, $illegal) !== false) {
// If the topic matches as spam, let's ban the user
$user = new WP_User(get_current_user_id());
$user->set_role('banned');
// Send an email letting me know
$headers = "From: Foundry Discipline Bot <noreply@tamrielfoundry.com>\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8";
$subject = 'User ' . $user->user_login . ' banned for spamming.';
$body = 'The user ' . bp_core_get_userlink($user->ID) . ' was banned for attempting to post the topic: "' . $topic_title . '".';
wp_mail('atropos@tamrielfoundry.com', $subject, $body, $headers);
// Trigger an error, preventing the topic from posting
bbp_add_error('apoc_topic_spam', '<strong>ERROR</strong>: Die, filthy spammer!');
// Log the user out
wp_logout();
break;
}
}
// Otherwise go ahead!
return $topic_title;
}
示例12: bbp_filter_anonymous_post_data
/**
* Filter anonymous post data
*
* We use REMOTE_ADDR here directly. If you are behind a proxy, you should
* ensure that it is properly set, such as in wp-config.php, for your
* environment. See {@link http://core.trac.wordpress.org/ticket/9235}
*
* Note that bbp_pre_anonymous_filters() is responsible for sanitizing each
* of the filtered core anonymous values here.
*
* If there are any errors, those are directly added to {@link bbPress:errors}
*
* @since bbPress (r2734)
*
* @param mixed $args Optional. If no args are there, then $_POST values are
* used.
* @uses apply_filters() Calls 'bbp_pre_anonymous_post_author_name' with the
* anonymous user name
* @uses apply_filters() Calls 'bbp_pre_anonymous_post_author_email' with the
* anonymous user email
* @uses apply_filters() Calls 'bbp_pre_anonymous_post_author_website' with the
* anonymous user website
* @return bool|array False on errors, values in an array on success
*/
function bbp_filter_anonymous_post_data($args = '')
{
// Assign variables
$defaults = array('bbp_anonymous_name' => !empty($_POST['bbp_anonymous_name']) ? $_POST['bbp_anonymous_name'] : false, 'bbp_anonymous_email' => !empty($_POST['bbp_anonymous_email']) ? $_POST['bbp_anonymous_email'] : false, 'bbp_anonymous_website' => !empty($_POST['bbp_anonymous_website']) ? $_POST['bbp_anonymous_website'] : false);
$r = bbp_parse_args($args, $defaults, 'filter_anonymous_post_data');
extract($r);
// Filter variables and add errors if necessary
$bbp_anonymous_name = apply_filters('bbp_pre_anonymous_post_author_name', $bbp_anonymous_name);
if (empty($bbp_anonymous_name)) {
bbp_add_error('bbp_anonymous_name', __('<strong>ERROR</strong>: Invalid author name submitted!', 'bbpress'));
}
$bbp_anonymous_email = apply_filters('bbp_pre_anonymous_post_author_email', $bbp_anonymous_email);
if (empty($bbp_anonymous_email)) {
bbp_add_error('bbp_anonymous_email', __('<strong>ERROR</strong>: Invalid email address submitted!', 'bbpress'));
}
// Website is optional
$bbp_anonymous_website = apply_filters('bbp_pre_anonymous_post_author_website', $bbp_anonymous_website);
if (!bbp_has_errors()) {
$retval = compact('bbp_anonymous_name', 'bbp_anonymous_email', 'bbp_anonymous_website');
} else {
$retval = false;
}
// Finally, return sanitized data or false
return apply_filters('bbp_filter_anonymous_post_data', $retval, $args);
}
示例13: bbp_edit_user_email_send_notification
/**
* Sends an email when an email address change occurs on POST requests
*
* @since 2.6.0 bbPress (r5660)
*
* @see send_confirmation_on_profile_email()
*
* @uses bbp_parse_args() To parse the option arguments
* @uses bbp_add_error() To provide feedback to user
* @uses bbp_get_displayed_user_field() To get the user_login
* @uses bbp_get_user_profile_edit_url() To get the user profile edit link
* @uses add_query_arg() To add arguments the link
* @uses wp_mail() To send the notification
*/
function bbp_edit_user_email_send_notification($user_id = 0, $args = array())
{
// Parse args
$r = bbp_parse_args($args, array('hash' => '', 'newemail' => ''));
// Bail if any relevant parameters are empty
if (empty($user_id) || empty($r['hash']) || empty($r['newemail'])) {
bbp_add_error('bbp_user_email_invalid_hash', __('<strong>ERROR</strong>: An error occurred while updating your email address.', 'bbpress'), array('form-field' => 'email'));
return;
}
// Build the nonced URL to dismiss the pending change
$user_login = bbp_get_displayed_user_field('user_login', 'raw');
$user_url = bbp_get_user_profile_edit_url($user_id);
$confirm_url = add_query_arg(array('action' => 'bbp-update-user-email', 'newuseremail' => $r['hash']), $user_url);
$email_text = __('%1$s
Someone requested a change to the email address on your account.
Please click the following link to confirm this change:
%2$s
If you did not request this, you can safely ignore and delete this notification.
This email was sent to: %3$s
Regards,
The %4$s Team
%5$s', 'bbpress');
/**
* Filter the email text sent when a user changes emails.
*
* The following strings have a special meaning and will get replaced dynamically:
*
* %1$s - The current user's username
* %2$s - The link to click on to confirm the email change
* %3$s - The new email
* %4$s - The name of the site
* %5$s - The URL to the site
*
* @param string $email_text Text in the email.
* @param string $r New user email that the current user has changed to.
*/
$content = apply_filters('bbp_user_email_update_content', $email_text, $r);
// Build the email message
$message = sprintf($content, $user_login, $confirm_url, $r['newemail'], get_site_option('site_name'), network_home_url());
// Build the email subject
$subject = sprintf(__('[%s] New Email Address', 'bbpress'), wp_specialchars_decode(get_option('blogname')));
// Send the email
wp_mail($r['newemail'], $subject, $message);
}
示例14: bbp_edit_forum_handler
/**
* Handles the front end edit forum submission
*
* @param string $action The requested action to compare this function to
* @uses bbPress:errors::add() To log various error messages
* @uses bbp_get_forum() To get the forum
* @uses bbp_verify_nonce_request() To verify the nonce and check the request
* @uses bbp_is_forum_anonymous() To check if forum is by an anonymous user
* @uses current_user_can() To check if the current user can edit the forum
* @uses bbp_filter_anonymous_post_data() To filter anonymous data
* @uses is_wp_error() To check if the value retrieved is a {@link WP_Error}
* @uses esc_attr() For sanitization
* @uses bbp_is_forum_category() To check if the forum is a category
* @uses bbp_is_forum_closed() To check if the forum is closed
* @uses bbp_is_forum_private() To check if the forum is private
* @uses remove_filter() To remove kses filters if needed
* @uses apply_filters() Calls 'bbp_edit_forum_pre_title' with the title and
* forum id
* @uses apply_filters() Calls 'bbp_edit_forum_pre_content' with the content
* and forum id
* @uses bbPress::errors::get_error_codes() To get the {@link WP_Error} errors
* @uses wp_save_post_revision() To save a forum revision
* @uses bbp_update_forum_revision_log() To update the forum revision log
* @uses wp_update_post() To update the forum
* @uses do_action() Calls 'bbp_edit_forum' with the forum id, forum id,
* anonymous data and reply author
* @uses bbp_move_forum_handler() To handle movement of a forum from one forum
* to another
* @uses bbp_get_forum_permalink() To get the forum permalink
* @uses wp_safe_redirect() To redirect to the forum link
* @uses bbPress::errors::get_error_messages() To get the {@link WP_Error} error
* messages
*/
function bbp_edit_forum_handler($action = '')
{
// Bail if action is not bbp-edit-forum
if ('bbp-edit-forum' !== $action) {
return;
}
// Define local variable(s)
$anonymous_data = array();
$forum = $forum_id = $forum_parent_id = 0;
$forum_title = $forum_content = $forum_edit_reason = '';
/** Forum *****************************************************************/
// Forum id was not passed
if (empty($_POST['bbp_forum_id'])) {
bbp_add_error('bbp_edit_forum_id', __('<strong>ERROR</strong>: Forum ID not found.', 'bbpress'));
return;
// Forum id was passed
} elseif (is_numeric($_POST['bbp_forum_id'])) {
$forum_id = (int) $_POST['bbp_forum_id'];
$forum = bbp_get_forum($forum_id);
}
// Nonce check
if (!bbp_verify_nonce_request('bbp-edit-forum_' . $forum_id)) {
bbp_add_error('bbp_edit_forum_nonce', __('<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress'));
return;
// Forum does not exist
} elseif (empty($forum)) {
bbp_add_error('bbp_edit_forum_not_found', __('<strong>ERROR</strong>: The forum you want to edit was not found.', 'bbpress'));
return;
// User cannot edit this forum
} elseif (!current_user_can('edit_forum', $forum_id)) {
bbp_add_error('bbp_edit_forum_permissions', __('<strong>ERROR</strong>: You do not have permission to edit that forum.', 'bbpress'));
return;
}
// Remove kses filters from title and content for capable users and if the nonce is verified
if (current_user_can('unfiltered_html') && !empty($_POST['_bbp_unfiltered_html_forum']) && wp_create_nonce('bbp-unfiltered-html-forum_' . $forum_id) === $_POST['_bbp_unfiltered_html_forum']) {
remove_filter('bbp_edit_forum_pre_title', 'wp_filter_kses');
remove_filter('bbp_edit_forum_pre_content', 'bbp_encode_bad', 10);
remove_filter('bbp_edit_forum_pre_content', 'bbp_filter_kses', 30);
}
/** Forum Parent ***********************************************************/
// Forum parent id was passed
if (!empty($_POST['bbp_forum_parent_id'])) {
$forum_parent_id = bbp_get_forum_id($_POST['bbp_forum_parent_id']);
}
// Current forum this forum is in
$current_parent_forum_id = bbp_get_forum_parent_id($forum_id);
// Forum exists
if (!empty($forum_parent_id) && $forum_parent_id !== $current_parent_forum_id) {
// Forum is closed and user cannot access
if (bbp_is_forum_closed($forum_parent_id) && !current_user_can('edit_forum', $forum_parent_id)) {
bbp_add_error('bbp_edit_forum_forum_closed', __('<strong>ERROR</strong>: This forum has been closed to new forums.', 'bbpress'));
}
// Forum is private and user cannot access
if (bbp_is_forum_private($forum_parent_id) && !current_user_can('read_private_forums')) {
bbp_add_error('bbp_edit_forum_forum_private', __('<strong>ERROR</strong>: This forum is private and you do not have the capability to read or create new forums in it.', 'bbpress'));
}
// Forum is hidden and user cannot access
if (bbp_is_forum_hidden($forum_parent_id) && !current_user_can('read_hidden_forums')) {
bbp_add_error('bbp_edit_forum_forum_hidden', __('<strong>ERROR</strong>: This forum is hidden and you do not have the capability to read or create new forums in it.', 'bbpress'));
}
}
/** Forum Title ***********************************************************/
if (!empty($_POST['bbp_forum_title'])) {
$forum_title = esc_attr(strip_tags($_POST['bbp_forum_title']));
}
// Filter and sanitize
$forum_title = apply_filters('bbp_edit_forum_pre_title', $forum_title, $forum_id);
//.........这里部分代码省略.........
示例15: bbp_edit_user_handler
/**
* Handles the front end user editing
*
* @uses is_multisite() To check if it's a multisite
* @uses bbp_is_user_home() To check if the user is at home (the display page
* is the one of the logged in user)
* @uses get_option() To get the displayed user's new email id option
* @uses wpdb::prepare() To sanitize our sql query
* @uses wpdb::get_var() To execute our query and get back the variable
* @uses wpdb::query() To execute our query
* @uses wp_update_user() To update the user
* @uses delete_option() To delete the displayed user's email id option
* @uses bbp_get_user_profile_edit_url() To get the edit profile url
* @uses wp_safe_redirect() To redirect to the url
* @uses bbp_verify_nonce_request() To verify the nonce and check the request
* @uses current_user_can() To check if the current user can edit the user
* @uses do_action() Calls 'personal_options_update' or
* 'edit_user_options_update' (based on if it's the user home)
* with the displayed user id
* @uses edit_user() To edit the user based on the post data
* @uses get_userdata() To get the user data
* @uses is_email() To check if the string is an email id or not
* @uses wpdb::get_blog_prefix() To get the blog prefix
* @uses is_network_admin() To check if the user is the network admin
* @uses is_super_admin() To check if the user is super admin
* @uses revoke_super_admin() To revoke super admin priviledges
* @uses grant_super_admin() To grant super admin priviledges
* @uses is_wp_error() To check if the value retrieved is a {@link WP_Error}
*/
function bbp_edit_user_handler()
{
// Bail if not a POST action
if ('POST' !== strtoupper($_SERVER['REQUEST_METHOD'])) {
return;
}
// Bail if action is not 'bbp-update-user'
if (empty($_POST['action']) || 'bbp-update-user' !== $_POST['action']) {
return;
}
// Get the displayed user ID
$user_id = bbp_get_displayed_user_id();
global $wpdb, $user_login, $super_admins;
// Execute confirmed email change. See send_confirmation_on_profile_email().
if (is_multisite() && bbp_is_user_home_edit() && isset($_GET['newuseremail'])) {
$new_email = get_option($user_id . '_new_email');
if ($new_email['hash'] == $_GET['newuseremail']) {
$user = new stdClass();
$user->ID = $user_id;
$user->user_email = esc_html(trim($new_email['newemail']));
if ($wpdb->get_var($wpdb->prepare("SELECT user_login FROM {$wpdb->signups} WHERE user_login = %s", bbp_get_displayed_user_field('user_login')))) {
$wpdb->query($wpdb->prepare("UPDATE {$wpdb->signups} SET user_email = %s WHERE user_login = %s", $user->user_email, bbp_get_displayed_user_field('user_login')));
}
wp_update_user(get_object_vars($user));
delete_option($user_id . '_new_email');
wp_safe_redirect(add_query_arg(array('updated' => 'true'), bbp_get_user_profile_edit_url($user_id)));
exit;
}
} elseif (is_multisite() && bbp_is_user_home_edit() && !empty($_GET['dismiss']) && $user_id . '_new_email' == $_GET['dismiss']) {
delete_option($user_id . '_new_email');
wp_safe_redirect(add_query_arg(array('updated' => 'true'), bbp_get_user_profile_edit_url($user_id)));
exit;
}
// Nonce check
if (!bbp_verify_nonce_request('update-user_' . $user_id)) {
bbp_add_error('bbp_update_user_nonce', __('<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress'));
return;
}
// Cap check
if (!current_user_can('edit_user', $user_id)) {
bbp_add_error('bbp_update_user_capability', __('<strong>ERROR</strong>: Are you sure you wanted to do that?', 'bbpress'));
return;
}
// Do action based on who's profile you're editing
$edit_action = bbp_is_user_home_edit() ? 'personal_options_update' : 'edit_user_profile_update';
do_action($edit_action, $user_id);
// Multisite handles the trouble for us ;)
if (!is_multisite()) {
$edit_user = edit_user($user_id);
// Single site means we need to do some manual labor
} else {
$user = get_userdata($user_id);
// Update the email address in signups, if present.
if ($user->user_login && isset($_POST['email']) && is_email($_POST['email']) && $wpdb->get_var($wpdb->prepare("SELECT user_login FROM {$wpdb->signups} WHERE user_login = %s", $user->user_login))) {
$wpdb->query($wpdb->prepare("UPDATE {$wpdb->signups} SET user_email = %s WHERE user_login = %s", $_POST['email'], $user_login));
}
// WPMU must delete the user from the current blog if WP added him after editing.
$delete_role = false;
$blog_prefix = $wpdb->get_blog_prefix();
if ($user_id != $user_id) {
$cap = $wpdb->get_var("SELECT meta_value FROM {$wpdb->usermeta} WHERE user_id = '{$user_id}' AND meta_key = '{$blog_prefix}capabilities' AND meta_value = 'a:0:{}'");
if (!is_network_admin() && null == $cap && $_POST['role'] == '') {
$_POST['role'] = 'contributor';
$delete_role = true;
}
}
$edit_user = edit_user($user_id);
// stops users being added to current blog when they are edited
if (true === $delete_role) {
delete_user_meta($user_id, $blog_prefix . 'capabilities');
}
//.........这里部分代码省略.........