Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/admin/applications/members/modules_public/messaging/send.php
Строк: 632
<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.6
* Online list
* Last Updated: $Date: 2012-12-13 08:29:08 -0500 (Thu, 13 Dec 2012) $
* </pre>
*
* @author $Author: AndyMillne $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Members
* @link http://www.invisionpower.com
* @since 12th March 2002
* @version $Revision: 11713 $
*
*/
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
exit();
}
class public_members_messaging_send extends ipsCommand
{
/**
* Page title
*
* @var string
*/
protected $_title;
/**
* Navigation
*
* @var array[ 0 => [ title, url ] ]
*/
protected $_navigation;
/**
* Post Key
*
* @var string Md5 key
*/
protected $_postKey;
/**
* Flag: Can we upload?
*
* @var int 1 or 0
*/
protected $_canUpload;
/**
* Error string
*
* @var string
*/
protected $_errorString = '';
/**
* Class entry point
*
* @param object Registry reference
* @return @e void [Outputs to screen/redirects]
*/
public function doExecute( ipsRegistry $registry )
{
//-----------------------------------------
// Check viewing permissions, etc
//-----------------------------------------
if ( ! $this->memberData['g_use_pm'] )
{
$this->registry->getClass('output')->showError( 'messenger_disabled', 10222, null, null, 403 );
}
if ( $this->memberData['members_disable_pm'] )
{
$this->registry->getClass('output')->showError( 'messenger_disabled', 10223, null, null, 403 );
}
if ( ! $this->memberData['member_id'] )
{
$this->registry->getClass('output')->showError( 'messenger_no_guests', 10224, null, null, 403 );
}
if( ! IPSLib::moduleIsEnabled( 'messaging', 'members' ) )
{
$this->registry->getClass('output')->showError( 'messenger_disabled', 10227, null, null, 404 );
}
//-----------------------------------------
// Load lang file
//-----------------------------------------
$this->registry->getClass( 'class_localization')->loadLanguageFile( array( "public_error" ), 'core' );
//-----------------------------------------
// Post Key
//-----------------------------------------
$this->_postKey = ( $this->request['postKey'] AND $this->request['postKey'] != '' ) ? $this->request['postKey'] : md5(microtime());
//-----------------------------------------
// Can we upload?
//-----------------------------------------
if ( $this->memberData['g_attach_max'] != -1 and $this->memberData['g_can_msg_attach'] )
{
$this->_canUpload = 1;
}
$this->lang->words['the_max_length'] = $this->settings['max_post_length'] * 1024;
//-----------------------------------------
// Language
//-----------------------------------------
/* Load post lang file for attachments stuff */
$this->registry->class_localization->loadLanguageFile( array( 'public_post' ), 'forums' );
$this->registry->class_localization->loadLanguageFile( array( 'public_messaging' ), 'members' );
//-----------------------------------------
// Grab class
//-----------------------------------------
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'members' ) . '/sources/classes/messaging/messengerFunctions.php', 'messengerFunctions', 'members' );
$this->messengerFunctions = new $classToLoad( $registry );
/* Messenger Totals */
$totals = $this->messengerFunctions->buildMessageTotals();
//-----------------------------------------
// Did we preview new topic?
//-----------------------------------------
if ( $this->request['preview'] )
{
$this->request['do'] = 'form';
}
//-----------------------------------------
// Or a reply?
//-----------------------------------------
if ( $this->request['previewReply'] )
{
if( $this->request['do'] == 'sendEdit' )
{
$this->request['do'] = 'editMessage';
}
else
{
$this->request['do'] = 'replyForm';
}
}
//-----------------------------------------
// What to do?
//-----------------------------------------
switch( $this->request['do'] )
{
default:
case 'form':
$html = $this->_showNewTopicForm();
break;
case 'replyForm':
$html = $this->_showForm( 'reply' );
break;
case 'send':
$html = $this->_sendNewPersonalTopic();
break;
case 'sendReply':
$html = $this->_sendReply();
break;
case 'editMessage':
$html = $this->_showForm( 'edit' );
break;
case 'sendEdit':
$html = $this->_sendEdit();
break;
case 'deleteReply':
$html = $this->_deleteReply();
break;
}
//-----------------------------------------
// If we have any HTML to print, do so...
//-----------------------------------------
$this->registry->output->addContent( $this->registry->getClass('output')->getTemplate('messaging')->messengerTemplate( $html, $this->messengerFunctions->_jumpMenu, $this->messengerFunctions->_dirData, $totals, array(), $this->_errorString ) );
$this->registry->output->setTitle( $this->_title . ' - ' . ipsRegistry::$settings['board_name']);
$this->registry->output->addNavigation( $this->lang->words['messenger__nav'], 'app=members&module=messaging' );
if ( is_array( $this->_navigation ) AND count( $this->_navigation ) )
{
foreach( $this->_navigation as $idx => $data )
{
$this->registry->output->addNavigation( $data[0], $data[1] );
}
}
$this->registry->output->sendOutput();
}
/**
* Deletes a reply
*
* @return @e void
*/
protected function _deleteReply()
{
//-----------------------------------------
// INIT
//-----------------------------------------
$authKey = $this->request['authKey'];
$topicID = intval( $this->request['topicID'] );
$msgID = intval( $this->request['msgID'] );
//-----------------------------------------
// Auth check
//-----------------------------------------
if ( $this->request['authKey'] != $this->member->form_hash )
{
$this->registry->getClass('output')->showError( 'messenger_bad_key', 2024, null, null, 403 );
}
//-----------------------------------------
// Can access this topic?
//-----------------------------------------
if ( $this->messengerFunctions->canAccessTopic( $this->memberData['member_id'], $topicID ) !== TRUE )
{
$this->registry->getClass('output')->showError( 'messenger_no_msgid', 10229, null, null, 403 );
}
//-----------------------------------------
// Delete 'em
//-----------------------------------------
if ( $this->messengerFunctions->deleteMessages( array( $msgID ), $this->memberData['member_id'] ) !== TRUE )
{
$this->registry->getClass('output')->showError( 'messenger_no_delete_permission', 10264, null, null, 403 );
}
//-----------------------------------------
// Go back to the topic at the correct post ID
//-----------------------------------------
$this->registry->getClass('output')->silentRedirect( $this->settings['base_url'] . 'app=members&module=messaging&section=view&do=findMessage&topicID=' . $topicID . '&msgID=' . $this->messengerFunctions->fetchPreviousMsgID( $msgID ) );
}
/**
* Sends a reply
*
* @return mixed void, or HTML form
*/
protected function _sendReply()
{
//-----------------------------------------
// INIT
//-----------------------------------------
$authKey = $this->request['authKey'];
$topicID = intval( $this->request['topicID'] );
$msgContent = $_POST['msgContent'];
//-----------------------------------------
// Error checking
//-----------------------------------------
if ( IPSText::mbstrlen( trim( IPSText::br2nl( $_POST['msgContent'] ) ) ) < 2 )
{
return $this->_showForm( 'reply', $this->lang->words['err_no_msg'] );
}
if ( $this->request['authKey'] != $this->member->form_hash )
{
$this->registry->getClass('output')->showError( 'messenger_bad_key', 2024, null, null, 403 );
}
//-----------------------------------------
// Add reply
//-----------------------------------------
try
{
$msgID = $this->messengerFunctions->sendReply( $this->memberData['member_id'], $topicID, $msgContent, array( 'postKey' => $this->_postKey ) );
}
catch( Exception $error )
{
$msg = $error->getMessage();
if ( strstr( $msg, 'BBCODE_' ) )
{
$msg = str_replace( 'BBCODE_', '', $msg );
return $this->_showForm( $this->lang->words[ $msg ] );
}
else if ( isset($this->lang->words[ 'err_' . $msg ]) )
{
$_msgString = $this->lang->words[ 'err_' . $msg ];
$_msgString = str_replace( '#NAMES#' , implode( ",", $this->messengerFunctions->exceptionData ), $_msgString );
$_msgString = str_replace( '#LIMIT#' , $this->memberData['g_max_mass_pm'], $_msgString );
$_msgString = str_replace( '#TONAME#' , $this->messengerFunctions->exceptionData[0], $_msgString );
$_msgString = str_replace( '#FROMNAME#', $this->memberData['members_display_name'], $_msgString );
}
else
{
$_msgString = $this->lang->words['err_UNKNOWN'] . ' ' . $msg;
}
return $this->_showForm( 'reply', $_msgString );
}
//-----------------------------------------
// Which page are we on, then?...
//-----------------------------------------
$this->registry->getClass('output')->silentRedirect( $this->settings['base_url'] . 'app=members&module=messaging&section=view&do=findMessage&topicID=' . $topicID . '&msgID=' . $msgID );
}
/**
* Sends a reply
*
* @return mixed void, or HTML form
*/
protected function _sendEdit()
{
//-----------------------------------------
// INIT
//-----------------------------------------
$authKey = $this->request['authKey'];
$topicID = intval( $this->request['topicID'] );
$msgID = intval( $this->request['msgID'] );
$msgContent = $_POST['msgContent'];
//-----------------------------------------
// Error checking
//-----------------------------------------
if ( IPSText::mbstrlen( trim( IPSText::br2nl( $_POST['msgContent'] ) ) ) < 2 )
{
return $this->_showForm( 'edit', $this->lang->words['err_no_msg'] );
}
if ( $this->request['authKey'] != $this->member->form_hash )
{
$this->registry->getClass('output')->showError( 'messenger_bad_key', 2024, null, null, 403 );
}
//-----------------------------------------
// Add reply
//-----------------------------------------
try
{
$this->messengerFunctions->sendEdit( $this->memberData['member_id'], $topicID, $msgID, $msgContent );
}
catch( Exception $error )
{
$msg = $error->getMessage();
if ( strstr( $msg, 'BBCODE_' ) )
{
$msg = str_replace( 'BBCODE_', '', $msg );
return $this->_showForm( $this->lang->words[ $msg ] );
}
else if ( isset($this->lang->words[ 'err_' . $msg ]) )
{
$_msgString = $this->lang->words[ 'err_' . $msg ];
$_msgString = str_replace( '#NAMES#' , implode( ",", $this->messengerFunctions->exceptionData ), $_msgString );
$_msgString = str_replace( '#LIMIT#' , $this->memberData['g_max_mass_pm'], $_msgString );
$_msgString = str_replace( '#TONAME#' , $this->messengerFunctions->exceptionData[0], $_msgString );
$_msgString = str_replace( '#FROMNAME#', $this->memberData['members_display_name'], $_msgString );
}
else
{
$_msgString = $this->lang->words['err_UNKNOWN'] . ' ' . $msg;
}
return $this->_showForm( 'reply', $_msgString );
}
//-----------------------------------------
// Which page are we on, then?...
//-----------------------------------------
$this->registry->getClass('output')->silentRedirect( $this->settings['base_url'] . 'app=members&module=messaging&section=view&do=findMessage&topicID=' . $topicID . '&msgID=' . $msgID );
}
/**
* Sends the PM
*
* @return @e void, or HTML form
*/
protected function _sendNewPersonalTopic()
{
//-----------------------------------------
// INIT
//-----------------------------------------
if( $this->messengerFunctions->checkHasHitMax() )
{
$this->registry->getClass('output')->showError( 'maxperday_hit', 10272 );
}
if ( !$this->messengerFunctions->withinPMQuota( $this->memberData ) )
{
$this->registry->getClass('output')->showError( 'cannot_send_new_limit', 10274, FALSE, '', 40 );
}
$msgTitle = IPSText::getTextClass('bbcode')->stripBadWords( trim( IPSText::parseCleanValue( $_POST['msg_title'] ) ) );
$authKey = $this->request['auth_key'];
$sendToName = $this->request['entered_name'];
$sendToID = intval( $this->request['toMemberID'] );
$sendType = trim( $this->request['sendType'] );
$_inviteUsers = trim( $this->request['inviteUsers'] );
$msgContent = $_POST['Post'];
$topicID = $this->request['topicID'];
$inviteUsers = array();
$draft = ( $this->request['save'] ) ? TRUE : FALSE;
//-----------------------------------------
// Error checking
//-----------------------------------------
if ( IPSText::mbstrlen( trim( $msgTitle ) ) < 2 )
{
return $this->_showNewTopicForm( $this->lang->words['err_no_title'] );
}
if ( IPSText::mbstrlen( trim( IPSText::br2nl( $msgContent ) ) ) < 3 )
{
return $this->_showNewTopicForm( $this->lang->words['err_no_msg'] );
}
if ( $this->request['auth_key'] != $this->member->form_hash )
{
$this->registry->getClass('output')->showError( 'messenger_bad_key', 2024 );
}
if ( !$sendToID AND !$sendToName )
{
return $this->_showNewTopicForm( $this->lang->words['err_no_chosen_member'] );
}
//-----------------------------------------
// Invite Users
//-----------------------------------------
if ( $this->memberData['g_max_mass_pm'] AND $_inviteUsers )
{
$_tmp = array();
foreach( explode( ',', $_inviteUsers ) as $name )
{
$name = trim( $name );
if ( $name )
{
$inviteUsers[] = $name;
}
}
}
//-----------------------------------------
// Grab member ID
//-----------------------------------------
$toMember = ( $sendToID ) ? IPSMember::load( $sendToID, 'core' ) : IPSMember::load( $sendToName, 'core', 'displayname' );
if ( ! $toMember['member_id'] )
{
return $this->_showNewTopicForm( $this->lang->words['err_no_chosen_member'] );
}
//-----------------------------------------
// Send .. or.. save...
//-----------------------------------------
try
{
$this->messengerFunctions->sendNewPersonalTopic( $toMember['member_id'], $this->memberData['member_id'], $inviteUsers, $msgTitle, $msgContent, array( 'isDraft' => $draft,
'topicID' => $topicID,
'sendMode' => $sendType,
'postKey' => $this->_postKey ) );
}
catch( Exception $error )
{
$msg = $error->getMessage();
if ( strstr( $msg, 'BBCODE_' ) )
{
$msg = str_replace( 'BBCODE_', '', $msg );
return $this->_showNewTopicForm( $this->lang->words[ $msg ] );
}
else if ( isset($this->lang->words[ 'err_' . $msg ]) )
{
$_msgString = $this->lang->words[ 'err_' . $msg ];
$_msgString = str_replace( '#NAMES#' , implode( ",", $this->messengerFunctions->exceptionData ), $_msgString );
$_msgString = str_replace( '#LIMIT#' , $this->memberData['g_max_mass_pm'], $_msgString );
$_msgString = str_replace( '#TONAME#' , $toMember['members_display_name'] , $_msgString );
$_msgString = str_replace( '#FROMNAME#', $this->memberData['members_display_name'], $_msgString );
$_msgString = str_replace( '#DATE#' , $this->messengerFunctions->exceptionData[0], $_msgString );
}
else
{
$_msgString = $this->lang->words['err_UNKNOWN'] . ' ' . $msg;
}
return $this->_showNewTopicForm( $_msgString );
}
//-----------------------------------------
// Swap and serve...
//-----------------------------------------
if ( $draft !== TRUE )
{
$text = str_replace( "<#FROM_MEMBER#>" , $this->memberData['members_display_name'] , $this->lang->words['sent_text'] );
$text = str_replace( "<#MESSAGE_TITLE#>" , $msgTitle, $text );
}
else
{
$text = $this->lang->words['saved_as_a_draft'];
}
$this->registry->getClass('output')->redirectScreen( $text , $this->settings['base_url'] . 'app=members&module=messaging&section=view&do=inbox' );
}
/**
* Show PM form
*
* @param string Type of form (edit / reply)
* @param string Error message
* @return string returns HTML
*/
protected function _showForm( $type, $errors='' )
{
//-----------------------------------------
// INIT
//-----------------------------------------
$topicID = intval( $this->request['topicID'] );
$msgID = intval( $this->request['msgID'] );
$preview = isset( $this->request['previewReply'] ) ? 1 : 0;
$displayData = array( 'errors' => $errors ? array( $errors ) : array(),
'topicID' => $topicID,
'msgID' => $msgID,
'type' => $type,
'message' => '' );
$_POST['Post-NS'] = isset($_POST['msgContent']) ? $_POST['msgContent'] : '';
$_POST['msgContent'] = IPSText::raw2form( isset($_POST['msgContent']) ? $_POST['msgContent'] : '' );
//-----------------------------------------
// Fetch topic Data
//-----------------------------------------
$topicData = $this->messengerFunctions->fetchTopicData( $topicID, FALSE );
//-----------------------------------------
// Fetch topic participants
//-----------------------------------------
$topicParticipants = $this->messengerFunctions->fetchTopicParticipants( $topicID, FALSE );
//-----------------------------------------
// Are we allowed in here?
//-----------------------------------------
if ( $this->messengerFunctions->canAccessTopic( $this->memberData['member_id'], $topicData, $topicParticipants ) !== TRUE )
{
$this->registry->getClass('output')->showError( 'messenger_no_msgid', 10229, null, null, 403 );
}
//-----------------------------------------
// Load editor
//-----------------------------------------
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' );
$_editor = new $classToLoad();
$_editor->setAllowHtml( false );
//-----------------------------------------
// Got a message ID?
//-----------------------------------------
if ( $msgID AND ! $_POST['Post-NS'] )
{
$msgData = $this->messengerFunctions->fetchMessageData( $topicID, $msgID, TRUE );
if ( $msgData['msg_post'] )
{
if ( $type == 'reply' )
{
/* Load parser */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/text/parser.php', 'classes_text_parser' );
$parser = new $classToLoad();
/* We're quoting a post... */
$displayData['message'] = $parser->buildQuoteTag( $msgData['msg_post'], $msgData['members_display_name'], $msgData['msg_date'], 0, 0 );
}
else if ( $type == 'edit' )
{
/* Reset post key */
$this->_postKey = $msgData['msg_post_key'];
$displayData['message'] = $msgData['msg_post'];
}
}
}
//-----------------------------------------
// Previewing...
//-----------------------------------------
if ( $preview )
{
/* Grab language for attachment previews */
$this->registry->getClass( 'class_localization')->loadLanguageFile( array( "public_topic" ), 'forums' );
/* Load parser */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/text/parser.php', 'classes_text_parser' );
$parser = new $classToLoad();
$parser->set( array( 'memberData' => $this->memberData,
'parseBBCode' => 1,
'parseArea' => 'pms',
'parseHtml' => 0,
'parseEmoticons' => 1 ) );
$msg = $_editor->process( $_POST['Post-NS'] );
$msg = $parser->display( $msg );
if ( ! is_object( $this->class_attach ) )
{
//-----------------------------------------
// Grab render attach class
//-----------------------------------------
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' );
$this->class_attach = new $classToLoad( $this->registry );
}
//-----------------------------------------
// Continue...
//-----------------------------------------
$this->class_attach->type = 'msg';
$this->class_attach->attach_post_key = $this->_postKey;
$this->class_attach->init();
$attachData = $this->class_attach->renderAttachments( array( 0 => $msg ) );
$displayData['preview'] = $attachData[0]['html'] . $attachData[0]['attachmentHtml'];
}
//-----------------------------------------
// Errors
//-----------------------------------------
if( is_array($errors) AND count($errors) )
{
$preview = 1;
}
if ( IPSText::getTextClass('bbcode')->error != "" )
{
if ( IPSText::getTextClass('bbcode')->error )
{
$displayData['errors'][] = $this->lang->words[ IPSText::getTextClass('bbcode')->error ];
}
$preview = 1;
}
//-----------------------------------------
// Are we quoting an old message?
//-----------------------------------------
if ( $preview )
{
$displayData['message'] = ( $displayData['message'] ) ? $displayData['message'] : $_POST['Post-NS'];
}
$_editor->setContent( $displayData['message'] );
$displayData['editor'] = $_editor->show( 'msgContent', array( 'height' => 350 ) );
//-----------------------------------------
// More Data...
//-----------------------------------------
$displayData['uploadData'] = ( $this->_canUpload ) ? array( 'canUpload' => 1 ) : array( 'canUpload' => 0 );
$displayData['postKey'] = $this->_postKey;
//-----------------------------------------
// Load attachments so we get some stats
//-----------------------------------------
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' );
$class_attach = new $classToLoad( $this->registry );
$class_attach->type = 'msg';
$class_attach->init();
$class_attach->getUploadFormSettings();
$displayData['uploadData']['attach_stats'] = $class_attach->attach_stats;
//-----------------------------------------
// Build up the HTML for the send form
//-----------------------------------------
$_folder = $topicParticipants[ $this->memberData['member_id'] ]['map_folder_id'];
$this->messengerFunctions->_currentFolderID = $_folder;
$this->_navigation[] = array( $this->messengerFunctions->_dirData[ $_folder ]['real'], "app=members&module=messaging&section=view&do=showFolder&folderID=".$_folder."&sort=".$this->request['sort'] );
$this->_navigation[] = array( $topicData['mt_title'], "app=members&module=messaging&section=view&do=showConversation&topicID=".$topicData['mt_id'] );
if ( $type == 'reply' )
{
$this->_title = $this->lang->words['sendMsgTitle'];
$this->_navigation[] = array( $this->lang->words['sendMsgTitle'], '' );
}
else
{
$this->_title = $this->lang->words['edit_msg_title'];
$this->_navigation[] = array( $this->lang->words['edit_msg_title'], '' );
}
return $this->registry->getClass('output')->getTemplate('messaging')->sendReplyForm( $displayData );
}
/**
* Show PM form
*
* @param string Error message
* @return string returns HTML
*/
protected function _showNewTopicForm( $errors='' )
{
//-----------------------------------------
// INIT
//-----------------------------------------
/* Check max per day */
if( $this->messengerFunctions->checkHasHitMax() )
{
$this->registry->getClass('output')->showError( 'maxperday_hit', 10271 );
}
/* Check PM flood */
if( $this->messengerFunctions->floodControlCheck() !== TRUE )
{
$this->registry->getClass('output')->showError( sprintf( $this->lang->words['pm_flood_stop'], $this->messengerFunctions->exceptionData[0] ), 010271 );
}
/* Check limit*/
if ( !$this->messengerFunctions->withinPMQuota( $this->memberData ) )
{
$this->registry->getClass('output')->showError( 'cannot_send_new_limit', 10273, FALSE, '', 40 );
}
$_msg_id = 0;
$formMemberID = intval($this->request['fromMemberID']); # WAS MID
$topicID = intval($this->request['topicID']);
$preview = $this->request['preview'];
$inviteUsers = array();
$displayData = array( 'errors' => $errors ? array( $errors ) : array(),
'topicID' => $topicID,
'preview' => '',
'name' => '',
'title' => '',
'message' => '' );
$_POST['Post-NS'] = isset($_POST['Post']) ? $_POST['Post'] : '';
$_POST['Post'] = IPSText::raw2form( isset($_POST['Post']) ? $_POST['Post'] : '' );
//-----------------------------------------
// Load editor
//-----------------------------------------
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/editor/composite.php', 'classes_editor_composite' );
$_editor = new $classToLoad();
$_editor->setAllowHtml( false );
//-----------------------------------------
// Preview post?
//-----------------------------------------
if ( $preview )
{
/* Grab language for attachment previews */
$this->registry->getClass( 'class_localization')->loadLanguageFile( array( "public_topic" ), 'forums' );
/* Load parser */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/text/parser.php', 'classes_text_parser' );
$parser = new $classToLoad();
$parser->set( array( 'memberData' => $this->memberData,
'parseBBCode' => 1,
'parseArea' => 'pms',
'parseHtml' => 0,
'parseEmoticons' => 1 ) );
if( $this->request['_from'] == 'quickPM' )
{
$old_msg = $_editor->process( $_editor->fromPlainTextArea( $_POST['Post'] ) );
}
else
{
$old_msg = $_editor->process( $_POST['Post'] );
}
$old_msg = $parser->display( $old_msg );
if ( ! is_object( $this->class_attach ) )
{
//-----------------------------------------
// Grab render attach class
//-----------------------------------------
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' );
$this->class_attach = new $classToLoad( $this->registry );
}
//-----------------------------------------
// Continue...
//-----------------------------------------
$this->class_attach->type = 'msg';
$this->class_attach->attach_post_key = $this->_postKey;
$this->class_attach->init();
$attachData = $this->class_attach->renderAttachments( array( 0 => $old_msg ) );
$displayData['preview'] = $attachData[0]['html'] . $attachData[0]['attachmentHtml'];
}
//-----------------------------------------
// Errors
//-----------------------------------------
if ( $errors OR ( IPSText::getTextClass('bbcode')->error != "" ) )
{
if ( IPSText::getTextClass('bbcode')->error )
{
$displayData['errors'][] = $this->lang->words[ IPSText::getTextClass('bbcode')->error ];
}
$preview = 1;
}
//-----------------------------------------
// Did we come from a button with a user ID?
//-----------------------------------------
if ( $formMemberID )
{
$name = IPSMember::load( $formMemberID, 'core' );
if ( $name['member_id'] )
{
$displayData['name'] = $name['members_display_name'];
}
}
else
{
$displayData['name'] = $this->request['entered_name'] ? $this->request['entered_name'] : '';
}
//-----------------------------------------
// Are we quoting an old message?
//-----------------------------------------
if ( $preview )
{
$displayData['message'] = $_POST['Post-NS'];
if( $this->request['_from'] == 'quickPM' )
{
$displayData['message'] = IPSText::parseCleanValue( $displayData['message'], true );
}
$displayData['title'] = str_replace( "'", "'", str_replace( '"', '"', IPSText::stripslashes($_POST['msg_title']) ) );
}
//-----------------------------------------
// Sending as draft...
//-----------------------------------------
else if ( $topicID )
{
$draftTopic = $this->messengerFunctions->fetchTopicDataWithMessage( $topicID, TRUE );
/* Permission to view this? */
if ( $draftTopic['mt_starter_id'] == $this->memberData['member_id'] )
{
if ( $draftTopic['mt_to_member_id'] )
{
$displayData['name'] = $draftTopic['from_name'];
}
if ( $draftTopic['mt_title'] )
{
$_member = IPSMember::load( $draftTopic['mt_to_member_id'], 'core' );
$displayData['name'] = $_member['members_display_name'];
$displayData['title'] = $draftTopic['mt_title'];
$_msg_id = $draftTopic['msg_id'];
$this->_postKey = $draftTopic['msg_post_key'];
/* Load parser */
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/text/parser.php', 'classes_text_parser' );
$parser = new $classToLoad();
$parser->set( array( 'memberData' => $this->memberData,
'parseBBCode' => 1,
'parseArea' => 'pms',
'parseHtml' => 0,
'parseEmoticons' => 1 ) );
$displayData['message'] = $draftTopic['msg_post'];
}
}
}
//-----------------------------------------
// CC Boxes
//-----------------------------------------
if ( $this->memberData['g_max_mass_pm'] > 0 )
{
if ( $_POST['inviteUsers'] )
{
$displayData['inviteUsers'] = IPSText::parseCleanValue( $_POST['inviteUsers'] );
}
else if ( $draftTopic['mt_invited_members'] )
{
$_inviteUsers = $this->messengerFunctions->getInvitedUsers( $draftTopic['mt_invited_members'] );
$__inviteUsers = IPSMember::load( $_inviteUsers, 'core' );
if ( is_array( $__inviteUsers ) )
{
$_tmp = array();
foreach( $__inviteUsers as $id => $data )
{
$_tmp[] = $data['members_display_name'];
}
if ( is_array( $_tmp ) )
{
$displayData['inviteUsers'] = implode( ", ", $_tmp );
}
}
}
}
$_editor->setContent( $displayData['message'] );
$displayData['editor'] = $_editor->show( 'Post', array( 'height' => 350 ) );
//-----------------------------------------
// More Data...
//-----------------------------------------
$displayData['uploadData'] = ( $this->_canUpload ) ? array( 'canUpload' => 1 ) : array( 'canUpload' => 0 );
$displayData['postKey'] = $this->_postKey;
//-----------------------------------------
// Load attachments so we get some stats
//-----------------------------------------
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' );
$class_attach = new $classToLoad( $this->registry );
$class_attach->type = 'msg';
$class_attach->init();
$class_attach->getUploadFormSettings();
$displayData['uploadData']['attach_stats'] = $class_attach->attach_stats;
//-----------------------------------------
// Build up the HTML for the send form
//-----------------------------------------
$this->_title = $this->lang->words['sendMsgTitle'];
$this->_navigation[] = array( $this->lang->words['sendMsgTitle'], '' );
return $this->registry->getClass('output')->getTemplate('messaging')->sendNewPersonalTopicForm( $displayData );
}
}