212 lines
6.5 KiB
PHP
212 lines
6.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* <pre>
|
|
* Invision Power Services
|
|
* IP.Board v3.2.3
|
|
* Online list
|
|
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
|
|
* </pre>
|
|
*
|
|
* @author $Author: ips_terabyte $
|
|
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
|
* @license This is NULLED!
|
|
* @package IP.Board
|
|
* @subpackage Members
|
|
* @link http://hatynka.in
|
|
* @since 12th March 2002
|
|
* @version $Revision: 8644 $
|
|
*
|
|
*/
|
|
|
|
|
|
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_search extends ipsCommand
|
|
{
|
|
/**
|
|
* Page title
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $_title;
|
|
|
|
/**
|
|
* Navigation entries
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $_navigation;
|
|
|
|
/**
|
|
* Messenger library
|
|
*
|
|
* @var object
|
|
*/
|
|
public $messengerFunctions;
|
|
|
|
/**
|
|
* Error string
|
|
*
|
|
* @var string
|
|
*/
|
|
public $_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', 10226, null, null, 403 );
|
|
}
|
|
|
|
if ( $this->memberData['members_disable_pm'] )
|
|
{
|
|
$this->registry->getClass('output')->showError( 'messenger_disabled', 10227, null, null, 403 );
|
|
}
|
|
|
|
if ( ! $this->memberData['member_id'] )
|
|
{
|
|
$this->registry->getClass('output')->showError( 'messenger_no_guests', 10228, null, null, 403 );
|
|
}
|
|
|
|
if( ! IPSLib::moduleIsEnabled( 'messaging', 'members' ) )
|
|
{
|
|
$this->registry->getClass('output')->showError( 'messenger_disabled', 10227.1, null, null, 404 );
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Language
|
|
//-----------------------------------------
|
|
|
|
$this->registry->class_localization->loadLanguageFile( array( 'public_messaging' ), 'members' );
|
|
$this->registry->class_localization->loadLanguageFile( array( 'public_topic' ), 'forums' );
|
|
|
|
//-----------------------------------------
|
|
// 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();
|
|
|
|
//-----------------------------------------
|
|
// What to do?
|
|
//-----------------------------------------
|
|
|
|
switch( $this->request['do'] )
|
|
{
|
|
default:
|
|
case 'search':
|
|
$html = $this->_search();
|
|
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, $this->_topicParticipants, $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();
|
|
}
|
|
|
|
/**
|
|
* Search. Do it.
|
|
*
|
|
* @param string Any error text
|
|
* @return string returns HTML
|
|
*/
|
|
protected function _search( $error='' )
|
|
{
|
|
//-----------------------------------------
|
|
// INIT
|
|
//-----------------------------------------
|
|
|
|
$start = intval($this->request['st']);
|
|
$p_end = $this->settings['show_max_msg_list'] > 0 ? $this->settings['show_max_msg_list'] : 50;
|
|
$searchFor_TAINTED = IPSText::parseCleanValue( urldecode( $_REQUEST['searchFor'] ) );
|
|
$searchIn = '';
|
|
|
|
/* Got an error? */
|
|
if ( $error )
|
|
{
|
|
$this->_errorString = $error;
|
|
}
|
|
|
|
/* Search for owt? */
|
|
if( ! $searchFor_TAINTED )
|
|
{
|
|
$error = $this->lang->words['search_convo_no_keywords'];
|
|
}
|
|
else if( ( $this->settings['min_search_word'] && strlen( $searchFor_TAINTED ) < $this->settings['min_search_word'] ) )
|
|
{
|
|
$error = sprintf( $this->lang->words['search_term_short'], $this->settings['min_search_word'] );
|
|
}
|
|
/* Do the search */
|
|
else
|
|
{
|
|
$searchResults = $this->messengerFunctions->searchMessages( $this->memberData['member_id'], $searchFor_TAINTED, $start, $p_end, array() );
|
|
$totalMsg = $searchResults['totalMatches'];
|
|
$messages = $searchResults['results'];
|
|
|
|
/* Got anything? */
|
|
if ( ! $totalMsg OR ( ! count( $messages ) ) )
|
|
{
|
|
$error = $this->lang->words['search_convo_no_results'];
|
|
}
|
|
}
|
|
//-----------------------------------------
|
|
// Generate Pagination
|
|
//-----------------------------------------
|
|
|
|
$pages = $this->registry->getClass('output')->generatePagination( array( 'totalItems' => $totalMsg,
|
|
'itemsPerPage' => $p_end,
|
|
'currentStartValue' => $start,
|
|
'baseUrl' => "app=members&module=messaging&section=search&do=search&searchFor=" . urlencode( $searchFor_TAINTED ) ) );
|
|
|
|
//-----------------------------------------
|
|
// Set title
|
|
//-----------------------------------------
|
|
|
|
$this->_title = $this->lang->words['t_welcome'] . $this->lang->words['search_results_pt'];
|
|
|
|
//-----------------------------------------
|
|
// Set navigation
|
|
//-----------------------------------------
|
|
|
|
//$this->_navigation[] = array( $this->messengerFunctions->_dirData[ $this->messengerFunctions->_currentFolderID ]['real'], $this->settings['base_url']."app=members&module=messaging&section=view&do=showFolder&folderID=".$this->messengerFunctions->_currentFolderID."&sort=".$this->request['sort'] );
|
|
|
|
//-----------------------------------------
|
|
// Done...
|
|
//-----------------------------------------
|
|
|
|
return $this->registry->getClass('output')->getTemplate('messaging')->showSearchResults( $messages, $pages, $error );
|
|
}
|
|
} |