bp_messages_action_create_message()
Handle creating of private messages or sitewide notices
Description
Return
(boolean)
Source
File: bp-messages/actions/compose.php
function bp_messages_action_create_message() {
// Bail if not posting to the compose message screen.
if ( ! bp_is_post_request() || ! bp_is_messages_component() || ! bp_is_current_action( 'compose' ) ) {
return false;
}
// Check the nonce.
check_admin_referer( 'messages_send_message' );
// Define local variables.
$redirect_to = '';
$feedback = '';
$success = false;
// Missing subject or content.
if ( empty( $_POST['subject'] ) || empty( $_POST['content'] ) ) {
$success = false;
if ( empty( $_POST['subject'] ) ) {
$feedback = __( 'Your message was not sent. Please enter a subject line.', 'buddyboss' );
} else {
$feedback = __( 'Your message was not sent. Please enter some content.', 'buddyboss' );
}
// Subject and content present.
} else {
// Setup the link to the logged-in user's messages.
$member_messages = trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() );
// Site-wide notice.
if ( isset( $_POST['send-notice'] ) ) {
// Attempt to save the notice and redirect to notices.
if ( messages_send_notice( $_POST['subject'], $_POST['content'] ) ) {
$success = true;
$feedback = __( 'Notice successfully created.', 'buddyboss' );
$redirect_to = trailingslashit( $member_messages . 'notices' );
// Notice could not be sent.
} else {
$success = false;
$feedback = __( 'Notice was not created. Please try again.', 'buddyboss' );
}
// Private conversation.
} else {
// Filter recipients into the format we need - array( 'username/userid', 'username/userid' ).
$autocomplete_recipients = (array) explode( ',', $_POST['send-to-input'] );
$typed_recipients = (array) explode( ' ', $_POST['send_to_usernames'] );
$recipients = array_merge( $autocomplete_recipients, $typed_recipients );
/**
* Filters the array of recipients to receive the composed message.
*
* @since BuddyPress 1.2.10
*
* @param array $recipients Array of recipients to receive message.
*/
$recipients = apply_filters( 'bp_messages_recipients', $recipients );
// Attempt to send the message.
$send = messages_new_message( array(
'recipients' => $recipients,
'subject' => $_POST['subject'],
'content' => $_POST['content'],
'error_type' => 'wp_error'
) );
// Send the message and redirect to it.
if ( true === is_int( $send ) ) {
$success = true;
$feedback = __( 'Message successfully sent.', 'buddyboss' );
$view = trailingslashit( $member_messages . 'view' );
$redirect_to = trailingslashit( $view . $send );
// Message could not be sent.
} else {
$success = false;
$feedback = $send->get_error_message();
}
}
}
// Feedback.
if ( ! empty( $feedback ) ) {
// Determine message type.
$type = ( true === $success )
? 'success'
: 'error';
// Add feedback message.
bp_core_add_message( $feedback, $type );
}
// Maybe redirect.
if ( ! empty( $redirect_to ) ) {
bp_core_redirect( $redirect_to );
}
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 2.4.0 This function was split from messages_screen_compose(). See #6505. | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.