Version 4.5.0
This commit is contained in:
1 parent
1a0c7fd3c2
commit
f79dcf067a
3791 files changed
+248032
-76372
No files matched your search
@@ -11,7 +11,7 @@
|
||||
namespace IPS\core\modules\front\messaging;
|
||||
|
||||
/* To prevent PHP errors (extending class does not exist) revealing path */
|
||||
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
|
||||
{
|
||||
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
|
||||
exit;
|
||||
@@ -149,7 +149,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
'core_message_posts.msg_topic_id=core_message_topics.mt_id'
|
||||
)->join(
|
||||
'core_message_topic_user_map',
|
||||
'core_message_topic_user_map.map_topic_id=core_message_topics.mt_id AND core_message_topic_user_map.map_user_id=' . intval( \IPS\Member::loggedIn()->member_id )
|
||||
'core_message_topic_user_map.map_topic_id=core_message_topics.mt_id AND core_message_topic_user_map.map_user_id=' . \intval( \IPS\Member::loggedIn()->member_id )
|
||||
)->first();
|
||||
$row['last_message'] = \IPS\core\Messenger\Conversation::load( $row['mt_id'] )->comments( 1, 0, 'date', 'desc' );
|
||||
$row['participants'] = \IPS\core\Messenger\Conversation::load( $row['mt_id'] )->participantBlurb();
|
||||
@@ -165,7 +165,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
$maxPages = ceil( $conversation->replies / $conversation::getCommentsPerPage() );
|
||||
if ( \IPS\Request::i()->page > $maxPages )
|
||||
{
|
||||
\IPS\Output::i()->redirect( $baseUrl->setQueryString( 'page', $maxPages ) );
|
||||
\IPS\Output::i()->redirect( $baseUrl->setPage( 'page', $maxPages ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -236,7 +236,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
/* Add a folder filter, if we are not coming from the Messages menu */
|
||||
if ( !isset( \IPS\Request::i()->_fromMenu ) )
|
||||
{
|
||||
if ( !is_null( $folder ) AND isset( $folders[ $folder ] ) )
|
||||
if ( !\is_null( $folder ) AND isset( $folders[ $folder ] ) )
|
||||
{
|
||||
$where[] = array( 'core_message_topic_user_map.map_folder_id=?', $folder );
|
||||
}
|
||||
@@ -252,12 +252,11 @@ class _messenger extends \IPS\Content\Controller
|
||||
|
||||
if ( \IPS\Request::i()->q )
|
||||
{
|
||||
/* Limit result set to prevent time outs */
|
||||
$where[] = array( 'core_message_topic_user_map.map_last_topic_reply > ?', \IPS\DateTime::ts( time() )->sub( new \DateInterval( 'P1Y' ) )->getTimeStamp() );
|
||||
|
||||
$subQuery = \IPS\Db::i()->select( 'map_topic_id', array( 'core_message_topic_user_map', 'core_message_topic_user_map' ), $where );
|
||||
$where = array( array( 'core_message_posts.msg_topic_id IN (?)', $subQuery ) );
|
||||
$query = array();
|
||||
$prefix = \IPS\Db::i()->prefix;
|
||||
|
||||
if ( isset( \IPS\Request::i()->search ) and $searchValues = \IPS\Request::i()->valueFromArray('search') )
|
||||
{
|
||||
if ( isset( $searchValues['topic'] ) )
|
||||
@@ -270,14 +269,14 @@ class _messenger extends \IPS\Content\Controller
|
||||
}
|
||||
if ( isset( $searchValues['recipient'] ) )
|
||||
{
|
||||
$query[] = "receiving_member.name LIKE '%" . \IPS\Db::i()->escape_string( \IPS\Request::i()->q ) . "%'";
|
||||
$query[] = "core_message_posts.msg_topic_id IN ( SELECT sender_map.map_topic_id FROM {$prefix}core_message_topic_user_map AS sender_map WHERE sender_map.map_is_starter=1 AND sender_map.map_user_id IN ( SELECT member_id FROM {$prefix}core_members AS sm WHERE name LIKE '" . \IPS\Db::i()->escape_string( \IPS\Request::i()->q ) . "%' ) )";
|
||||
}
|
||||
if ( isset( $searchValues['sender'] ) )
|
||||
{
|
||||
$query[] = "sending_member.name LIKE '%" . \IPS\Db::i()->escape_string( \IPS\Request::i()->q ) . "%'";
|
||||
$query[] = "core_message_posts.msg_topic_id IN ( SELECT receiver_map.map_topic_id FROM {$prefix}core_message_topic_user_map AS receiver_map WHERE receiver_map.map_is_starter=0 AND receiver_map.map_user_id IN ( SELECT member_id FROM {$prefix}core_members AS rm WHERE name LIKE '" . \IPS\Db::i()->escape_string( \IPS\Request::i()->q ) . "%') )";
|
||||
}
|
||||
|
||||
if ( count( $query ) )
|
||||
if ( \count( $query ) )
|
||||
{
|
||||
$where[] = array( '(' . implode( ' OR ', $query ) . ')' );
|
||||
}
|
||||
@@ -286,7 +285,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
/* Get a count */
|
||||
try
|
||||
{
|
||||
$count = \IPS\Db::i()->select( 'COUNT( DISTINCT(msg_topic_id) )', 'core_message_posts', array_merge( $where, array( array( 'core_message_topic_user_map.map_last_topic_reply > ?', \IPS\DateTime::ts( time() )->sub( new \DateInterval( 'P1Y' ) )->getTimeStamp() ) ) ) )
|
||||
$count = \IPS\Db::i()->select( 'COUNT( DISTINCT( msg_topic_id ) )', 'core_message_posts', $where )
|
||||
->join(
|
||||
'core_message_topics',
|
||||
'core_message_posts.msg_topic_id=core_message_topics.mt_id'
|
||||
@@ -295,22 +294,6 @@ class _messenger extends \IPS\Content\Controller
|
||||
'core_message_topic_user_map',
|
||||
'core_message_topic_user_map.map_topic_id=core_message_topics.mt_id'
|
||||
)
|
||||
->join(
|
||||
array( 'core_message_topic_user_map', 'sender_map' ),
|
||||
'sender_map.map_topic_id=core_message_topics.mt_id AND sender_map.map_is_starter=1'
|
||||
)
|
||||
->join(
|
||||
array( 'core_message_topic_user_map', 'receiver_map' ),
|
||||
'receiver_map.map_topic_id=core_message_topics.mt_id AND receiver_map.map_is_starter=0'
|
||||
)
|
||||
->join(
|
||||
array( 'core_members', 'sending_member' ),
|
||||
'sending_member.member_id=sender_map.map_user_id'
|
||||
)
|
||||
->join(
|
||||
array( 'core_members', 'receiving_member' ),
|
||||
'receiving_member.member_id=receiver_map.map_user_id'
|
||||
)
|
||||
->first();
|
||||
}
|
||||
catch( \UnderflowException $e )
|
||||
@@ -322,13 +305,13 @@ class _messenger extends \IPS\Content\Controller
|
||||
if( $count )
|
||||
{
|
||||
/* Because of strict group by, we first need to select the ids, then grab those topics */
|
||||
$sortColumn = ( in_array( \IPS\Request::i()->sortBy, array( 'mt_last_post_time', 'mt_start_time', 'mt_replies' ) ) ? \IPS\Request::i()->sortBy : 'mt_last_post_time' );
|
||||
$sortColumn = ( \in_array( \IPS\Request::i()->sortBy, array( 'mt_last_post_time', 'mt_start_time', 'mt_replies' ) ) ? \IPS\Request::i()->sortBy : 'mt_last_post_time' );
|
||||
$iterator = \IPS\Db::i()->select(
|
||||
'core_message_posts.msg_topic_id',
|
||||
'core_message_posts',
|
||||
$where,
|
||||
$sortColumn . ' DESC',
|
||||
array( ( intval( \IPS\Request::i()->listPage ?: 1 ) - 1 ) * $perPage, $perPage ),
|
||||
array( ( \intval( \IPS\Request::i()->listPage ?: 1 ) - 1 ) * $perPage, $perPage ),
|
||||
array( 'msg_topic_id', $sortColumn )
|
||||
)->join(
|
||||
'core_message_topics',
|
||||
@@ -336,22 +319,6 @@ class _messenger extends \IPS\Content\Controller
|
||||
)->join(
|
||||
'core_message_topic_user_map',
|
||||
'core_message_topic_user_map.map_topic_id=core_message_topics.mt_id'
|
||||
)
|
||||
->join(
|
||||
array( 'core_message_topic_user_map', 'sender_map' ),
|
||||
'sender_map.map_topic_id=core_message_topics.mt_id AND sender_map.map_is_starter=1'
|
||||
)
|
||||
->join(
|
||||
array( 'core_message_topic_user_map', 'receiver_map' ),
|
||||
'receiver_map.map_topic_id=core_message_topics.mt_id AND receiver_map.map_is_starter=0'
|
||||
)
|
||||
->join(
|
||||
array( 'core_members', 'sending_member' ),
|
||||
'sending_member.member_id=sender_map.map_user_id'
|
||||
)
|
||||
->join(
|
||||
array( 'core_members', 'receiving_member' ),
|
||||
'receiving_member.member_id=receiver_map.map_user_id'
|
||||
);
|
||||
|
||||
/* Get iterator */
|
||||
@@ -359,8 +326,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
'core_message_topic_user_map.*, core_message_topics.*',
|
||||
'core_message_topic_user_map',
|
||||
array( 'map_topic_id IN(' . implode( ',', iterator_to_array( $iterator ) ) . ')' ),
|
||||
( in_array( \IPS\Request::i()->sortBy, array( 'mt_last_post_time', 'mt_start_time', 'mt_replies' ) ) ? \IPS\Request::i()->sortBy : 'mt_last_post_time' ) . ' DESC',
|
||||
array( ( intval( \IPS\Request::i()->listPage ?: 1 ) - 1 ) * $perPage, $perPage )
|
||||
$sortColumn . ' DESC'
|
||||
)->join(
|
||||
'core_message_topics',
|
||||
'core_message_topic_user_map.map_topic_id=core_message_topics.mt_id'
|
||||
@@ -380,8 +346,8 @@ class _messenger extends \IPS\Content\Controller
|
||||
'core_message_topic_user_map.*, core_message_topics.*',
|
||||
'core_message_topic_user_map',
|
||||
$where,
|
||||
( in_array( \IPS\Request::i()->sortBy, array( 'mt_last_post_time', 'mt_start_time', 'mt_replies' ) ) ? \IPS\Request::i()->sortBy : 'mt_last_post_time' ) . ' DESC',
|
||||
array( ( intval( \IPS\Request::i()->listPage ?: 1 ) - 1 ) * $perPage, $perPage )
|
||||
( \in_array( \IPS\Request::i()->sortBy, array( 'mt_last_post_time', 'mt_start_time', 'mt_replies' ) ) ? \IPS\Request::i()->sortBy : 'mt_last_post_time' ) . ' DESC',
|
||||
array( ( \intval( \IPS\Request::i()->listPage ?: 1 ) - 1 ) * $perPage, $perPage )
|
||||
)->join(
|
||||
'core_message_topics',
|
||||
'core_message_topic_user_map.map_topic_id=core_message_topics.mt_id'
|
||||
@@ -389,11 +355,43 @@ class _messenger extends \IPS\Content\Controller
|
||||
}
|
||||
}
|
||||
|
||||
/* Get the map data in one query to avoid querying it separately for each message */
|
||||
$messageIds = array();
|
||||
$userIds = array();
|
||||
$maps = array();
|
||||
$results = $count ? iterator_to_array( $iterator ) : array();
|
||||
|
||||
foreach( $results as $row )
|
||||
{
|
||||
$messageIds[] = $row['mt_id'];
|
||||
}
|
||||
|
||||
foreach( \IPS\Db::i()->select( '*', 'core_message_topic_user_map', array( \IPS\Db::i()->in( 'map_topic_id', $messageIds ) ) )->setKeyField( 'map_user_id' ) as $mapRow )
|
||||
{
|
||||
$maps[ $mapRow['map_topic_id'] ][ $mapRow['map_user_id'] ] = $mapRow;
|
||||
$userIds[ $mapRow['map_user_id'] ] = $mapRow['map_user_id'];
|
||||
}
|
||||
|
||||
if( \count( $userIds ) )
|
||||
{
|
||||
foreach( \IPS\Db::i()->select( 'member_id, name', 'core_members', array( \IPS\Db::i()->in( 'member_id', $userIds ) ) ) as $member )
|
||||
{
|
||||
if ( $member['member_id'] === \IPS\Member::loggedIn()->member_id )
|
||||
{
|
||||
$member['name'] = \IPS\Member::loggedIn()->language()->addToStack('participant_you_lower');
|
||||
}
|
||||
|
||||
\IPS\core\Messenger\Conversation::$participantMembers[ $member['member_id'] ] = $member['name'];
|
||||
}
|
||||
}
|
||||
|
||||
/* Build the message list */
|
||||
$conversations = array();
|
||||
|
||||
foreach ( $iterator as $row )
|
||||
foreach ( $results as $row )
|
||||
{
|
||||
\IPS\core\Messenger\Conversation::constructFromData( $row )->maps = $maps[ $row['mt_id'] ];
|
||||
|
||||
$row['last_message'] = \IPS\core\Messenger\Conversation::load( $row['mt_id'] )->comments( 1, 0, 'date', 'desc' );
|
||||
$row['participants'] = \IPS\core\Messenger\Conversation::load( $row['mt_id'] )->participantBlurb();
|
||||
$conversations[ $row['mt_id'] ] = $row;
|
||||
@@ -405,11 +403,17 @@ class _messenger extends \IPS\Content\Controller
|
||||
|
||||
/* Display */
|
||||
$listUrl = $baseUrl;
|
||||
$baseUrl = $baseUrl->setQueryString('_list', 1);
|
||||
$baseUrl = $baseUrl->setQueryString( '_list', 1 );
|
||||
|
||||
if( isset( \IPS\Request::i()->filter ) )
|
||||
{
|
||||
$baseUrl = $baseUrl->setQueryString('filter', \IPS\Request::i()->filter );
|
||||
$baseUrl = $baseUrl->setQueryString( 'filter', \IPS\Request::i()->filter );
|
||||
}
|
||||
|
||||
if( isset( \IPS\Request::i()->q ) )
|
||||
{
|
||||
$baseUrl = $baseUrl->setQueryString( 'q', \IPS\Request::i()->q );
|
||||
$baseUrl = $baseUrl->setQueryString( 'search', \IPS\Request::i()->search );
|
||||
}
|
||||
|
||||
$pagination = \IPS\Theme::i()->getTemplate( 'global', 'core', 'global' )->pagination( $baseUrl, ceil( $count / $perPage ), ( \IPS\Request::i()->listPage ?: 1 ), $perPage, TRUE, 'listPage' );
|
||||
@@ -421,10 +425,18 @@ class _messenger extends \IPS\Content\Controller
|
||||
}
|
||||
elseif( \IPS\Request::i()->q )
|
||||
{
|
||||
\IPS\Output::i()->json( array(
|
||||
'data' => \IPS\Theme::i()->getTemplate('messaging')->messageListRows( $conversations, $pagination, FALSE, $folders ),
|
||||
'pagination' => $pagination
|
||||
) );
|
||||
/* If we are viewing > page 1 we need to return HTML instead of an object, since the infinite scroll library will have taken over now and just wants HTML */
|
||||
if( \IPS\Request::i()->listPage AND \IPS\Request::i()->listPage > 1 )
|
||||
{
|
||||
\IPS\Output::i()->sendOutput( \IPS\Theme::i()->getTemplate('messaging')->messageListRows( $conversations, $pagination, FALSE, $folders ), 200, 'text/html' );
|
||||
}
|
||||
else
|
||||
{
|
||||
\IPS\Output::i()->json( array(
|
||||
'data' => \IPS\Theme::i()->getTemplate('messaging')->messageListRows( $conversations, $pagination, FALSE, $folders ),
|
||||
'pagination' => $pagination
|
||||
) );
|
||||
}
|
||||
}
|
||||
elseif( \IPS\Request::i()->overview )
|
||||
{
|
||||
@@ -456,7 +468,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
$form->class = 'ipsForm_vertical';
|
||||
|
||||
\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('compose_new');
|
||||
\IPS\Output::i()->output = $form->customTemplate( array( call_user_func_array( array( \IPS\Theme::i(), 'getTemplate' ), array( 'forms', 'core' ) ), 'popupTemplate' ) );
|
||||
\IPS\Output::i()->output = $form->customTemplate( array( \IPS\Theme::i()->getTemplate( 'forms', 'core' ), 'popupTemplate' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -468,7 +480,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
{
|
||||
\IPS\Session::i()->csrfCheck();
|
||||
|
||||
$folders = json_decode( \IPS\Member::loggedIn()->pconversation_filters, TRUE );
|
||||
$folders = json_decode( \IPS\Member::loggedIn()->pconversation_filters, TRUE ) ?? array();
|
||||
array_walk( $folders, function( &$val )
|
||||
{
|
||||
$val = htmlspecialchars( $val, ENT_DISALLOWED | ENT_QUOTES, 'UTF-8' );
|
||||
@@ -497,7 +509,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
}
|
||||
|
||||
\IPS\Output::i()->title = 'messenger_move';
|
||||
\IPS\Output::i()->output = $form->customTemplate( array( call_user_func_array( array( \IPS\Theme::i(), 'getTemplate' ), array( 'forms', 'core' ) ), 'popupTemplate' ) );
|
||||
\IPS\Output::i()->output = $form->customTemplate( array( \IPS\Theme::i()->getTemplate( 'forms', 'core' ), 'popupTemplate' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -513,7 +525,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
$form->add( new \IPS\Helpers\Form\Text( 'messenger_add_folder_name', NULL, TRUE ) );
|
||||
if ( $values = $form->values() )
|
||||
{
|
||||
$folders = json_decode( \IPS\Member::loggedIn()->pconversation_filters, TRUE );
|
||||
$folders = json_decode( \IPS\Member::loggedIn()->pconversation_filters, TRUE ) ?? array();
|
||||
$folders[] = $values['messenger_add_folder_name'];
|
||||
\IPS\Member::loggedIn()->pconversation_filters = json_encode( $folders );
|
||||
\IPS\Member::loggedIn()->save();
|
||||
@@ -529,12 +541,12 @@ class _messenger extends \IPS\Content\Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messenger' ) );
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messaging' ) );
|
||||
}
|
||||
}
|
||||
|
||||
$form->class = 'ipsForm_vertical';
|
||||
$formHtml = $form->customTemplate( array( call_user_func_array( array( \IPS\Theme::i(), 'getTemplate' ), array( 'forms', 'core' ) ), 'popupTemplate' ) );
|
||||
$formHtml = $form->customTemplate( array( \IPS\Theme::i()->getTemplate( 'forms', 'core' ), 'popupTemplate' ) );
|
||||
|
||||
\IPS\Output::i()->output = \IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'messaging' )->folderForm( 'add', $formHtml );
|
||||
}
|
||||
@@ -549,7 +561,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
\IPS\Session::i()->csrfCheck();
|
||||
\IPS\Db::i()->update( 'core_message_topic_user_map', array( 'map_has_unread' => FALSE ), array( 'map_user_id=? AND map_folder_id=?', \IPS\Member::loggedIn()->member_id, \IPS\Request::i()->folder ) );
|
||||
\IPS\core\Messenger\Conversation::rebuildMessageCounts( \IPS\Member::loggedIn() );
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messenger' ) );
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messaging' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -563,13 +575,18 @@ class _messenger extends \IPS\Content\Controller
|
||||
|
||||
/* Make sure the user confirmed the deletion */
|
||||
\IPS\Request::i()->confirmedDelete();
|
||||
|
||||
|
||||
/* Make sure the user isn't playing with the URL to do strange things */
|
||||
$folders = json_decode( \IPS\Member::loggedIn()->pconversation_filters, TRUE ) ?? array();
|
||||
|
||||
if( \IPS\Request::i()->folder == 'myconvo' OR !isset( $folders[ \IPS\Request::i()->folder ] ) )
|
||||
{
|
||||
\IPS\Output::i()->error( 'messenger_cannot_delete_folder', '3C137/C', 404, '' );
|
||||
}
|
||||
|
||||
\IPS\Db::i()->update( 'core_message_topic_user_map', array( 'map_user_active' => FALSE, 'map_left_time' => time() ), array( 'map_user_id=? AND map_folder_id=?', \IPS\Member::loggedIn()->member_id, \IPS\Request::i()->folder ) );
|
||||
|
||||
$folders = json_decode( \IPS\Member::loggedIn()->pconversation_filters, TRUE );
|
||||
|
||||
unset( $folders[ \IPS\Request::i()->folder ] );
|
||||
|
||||
\IPS\Member::loggedIn()->pconversation_filters = json_encode( $folders );
|
||||
\IPS\Member::loggedIn()->save();
|
||||
|
||||
@@ -581,7 +598,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messenger' ) );
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messaging' ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -602,7 +619,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messenger' ) );
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messaging' ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -615,7 +632,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
{
|
||||
\IPS\Session::i()->csrfCheck();
|
||||
|
||||
$folders = json_decode( \IPS\Member::loggedIn()->pconversation_filters, TRUE );
|
||||
$folders = json_decode( \IPS\Member::loggedIn()->pconversation_filters, TRUE );
|
||||
|
||||
$form = new \IPS\Helpers\Form;
|
||||
$form->add( new \IPS\Helpers\Form\Text( 'messenger_add_folder_name', $folders[ \IPS\Request::i()->folder ], TRUE ) );
|
||||
@@ -634,12 +651,12 @@ class _messenger extends \IPS\Content\Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messenger' ) );
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messaging' ) );
|
||||
}
|
||||
}
|
||||
|
||||
$form->class = 'ipsForm_vertical';
|
||||
$formHtml = $form->customTemplate( array( call_user_func_array( array( \IPS\Theme::i(), 'getTemplate' ), array( 'forms', 'core' ) ), 'popupTemplate' ) );
|
||||
$formHtml = $form->customTemplate( array( \IPS\Theme::i()->getTemplate( 'forms', 'core' ), 'popupTemplate' ) );
|
||||
|
||||
\IPS\Output::i()->output = \IPS\Output::i()->output = \IPS\Theme::i()->getTemplate( 'messaging' )->folderForm( 'rename', $formHtml );
|
||||
}
|
||||
@@ -733,6 +750,12 @@ class _messenger extends \IPS\Content\Controller
|
||||
}
|
||||
}
|
||||
|
||||
/* Check member limit */
|
||||
if ( \IPS\Member::loggedIn()->group['g_max_mass_pm'] !== -1 AND $conversation->to_count + \count( $members ) > \IPS\Member::loggedIn()->group['g_max_mass_pm'] )
|
||||
{
|
||||
\IPS\Output::i()->error( 'messenger_too_many_recipients', '3C137/D', 403, '' );
|
||||
}
|
||||
|
||||
/* If we failed to load any members, error out if we're not ajaxing */
|
||||
if ( $failed > 0 && !\IPS\Request::i()->isAjax() )
|
||||
{
|
||||
@@ -766,7 +789,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
|
||||
foreach ( $maps as $map )
|
||||
{
|
||||
if( in_array( $map['map_user_id'], $ids ) )
|
||||
if( \in_array( $map['map_user_id'], $ids ) )
|
||||
{
|
||||
$memberHTML[ $map['map_user_id'] ] = \IPS\Theme::i()->getTemplate( 'messaging' )->participant( $map, $conversation );
|
||||
}
|
||||
@@ -861,7 +884,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
{
|
||||
$ids = \IPS\Request::i()->id;
|
||||
|
||||
if ( !is_array( \IPS\Request::i()->id ) )
|
||||
if ( !\is_array( \IPS\Request::i()->id ) )
|
||||
{
|
||||
$ids = array( $ids );
|
||||
}
|
||||
@@ -882,7 +905,7 @@ class _messenger extends \IPS\Content\Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messenger' ) );
|
||||
\IPS\Output::i()->redirect( \IPS\Http\Url::internal( 'app=core&module=messaging&controller=messenger', 'front', 'messaging' ) );
|
||||
}
|
||||
}
|
||||
catch ( \OutOfRangeException $e )
|
||||
|
||||
Reference in new issue
Block a user