Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/admin/applications/members/modules_admin/ajax/members.php
Строк: 550
<?php
/**
* <pre>
* Invision Power Services
* IP.Board v3.4.6
* Member list AJAX handler
* Last Updated: $Date: 2012-10-26 11:50:52 -0400 (Fri, 26 Oct 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
* @version $Revision: 11525 $
*/
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 admin_members_ajax_members extends ipsAjaxCommand
{
/**
* Main class entry point
*
* @param object ipsRegistry reference
* @return @e void [Outputs to screen]
*/
public function doExecute( ipsRegistry $registry )
{
$this->registry->class_localization->loadLanguageFile( array( 'admin_member' ), 'members' );
switch( $this->request['do'] )
{
default:
case 'show':
$this->show();
break;
case 'do_validating':
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'membertools_validating', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
$this->_manageValidating();
break;
case 'unappemail':
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'membertools_validating', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
$this->_emailUnapprove();
break;
case 'do_locked':
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'membertools_locked', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
$this->_unlock();
break;
case 'do_spam':
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'membertools_spam', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
$this->_unSpam();
break;
case 'do_banned':
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'membertools_banned', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
$this->_unban();
break;
case 'do_incomplete':
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'membertools_incomplete', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
$this->_doIncomplete();
break;
case 'do_delete':
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'member_delete', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
$this->_doDelete();
break;
}
}
/**
* Delete members [form+process]
*
* @return @e void
*/
protected function _doDelete()
{
//-----------------------------------------
// Check input
//-----------------------------------------
$ids = IPSLib::fetchInputAsArray( 'mid_' );
if ( !count($ids) )
{
$this->returnJsonError( $this->lang->words['m_nomember'] );
}
/* Don't delete our selves */
if( in_array( $this->memberData['member_id'], $ids ) )
{
$this->returnJsonError( $this->lang->words['m_nodeleteslefr'] );
}
//-----------------------------------------
// Get accounts
//-----------------------------------------
$this->DB->build( array( 'select' => 'member_id, name, member_group_id, mgroup_others', 'from' => 'members', 'where' => 'member_id IN(' . implode( ',', $ids ) . ')' ) );
$this->DB->execute();
$names = array();
$newIds = array();
while ( $r = $this->DB->fetch() )
{
//-----------------------------------------
// r u trying to kill teh admin?
//-----------------------------------------
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'member_delete_admin' ) )
{
if( $this->caches['group_cache'][ $r['member_group_id'] ]['g_access_cp'] )
{
continue;
}
else
{
$other_mgroups = explode( ',', IPSText::cleanPermString( $r['mgroup_others'] ) );
if( count($other_mgroups) )
{
foreach( $other_mgroups as $other_mgroup )
{
if( $this->caches['group_cache'][ $other_mgroup ]['g_access_cp'] )
{
continue 2;
}
}
}
}
}
$names[] = $r['name'];
$newIds[] = $r['member_id'];
}
//-----------------------------------------
// Check
//-----------------------------------------
if ( ! count( $names ) )
{
$this->returnJsonError( $this->lang->words['m_nomember'] );
}
//-----------------------------------------
// Delete
//-----------------------------------------
IPSMember::remove( $newIds, true );
ipsRegistry::getClass('adminFunctions')->saveAdminLog( sprintf( $this->lang->words['m_deletedlog'], implode( ",", $names ) ) );
//-----------------------------------------
// Respond
//-----------------------------------------
$this->returnJsonArray( array( 'ok' => 1, 'msg' => sprintf( $this->lang->words['m_deletedlog'], implode( ",", $names ) ) ) );
}
/**
* Show the results
*
* @return @e void [Outputs to screen]
*/
protected function show()
{
//-----------------------------------------
// INIT
//-----------------------------------------
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir('members') . '/sources/adminSearch.php', 'adminMemberSearch', 'members' );
$searchHelper = new $classToLoad( $this->registry );
$html = $this->registry->output->loadTemplate('cp_skin_member');
//-----------------------------------------
// Get the number of results
//-----------------------------------------
$count = $searchHelper->getSearchResultsCount();
IPSDebug::fireBug( 'info', array( 'Total results:' . $count ) );
//-----------------------------------------
// Generate pagination
//-----------------------------------------
$st = intval($this->request['st']);
$perpage = 20;
$pages = $this->registry->output->generatePagination( array(
'totalItems' => $count,
'itemsPerPage' => $perpage,
'currentStartValue' => $st,
'baseUrl' => $this->settings['base_url'] . 'module=members&section=members',
) );
//-----------------------------------------
// Run the query
//-----------------------------------------
$members = $searchHelper->getSearchResults( $st, $perpage );
IPSDebug::fireBug( 'info', array( 'Total results (2):' . count($members) ) );
//-----------------------------------------
// Format results
//-----------------------------------------
$_memberOutput = '';
if( count($members) )
{
foreach( $members as $member )
{
/* Ensure encoding is safe */
//$member['members_display_name'] = IPSText::encodeForXml( $member['members_display_name'] );
//$member['name'] = IPSText::encodeForXml( $member['name'] );
/* The above causes strings returned on utf-8 sites to be entirely corrupted
@link http://community.invisionpower.com/tracker/issue-32444-ajax-for-text-in-acp */
IPSDebug::fireBug( 'info', array( 'Showing member:' . $member['members_display_name'] . ' (' . $member['email'] . ' - ' . $member['member_id'] . ')' ) );
switch( $searchHelper->getMemberType() )
{
case 'all':
default:
$_memberOutput .= $html->memberListRow( $member );
break;
case 'spam':
$_memberOutput .= $html->memberListRow_spam( $member );
break;
case 'banned':
$_memberOutput .= $html->memberListRow_banned( $member );
break;
case 'locked':
$_memberOutput .= $html->memberListRow_locked( $member );
break;
case 'validating':
$_memberOutput .= $html->memberListRow_validating( $member );
break;
case 'incomplete':
$_memberOutput .= $html->memberListRow_incomplete( $member );
break;
}
}
}
else
{
$_memberOutput = $html->memberListRow_empty();
}
//-----------------------------------------
// Return as JSON
//-----------------------------------------
$this->returnJsonArray( array(
'count' => $count,
'pages' => $pages,
'members' => $_memberOutput ) );
}
/**
* Manage incomplete members
*
* @return @e void [Outputs to screen]
*/
protected function _doIncomplete()
{
//-----------------------------------------
// Check
//-----------------------------------------
$ids = IPSLib::fetchInputAsArray( 'mid_' );
if ( count($ids) < 1 )
{
$this->returnJsonError( $this->lang->words['t_nomemsel'] );
}
//-----------------------------------------
// DELETE
//-----------------------------------------
if ( $this->request['type'] == 'delete' )
{
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'member_delete', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
try
{
$message = $this->_getManagementClass()->deleteMembers( $ids, 't_inc_removed' );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
else if( $this->request['type'] == 'finalize' )
{
try
{
$message = $this->_getManagementClass()->finalizeMembers( $ids );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
}
/**
* Manage validating members
*
* @return @e void [Outputs to screen]
*/
protected function _manageValidating()
{
//-----------------------------------------
// Check
//-----------------------------------------
$ids = IPSLib::fetchInputAsArray( 'mid_' );
if ( count($ids) < 1 )
{
$this->returnJsonError( $this->lang->words['t_nomemsel'] );
}
//-----------------------------------------
// APPROVE
//-----------------------------------------
if ( $this->request['type'] == 'approve' )
{
try
{
$message = $this->_getManagementClass()->approveMembers( $ids );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
//-----------------------------------------
// Resend validation email
//-----------------------------------------
else if ( $this->request['type'] == 'resend' )
{
try
{
$message = $this->_getManagementClass()->resendValidationEmails( $ids );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
//-----------------------------------------
// Ban
//-----------------------------------------
else if( $this->request['type'] == 'ban' )
{
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'member_ban', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
try
{
$message = $this->_getManagementClass()->banMembers( $ids );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
//-----------------------------------------
// SPAMMER
//-----------------------------------------
else if ( $this->request['type'] == 'spam' )
{
try
{
$message = $this->_getManagementClass()->markMembersAsSpam( $ids );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
//-----------------------------------------
// DELETE
//-----------------------------------------
else
{
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'member_delete', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
try
{
$message = $this->_getManagementClass()->denyMembers( $ids );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
}
/**
* Manage spam requests
*
* @return @e void [Outputs to screen]
*/
protected function _unSpam()
{
//-----------------------------------------
// Check
//-----------------------------------------
$ids = IPSLib::fetchInputAsArray( 'mid_' );
if ( count($ids) < 1 )
{
$this->returnJsonError( $this->lang->words['t_nomemunspammed'] );
}
//-----------------------------------------
// Unspam
//-----------------------------------------
if ( $this->request['type'] == 'unspam' OR $this->request['type'] == 'unspam_posts' )
{
try
{
$message = $this->_getManagementClass()->unmarkMembersAsSpam( $ids, ( $this->request['type'] == 'unspam' OR $this->request['type'] == 'unspam_posts' ) ? true : false );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
//-----------------------------------------
// Ban
//-----------------------------------------
else if ( $this->request['type'] == 'ban' OR $this->request['type'] == 'ban_blacklist' )
{
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'member_ban', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
try
{
$message = $this->_getManagementClass()->banSpammers( $ids, $this->request['type'] == 'ban_blacklist' ? true : false );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
else if( $this->request['type'] == 'delete' )
{
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'member_delete', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
$message = $this->_getManagementClass()->deleteMembers( $ids );
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
}
/**
* Manage banned requests
*
* @return @e void [Outputs to screen]
*/
protected function _unban()
{
//-----------------------------------------
// Check
//-----------------------------------------
$ids = IPSLib::fetchInputAsArray( 'mid_' );
if ( count($ids) < 1 )
{
$this->returnJsonError( $this->lang->words['t_nomemunban'] );
}
//-----------------------------------------
// Unlock
//-----------------------------------------
if ( $this->request['type'] == 'unban' )
{
try
{
$message = $this->_getManagementClass()->unbanMembers( $ids );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
//-----------------------------------------
// Delete
//-----------------------------------------
else if ( $this->request['type'] == 'delete' )
{
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'member_delete', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
$message = $this->_getManagementClass()->deleteMembers( $ids );
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
}
/**
* Unapprove email change request
*
* @return @e void [Outputs to screen]
*/
protected function _emailUnapprove()
{
//-----------------------------------------
// GET member
//-----------------------------------------
if( !$this->request['mid'] )
{
$this->returnJsonError( $this->lang->words['t_noemailloc'] );
}
try
{
$message = $this->_getManagementClass()->unapproveEmailChange( $this->request['mid'] );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
/**
* Unlock selected accounts
*
* @return @e void [Outputs to screen]
*/
protected function _unlock()
{
//-----------------------------------------
// Check
//-----------------------------------------
$ids = IPSLib::fetchInputAsArray( 'mid_' );
if ( count($ids) < 1 )
{
$this->returnJsonError( $this->lang->words['t_nolockloc'], 11251 );
}
//-----------------------------------------
// Unlock
//-----------------------------------------
if ( $this->request['type'] == 'unlock' )
{
try
{
$message = $this->_getManagementClass()->unlockMembers( $ids );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
//-----------------------------------------
// Ban
//-----------------------------------------
else if ( $this->request['type'] == 'ban' )
{
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'member_ban', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
try
{
$message = $this->_getManagementClass()->banMembers( $ids );
}
catch( Exception $error )
{
$this->returnJsonError( $error->getMessage() );
}
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
//-----------------------------------------
// Delete
//-----------------------------------------
else if ( $this->request['type'] == 'delete' )
{
$this->registry->getClass('class_permissions')->return = true;
if( ! $this->registry->getClass('class_permissions')->checkPermission( 'member_delete', 'members', 'members' ) )
{
$this->returnJsonError( $this->lang->words['no_permission'] );
}
$message = $this->_getManagementClass()->deleteMembers( $ids );
$this->returnJsonArray( array( 'ok' => 1, 'msg' => $message ) );
}
}
/**
* Get the member management class
*
* @return object
*/
protected function _getManagementClass()
{
static $_object = null;
if ( $_object === null )
{
$_class = IPSLib::loadLibrary( IPSLib::getAppDir( 'members' ) . '/sources/adminManage.php', 'adminMemberManagement', 'members' );
$_object = new $_class( $this->registry );
}
return $_object;
}
}