mirror of
https://gh.wpcy.net/https://github.com/buddypress/buddypress.git
synced 2026-05-31 05:04:29 +08:00
git-svn-id: https://buddypress.svn.wordpress.org/tags/private-messaging@276 cdf35c40-ae34-48e0-9cc9-0c9da1808c22
778 lines
No EOL
26 KiB
PHP
778 lines
No EOL
26 KiB
PHP
<?php
|
|
require_once( 'bp-core.php' );
|
|
|
|
define ( 'BP_MESSAGES_IS_INSTALLED', 1 );
|
|
define ( 'BP_MESSAGES_VERSION', '0.3.3' );
|
|
|
|
include_once( 'bp-messages/bp-messages-classes.php' );
|
|
include_once( 'bp-messages/bp-messages-ajax.php' );
|
|
include_once( 'bp-messages/bp-messages-cssjs.php' );
|
|
include_once( 'bp-messages/bp-messages-admin.php' );
|
|
include_once( 'bp-messages/bp-messages-templatetags.php' );
|
|
|
|
/**************************************************************************
|
|
messages_install()
|
|
|
|
Sets up the database tables ready for use on a site installation.
|
|
**************************************************************************/
|
|
|
|
function messages_install( $version ) {
|
|
global $wpdb, $bp;
|
|
|
|
$sql[] = "CREATE TABLE ". $bp['messages']['table_name_threads'] ." (
|
|
id int(11) NOT NULL AUTO_INCREMENT,
|
|
message_ids varchar(150) NOT NULL,
|
|
sender_ids varchar(150) NOT NULL,
|
|
first_post_date datetime NOT NULL,
|
|
last_post_date datetime NOT NULL,
|
|
last_message_id int(11) NOT NULL,
|
|
last_sender_id int(11) NOT NULL,
|
|
PRIMARY KEY id (id)
|
|
);";
|
|
|
|
$sql[] = "CREATE TABLE ". $bp['messages']['table_name_recipients'] ." (
|
|
id int(11) NOT NULL AUTO_INCREMENT,
|
|
user_id int(11) NOT NULL,
|
|
thread_id int(11) NOT NULL,
|
|
sender_only tinyint(1) NOT NULL DEFAULT '0',
|
|
unread_count int(10) NOT NULL DEFAULT '0',
|
|
PRIMARY KEY id (id)
|
|
);";
|
|
|
|
$sql[] = "CREATE TABLE ". $bp['messages']['table_name_messages'] ." (
|
|
id int(11) NOT NULL AUTO_INCREMENT,
|
|
sender_id int(11) NOT NULL,
|
|
subject varchar(200) NOT NULL,
|
|
message longtext NOT NULL,
|
|
date_sent datetime NOT NULL,
|
|
message_order int(10) NOT NULL,
|
|
sender_is_group tinyint(1) NOT NULL DEFAULT '0',
|
|
PRIMARY KEY id (id)
|
|
);";
|
|
|
|
$sql[] = "CREATE TABLE ". $bp['messages']['table_name_notices'] ." (
|
|
id int(11) NOT NULL AUTO_INCREMENT,
|
|
subject varchar(200) NOT NULL,
|
|
message longtext NOT NULL,
|
|
date_sent datetime NOT NULL,
|
|
is_active tinyint(1) NOT NULL DEFAULT '0',
|
|
PRIMARY KEY id (id)
|
|
);";
|
|
|
|
/* DELETE PREVIOUS TABLES (TEMP) */
|
|
//$sql[] = "DROP TABLE wp_bp_messages";
|
|
//$sql[] = "DROP TABLE wp_bp_messages_deleted";
|
|
|
|
require_once( ABSPATH . 'wp-admin/upgrade-functions.php' );
|
|
dbDelta($sql);
|
|
|
|
add_site_option( 'bp-messages-version', $version );
|
|
}
|
|
|
|
|
|
/**************************************************************************
|
|
messages_setup_globals()
|
|
|
|
Set up and add all global variables for this component, and add them to
|
|
the $bp global variable array.
|
|
**************************************************************************/
|
|
|
|
function messages_setup_globals() {
|
|
global $bp, $wpdb;
|
|
|
|
$bp['messages'] = array(
|
|
'table_name' => $wpdb->base_prefix . 'bp_messages',
|
|
'table_name_threads' => $wpdb->base_prefix . 'bp_messages_threads',
|
|
'table_name_messages' => $wpdb->base_prefix . 'bp_messages_messages',
|
|
'table_name_recipients' => $wpdb->base_prefix . 'bp_messages_recipients',
|
|
'table_name_notices' => $wpdb->base_prefix . 'bp_messages_notices',
|
|
'image_base' => get_option('siteurl') . '/wp-content/mu-plugins/bp-messages/images',
|
|
'slug' => 'messages'
|
|
);
|
|
}
|
|
add_action( 'wp', 'messages_setup_globals', 1 );
|
|
add_action( 'admin_menu', 'messages_setup_globals' );
|
|
|
|
|
|
/**************************************************************************
|
|
messages_add_admin_menu()
|
|
|
|
Creates the administration interface menus and checks to see if the DB
|
|
tables are set up.
|
|
**************************************************************************/
|
|
|
|
function messages_add_admin_menu() {
|
|
global $wpdb, $bp, $userdata;
|
|
|
|
if ( $wpdb->blogid == $userdata->primary_blog ) {
|
|
if ( $inbox_count = BP_Messages_Thread::get_inbox_count() ) {
|
|
$count_indicator = ' <span id="awaiting-mod" class="count-1"><span class="message-count">' . $inbox_count . '</span></span>';
|
|
}
|
|
|
|
//add_menu_page ( __('Messages'), sprintf( __('Messages%s'), $count_indicator ), 1, basename(__FILE__), "messages_inbox" );
|
|
//add_submenu_page ( basename(__FILE__), __('Messages › Inbox'), __('Inbox'), 1, basename(__FILE__), "messages_inbox" );
|
|
//add_submenu_page ( basename(__FILE__), __('Messages › Sent Messages'), __('Sent Messages'), 1, "messages_sentbox", "messages_sentbox" );
|
|
//add_submenu_page ( basename(__FILE__), __('Messages › Compose'), __('Compose'), 1, "messages_write_new", "messages_write_new" );
|
|
|
|
// Add the administration tab under the "Site Admin" tab for site administrators
|
|
//add_submenu_page ( 'wpmu-admin.php', __('Messages'), __('Messages'), 1, basename(__FILE__), "messages_settings" );
|
|
}
|
|
|
|
/* Need to check db tables exist, activate hook no-worky in mu-plugins folder. */
|
|
if ( ( $wpdb->get_var( "show tables like '%" . $bp['messages']['table_name'] . "%'" ) == false ) || ( get_site_option('bp-messages-version') < BP_MESSAGES_VERSION ) )
|
|
messages_install(BP_MESSAGES_VERSION);
|
|
}
|
|
add_action( 'admin_menu', 'messages_add_admin_menu' );
|
|
|
|
/**************************************************************************
|
|
messages_setup_nav()
|
|
|
|
Set up front end navigation.
|
|
**************************************************************************/
|
|
|
|
function messages_setup_nav() {
|
|
global $bp;
|
|
|
|
$bp['bp_nav'][2] = array(
|
|
'id' => $bp['messages']['slug'],
|
|
'name' => 'Messages',
|
|
'link' => $bp['loggedin_domain'] . $bp['messages']['slug'] . '/'
|
|
);
|
|
|
|
$inbox_count = BP_Messages_Thread::get_inbox_count();
|
|
$inbox_display = ( $inbox_count ) ? ' style="display:inline;"' : ' style="display:none;"';
|
|
$count_indicator = ' <span' . $inbox_display . ' class="unread-count inbox-count">' . BP_Messages_Thread::get_inbox_count() . '</span>';
|
|
|
|
if ( $bp['current_component'] == $bp['messages']['slug'] ) {
|
|
if ( bp_is_home() ) {
|
|
$bp['bp_options_title'] = __('My Messages');
|
|
$bp['bp_options_nav'][$bp['messages']['slug']] = array(
|
|
'inbox' => array(
|
|
'name' => __('Inbox') . $count_indicator,
|
|
'link' => $bp['loggedin_domain'] . $bp['messages']['slug'] . '/' ),
|
|
'sentbox' => array(
|
|
'name' => __('Sent Messages'),
|
|
'link' => $bp['loggedin_domain'] . $bp['messages']['slug'] . '/sentbox' ),
|
|
'compose' => array(
|
|
'name' => __('Compose'),
|
|
'link' => $bp['loggedin_domain'] . $bp['messages']['slug'] . '/compose' )
|
|
);
|
|
|
|
if ( is_site_admin() ) {
|
|
$bp['bp_options_nav'][$bp['messages']['slug']]['notices'] = array(
|
|
'name' => __('Sent Notices'),
|
|
'link' => $bp['loggedin_domain'] . $bp['messages']['slug'] . '/notices'
|
|
);
|
|
}
|
|
|
|
} else {
|
|
$bp_options_avatar = core_get_avatar( $bp['current_userid'], 1 );
|
|
$bp['bp_options_title'] = bp_user_fullname( $bp['current_userid'], false );
|
|
}
|
|
}
|
|
}
|
|
add_action( 'wp', 'messages_setup_nav', 2 );
|
|
|
|
|
|
/**************************************************************************
|
|
messages_catch_action()
|
|
|
|
Catch actions via pretty urls.
|
|
**************************************************************************/
|
|
|
|
function messages_catch_action() {
|
|
global $current_blog, $bp, $thread_id;
|
|
|
|
if ( $bp['current_component'] == $bp['messages']['slug'] && $current_blog->blog_id > 1 && $bp['loggedin_userid'] == $bp['current_userid'] ) {
|
|
switch ( $bp['current_action'] ) {
|
|
case 'inbox':
|
|
bp_catch_uri( 'messages/index' );
|
|
break;
|
|
|
|
case 'sentbox':
|
|
bp_catch_uri( 'messages/sentbox' );
|
|
break;
|
|
|
|
case 'compose':
|
|
bp_catch_uri( 'messages/compose' );
|
|
break;
|
|
|
|
case 'view':
|
|
if ( !empty($bp['action_variables']) ) {
|
|
$thread_id = $bp['action_variables'][0];
|
|
|
|
if ( !$thread_id || !is_numeric($thread_id) || !BP_Messages_Thread::check_access($thread_id) ) {
|
|
$bp['current_action'] = 'inbox';
|
|
bp_catch_uri( 'messages/index' );
|
|
} else {
|
|
$bp['bp_options_nav'][$bp['messages']['slug']]['view'] = array(
|
|
'name' => __('From: ' . BP_Messages_Thread::get_last_sender($thread_id)),
|
|
'link' => $bp['loggedin_domain'] . $bp['messages']['slug'] . '/'
|
|
);
|
|
|
|
bp_catch_uri( 'messages/view' );
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'delete':
|
|
if ( !empty($bp['action_variables']) ) {
|
|
$thread_id = $bp['action_variables'][0];
|
|
|
|
if ( !$thread_id || !is_numeric($thread_id) || !BP_Messages_Thread::check_access($thread_id) ) {
|
|
$bp['current_action'] = 'inbox';
|
|
bp_catch_uri( 'messages/index' );
|
|
} else {
|
|
// delete message
|
|
if ( !BP_Messages_Thread::delete($thread_id) ) {
|
|
$bp['message'] = __('There was an error deleting that message.');
|
|
add_action( 'template_notices', 'bp_render_notice' );
|
|
|
|
$bp['current_action'] = 'inbox';
|
|
bp_catch_uri( 'messages/index' );
|
|
} else {
|
|
$bp['message'] = __('Message deleted.');
|
|
$bp['message_type'] = 'success';
|
|
add_action( 'template_notices', 'bp_render_notice' );
|
|
|
|
$bp['current_action'] = 'inbox';
|
|
bp_catch_uri( 'messages/index' );
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'bulk-delete':
|
|
$thread_ids = $_POST['thread_ids'];
|
|
|
|
if ( !$thread_ids || !BP_Messages_Thread::check_access($thread_ids) ) {
|
|
$bp['current_action'] = 'inbox';
|
|
bp_catch_uri( 'messages/index' );
|
|
} else {
|
|
if ( !BP_Messages_Thread::delete( explode(',', $thread_ids ) ) ) {
|
|
$message = __('There was an error deleting messages.');
|
|
add_action( 'template_notices', 'bp_render_notice' );
|
|
|
|
$bp['current_action'] = 'inbox';
|
|
bp_catch_uri( 'messages/index' );
|
|
} else {
|
|
$bp['message'] = __('Messages deleted.');
|
|
$bp['message_type'] = 'success';
|
|
add_action( 'template_notices', 'bp_render_notice' );
|
|
|
|
$bp['current_action'] = 'inbox';
|
|
bp_catch_uri( 'messages/index' );
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'notices':
|
|
if ( is_site_admin() ) {
|
|
if ( isset($bp['action_variables']) ) {
|
|
$notice_id = $bp['action_variables'][1];
|
|
|
|
if ( !$notice_id || !is_numeric($notice_id) ) {
|
|
$bp['current_action'] = 'notices';
|
|
bp_catch_uri( 'messages/notices' );
|
|
} else {
|
|
$notice = new BP_Messages_Notice($notice_id);
|
|
|
|
if ( $bp['action_variables'][0] == 'deactivate' ) {
|
|
if ( !$notice->deactivate() ) {
|
|
$bp['message'] = __('There was a problem deactivating that notice.');
|
|
} else {
|
|
$bp['message'] = __('Notice deactivated.');
|
|
$bp['message_type'] = 'success';
|
|
}
|
|
} else if ( $bp['action_variables'][0] == 'activate' ) {
|
|
if ( !$notice->activate() ) {
|
|
$bp['message'] = __('There was a problem activating that notice.');
|
|
} else {
|
|
$bp['message'] = __('Notice activated.');
|
|
$bp['message_type'] = 'success';
|
|
}
|
|
} else if ( $bp['action_variables'][0] == 'delete' ) {
|
|
if ( !$notice->delete() ) {
|
|
$bp['message'] = __('There was a problem deleting that notice.');
|
|
} else {
|
|
$bp['message'] = __('Notice deleted.');
|
|
$bp['message_type'] = 'success';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
add_action( 'template_notices', 'bp_render_notice' );
|
|
bp_catch_uri( 'messages/notices' );
|
|
}
|
|
break;
|
|
|
|
default:
|
|
$bp['current_action'] = 'inbox';
|
|
bp_catch_uri( 'messages/index' );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
add_action( 'wp', 'messages_catch_action', 3 );
|
|
|
|
/**************************************************************************
|
|
messages_template()
|
|
|
|
Set up template tags for use in templates.
|
|
**************************************************************************/
|
|
|
|
function messages_template() {
|
|
global $messages_template, $bp;
|
|
|
|
if ( $bp['current_component'] == $bp['messages']['slug'] ) {
|
|
if ( $bp['current_action'] == 'inbox' || $bp['current_action'] == 'sentbox' || ( $bp['current_action'] == 'notices' && is_site_admin() ) )
|
|
$messages_template = new BP_Messages_Template( $bp['loggedin_userid'], $bp['current_action'] );
|
|
}
|
|
|
|
}
|
|
add_action( 'wp_head', 'messages_template' );
|
|
|
|
|
|
/**************************************************************************
|
|
messages_write_new()
|
|
|
|
Handle and display the write new messages screen.
|
|
**************************************************************************/
|
|
|
|
function messages_write_new( $username = '', $subject = '', $content = '', $type = '', $message = '' ) { ?>
|
|
<?php
|
|
global $messages_write_new_action;
|
|
|
|
if ( $messages_write_new_action == '' )
|
|
$messages_write_new_action = 'admin.php?page=bp-messages.php&mode=send';
|
|
?>
|
|
|
|
<div class="wrap">
|
|
<h2><?php _e('Compose Message') ?></h2>
|
|
|
|
<?php
|
|
if ( $message != '' ) {
|
|
$type = ( $type == 'error' ) ? 'error' : 'updated';
|
|
?>
|
|
<div id="message" class="<?php echo $type; ?> fade">
|
|
<p><?php echo $message; ?></p>
|
|
</div>
|
|
<?php } ?>
|
|
|
|
<form action="<?php echo $messages_write_new_action ?>" method="post" id="send_message_form">
|
|
<div id="poststuff">
|
|
<p>
|
|
<div id="titlediv">
|
|
<h3><?php _e("Send To") ?> <small>(Use username - autocomplete coming soon)</small></h3>
|
|
<div id="titlewrap">
|
|
<input type="text" name="send_to" id="send_to" value="<?php echo $username; ?>" />
|
|
<?php if ( is_site_admin() ) : ?><br /><input type="checkbox" id="send-notice" name="send-notice" value="1" /> This is a notice to all users.<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
</p>
|
|
|
|
<p>
|
|
<div id="titlediv">
|
|
<h3><?php _e("Subject") ?></h3>
|
|
<div id="titlewrap">
|
|
<input type="text" name="subject" id="subject" value="<?php echo $subject; ?>" />
|
|
</div>
|
|
</div>
|
|
</p>
|
|
|
|
<p>
|
|
<div id="postdivrich" class="postarea">
|
|
<h3><?php _e("Message") ?></h3>
|
|
<div id="editorcontainer">
|
|
<textarea name="content" id="message_content" rows="15" cols="40"><?php echo $content; ?></textarea>
|
|
</div>
|
|
</div>
|
|
</p>
|
|
|
|
<p class="submit">
|
|
<input type="submit" value="<?php _e("Send") ?> »" name="send" id="send" style="font-weight: bold" />
|
|
</p>
|
|
</div>
|
|
</form>
|
|
<script type="text/javascript">
|
|
document.getElementById("send_to").focus();
|
|
</script>
|
|
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
function messages_inbox() {
|
|
messages_box( 'inbox', __('Inbox') );
|
|
}
|
|
|
|
function messages_sentbox() {
|
|
messages_box( 'sentbox', __('Sent Messages') );
|
|
}
|
|
|
|
|
|
/**************************************************************************
|
|
messages_box()
|
|
|
|
Handles and displays the messages in a particular box for the current user.
|
|
**************************************************************************/
|
|
|
|
function messages_box( $box = 'inbox', $display_name = 'Inbox', $message = '', $type = '' ) {
|
|
global $bp, $userdata;
|
|
|
|
if ( isset($_GET['mode']) && isset($_GET['thread_id']) && $_GET['mode'] == 'view' ) {
|
|
messages_view_thread( $_GET['thread_id'], 'inbox' );
|
|
} else if ( isset($_GET['mode']) && isset($_GET['thread_id']) && $_GET['mode'] == 'delete' ) {
|
|
messages_delete_thread( $_GET['thread_id'], $box, $display_name );
|
|
} else if ( isset($_GET['mode']) && isset($_POST['thread_ids']) && $_GET['mode'] == 'delete_bulk' ) {
|
|
messages_delete_thread( $_POST['thread_ids'], $box, $display_name );
|
|
} else if ( isset($_GET['mode']) && $_GET['mode'] == 'send' ) {
|
|
messages_send_message( $_POST['send_to'], $_POST['subject'], $_POST['content'], $_POST['thread_id'] );
|
|
} else {
|
|
?>
|
|
|
|
<div class="wrap">
|
|
<h2><?php echo $display_name ?></h2>
|
|
<form action="admin.php?page=bp-messages.php&mode=delete_bulk" method="post">
|
|
|
|
<?php
|
|
if ( $message != '' ) {
|
|
$type = ( $type == 'error' ) ? 'error' : 'updated';
|
|
?>
|
|
<div id="message" class="<?php echo $type; ?> fade">
|
|
<p><?php echo $message; ?></p>
|
|
</div>
|
|
<?php } ?>
|
|
|
|
<?php if ( $box == 'inbox' ) { ?>
|
|
<div class="messages-options">
|
|
<?php bp_messages_options() ?>
|
|
</div>
|
|
|
|
<?php bp_message_get_notices(); ?>
|
|
<?php } ?>
|
|
|
|
<table class="widefat" id="message-threads" style="margin-top: 10px;">
|
|
<tbody id="the-list">
|
|
<?php
|
|
$threads = BP_Messages_Thread::get_current_threads_for_user( $userdata->ID, $box );
|
|
|
|
if ( $threads ) {
|
|
$counter = 0;
|
|
foreach ( $threads as $thread ) {
|
|
if ( $thread->unread_count ) {
|
|
$is_read = '<img src="' . $bp['messages']['image_base'] .'/email.gif" alt="New Message" /><a href="admin.php?page=bp-messages.php&mode=view&thread_id=' . $thread->thread_id . '"><span id="awaiting-mod" class="count-1"><span class="message-count">' . $thread->unread_count . '</span></span></a>';
|
|
$new = " unread";
|
|
} else {
|
|
$is_read = '<img src="' . $bp['messages']['image_base'] .'/email_open.gif" alt="Older Message" />';
|
|
$new = " read";
|
|
}
|
|
|
|
if ( $counter % 2 == 0 )
|
|
$class = "alternate";
|
|
?>
|
|
<tr class="<?php echo $class . $new ?>" id="m-<?php echo $message->id ?>">
|
|
<td class="is-read" width="1%"><?php echo $is_read ?></td>
|
|
<td class="avatar" width="1%">
|
|
<?php if ( function_exists('core_get_avatar') )
|
|
echo core_get_avatar($thread->last_sender_id, 1);
|
|
?>
|
|
</td>
|
|
<td class="sender-details" width="20%">
|
|
<?php if ( $box == 'sentbox') { ?>
|
|
<h3>To: <?php echo BP_Messages_Thread::get_recipient_links($thread->recipients); ?></h3>
|
|
<?php } else { ?>
|
|
<h3>From: <?php echo bp_core_get_userlink($thread->last_sender_id) ?></h3>
|
|
<?php } ?>
|
|
<?php echo bp_format_time(strtotime($thread->last_post_date)) ?>
|
|
</td>
|
|
<td class="message-details" width="40%">
|
|
<h4><a href="admin.php?page=bp-messages.php&mode=view&thread_id=<?php echo $thread->thread_id ?>"><?php echo stripslashes($thread->last_message_subject) ?></a></h4>
|
|
<?php echo bp_create_excerpt($thread->last_message_message, 20); ?>
|
|
</td>
|
|
<td width="10%"><a href="admin.php?page=bp-messages.php&mode=delete&thread_id=<?php echo $thread->thread_id ?>">Delete</a> <input type="checkbox" name="message_ids[]" value="<?php echo $thread->thread_id ?>" /></td>
|
|
</tr>
|
|
<?php
|
|
|
|
$counter++;
|
|
unset($class);
|
|
unset($new);
|
|
unset($is_read);
|
|
}
|
|
|
|
echo '
|
|
</tbody>
|
|
</table>
|
|
<p class="submit">
|
|
<input id="deletebookmarks" class="button" type="submit" onclick="return confirm(\'You are about to delete these messages permanently.\n[Cancel] to stop, [OK] to delete.\')" value="Delete Checked Messages »" name="deletebookmarks"/>
|
|
</p>
|
|
</form>
|
|
</div>';
|
|
|
|
} else {
|
|
?>
|
|
<tr class="alternate">
|
|
<td colspan="7" style="text-align: center; padding: 15px 0;">
|
|
<?php _e('You have no messages in your'); echo ' ' . $display_name . '.'; ?>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
}
|
|
?>
|
|
</tbody>
|
|
</table>
|
|
</form>
|
|
</div>
|
|
<?php
|
|
}
|
|
}
|
|
|
|
/**************************************************************************
|
|
messages_send_message()
|
|
|
|
Send a message.
|
|
**************************************************************************/
|
|
|
|
function messages_send_message( $recipients, $subject, $content, $thread_id, $from_ajax = false, $from_template = false, $is_reply = false ) {
|
|
global $userdata;
|
|
global $messages_write_new_action;
|
|
global $pmessage;
|
|
global $message, $type;
|
|
global $bp;
|
|
|
|
if ( isset( $_POST['send-notice'] ) ) {
|
|
messages_send_notice( $subject, $content, $from_template );
|
|
} else {
|
|
if ( $recipients == '' ) {
|
|
if ( !$from_ajax ) {
|
|
messages_write_new( '', $subject, $content, 'error', __('Please enter at least one valid user to send this message to.'), $messages_write_new_action );
|
|
} else {
|
|
return array('status' => 0, 'message' => __('There was an error sending the reply, please try again.'));
|
|
}
|
|
} else if ( $subject == '' || $content == '' ) {
|
|
if ( !$from_ajax ) {
|
|
messages_write_new( $to_user, $subject, $content, 'error', __('Please make sure you fill in all the fields.'), $messages_write_new_action );
|
|
} else {
|
|
return array('status' => 0, 'message' => __('Please make sure you have typed a message before sending a reply.'));
|
|
}
|
|
} else {
|
|
$pmessage = new BP_Messages_Message;
|
|
|
|
$pmessage->sender_id = $userdata->ID;
|
|
$pmessage->subject = $subject;
|
|
$pmessage->message = $content;
|
|
$pmessage->thread_id = $thread_id;
|
|
$pmessage->date_sent = time();
|
|
$pmessage->message_order = 0; // TODO
|
|
$pmessage->sender_is_group = 0;
|
|
|
|
if ( $is_reply ) {
|
|
$thread = new BP_Messages_Thread($thread_id);
|
|
$pmessage->recipients = $thread->get_recipients();
|
|
} else {
|
|
$pmessage->recipients = BP_Messages_Message::get_recipient_ids( explode( ',', $recipients ) );
|
|
}
|
|
|
|
unset($_GET['mode']);
|
|
|
|
if ( !is_null( $pmessage->recipients ) ) {
|
|
if ( !$pmessage->send() ) {
|
|
$message = __('Message could not be sent, please try again.');
|
|
$type = 'error';
|
|
|
|
if ( $from_ajax ) {
|
|
return array('status' => 0, 'message' => $message);
|
|
} else if ( $from_template ) {
|
|
unset($_POST['send_to']);
|
|
$bp['message'] = $message;
|
|
$bp['message_type'] = $type;
|
|
|
|
bp_render_notice();
|
|
messages_write_new();
|
|
} else {
|
|
messages_box( 'inbox', __('Inbox'), $message, $type );
|
|
}
|
|
} else {
|
|
$message = __('Message sent successfully!') . ' <a href="' . $bp['loggedin_domain'] . $bp['messages']['slug'] . '/view/' . $pmessage->thread_id . '">' . __('View Message') . '</a> »';
|
|
$type = 'success';
|
|
|
|
if ( $from_ajax ) {
|
|
return array('status' => 1, 'message' => $message, 'reply' => $pmessage);
|
|
} else if ( $from_template ) {
|
|
unset($_POST['send_to']);
|
|
$bp['message'] = $message;
|
|
$bp['message_type'] = $type;
|
|
|
|
bp_render_notice();
|
|
messages_write_new();
|
|
} else {
|
|
messages_box( 'inbox', __('Inbox'), $message, $type );
|
|
}
|
|
}
|
|
} else {
|
|
unset($_POST['send_to']);
|
|
unset($_POST['send-notice']);
|
|
|
|
$message = __('Message could not be sent, please try again.');
|
|
$type = 'error';
|
|
|
|
if ( $from_ajax ) {
|
|
return array('status' => 0, 'message' => $message);
|
|
} else if ( $from_template ) {
|
|
$bp['message'] = $message;
|
|
$bp['message_type'] = $type;
|
|
|
|
bp_render_notice();
|
|
messages_write_new();
|
|
} else {
|
|
messages_box( 'inbox', __('Inbox'), $message, $type );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**************************************************************************
|
|
messages_send_notice()
|
|
|
|
Handles the sending of notices by an administrator
|
|
**************************************************************************/
|
|
|
|
function messages_send_notice( $subject, $message, $from_template ) {
|
|
if ( !is_site_admin() || $subject == '' || $message == '' ) {
|
|
unset($_POST['send_to']);
|
|
unset($_POST['send-notice']);
|
|
|
|
$message = __('Notice could not be sent, please try again.');
|
|
$type = 'error';
|
|
|
|
if ( $from_template ) {
|
|
bp_render_notice();
|
|
messages_write_new();
|
|
} else {
|
|
messages_box( 'inbox', __('Inbox'), $message, $type );
|
|
}
|
|
} else {
|
|
// Has access to send notices, lets do it.
|
|
$notice = new BP_Messages_Notice;
|
|
$notice->subject = $subject;
|
|
$notice->message = $message;
|
|
$notice->date_sent = time();
|
|
$notice->is_active = 1;
|
|
$notice->save(); // send it.
|
|
}
|
|
|
|
}
|
|
|
|
/**************************************************************************
|
|
messages_delete_thread()
|
|
|
|
Handles the deletion of a single or multiple threads.
|
|
**************************************************************************/
|
|
|
|
function messages_delete_thread( $thread_ids, $box, $display_name ) {
|
|
$type = 'success';
|
|
|
|
if ( is_array($thread_ids) ) {
|
|
$message = __('Messages deleted successfully!');
|
|
|
|
for ( $i = 0; $i < count($thread_ids); $i++ ) {
|
|
if ( !$status = BP_Messages_Thread::delete($thread_ids[$i]) ) {
|
|
$message = __('There was an error when deleting messages. Please try again.');
|
|
$type = 'error';
|
|
}
|
|
}
|
|
} else {
|
|
$message = __('Message deleted successfully!');
|
|
|
|
if ( !$status = BP_Messages_Thread::delete($thread_ids) ) {
|
|
$message = __('There was an error when deleting that message. Please try again.');
|
|
$type = 'error';
|
|
}
|
|
}
|
|
|
|
unset($_GET['mode']);
|
|
messages_box( $box, $display_name, $message, $type );
|
|
}
|
|
|
|
|
|
function messages_view_thread( $thread_id ) {
|
|
global $bp_messages_image_base, $userdata;
|
|
|
|
$thread = new BP_Messages_Thread( $thread_id, true );
|
|
|
|
if ( !$thread->has_access ) {
|
|
unset($_GET['mode']);
|
|
messages_inbox( __('There was an error viewing this message, please try again.'), 'error' );
|
|
} else {
|
|
if ( $thread->messages ) { ?>
|
|
<?php $thread->mark_read() ?>
|
|
|
|
<div class="wrap">
|
|
<h2 id="message-subject"><?php echo $thread->subject; ?></h2>
|
|
<table class="form-table">
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<img src="<?php echo $bp_messages_image_base ?>/email_open.gif" alt="Message" style="vertical-align: top;" />
|
|
<?php _e('Sent between ') ?> <?php echo BP_Messages_Thread::get_recipient_links($thread->recipients) ?>
|
|
<?php _e('and') ?> <?php echo bp_core_get_userlink($userdata->ID) ?>.
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<?php
|
|
foreach ( $thread->messages as $message ) {
|
|
?>
|
|
<a name="<?php echo 'm-' . $message->id ?>"></a>
|
|
<div class="message-box">
|
|
<div class="avatar-box">
|
|
<?php if ( function_exists('core_get_avatar') )
|
|
echo core_get_avatar($message->sender_id, 1);
|
|
?>
|
|
|
|
<h3><?php echo bp_core_get_userlink($message->sender_id) ?></h3>
|
|
<small><?php echo bp_format_time(strtotime($message->date_sent)) ?></small>
|
|
</div>
|
|
<?php echo stripslashes($message->message); ?>
|
|
<div class="clear"></div>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
?>
|
|
<form id="send-reply" action="<?php echo get_option('home'); ?>/wp-admin/admin.php?page=bp-messages.php&mode=send" method="post">
|
|
<div class="message-box">
|
|
<div id="messagediv">
|
|
<div class="avatar-box">
|
|
<?php if ( function_exists('core_get_avatar') )
|
|
echo core_get_avatar($userdata->ID, 1);
|
|
?>
|
|
|
|
<h3><?php _e("Reply: ") ?></h3>
|
|
</div>
|
|
<label for="reply"></label>
|
|
<div>
|
|
<textarea name="content" id="message_content" rows="15" cols="40"><?php echo $content; ?></textarea>
|
|
</div>
|
|
</div>
|
|
<p class="submit">
|
|
<input type="submit" name="send" value="Send Reply »" id="send_reply_button" />
|
|
</p>
|
|
<input type="hidden" id="thread_id" name="thread_id" value="<?php echo $thread->thread_id ?>" />
|
|
<input type="hidden" name="subject" id="subject" value="<?php _e('Re: '); echo str_replace( 'Re: ', '', $thread->last_message_subject); ?>" />
|
|
</div>
|
|
<?php if ( function_exists('wp_nonce_field') )
|
|
wp_nonce_field('messages_sendreply');
|
|
?>
|
|
</form>
|
|
</div>
|
|
<?php
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
?>
|