Version 3.2.3
This commit is contained in:
1 parent
ae5c01cc78
commit
78706903a2
2641 files changed
+228363
-201264
No files matched your search
@@ -1,32 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* Define the default ajax section
|
||||
* Last Updated: $Date: 2010-01-15 10:18:44 -0500 (Fri, 15 Jan 2010) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @file defaultSection.php Define the default section for the 'ajax' module
|
||||
*~TERABYTE_DOC_READY~
|
||||
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
|
||||
* $License: This is NULLED!
|
||||
* $Author: ips_terabyte $
|
||||
* @since 20th February 2002
|
||||
* @version $Rev: 5713 $
|
||||
*
|
||||
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
|
||||
* @version v3.2.3
|
||||
* $Revision: 8655 $
|
||||
*/
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Very simply returns the default section if one is not
|
||||
* passed in the URL
|
||||
*/
|
||||
|
||||
$DEFAULT_SECTION = 'editform';
|
||||
$DEFAULT_SECTION = 'editform';
|
||||
@@ -2,18 +2,18 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* IP.Board v3.2.3
|
||||
* Member property updater (AJAX)
|
||||
* Last Updated: $Date: 2010-10-21 07:08:38 -0400 (Thu, 21 Oct 2010) $
|
||||
* Last Updated: $Date: 2011-06-09 18:03:22 -0400 (Thu, 09 Jun 2011) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: ips_terabyte $
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @license This is NULLED!
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Revision: 7007 $
|
||||
* @link http://hatynka.in
|
||||
* @version $Revision: 9021 $
|
||||
*/
|
||||
|
||||
if ( ! defined( 'IN_IPB' ) )
|
||||
@@ -28,7 +28,7 @@ class admin_members_ajax_editform extends ipsAjaxCommand
|
||||
* Main class entry point
|
||||
*
|
||||
* @param object ipsRegistry reference
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
public function doExecute( ipsRegistry $registry )
|
||||
{
|
||||
@@ -40,18 +40,6 @@ class admin_members_ajax_editform extends ipsAjaxCommand
|
||||
case 'show':
|
||||
$this->show();
|
||||
break;
|
||||
case 'save_display_name':
|
||||
$this->save_member_name( 'members_display_name' );
|
||||
break;
|
||||
case 'save_name':
|
||||
$this->save_member_name( 'name' );
|
||||
break;
|
||||
case 'save_password':
|
||||
$this->save_password();
|
||||
break;
|
||||
case 'save_email':
|
||||
$this->save_email();
|
||||
break;
|
||||
case 'remove_photo':
|
||||
$this->remove_photo();
|
||||
break;
|
||||
@@ -61,7 +49,7 @@ class admin_members_ajax_editform extends ipsAjaxCommand
|
||||
/**
|
||||
* Remove user's photo
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
protected function remove_photo()
|
||||
{
|
||||
@@ -93,35 +81,9 @@ class admin_members_ajax_editform extends ipsAjaxCommand
|
||||
exit();
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Sort out upload dir
|
||||
//-----------------------------------------
|
||||
|
||||
/* Fix for bug 5075 */
|
||||
$this->settings[ 'upload_dir'] = str_replace( '.', '.', $this->settings['upload_dir'] );
|
||||
|
||||
$upload_path = $this->settings['upload_dir'];
|
||||
|
||||
//-----------------------------------------
|
||||
// Already a dir?
|
||||
//-----------------------------------------
|
||||
|
||||
if ( file_exists( $upload_path . "/profile" ) )
|
||||
{
|
||||
# Set path and dir correct
|
||||
$upload_path .= "/profile";
|
||||
$upload_dir = "profile/";
|
||||
}
|
||||
|
||||
IPSMember::getFunction()->removeUploadedPhotos( $member_id, $upload_path );
|
||||
|
||||
IPSMember::save( $member_id, array( 'extendedProfile' => array( 'pp_main_photo' => '',
|
||||
'pp_main_width' => 0,
|
||||
'pp_main_height' => 0,
|
||||
'pp_thumb_photo' => '',
|
||||
'pp_thumb_width' => 0,
|
||||
'pp_thumb_height' => 0,
|
||||
) ) );
|
||||
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/member/photo.php', 'classes_member_photo' );
|
||||
$photos = new $classToLoad( $this->registry );
|
||||
$photos->remove( $member_id );
|
||||
|
||||
ipsRegistry::getClass('adminFunctions')->saveAdminLog( sprintf($this->lang->words['m_imgremlog'], $member_id ) );
|
||||
|
||||
@@ -140,352 +102,10 @@ class admin_members_ajax_editform extends ipsAjaxCommand
|
||||
) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Change a member's email address
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
*/
|
||||
protected function save_email()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// INIT
|
||||
//-----------------------------------------
|
||||
|
||||
$member_id = intval( $this->request['member_id'] );
|
||||
$email = trim( $this->request['email'] );
|
||||
|
||||
//-----------------------------------------
|
||||
// Get member
|
||||
//-----------------------------------------
|
||||
|
||||
$member = IPSMember::load( $member_id );
|
||||
|
||||
if ( ! $member['member_id'] )
|
||||
{
|
||||
$this->returnJsonError( $this->lang->words['m_noid'] );
|
||||
exit();
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Allowed to edit administrators?
|
||||
//-----------------------------------------
|
||||
|
||||
if( $member['g_access_cp'] AND !$this->registry->getClass('class_permissions')->checkPermission( 'member_edit_admin', 'members', 'members' ) )
|
||||
{
|
||||
$this->returnJsonError( $this->lang->words['m_editadmin'] );
|
||||
exit();
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Is this email addy taken? CONVERGE THIS??
|
||||
//-----------------------------------------
|
||||
|
||||
$email_check = IPSMember::load( mb_strtolower($email) );
|
||||
|
||||
if ( $email_check['member_id'] AND $email_check['member_id'] != $member_id )
|
||||
{
|
||||
$this->returnJsonError( $this->lang->words['m_emailalready'] );
|
||||
exit();
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Load handler...
|
||||
//-----------------------------------------
|
||||
|
||||
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/handlers/han_login.php', 'han_login' );
|
||||
$han_login = new $classToLoad( $this->registry );
|
||||
$han_login->init();
|
||||
$han_login->changeEmail( trim( mb_strtolower( $member['email'] ) ), trim( mb_strtolower( $email ) ), $member );
|
||||
|
||||
//-----------------------------------------
|
||||
// We don't want to die just from a Converge error
|
||||
//-----------------------------------------
|
||||
|
||||
/*if ( $han_login->return_code AND ( $han_login->return_code != 'METHOD_NOT_DEFINED' AND $han_login->return_code != 'SUCCESS' ) )
|
||||
{
|
||||
$this->returnJsonError( $this->lang->words['m_emailalready'] );
|
||||
exit();
|
||||
}*/
|
||||
|
||||
//-----------------------------------------
|
||||
// Update member
|
||||
//-----------------------------------------
|
||||
|
||||
IPSLib::runMemberSync( 'onEmailChange', $member_id, mb_strtolower( $email ), $member['email'] );
|
||||
|
||||
IPSMember::save( $member_id, array( 'core' => array( 'email' => mb_strtolower( $email ) ) ) );
|
||||
|
||||
ipsRegistry::getClass('adminFunctions')->saveAdminLog( sprintf( $this->lang->words['m_emailchangelog'], $member['email'], $email, $member_id ) );
|
||||
|
||||
$this->returnJsonArray( array(
|
||||
'success' => 1,
|
||||
'email' => $email
|
||||
) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Change a member's password
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @todo This method is no longer working via AJAX (on purpose). It should be moved out of the AJAX controller as such.
|
||||
*/
|
||||
protected function save_password()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// INIT
|
||||
//-----------------------------------------
|
||||
|
||||
$member_id = intval( $this->request['member_id'] );
|
||||
$password = IPSText::parseCleanValue( urldecode( $_POST['password'] ) );
|
||||
$password2 = IPSText::parseCleanValue( urldecode( $_POST['password2'] ) );
|
||||
$new_key = intval( $this->request['new_key'] );
|
||||
$new_salt = intval( $this->request['new_salt'] );
|
||||
$salt = str_replace( '\\', "\\\\", IPSMember::generatePasswordSalt(5) );
|
||||
$key = IPSMember::generateAutoLoginKey();
|
||||
$md5_once = md5( trim($password) );
|
||||
|
||||
//-----------------------------------------
|
||||
// AJAX debug
|
||||
//-----------------------------------------
|
||||
|
||||
IPSDebug::fireBug( 'info', array( 'Password: ' . $password ) );
|
||||
|
||||
//-----------------------------------------
|
||||
// Check
|
||||
//-----------------------------------------
|
||||
|
||||
if ( ! $password OR ! $password2 )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['password_nogood'] );
|
||||
}
|
||||
|
||||
if ( $password != $password2 )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['m_passmatch'] );
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Get member
|
||||
//-----------------------------------------
|
||||
|
||||
$member = IPSMember::load( $member_id );
|
||||
|
||||
//-----------------------------------------
|
||||
// Allowed to edit administrators?
|
||||
//-----------------------------------------
|
||||
|
||||
if( $member['g_access_cp'] AND !$this->registry->getClass('class_permissions')->checkPermission( 'member_edit_admin', 'members', 'members' ) )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['m_editadmin'] );
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Check Converge: Password
|
||||
//-----------------------------------------
|
||||
|
||||
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/handlers/han_login.php', 'han_login' );
|
||||
$han_login = new $classToLoad( $this->registry );
|
||||
$han_login->init();
|
||||
$han_login->changePass( $member['email'], $md5_once, $password, $member );
|
||||
|
||||
/*if ( $han_login->return_code != 'METHOD_NOT_DEFINED' AND $han_login->return_code != 'SUCCESS' )
|
||||
{
|
||||
$this->returnJsonError( $this->lang->words['m_passchange']);
|
||||
exit();
|
||||
}*/
|
||||
|
||||
//-----------------------------------------
|
||||
// Local DB
|
||||
//-----------------------------------------
|
||||
|
||||
$update = array();
|
||||
|
||||
if( $new_salt )
|
||||
{
|
||||
$update['members_pass_salt'] = $salt;
|
||||
}
|
||||
|
||||
if( $new_key )
|
||||
{
|
||||
$update['member_login_key'] = $key;
|
||||
}
|
||||
|
||||
if( count($update) )
|
||||
{
|
||||
IPSMember::save( $member_id, array( 'core' => $update ) );
|
||||
}
|
||||
|
||||
IPSMember::updatePassword( $member_id, $md5_once );
|
||||
IPSLib::runMemberSync( 'onPassChange', $member_id, $password );
|
||||
|
||||
ipsRegistry::getClass('adminFunctions')->saveAdminLog( sprintf( $this->lang->words['m_passlog'], $member_id ) );
|
||||
|
||||
//$this->returnJsonArray( array(
|
||||
// 'success' => 1,
|
||||
// 'password' => "*************"
|
||||
// ) );
|
||||
|
||||
$this->registry->output->global_message = $this->lang->words['pw_updated_success'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . 'module=members&do=viewmember&member_id=' . $member_id );
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a user's login or display name
|
||||
*
|
||||
* @param string Field to update
|
||||
* @return void [Outputs to screen]
|
||||
*/
|
||||
protected function save_member_name( $field='members_display_name' )
|
||||
{
|
||||
$member_id = intval( $this->request['member_id'] );
|
||||
|
||||
$member = IPSMember::load( $member_id );
|
||||
|
||||
//-----------------------------------------
|
||||
// Allowed to edit administrators?
|
||||
//-----------------------------------------
|
||||
|
||||
if( $member['g_access_cp'] AND !$this->registry->getClass('class_permissions')->checkPermission( 'member_edit_admin', 'members', 'members' ) )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['m_editadmin'] );
|
||||
}
|
||||
|
||||
if ( $field == 'members_display_name' )
|
||||
{
|
||||
$display_name = $this->convertAndMakeSafe( $_POST['display_name'], 1 );
|
||||
$display_name = str_replace("+", "+", $display_name );
|
||||
}
|
||||
else
|
||||
{
|
||||
$display_name = $this->convertAndMakeSafe( $_POST['name'], 1 );
|
||||
$display_name = str_replace("+", "+", $display_name );
|
||||
|
||||
$display_name = str_replace( '|', '|' , $display_name );
|
||||
$display_name = trim( preg_replace( "/\s{2,}/", " ", $display_name ) );
|
||||
}
|
||||
|
||||
if ( $this->settings['strip_space_chr'] )
|
||||
{
|
||||
// use hexdec to convert between '0xAD' and chr
|
||||
$display_name = IPSText::removeControlCharacters( $display_name );
|
||||
}
|
||||
|
||||
if ( $field == 'members_display_name' AND preg_match( "#[\[\];,\|]#", str_replace(''', "'", str_replace('&', '&', $display_name) ) ) )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['m_displaynames'] );
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if ( IPSMember::getFunction()->updateName( $member_id, $display_name, $field ) === TRUE )
|
||||
{
|
||||
if ( $field == 'members_display_name' )
|
||||
{
|
||||
ipsRegistry::getClass('adminFunctions')->saveAdminLog(sprintf( $this->lang->words['m_dnamelog'], $member['members_display_name'], $display_name ));
|
||||
}
|
||||
else
|
||||
{
|
||||
ipsRegistry::getClass('adminFunctions')->saveAdminLog(sprintf( $this->lang->words['m_namelog'], $member['name'], $display_name ) );
|
||||
|
||||
//-----------------------------------------
|
||||
// If updating a name, and display names
|
||||
// disabled, update display name too
|
||||
//-----------------------------------------
|
||||
|
||||
if( !ipsRegistry::$settings['auth_allow_dnames'] )
|
||||
{
|
||||
IPSMember::getFunction()->updateName( $member_id, $display_name, 'members_display_name' );
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// I say, did we choose to email 'dis member?
|
||||
//-----------------------------------------
|
||||
|
||||
if ( $this->request['send_email'] == 1 )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// By golly, we did!
|
||||
//-----------------------------------------
|
||||
|
||||
$msg = trim( IPSText::stripslashes( nl2br( $_POST['email_contents'] ) ) );
|
||||
|
||||
$msg = str_replace( "{old_name}", $member['name'], $msg );
|
||||
$msg = str_replace( "{new_name}", $display_name , $msg );
|
||||
$msg = str_replace( "<#BOARD_NAME#>", $this->settings['board_name'], $msg );
|
||||
$msg = str_replace( "<#BOARD_ADDRESS#>", $this->settings['board_url'] . '/index.' . $this->settings['php_ext'], $msg );
|
||||
|
||||
IPSText::getTextClass('email')->message = stripslashes( IPSText::getTextClass('email')->cleanMessage($msg) );
|
||||
IPSText::getTextClass('email')->subject = $this->lang->words['m_changesubj'];
|
||||
IPSText::getTextClass('email')->to = $member['email'];
|
||||
IPSText::getTextClass('email')->sendMail();
|
||||
}
|
||||
}
|
||||
|
||||
$this->cache->rebuildCache( 'stats', 'global' );
|
||||
}
|
||||
else
|
||||
{
|
||||
# We should absolutely never get here. So this is a fail-safe, really to
|
||||
# prevent a "false" positive outcome for the end-user
|
||||
$this->registry->output->showError( $this->lang->words['m_namealready'] );
|
||||
}
|
||||
}
|
||||
catch( Exception $error )
|
||||
{
|
||||
// $this->returnJsonError( $error->getMessage() );
|
||||
|
||||
switch( $error->getMessage() )
|
||||
{
|
||||
case 'NO_USER':
|
||||
$this->registry->output->showError( $this->lang->words['m_noid'] );
|
||||
break;
|
||||
case 'NO_PERMISSION':
|
||||
case 'NO_NAME':
|
||||
$this->registry->output->showError( sprintf($this->lang->words['m_morethan3'], $this->settings['max_user_name_length'] ) );
|
||||
break;
|
||||
case 'ILLEGAL_CHARS':
|
||||
$this->registry->output->showError( $this->lang->words['m_illegal'] );
|
||||
break;
|
||||
case 'USER_NAME_EXISTS':
|
||||
$this->registry->output->showError( $this->lang->words['m_namealready'] );
|
||||
break;
|
||||
default:
|
||||
$this->registry->output->showError( $error->getMessage() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Load handler...
|
||||
//-----------------------------------------
|
||||
|
||||
if( $field == 'name' )
|
||||
{
|
||||
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/handlers/han_login.php', 'han_login' );
|
||||
$han_login = new $classToLoad( $this->registry );
|
||||
$han_login->init();
|
||||
$han_login->changeName( $member['name'], $display_name, $member['email'], $member );
|
||||
}
|
||||
else
|
||||
{
|
||||
IPSLib::runMemberSync( 'onNameChange', $member_id, $display_name );
|
||||
}
|
||||
|
||||
$__display_name = addslashes( $display_name );
|
||||
|
||||
//$this->returnJsonArray( array(
|
||||
// 'success' => 1,
|
||||
// 'display_name' => "$__display_name"
|
||||
// ) );
|
||||
|
||||
$this->registry->output->global_message = $this->lang->words[ $field . '_updated_success'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . 'module=members&do=viewmember&member_id=' . $member_id );
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
protected function show()
|
||||
{
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionboard.com/">IP.Board</a>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,762 @@
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.2.3
|
||||
* Member list AJAX handler
|
||||
* Last Updated: $Date: 2011-09-27 21:33:45 -0400 (Tue, 27 Sep 2011) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license This is NULLED!
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://hatynka.in
|
||||
* @version $Revision: 9556 $
|
||||
*/
|
||||
|
||||
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' );
|
||||
$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 */
|
||||
$member['members_display_name'] = $member['members_display_name'];
|
||||
$member['name'] = $member['name'];
|
||||
|
||||
|
||||
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_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;
|
||||
|
||||
if( $_object )
|
||||
{
|
||||
return $_object;
|
||||
}
|
||||
|
||||
$_class = IPSLib::loadLibrary( IPSLib::getAppDir( 'members' ) . '/sources/adminManage.php', 'adminMemberManagement', 'members' );
|
||||
$_object = new $_class( $this->registry );
|
||||
|
||||
return $_object;
|
||||
}
|
||||
}
|
||||
@@ -2,18 +2,18 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* IP.Board v3.2.3
|
||||
* Bulk mail management
|
||||
* Last Updated: $Date: 2010-10-21 07:08:38 -0400 (Thu, 21 Oct 2010) $
|
||||
* Last Updated: $Date: 2011-07-27 20:58:18 -0400 (Wed, 27 Jul 2011) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: ips_terabyte $
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @license This is NULLED!
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Revision: 7007 $
|
||||
* @link http://hatynka.in
|
||||
* @version $Revision: 9327 $
|
||||
*/
|
||||
|
||||
if ( ! defined( 'IN_ACP' ) )
|
||||
@@ -49,7 +49,7 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
* Main class entry point
|
||||
*
|
||||
* @param object ipsRegistry reference
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
public function doExecute( ipsRegistry $registry )
|
||||
{
|
||||
@@ -137,7 +137,7 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
/**
|
||||
* Delete a bulk mail
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
protected function _mailDelete()
|
||||
{
|
||||
@@ -159,7 +159,7 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
/**
|
||||
* Cancels a bulk mail
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
protected function _mailSendCancel()
|
||||
{
|
||||
@@ -176,7 +176,7 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
/**
|
||||
* Processes a bulk mail
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function mailSendProcess()
|
||||
{
|
||||
@@ -230,11 +230,6 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
{
|
||||
$mail[ $k ] = $v;
|
||||
}
|
||||
|
||||
if ( $mail['mail_html_on'] )
|
||||
{
|
||||
$this->settings['html_email'] = 1;
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Format the query
|
||||
@@ -265,6 +260,13 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
|
||||
$contents = $this->_convertQuicktags( $mail['mail_content'], $r );
|
||||
|
||||
/* @link http://community.invisionpower.com/tracker/issue-32116-bulk-mail-only-sends-html-to-first-recipient
|
||||
Needs to be set inside the loop because email handler resets it back */
|
||||
if ( $mail['mail_html_on'] )
|
||||
{
|
||||
IPSText::getTextClass('email')->html_email = 1;
|
||||
}
|
||||
|
||||
IPSText::getTextClass('email')->from = $this->settings['email_out'];
|
||||
IPSText::getTextClass('email')->to = $r['email'];
|
||||
IPSText::getTextClass('email')->message = str_replace( "\r\n", "\n", $contents );
|
||||
@@ -281,9 +283,7 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
{
|
||||
$done = 1;
|
||||
}
|
||||
|
||||
$this->settings['html_email'] = 0;
|
||||
|
||||
|
||||
//-----------------------------------------
|
||||
// Save out..
|
||||
//-----------------------------------------
|
||||
@@ -308,7 +308,7 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
/**
|
||||
* Complete bulk mail processing
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
protected function _mailSendComplete()
|
||||
{
|
||||
@@ -376,7 +376,7 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
/**
|
||||
* Start the sending of the bulk mail
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
protected function _mailSendStart()
|
||||
{
|
||||
@@ -437,7 +437,7 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
/**
|
||||
* Process the sending of the bulk mail
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
protected function _mailPreviewComplete()
|
||||
{
|
||||
@@ -494,7 +494,7 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
/**
|
||||
* Preview the email (javascript popup)
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
protected function _mailPreviewStart()
|
||||
{
|
||||
@@ -506,7 +506,7 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
/**
|
||||
* Save the new or edited bulk mail
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
protected function _mailSave()
|
||||
{
|
||||
@@ -639,7 +639,7 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
* Show the edit bulk mail form
|
||||
*
|
||||
* @param string [add|edit]
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
protected function _mailForm( $type='add' )
|
||||
{
|
||||
@@ -683,7 +683,7 @@ class admin_members_bulkmail_bulkmail extends ipsCommand
|
||||
/**
|
||||
* Show the main bulk mail overview screen
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
protected function _mailStart()
|
||||
{
|
||||
|
||||
@@ -1,32 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* Define the default bulkmail section
|
||||
* Last Updated: $Date: 2010-01-15 10:18:44 -0500 (Fri, 15 Jan 2010) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @file defaultSection.php Define the default section for the 'bulkmail' module
|
||||
*~TERABYTE_DOC_READY~
|
||||
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
|
||||
* $License: This is NULLED!
|
||||
* $Author: ips_terabyte $
|
||||
* @since 20th February 2002
|
||||
* @version $Rev: 5713 $
|
||||
*
|
||||
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
|
||||
* @version v3.2.3
|
||||
* $Revision: 8655 $
|
||||
*/
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Very simply returns the default section if one is not
|
||||
* passed in the URL
|
||||
*/
|
||||
|
||||
$DEFAULT_SECTION = 'bulkmail';
|
||||
$DEFAULT_SECTION = 'bulkmail';
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionboard.com/">IP.Board</a>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionboard.com/">IP.Board</a>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,6 +6,7 @@
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Рассылки</subitemtitle>
|
||||
<subitemlang>bulkmail</subitemlang>
|
||||
<subsection>bulkmail</subsection>
|
||||
<subitemurl>do=bulk_mail</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<permissions>
|
||||
<group>
|
||||
<grouptitle>Управление рассылками</grouptitle>
|
||||
<grouplang>mem_bulkmail</grouplang>
|
||||
<items>
|
||||
<item>
|
||||
<key>bulkmail_addedit</key>
|
||||
@@ -15,6 +16,7 @@
|
||||
</group>
|
||||
<group>
|
||||
<grouptitle>Отправка рассылок</grouptitle>
|
||||
<grouplang>mem_bulkmailsend</grouplang>
|
||||
<items>
|
||||
<item>
|
||||
<key>bulkmail_view</key>
|
||||
|
||||
+45
-58
@@ -2,18 +2,18 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* IP.Board v3.2.3
|
||||
* Custom field management
|
||||
* Last Updated: $Date: 2010-10-23 08:40:34 -0400 (Sat, 23 Oct 2010) $
|
||||
* Last Updated: $Date: 2011-09-12 20:59:05 -0400 (Mon, 12 Sep 2011) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: ips_terabyte $
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @license This is NULLED!
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Revision: 7023 $
|
||||
* @link http://hatynka.in
|
||||
* @version $Revision: 9483 $
|
||||
*/
|
||||
|
||||
if ( ! defined( 'IN_ACP' ) )
|
||||
@@ -22,34 +22,34 @@ if ( ! defined( 'IN_ACP' ) )
|
||||
exit();
|
||||
}
|
||||
|
||||
class admin_members_members_customfields extends ipsCommand
|
||||
class admin_members_cfields_customfields extends ipsCommand
|
||||
{
|
||||
/**
|
||||
* Skin object
|
||||
*
|
||||
* @var object Skin templates
|
||||
*/
|
||||
private $html;
|
||||
protected $html;
|
||||
|
||||
/**
|
||||
* Shortcut for url
|
||||
*
|
||||
* @var string URL shortcut
|
||||
*/
|
||||
private $form_code;
|
||||
protected $form_code;
|
||||
|
||||
/**
|
||||
* Shortcut for url (javascript)
|
||||
*
|
||||
* @var string JS URL shortcut
|
||||
*/
|
||||
private $form_code_js;
|
||||
protected $form_code_js;
|
||||
|
||||
/**
|
||||
* Main class entry point
|
||||
*
|
||||
* @param object ipsRegistry reference
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
public function doExecute( ipsRegistry $registry )
|
||||
{
|
||||
@@ -60,8 +60,8 @@ class admin_members_members_customfields extends ipsCommand
|
||||
$this->html = $this->registry->output->loadTemplate( 'cp_skin_profilefields' );
|
||||
$this->registry->class_localization->loadLanguageFile( array( 'admin_member' ) );
|
||||
|
||||
$this->form_code = $this->html->form_code = '&module=members&section=customfields&';
|
||||
$this->js_form_code = $this->html->form_code_js = '&module=members§ion=customfields&';
|
||||
$this->form_code = $this->html->form_code = '&module=cfields&section=customfields&';
|
||||
$this->js_form_code = $this->html->form_code_js = '&module=cfields§ion=customfields&';
|
||||
|
||||
//-----------------------------------------
|
||||
// switch-a-magoo
|
||||
@@ -104,12 +104,7 @@ class admin_members_members_customfields extends ipsCommand
|
||||
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefields_delete' );
|
||||
$this->doDelete();
|
||||
break;
|
||||
|
||||
case 'group_overview':
|
||||
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_global' );
|
||||
$this->groupOverview();
|
||||
break;
|
||||
|
||||
|
||||
case 'group_form_add':
|
||||
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_global' );
|
||||
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'profilefieldgroups_add' );
|
||||
@@ -159,7 +154,7 @@ class admin_members_members_customfields extends ipsCommand
|
||||
/**
|
||||
* Remove a profile field group
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function groupDelete()
|
||||
{
|
||||
@@ -177,14 +172,14 @@ class admin_members_members_customfields extends ipsCommand
|
||||
/* Done */
|
||||
$this->registry->output->global_message = $this->lang->words['cf_gremoved'];
|
||||
$this->rebuildCache();
|
||||
$this->groupOverview();
|
||||
$this->mainScreen();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the form for adding/editing profile field groups
|
||||
*
|
||||
* @param string $mode Either add or edit
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function groupSave( $mode='add' )
|
||||
{
|
||||
@@ -245,14 +240,14 @@ class admin_members_members_customfields extends ipsCommand
|
||||
|
||||
/* Done */
|
||||
$this->rebuildCache();
|
||||
$this->groupOverview();
|
||||
$this->mainScreen();
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the form for adding/editing profile field groups
|
||||
*
|
||||
* @param string $mode Either add or edit
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function groupForm( $mode='add' )
|
||||
{
|
||||
@@ -297,33 +292,11 @@ class admin_members_members_customfields extends ipsCommand
|
||||
/* Output */
|
||||
$this->registry->output->html .= $this->html->groupForm( $id, $data, $title, $do );
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the group listing screen
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function groupOverview()
|
||||
{
|
||||
/* Query Groups */
|
||||
$this->DB->build( array( 'select' => '*', 'from' => 'pfields_groups' ) );
|
||||
$this->DB->execute();
|
||||
|
||||
$fields = array();
|
||||
|
||||
while( $r = $this->DB->fetch() )
|
||||
{
|
||||
$fields[] = $r;
|
||||
}
|
||||
|
||||
/* Output */
|
||||
$this->registry->output->html .= $this->html->groupList( $fields );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Rebuilds the custom profile field cache
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function rebuildCache()
|
||||
{
|
||||
@@ -359,7 +332,7 @@ class admin_members_members_customfields extends ipsCommand
|
||||
/**
|
||||
* Confirm field deletion form
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function deleteForm()
|
||||
{
|
||||
@@ -387,7 +360,7 @@ class admin_members_members_customfields extends ipsCommand
|
||||
/**
|
||||
* Removes a field from the database
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function doDelete()
|
||||
{
|
||||
@@ -410,11 +383,13 @@ class admin_members_members_customfields extends ipsCommand
|
||||
|
||||
/* Remove the filed */
|
||||
$this->DB->dropField( 'pfields_content', "field_{$row['pf_id']}" );
|
||||
$this->DB->buildAndFetch( array( 'delete' => 'pfields_data', 'where' => "pf_id={$id}" ) );
|
||||
$this->DB->delete( 'pfields_data', "pf_id={$id}" );
|
||||
|
||||
/* Rebuild the cache and redirect */
|
||||
$this->rebuildCache();
|
||||
$this->registry->output->doneScreen( $this->lang->words['cf_removed'], $this->lang->words['cf_control'], $this->form_code, 'redirect' );
|
||||
$this->rebuildCache();
|
||||
|
||||
$this->registry->output->global_message = $this->lang->words['cf_removed'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code );
|
||||
}
|
||||
|
||||
|
||||
@@ -422,7 +397,7 @@ class admin_members_members_customfields extends ipsCommand
|
||||
* Saves a custom field form
|
||||
*
|
||||
* @param string Type (add|edit)
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function mainSave( $type='edit' )
|
||||
{
|
||||
@@ -523,7 +498,7 @@ class admin_members_members_customfields extends ipsCommand
|
||||
* Shows a custom field form
|
||||
*
|
||||
* @param string Type (add|edit)
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function mainForm( $type='edit' )
|
||||
{
|
||||
@@ -598,7 +573,7 @@ class admin_members_members_customfields extends ipsCommand
|
||||
/**
|
||||
* Lists the current custom profile fields
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function mainScreen()
|
||||
{
|
||||
@@ -620,6 +595,7 @@ class admin_members_members_customfields extends ipsCommand
|
||||
|
||||
/* Loop through and build list */
|
||||
$fields = array();
|
||||
|
||||
if ( $this->DB->getTotalRows() )
|
||||
{
|
||||
while ( $r = $this->DB->fetch() )
|
||||
@@ -638,6 +614,17 @@ class admin_members_members_customfields extends ipsCommand
|
||||
}
|
||||
}
|
||||
|
||||
/* Make sure we have all of the groups
|
||||
@link http://community.invisionpower.com/tracker/issue-33386-custom-fields-groups-dont-appear-after-created-while-is-empty */
|
||||
$this->DB->build( array( 'select' => '*', 'from' => 'pfields_groups' ) );
|
||||
$this->DB->execute();
|
||||
|
||||
while( $r = $this->DB->fetch() )
|
||||
{
|
||||
$key = $r['pf_group_name'] ? $r['pf_group_name'] : $this->lang->words['nogroup_other'];
|
||||
$fields[ $key ] = count($fields[ $key ]) ? $fields[ $key ] : $r['pf_group_id'];
|
||||
}
|
||||
|
||||
/* Output */
|
||||
$this->registry->output->html .= $this->html->customProfileFieldsList( $fields );
|
||||
}
|
||||
@@ -645,9 +632,9 @@ class admin_members_members_customfields extends ipsCommand
|
||||
/**
|
||||
* Reorder fields
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
private function reorder()
|
||||
protected function reorder()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// INIT
|
||||
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* @file defaultSection.php Define the default section for the 'cfields' module
|
||||
*~TERABYTE_DOC_READY~
|
||||
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
|
||||
* $License: This is NULLED!
|
||||
* $Author: ips_terabyte $
|
||||
* @since 20th February 2002
|
||||
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
|
||||
* @version v3.2.3
|
||||
* $Revision: 8655 $
|
||||
*/
|
||||
|
||||
$DEFAULT_SECTION = 'customfields';
|
||||
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head><title>IP.Board - Bulletin Board System</title></head>
|
||||
<body>
|
||||
<h1>403: IP.Board -> Forbidden</h1>
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<head><title>IP.Board - Bulletin Board System</title></head>
|
||||
<body>
|
||||
<h1>403: IP.Board -> Forbidden</h1>
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<menu>
|
||||
<tabitems>
|
||||
<item>
|
||||
<title>Custom Profile Fields</title>
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Custom Profile Fields</subitemtitle>
|
||||
<subitemlang>customfields</subitemlang>
|
||||
<subsection>customfields</subsection>
|
||||
<subitemurl></subitemurl>
|
||||
<subitemrolekey>profilefields_global</subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
</subitems>
|
||||
</item>
|
||||
</tabitems>
|
||||
</menu>
|
||||
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<permissions>
|
||||
<group>
|
||||
<grouptitle>Custom Profile Fields</grouptitle>
|
||||
<grouplang>members_cfields</grouplang>
|
||||
<items>
|
||||
<item>
|
||||
<key>profilefields_global</key>
|
||||
<string>Can access custom profile fields management?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>profilefields_add</key>
|
||||
<string>Can add new profile fields?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>profilefields_edit</key>
|
||||
<string>Can edit profile fields?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>profilefields_delete</key>
|
||||
<string>Can delete profile fields?</string>
|
||||
</item>
|
||||
</items>
|
||||
</group>
|
||||
<group>
|
||||
<grouptitle>Custom Profile Field Groups</grouptitle>
|
||||
<grouplang>members_cfieldgroups</grouplang>
|
||||
<items>
|
||||
<item>
|
||||
<key>profilefieldgroups_global</key>
|
||||
<string>Can access custom profile field group management?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>profilefieldgroups_add</key>
|
||||
<string>Can add new profile field group?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>profilefieldgroups_edit</key>
|
||||
<string>Can edit profile field group?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>profilefieldgroups_delete</key>
|
||||
<string>Can delete profile field group?</string>
|
||||
</item>
|
||||
</items>
|
||||
</group>
|
||||
</permissions>
|
||||
@@ -1,32 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* Define the default groups section
|
||||
* Last Updated: $Date: 2010-01-15 10:18:44 -0500 (Fri, 15 Jan 2010) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @file defaultSection.php Define the default section for the 'groups' module
|
||||
*~TERABYTE_DOC_READY~
|
||||
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
|
||||
* $License: This is NULLED!
|
||||
* $Author: ips_terabyte $
|
||||
* @since 20th February 2002
|
||||
* @version $Rev: 5713 $
|
||||
*
|
||||
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
|
||||
* @version v3.2.3
|
||||
* $Revision: 8655 $
|
||||
*/
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Very simply returns the default section if one is not
|
||||
* passed in the URL
|
||||
*/
|
||||
|
||||
$DEFAULT_SECTION = 'groups';
|
||||
$DEFAULT_SECTION = 'groups';
|
||||
@@ -2,18 +2,18 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* IP.Board v3.2.3
|
||||
* Group management
|
||||
* Last Updated: $Date: 2010-10-23 08:40:34 -0400 (Sat, 23 Oct 2010) $
|
||||
* Last Updated: $Date: 2011-10-05 15:30:51 -0400 (Wed, 05 Oct 2011) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: ips_terabyte $
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @license This is NULLED!
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Revision: 7023 $
|
||||
* @link http://hatynka.in
|
||||
* @version $Revision: 9582 $
|
||||
*/
|
||||
|
||||
if ( ! defined( 'IN_ACP' ) )
|
||||
@@ -29,27 +29,27 @@ class admin_members_groups_groups extends ipsCommand
|
||||
*
|
||||
* @var object Skin templates
|
||||
*/
|
||||
private $html;
|
||||
protected $html;
|
||||
|
||||
/**
|
||||
* Shortcut for url
|
||||
*
|
||||
* @var string URL shortcut
|
||||
*/
|
||||
private $form_code;
|
||||
protected $form_code;
|
||||
|
||||
/**
|
||||
* Shortcut for url (javascript)
|
||||
*
|
||||
* @var string JS URL shortcut
|
||||
*/
|
||||
private $form_code_js;
|
||||
protected $form_code_js;
|
||||
|
||||
/**
|
||||
* Main class entry point
|
||||
*
|
||||
* @param object ipsRegistry reference
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
public function doExecute( ipsRegistry $registry )
|
||||
{
|
||||
@@ -129,9 +129,9 @@ class admin_members_groups_groups extends ipsCommand
|
||||
/**
|
||||
* List the groups
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
private function _mainScreen()
|
||||
protected function _mainScreen()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// INIT
|
||||
@@ -141,13 +141,7 @@ class admin_members_groups_groups extends ipsCommand
|
||||
$content = "";
|
||||
$form = array();
|
||||
$rows = array();
|
||||
|
||||
//-----------------------------------------
|
||||
// Page details
|
||||
//-----------------------------------------
|
||||
|
||||
$this->registry->output->extra_nav[] = array( $this->form_code, $this->lang->words['g_nav'] );
|
||||
|
||||
//-----------------------------------------
|
||||
// Get groups
|
||||
//-----------------------------------------
|
||||
@@ -203,7 +197,7 @@ class admin_members_groups_groups extends ipsCommand
|
||||
/**
|
||||
* Exports the groups to a master XML file for distribution
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
public function masterXMLExport()
|
||||
{
|
||||
@@ -215,22 +209,17 @@ class admin_members_groups_groups extends ipsCommand
|
||||
$skip = IPSLib::fetchNonDefaultGroupFields();
|
||||
|
||||
//-----------------------------------------
|
||||
// Get XML class
|
||||
// Get xml class
|
||||
//-----------------------------------------
|
||||
|
||||
require_once( IPS_KERNEL_PATH . 'class_xml.php' );
|
||||
|
||||
$xml = new class_xml();
|
||||
$xml->doc_type = IPS_DOC_CHAR_SET;
|
||||
require_once( IPS_KERNEL_PATH.'classXML.php' );/*noLibHook*/
|
||||
|
||||
$xml->xml_set_root( 'export', array( 'exported' => time() ) );
|
||||
|
||||
//-----------------------------------------
|
||||
// Set group
|
||||
//-----------------------------------------
|
||||
|
||||
$xml->xml_add_group( 'group' );
|
||||
$xml = new classXML( IPS_DOC_CHAR_SET );
|
||||
|
||||
$xml->newXMLDocument();
|
||||
$xml->addElement( 'export' );
|
||||
$xml->addElement( 'group', 'export' );
|
||||
|
||||
//-----------------------------------------
|
||||
// Grab our default 6 groups
|
||||
//-----------------------------------------
|
||||
@@ -247,38 +236,31 @@ class admin_members_groups_groups extends ipsCommand
|
||||
$content = array();
|
||||
$r['g_icon'] = '';
|
||||
|
||||
//-----------------------------------------
|
||||
// Sort the fields...
|
||||
//-----------------------------------------
|
||||
|
||||
foreach( $r as $k => $v )
|
||||
if( is_array($skip) AND count($skip) )
|
||||
{
|
||||
if ( ! in_array( $k, $skip ) )
|
||||
foreach( $skip as $_kk )
|
||||
{
|
||||
$content[] = $xml->xml_build_simple_tag( $k, $v );
|
||||
unset( $r[ $_kk ] );
|
||||
}
|
||||
}
|
||||
|
||||
$entry[] = $xml->xml_build_entry( 'row', $content );
|
||||
$xml->addElementAsRecord( 'group', 'row', $r );
|
||||
}
|
||||
|
||||
$xml->xml_add_entry_to_group( 'group', $entry );
|
||||
$xml->xml_format_document();
|
||||
|
||||
//-----------------------------------------
|
||||
// Print to browser
|
||||
//-----------------------------------------
|
||||
|
||||
$this->registry->output->showDownload( $xml->xml_document, 'groups.xml', '', 0 );
|
||||
$this->registry->output->showDownload( $xml->fetchDocument(), 'groups.xml', '', 0 );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Form to delete a group
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
private function _deleteForm()
|
||||
protected function _deleteForm()
|
||||
{
|
||||
$group_id = intval($this->request['id']);
|
||||
$group = $this->caches['group_cache'][ $group_id ];
|
||||
@@ -314,9 +296,9 @@ class admin_members_groups_groups extends ipsCommand
|
||||
/**
|
||||
* Delete the group
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
private function _doDelete()
|
||||
protected function _doDelete()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// INIT
|
||||
@@ -470,9 +452,9 @@ class admin_members_groups_groups extends ipsCommand
|
||||
* Save the group [add/edit]
|
||||
*
|
||||
* @param string 'add' or 'edit'
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
private function _saveGroup( $type='edit' )
|
||||
protected function _saveGroup( $type='edit' )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// INIT
|
||||
@@ -576,9 +558,9 @@ class admin_members_groups_groups extends ipsCommand
|
||||
}
|
||||
}
|
||||
|
||||
$this->request[ 'p_max'] = str_replace( ":", "", $this->request['p_max'] );
|
||||
$this->request[ 'p_width'] = str_replace( ":", "", $this->request['p_width'] );
|
||||
$this->request[ 'p_height'] = str_replace( ":", "", $this->request['p_height'] );
|
||||
$this->request['p_max'] = str_replace( ":", "", $this->request['p_max'] );
|
||||
$this->request['p_width'] = str_replace( ":", "", $this->request['p_width'] );
|
||||
$this->request['p_height'] = str_replace( ":", "", $this->request['p_height'] );
|
||||
|
||||
$sig_limits = array(
|
||||
$this->request['use_signatures'],
|
||||
@@ -593,12 +575,10 @@ class admin_members_groups_groups extends ipsCommand
|
||||
// Set the db array
|
||||
//-----------------------------------------
|
||||
|
||||
$db_string = array(
|
||||
'g_view_board' => intval($this->request['g_view_board']),
|
||||
$db_string = array( 'g_view_board' => intval($this->request['g_view_board']),
|
||||
'g_mem_info' => intval($this->request['g_mem_info']),
|
||||
'g_can_add_friends' => intval($this->request['g_can_add_friends']),
|
||||
'g_use_search' => intval($this->request['g_use_search']),
|
||||
'g_email_friend' => intval($this->request['g_email_friend']),
|
||||
'g_edit_profile' => intval($this->request['g_edit_profile']),
|
||||
'g_use_pm' => intval($this->request['g_use_pm']),
|
||||
'g_pm_perday' => intval($this->request['g_pm_perday']),
|
||||
@@ -614,7 +594,6 @@ class admin_members_groups_groups extends ipsCommand
|
||||
'g_perm_id' => $new_perm_set_id ? $new_perm_set_id : implode( ",", $this->request['permid'] ),
|
||||
'g_icon' => trim( IPSText::safeslashes( $_POST['g_icon'] ) ),
|
||||
'g_attach_max' => $this->request['g_attach_max'],
|
||||
'g_avatar_upload' => intval($this->request['g_avatar_upload']),
|
||||
'g_max_messages' => intval($this->request['g_max_messages']),
|
||||
'g_max_mass_pm' => intval($this->request['g_max_mass_pm']),
|
||||
'g_pm_flood_mins' => intval($this->request['g_pm_flood_mins']),
|
||||
@@ -622,7 +601,6 @@ class admin_members_groups_groups extends ipsCommand
|
||||
'g_promotion' => $promotion_a . '&' . $promotion_b,
|
||||
'g_photo_max_vars' => $this->request['p_max'].':'.$this->request['p_width'].':'.$this->request['p_height'],
|
||||
'g_dohtml' => intval($this->request['g_dohtml']),
|
||||
'g_email_limit' => intval($this->request['join_limit']).':'.intval($this->request['join_flood']),
|
||||
'g_bypass_badwords' => intval($this->request['g_bypass_badwords']),
|
||||
'g_can_msg_attach' => intval($this->request['g_can_msg_attach']),
|
||||
'g_attach_per_post' => intval($this->request['g_attach_per_post']),
|
||||
@@ -636,9 +614,8 @@ class admin_members_groups_groups extends ipsCommand
|
||||
'g_max_bgimg_upload' => intval( $this->request['g_max_bgimg_upload'] ),
|
||||
'g_bitoptions' => IPSBWOPtions::freeze( $this->request, 'groups', 'global' ), # Saves all BW options for all apps
|
||||
);
|
||||
|
||||
/* Leave here in case an application below needs to add a force_data_type */
|
||||
$this->DB->force_data_type = array( 'g_title' => 'string' );
|
||||
|
||||
$this->DB->setDataType( 'g_title', 'string' );
|
||||
|
||||
//-----------------------------------------
|
||||
// Ok? Load interface and child classes
|
||||
@@ -646,21 +623,18 @@ class admin_members_groups_groups extends ipsCommand
|
||||
|
||||
IPSLib::loadInterface( 'admin/group_form.php' );
|
||||
|
||||
foreach( ipsRegistry::$applications as $app_dir => $app_data )
|
||||
$_groupPlugins = array();
|
||||
|
||||
foreach( IPSLib::getEnabledApplications() as $app_dir => $app_data )
|
||||
{
|
||||
if ( ! IPSLib::appIsInstalled( $app_dir ) )
|
||||
if ( is_file( IPSLib::getAppDir( $app_dir ) . '/extensions/admin/group_form.php' ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( file_exists( IPSLib::getAppDir( $app_dir ) . '/extensions/admin/group_form.php' ) )
|
||||
{
|
||||
$_class = IPSLib::loadLibrary( IPSLib::getAppDir( $app_dir ) . '/extensions/admin/group_form.php', 'admin_group_form__'.$app_dir, $app_dir );
|
||||
$_object = new $_class( $this->registry );
|
||||
$_class = IPSLib::loadLibrary( IPSLib::getAppDir( $app_dir ) . '/extensions/admin/group_form.php', 'admin_group_form__'.$app_dir, $app_dir );
|
||||
$_groupPlugins[ $_class ] = new $_class( $this->registry );
|
||||
|
||||
$remote = $_object->getForSave();
|
||||
$remote = $_groupPlugins[ $_class ]->getForSave();
|
||||
|
||||
$db_string = array_merge( $remote, $db_string );
|
||||
$db_string = array_merge( $db_string, $remote );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -668,7 +642,7 @@ class admin_members_groups_groups extends ipsCommand
|
||||
// Editing...do an update
|
||||
//-----------------------------------------
|
||||
|
||||
if ($type == 'edit')
|
||||
if ( $type == 'edit' )
|
||||
{
|
||||
$this->DB->update( 'groups', $db_string, 'g_id=' . $group_id );
|
||||
|
||||
@@ -678,6 +652,8 @@ class admin_members_groups_groups extends ipsCommand
|
||||
|
||||
$this->DB->update( 'moderators', array( 'group_name' => $db_string['g_title'] ), 'group_id=' . $group_id );
|
||||
|
||||
$this->cache->rebuildCache( 'moderators', 'forums' );
|
||||
|
||||
ipsRegistry::getClass('adminFunctions')->saveAdminLog( sprintf( $this->lang->words['g_editedlog'], $db_string['g_title'] ) );
|
||||
|
||||
$this->registry->output->global_message = $this->lang->words['g_edited'];
|
||||
@@ -695,6 +671,21 @@ class admin_members_groups_groups extends ipsCommand
|
||||
|
||||
$this->rebuildGroupCache();
|
||||
|
||||
//-----------------------------------------
|
||||
// Post save callbacks
|
||||
//-----------------------------------------
|
||||
|
||||
if( count($_groupPlugins) )
|
||||
{
|
||||
foreach( $_groupPlugins as $_className => $_object )
|
||||
{
|
||||
if( method_exists( $_object, 'postSave' ) )
|
||||
{
|
||||
$_object->postSave( $group_id );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( $new_perm_set_id )
|
||||
{
|
||||
$from = '';
|
||||
@@ -713,8 +704,8 @@ class admin_members_groups_groups extends ipsCommand
|
||||
}
|
||||
}
|
||||
|
||||
$this->registry->output->doneScreen( $this->lang->words['per_saved'], $this->lang->words['per_manage'], 'module=groups&section=permissions&do=edit_set_form' . $from . '&id=' . $new_perm_set_id, 'redirect' );
|
||||
return;
|
||||
$this->registry->output->global_message = $this->lang->words['per_saved'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . 'module=groups&section=permissions&do=edit_set_form' . $from . '&id=' . $new_perm_set_id );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -739,7 +730,7 @@ class admin_members_groups_groups extends ipsCommand
|
||||
/**
|
||||
* Rebuilds the group cache
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function rebuildGroupCache()
|
||||
{
|
||||
@@ -752,7 +743,7 @@ class admin_members_groups_groups extends ipsCommand
|
||||
|
||||
while ( $i = $this->DB->fetch() )
|
||||
{
|
||||
$cache[ $i['g_id'] ] = IPSLib::unpackGroup( $i );
|
||||
$cache[ $i['g_id'] ] = IPSMember::unpackGroup( $i );
|
||||
}
|
||||
|
||||
$this->cache->setCache( 'group_cache', $cache, array( 'array' => 1 ) );
|
||||
@@ -762,9 +753,10 @@ class admin_members_groups_groups extends ipsCommand
|
||||
* Show the add/edit group form
|
||||
*
|
||||
* @param string 'add' or 'edit'
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
* @todo _initTab doesn't seem to work anymore with the new tabs, need to update each app to have a unique name/id
|
||||
*/
|
||||
private function _groupForm( $type='edit' )
|
||||
protected function _groupForm( $type='edit' )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Grab group data and start us off
|
||||
@@ -778,7 +770,7 @@ class admin_members_groups_groups extends ipsCommand
|
||||
}
|
||||
|
||||
$group = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'groups', 'where' => "g_id=" . intval($this->request['id']) ) );
|
||||
$group = IPSLib::unpackGroup( $group );
|
||||
$group = IPSMember::unpackGroup( $group );
|
||||
|
||||
//-----------------------------------------
|
||||
// Check restrictions.
|
||||
@@ -796,7 +788,7 @@ class admin_members_groups_groups extends ipsCommand
|
||||
if( $this->request['id'] )
|
||||
{
|
||||
$group = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'groups', 'where' => "g_id=" . intval($this->request['id']) ) );
|
||||
$group = IPSLib::unpackGroup( $group );
|
||||
$group = IPSMember::unpackGroup( $group );
|
||||
}
|
||||
|
||||
$group['g_title'] = 'New Group';
|
||||
@@ -808,7 +800,7 @@ class admin_members_groups_groups extends ipsCommand
|
||||
|
||||
$perm_masks = array();
|
||||
|
||||
$this->DB->build( array( 'select' => '*', 'from' => 'forum_perms' ) );
|
||||
$this->DB->build( array( 'select' => '*', 'from' => 'forum_perms', 'order' => 'perm_name ASC' ) );
|
||||
$this->DB->execute();
|
||||
|
||||
while ( $r = $this->DB->fetch() )
|
||||
@@ -824,33 +816,28 @@ class admin_members_groups_groups extends ipsCommand
|
||||
|
||||
IPSLib::loadInterface( 'admin/group_form.php' );
|
||||
|
||||
$tabsUsed = 2;
|
||||
$firsttab = false;
|
||||
$tabsUsed = 5;
|
||||
$firstTab = empty($this->request['_initTab']) ? false : trim($this->request['_initTab']);
|
||||
|
||||
foreach( ipsRegistry::$applications as $app_dir => $app_data )
|
||||
foreach( IPSLib::getEnabledApplications() as $app_dir => $app_data )
|
||||
{
|
||||
if ( ! IPSLib::appIsInstalled( $app_dir ) )
|
||||
if ( is_file( IPSLib::getAppDir( $app_dir ) . '/extensions/admin/group_form.php' ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( file_exists( IPSLib::getAppDir( $app_dir ) . '/extensions/admin/group_form.php' ) )
|
||||
{
|
||||
$_class = IPSLib::loadLibrary( IPSLib::getAppDir( $app_dir ) . '/extensions/admin/group_form.php', 'admin_group_form__'.$app_dir, $app_dir );
|
||||
$_class = IPSLib::loadLibrary( IPSLib::getAppDir( $app_dir ) . '/extensions/admin/group_form.php', 'admin_group_form__'.$app_dir, $app_dir );
|
||||
|
||||
if ( class_exists( $_class ) )
|
||||
{
|
||||
$_object = new $_class( $this->registry );
|
||||
|
||||
|
||||
$data = $_object->getDisplayContent( $group, $tabsUsed );
|
||||
$blocks['area'][ $app_dir ] = $data['content'];
|
||||
$blocks['tabs'][ $app_dir ] = $data['tabs'];
|
||||
$blocks['area'][ $app_dir ] = $data['content'];
|
||||
$blocks['tabs'][ $app_dir ] = $data['tabs'];
|
||||
|
||||
$tabsUsed = $data['tabsUsed'] ? ( $tabsUsed + $data['tabsUsed'] ) : ( $tabsUsed + 1 );
|
||||
$tabsUsed = $data['tabsUsed'] ? ( $tabsUsed + $data['tabsUsed'] ) : ( $tabsUsed + 1 );
|
||||
|
||||
if ( $this->request['_initTab'] == $app_dir )
|
||||
if ( !empty($this->request['_initTab']) && $this->request['_initTab'] == $app_dir )
|
||||
{
|
||||
$firsttab = $tabsUsed;
|
||||
$firstTab = $tabsUsed;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -860,6 +847,6 @@ class admin_members_groups_groups extends ipsCommand
|
||||
// And output to form
|
||||
//-----------------------------------------
|
||||
|
||||
$this->registry->output->html .= $this->html->groupsForm( $type, $group, $perm_masks, $blocks, $firsttab );
|
||||
$this->registry->output->html .= $this->html->groupsForm( $type, $group, $perm_masks, $blocks, $firstTab );
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionboard.com/">IP.Board</a>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,18 +2,18 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* IP.Board v3.2.3
|
||||
* Permissions management
|
||||
* Last Updated: $Date: 2010-10-21 07:08:38 -0400 (Thu, 21 Oct 2010) $
|
||||
* Last Updated: $Date: 2011-09-02 20:55:33 -0400 (Fri, 02 Sep 2011) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: ips_terabyte $
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @license This is NULLED!
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Revision: 7007 $
|
||||
* @link http://hatynka.in
|
||||
* @version $Revision: 9450 $
|
||||
*/
|
||||
|
||||
if ( ! defined( 'IN_ACP' ) )
|
||||
@@ -30,27 +30,27 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
*
|
||||
* @var object Skin templates
|
||||
*/
|
||||
private $html;
|
||||
protected $html;
|
||||
|
||||
/**
|
||||
* Shortcut for url
|
||||
*
|
||||
* @var string URL shortcut
|
||||
*/
|
||||
private $form_code;
|
||||
protected $form_code;
|
||||
|
||||
/**
|
||||
* Shortcut for url (javascript)
|
||||
*
|
||||
* @var string JS URL shortcut
|
||||
*/
|
||||
private $form_code_js;
|
||||
protected $form_code_js;
|
||||
|
||||
/**
|
||||
* Main class entry point
|
||||
*
|
||||
* @param object ipsRegistry reference
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
public function doExecute( ipsRegistry $registry )
|
||||
{
|
||||
@@ -86,12 +86,12 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
break;
|
||||
|
||||
case 'view_perm_users':
|
||||
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'permmasks_view' );
|
||||
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'perms_manage' );
|
||||
$this->permissionSetUsers();
|
||||
break;
|
||||
|
||||
case 'remove_mask':
|
||||
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'permmasks_delete' );
|
||||
$this->registry->getClass('class_permissions')->checkPermissionAutoMsg( 'perms_manage' );
|
||||
$this->removePermissionSet();
|
||||
break;
|
||||
|
||||
@@ -111,7 +111,7 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
/**
|
||||
* Removes permission set(s) from a user
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function removePermissionSet()
|
||||
{
|
||||
@@ -170,7 +170,7 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
/**
|
||||
* Show users that are assigned the specified permission set
|
||||
*
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function permissionSetUsers()
|
||||
{
|
||||
@@ -260,9 +260,9 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
/**
|
||||
* Deletes a permission set
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
private function _doDeleteSet()
|
||||
protected function _doDeleteSet()
|
||||
{
|
||||
/* INIT */
|
||||
$id = $this->request['id'];
|
||||
@@ -279,11 +279,11 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
/* Check to see if there is a permission map */
|
||||
$_file = IPSLib::getAppDir( $app['app_directory'] ) . '/extensions/coreExtensions.php';
|
||||
|
||||
if( file_exists( $_file ) )
|
||||
if( is_file( $_file ) )
|
||||
{
|
||||
/* Get the permission mappings */
|
||||
$_PERM_CONFIG = array();
|
||||
require_once( $_file );
|
||||
require_once( $_file );/*noLibHook*/
|
||||
|
||||
/* Check for a config array */
|
||||
if( is_array( $_PERM_CONFIG ) && count( $_PERM_CONFIG ) )
|
||||
@@ -327,18 +327,22 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
}
|
||||
|
||||
/* Delete */
|
||||
$this->DB->delete( 'forum_perms', "perm_id=$id" );
|
||||
$this->DB->delete( 'forum_perms', "perm_id=" . $id );
|
||||
|
||||
/* Fire callbacks */
|
||||
$this->_fireAppCallbacks();
|
||||
|
||||
/* Done */
|
||||
$this->registry->output->doneScreen( $this->lang->words['per_removed'], $this->lang->words['per_manage'], $this->form_code, 'redirect' );
|
||||
$this->registry->output->global_message = $this->lang->words['per_removed'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code );
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a nwe permission set
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
private function _doCreatePermissionSet()
|
||||
protected function _doCreatePermissionSet()
|
||||
{
|
||||
/* INIT */
|
||||
$set_name = $this->request['new_perm_name'];
|
||||
@@ -363,11 +367,11 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
/* Check to see if there is a permission map */
|
||||
$_file = IPSLib::getAppDir( $app['app_directory'] ) . '/extensions/coreExtensions.php';
|
||||
|
||||
if( file_exists( $_file ) )
|
||||
if( is_file( $_file ) )
|
||||
{
|
||||
/* Get the permission mappings */
|
||||
$_PERM_CONFIG = array();
|
||||
require_once( $_file );
|
||||
require_once( $_file );/*noLibHook*/
|
||||
|
||||
/* Check for a config array */
|
||||
if( is_array( $_PERM_CONFIG ) && count( $_PERM_CONFIG ) )
|
||||
@@ -412,16 +416,20 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
$this->DB->update( 'permission_index', $r, "perm_id=" . $perm_id );
|
||||
}
|
||||
|
||||
/* Fire callbacks */
|
||||
$this->_fireAppCallbacks();
|
||||
|
||||
/* Done */
|
||||
$this->registry->output->doneScreen( $this->lang->words['per_saved'], $this->lang->words['per_manage'], $this->form_code . 'do=edit_set_form&id=' . $new_set_id, 'redirect' );
|
||||
$this->registry->output->global_message = $this->lang->words['per_saved'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code . 'do=edit_set_form&id=' . $new_set_id );
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the global permission set form
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
private function _permissionSaveForm()
|
||||
protected function _permissionSaveForm()
|
||||
{
|
||||
/* ID */
|
||||
$id = intval( $this->request['id'] );
|
||||
@@ -442,16 +450,20 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
$this->DB->update( 'forum_perms', array( 'perm_name' => $this->request['perm_name'] ), "perm_id={$id}" );
|
||||
}
|
||||
|
||||
/* Fire callbacks */
|
||||
$this->_fireAppCallbacks();
|
||||
|
||||
/* Done */
|
||||
$this->registry->output->doneScreen( $this->lang->words['per_saved'], $this->lang->words['per_manage'], $this->form_code . '&_from=' . $this->request['_from'], 'redirect' );
|
||||
$this->registry->output->global_message = $this->lang->words['per_saved'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code . '&_from=' . $this->request['_from'] );
|
||||
}
|
||||
|
||||
/**
|
||||
* Form for modifying a permission set
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
private function _permissionSetForm()
|
||||
protected function _permissionSetForm()
|
||||
{
|
||||
/* ID */
|
||||
$id = intval( $this->request['id'] );
|
||||
@@ -471,11 +483,11 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
/* Check to see if there is a permission map */
|
||||
$_file = IPSLib::getAppDir( $app['app_directory'] ) . '/extensions/coreExtensions.php';
|
||||
|
||||
if( file_exists( $_file ) )
|
||||
if( is_file( $_file ) )
|
||||
{
|
||||
/* Get the permission mappings */
|
||||
$_PERM_CONFIG = array();
|
||||
require_once( $_file );
|
||||
require_once( $_file );/*noLibHook*/
|
||||
|
||||
/* Check for a config array */
|
||||
if( is_array( $_PERM_CONFIG ) && count( $_PERM_CONFIG ) )
|
||||
@@ -484,18 +496,19 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
foreach( $_PERM_CONFIG as $perm_type )
|
||||
{
|
||||
/* Check for a class */
|
||||
$_class = $app['app_directory'] . 'PermMapping' . $perm_type;
|
||||
|
||||
if( class_exists( $_class ) )
|
||||
$classToLoad = IPSLib::loadLibrary( '', $app['app_directory'] . 'PermMapping' . $perm_type, $app['app_directory'] );
|
||||
|
||||
if( class_exists( $classToLoad ) )
|
||||
{
|
||||
/* Create the object */
|
||||
$perm_map = new $_class;
|
||||
$perm_map = new $classToLoad;
|
||||
|
||||
/* Make sure the function exists */
|
||||
if( method_exists( $perm_map, 'getPermItems' ) )
|
||||
{
|
||||
$matricies[$app['app_title']] = $perm_obj->adminItemPermMatrix( $perm_map, $perm_map->getPermItems(), $id, $app['app_directory'], $perm_type );
|
||||
$apps[$app['app_directory']] = $perm_type;
|
||||
$_key = count($_PERM_CONFIG) > 1 ? $app['app_title'] . ' ' . $perm_type : $app['app_title'];
|
||||
$matricies[ $_key ] = $perm_obj->adminItemPermMatrix( $perm_map, $perm_map->getPermItems(), $id, $app['app_directory'], $perm_type );
|
||||
$apps[$app['app_directory']][ $perm_type ] = $perm_type;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -510,9 +523,9 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
/**
|
||||
* List permission masks
|
||||
*
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
private function _mainScreen()
|
||||
protected function _mainScreen()
|
||||
{
|
||||
/* INIT */
|
||||
$perms = array();
|
||||
@@ -598,7 +611,7 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
$groups_used = "{$this->lang->words['per_none']}";
|
||||
}
|
||||
|
||||
if ( isset($mems[ $id ]) AND $mems[ $id ] > 0 )
|
||||
if ( !empty($mems[ $id ]) )
|
||||
{
|
||||
$is_active = 1;
|
||||
}
|
||||
@@ -628,4 +641,35 @@ class admin_members_groups_permissions extends ipsCommand
|
||||
|
||||
$this->registry->output->html .= $this->html->permissionsSplash( $display_groups, $dlist );
|
||||
}
|
||||
|
||||
/**
|
||||
* Fire any application callbacks as needed
|
||||
*
|
||||
* @return @e void
|
||||
*/
|
||||
protected function _fireAppCallbacks()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Loop through each application
|
||||
//-----------------------------------------
|
||||
|
||||
foreach( $this->registry->getApplications() as $app )
|
||||
{
|
||||
// Let's skip the app_enabled check to be sure everything is always recached!
|
||||
|
||||
//-----------------------------------------
|
||||
// Check for callback file
|
||||
//-----------------------------------------
|
||||
|
||||
$_file = IPSLib::getAppDir( $app['app_directory'] ) . '/extensions/permissionsSync.php';
|
||||
|
||||
if( is_file( $_file ) )
|
||||
{
|
||||
$classToLoad = IPSLib::loadLibrary( $_file, $app['app_directory'] . 'PermissionsSync', $app['app_directory'] );
|
||||
$_callback = new $classToLoad( $this->registry );
|
||||
|
||||
$_callback->updatePermissions();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionboard.com/">IP.Board</a>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,6 +6,7 @@
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Управление группами пользователей</subitemtitle>
|
||||
<subitemlang>manage_groups</subitemlang>
|
||||
<subsection>groups</subsection>
|
||||
<subitemurl>do=groups_overview</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
@@ -18,9 +19,10 @@
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Управление масками доступа</subitemtitle>
|
||||
<subitemlang>manage_perms</subitemlang>
|
||||
<subsection>permissions</subsection>
|
||||
<subitemurl>do=overview</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subitemrolekey>perms_manage</subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
</subitems>
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionboard.com/">IP.Board</a>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,21 +1,14 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* Ban Filters
|
||||
* Last Updated: $Date: 2010-01-15 10:18:44 -0500 (Fri, 15 Jan 2010) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Rev: 5713 $
|
||||
*
|
||||
* @file banfilters.php Provides helper methods to add ban filters
|
||||
*~TERABYTE_DOC_READY~
|
||||
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
|
||||
* $License: This is NULLED!
|
||||
* $Author: ips_terabyte $
|
||||
* @since -
|
||||
* $LastChangedDate: 2011-03-22 12:48:06 -0400 (Tue, 22 Mar 2011) $
|
||||
* @version v3.2.3
|
||||
* $Revision: 8149 $
|
||||
*/
|
||||
|
||||
if ( ! defined( 'IN_ACP' ) )
|
||||
@@ -24,64 +17,51 @@ if ( ! defined( 'IN_ACP' ) )
|
||||
exit();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @class admin_members_members_banfilters
|
||||
* @brief Provides helper methods to add ban filters
|
||||
*/
|
||||
class admin_members_members_banfilters extends ipsCommand
|
||||
{
|
||||
/**
|
||||
* Skin object
|
||||
* Skin object shortcut
|
||||
*
|
||||
* @access private
|
||||
* @var object Skin templates
|
||||
*/
|
||||
private $html;
|
||||
* @var $html
|
||||
*/
|
||||
public $html;
|
||||
|
||||
/**
|
||||
* Shortcut for url
|
||||
* String for the screen url bit
|
||||
*
|
||||
* @access private
|
||||
* @var string URL shortcut
|
||||
* @var $form_code
|
||||
*/
|
||||
private $form_code;
|
||||
public $form_code = '';
|
||||
|
||||
/**
|
||||
* Shortcut for url (javascript)
|
||||
* String for the JS url bit
|
||||
*
|
||||
* @access private
|
||||
* @var string JS URL shortcut
|
||||
* @var $form_code_js
|
||||
*/
|
||||
private $form_code_js;
|
||||
public $form_code_js = '';
|
||||
|
||||
/**
|
||||
* Main class entry point
|
||||
* Main function executed automatically by the controller
|
||||
*
|
||||
* @access public
|
||||
* @param object ipsRegistry reference
|
||||
* @return void [Outputs to screen]
|
||||
* @param object $registry Registry object
|
||||
* @return @e void
|
||||
*/
|
||||
public function doExecute( ipsRegistry $registry )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Load skin
|
||||
//-----------------------------------------
|
||||
/* Load skin & setup some stuff */
|
||||
$this->html = $this->registry->output->loadTemplate( 'cp_skin_banfilters' );
|
||||
$this->form_code = $this->html->form_code = 'module=members&section=banfilters&';
|
||||
$this->form_code_js = $this->html->form_code_js = 'module=members§ion=banfilters&';
|
||||
|
||||
$this->html = $this->registry->output->loadTemplate( 'cp_skin_banfilters' );
|
||||
|
||||
//-----------------------------------------
|
||||
// Set up stuff
|
||||
//-----------------------------------------
|
||||
|
||||
$this->form_code = $this->html->form_code = 'module=members&section=banfilters';
|
||||
$this->form_code_js = $this->html->form_code_js = 'module=members§ion=banfilters';
|
||||
|
||||
//-----------------------------------------
|
||||
// Load lang
|
||||
//-----------------------------------------
|
||||
/* Load lang */
|
||||
$this->registry->class_localization->loadLanguageFile( array( 'admin_member' ), 'members' );
|
||||
|
||||
$this->registry->class_localization->loadLanguageFile( array( 'admin_member' ) );
|
||||
|
||||
//-----------------------------------------
|
||||
// What to do...
|
||||
//-----------------------------------------
|
||||
|
||||
/* What to do... */
|
||||
switch( $this->request['do'] )
|
||||
{
|
||||
case 'ban_add':
|
||||
@@ -101,22 +81,76 @@ class admin_members_members_banfilters extends ipsCommand
|
||||
break;
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Pass to CP output hander
|
||||
//-----------------------------------------
|
||||
|
||||
/* Output */
|
||||
$this->registry->output->html_main .= $this->registry->output->global_template->global_frame_wrapper();
|
||||
$this->registry->output->sendOutput();
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the ban overview screen
|
||||
*
|
||||
* @return @e void
|
||||
*/
|
||||
public function banOverview()
|
||||
{
|
||||
/* INI */
|
||||
$ban = array();
|
||||
$ips = array();
|
||||
$emails = array();
|
||||
$names = array();
|
||||
|
||||
/* Get ban filters */
|
||||
$this->DB->build( array( 'select' => '*', 'from' => 'banfilters', 'order' => 'ban_date desc' ) );
|
||||
$this->DB->execute();
|
||||
|
||||
while ( $r = $this->DB->fetch() )
|
||||
{
|
||||
$ban[ $r['ban_type'] ][ $r['ban_id'] ] = $r;
|
||||
}
|
||||
|
||||
/* IPs */
|
||||
if( isset( $ban['ip'] ) AND is_array( $ban['ip'] ) AND count( $ban['ip'] ) )
|
||||
{
|
||||
foreach( $ban['ip'] as $entry )
|
||||
{
|
||||
$entry['_date'] = $this->registry->class_localization->getDate( $entry['ban_date'], 'SHORT', 1 );
|
||||
$ips[] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
/* Emails */
|
||||
if( isset( $ban['email'] ) AND is_array( $ban['email'] ) AND count( $ban['email'] ) )
|
||||
{
|
||||
foreach( $ban['email'] as $entry )
|
||||
{
|
||||
$entry['_date'] = $this->registry->class_localization->getDate( $entry['ban_date'], 'SHORT' );
|
||||
$emails[] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
/* Banned Names */
|
||||
if( isset( $ban['name'] ) AND is_array( $ban['name'] ) AND count( $ban['name'] ) )
|
||||
{
|
||||
foreach( $ban['name'] as $entry )
|
||||
{
|
||||
$entry['_date'] = $this->registry->class_localization->getDate( $entry['ban_date'], 'SHORT' );
|
||||
$names[] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
/* Output */
|
||||
$this->registry->output->html .= $this->html->banOverview( $ips, $emails, $names );
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a new ban filter
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function banAdd()
|
||||
{
|
||||
$this->request['bantext'] = trim($this->request['bantext']);
|
||||
|
||||
/* Error checking */
|
||||
if( ! $this->request['bantext'] )
|
||||
{
|
||||
@@ -126,11 +160,10 @@ class admin_members_members_banfilters extends ipsCommand
|
||||
}
|
||||
|
||||
/* Check for duplicate */
|
||||
$result = $this->DB->buildAndFetch( array(
|
||||
'select' => '*',
|
||||
'from' => 'banfilters',
|
||||
'where' => "ban_content='{$this->request['bantext']}' and ban_type='{$this->request['bantype']}'"
|
||||
) );
|
||||
$result = $this->DB->buildAndFetch( array( 'select' => '*',
|
||||
'from' => 'banfilters',
|
||||
'where' => "ban_content='{$this->request['bantext']}' and ban_type='{$this->request['bantype']}'"
|
||||
) );
|
||||
|
||||
if ( $result['ban_id'] )
|
||||
{
|
||||
@@ -140,21 +173,24 @@ class admin_members_members_banfilters extends ipsCommand
|
||||
}
|
||||
|
||||
/* Insert the new ban filter */
|
||||
$this->DB->insert( 'banfilters', array( 'ban_type' => $this->request['bantype'], 'ban_content' => trim( $this->request['bantext'] ), 'ban_date' => time() ) );
|
||||
$this->DB->insert( 'banfilters', array( 'ban_type' => trim($this->request['bantype']),
|
||||
'ban_content' => trim($this->request['bantext']),
|
||||
'ban_date' => time(),
|
||||
'ban_reason' => trim($this->request['banreason'])
|
||||
)
|
||||
);
|
||||
|
||||
/* Rebuild cacne and bounce */
|
||||
$this->rebuildBanCache();
|
||||
|
||||
$this->registry->output->global_message = $this->lang->words['ban_added'];
|
||||
$this->banOverview();
|
||||
|
||||
}
|
||||
$this->registry->output->global_message = $this->lang->words['ban_added'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'].$this->form_code.'do=ban' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a ban filter
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function banDelete()
|
||||
{
|
||||
@@ -164,7 +200,7 @@ class admin_members_members_banfilters extends ipsCommand
|
||||
/* Loop through the request fields and find checked ban filters */
|
||||
foreach( $this->request as $key => $value )
|
||||
{
|
||||
if( preg_match( "/^id_(\d+)$/", $key, $match ) )
|
||||
if( preg_match( '/^banid_(\d+)$/', $key, $match ) )
|
||||
{
|
||||
if( $this->request[ $match[0] ] )
|
||||
{
|
||||
@@ -180,7 +216,6 @@ class admin_members_members_banfilters extends ipsCommand
|
||||
if ( count( $ids ) )
|
||||
{
|
||||
$this->DB->delete( 'banfilters', 'ban_id IN(' . implode( ",", $ids ) . ')' );
|
||||
$this->DB->execute();
|
||||
}
|
||||
|
||||
/* Rebuild the cache */
|
||||
@@ -188,77 +223,13 @@ class admin_members_members_banfilters extends ipsCommand
|
||||
|
||||
/* Bounce */
|
||||
$this->registry->output->global_message = $this->lang->words['ban_removed'];
|
||||
$this->banOverview();
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the ban overview screen
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function banOverview()
|
||||
{
|
||||
/* INI */
|
||||
$ban = array();
|
||||
|
||||
/* Get ban filters */
|
||||
$this->DB->build( array( 'select' => '*', 'from' => 'banfilters', 'order' => 'ban_date desc' ) );
|
||||
$this->DB->execute();
|
||||
|
||||
while ( $r = $this->DB->fetch() )
|
||||
{
|
||||
$ban[ $r['ban_type'] ][ $r['ban_id'] ] = $r;
|
||||
}
|
||||
|
||||
/* IPs */
|
||||
$ips = array();
|
||||
|
||||
if( isset( $ban['ip'] ) AND is_array( $ban['ip'] ) AND count( $ban['ip'] ) )
|
||||
{
|
||||
foreach( $ban['ip'] as $entry )
|
||||
{
|
||||
$entry['_checkbox'] = "<input type='checkbox' name='id_{$entry['ban_id']}' value='1' />";
|
||||
$entry['_date'] = $this->registry->class_localization->getDate( $entry['ban_date'], 'SHORT' );
|
||||
$ips[] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
/* Emails */
|
||||
$emails = array();
|
||||
|
||||
if( isset( $ban['email'] ) AND is_array( $ban['email'] ) AND count( $ban['email'] ) )
|
||||
{
|
||||
foreach( $ban['email'] as $entry )
|
||||
{
|
||||
$entry['_checkbox'] = "<input type='checkbox' name='id_{$entry['ban_id']}' value='1' />";
|
||||
$entry['_date'] = $this->registry->class_localization->getDate( $entry['ban_date'], 'SHORT' );
|
||||
$emails[] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
/* Banned Names */
|
||||
$names = array();
|
||||
|
||||
if( isset( $ban['name'] ) AND is_array( $ban['name'] ) AND count( $ban['name'] ) )
|
||||
{
|
||||
foreach( $ban['name'] as $entry )
|
||||
{
|
||||
$entry['_checkbox'] = "<input type='checkbox' name='id_{$entry['ban_id']}' value='1' />";
|
||||
$entry['_date'] = $this->registry->class_localization->getDate( $entry['ban_date'], 'SHORT' );
|
||||
$names[] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
/* Output */
|
||||
$this->registry->output->html .= $this->html->banOverview( $ips, $emails, $names );
|
||||
}
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'].$this->form_code.'do=ban' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Rebuilds the ban cache
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function rebuildBanCache()
|
||||
{
|
||||
@@ -266,7 +237,7 @@ class admin_members_members_banfilters extends ipsCommand
|
||||
$cache = array();
|
||||
|
||||
/* Get the ban filters */
|
||||
$this->DB->build( array( 'select' => 'ban_content', 'from' => 'banfilters', 'where' => "ban_type='ip' AND ban_nocache=0" ) );
|
||||
$this->DB->build( array( 'select' => 'ban_content', 'from' => 'banfilters', 'where' => "ban_type='ip'" ) );
|
||||
$this->DB->execute();
|
||||
|
||||
while ( $r = $this->DB->fetch() )
|
||||
|
||||
@@ -1,32 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* Define the default members section
|
||||
* Last Updated: $Date: 2010-01-15 10:18:44 -0500 (Fri, 15 Jan 2010) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @file defaultSection.php Define the default section for the 'members' module
|
||||
*~TERABYTE_DOC_READY~
|
||||
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
|
||||
* $License: This is NULLED!
|
||||
* $Author: ips_terabyte $
|
||||
* @since 20th February 2002
|
||||
* @version $Rev: 5713 $
|
||||
*
|
||||
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
|
||||
* @version v3.2.3
|
||||
* $Revision: 8655 $
|
||||
*/
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Very simply returns the default section if one is not
|
||||
* passed in the URL
|
||||
*/
|
||||
|
||||
$DEFAULT_SECTION = 'members';
|
||||
$DEFAULT_SECTION = 'members';
|
||||
@@ -0,0 +1,377 @@
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.2.3
|
||||
* Member property updater (AJAX)
|
||||
* Last Updated: $Date: 2011-06-06 18:06:01 -0400 (Mon, 06 Jun 2011) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license This is NULLED!
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://hatynka.in
|
||||
* @version $Revision: 8982 $
|
||||
*/
|
||||
|
||||
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_members_editform extends ipsCommand
|
||||
{
|
||||
/**
|
||||
* 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'] )
|
||||
{
|
||||
case 'save_display_name':
|
||||
$this->save_member_name( 'members_display_name' );
|
||||
break;
|
||||
case 'save_name':
|
||||
$this->save_member_name( 'name' );
|
||||
break;
|
||||
case 'save_password':
|
||||
$this->save_password();
|
||||
break;
|
||||
case 'save_email':
|
||||
$this->save_email();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Change a member's email address
|
||||
*
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
protected function save_email()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// INIT
|
||||
//-----------------------------------------
|
||||
|
||||
$member_id = intval( $this->request['member_id'] );
|
||||
$email = trim( $this->request['email'] );
|
||||
|
||||
//-----------------------------------------
|
||||
// Get member
|
||||
//-----------------------------------------
|
||||
|
||||
$member = IPSMember::load( $member_id );
|
||||
|
||||
if ( ! $member['member_id'] )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['m_noid'] );
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Allowed to edit administrators?
|
||||
//-----------------------------------------
|
||||
|
||||
if( $member['g_access_cp'] AND !$this->registry->getClass('class_permissions')->checkPermission( 'member_edit_admin', 'members', 'members' ) )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['m_editadmin'] );
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Is this email addy taken? CONVERGE THIS??
|
||||
//-----------------------------------------
|
||||
|
||||
$email_check = IPSMember::load( strtolower($email) );
|
||||
|
||||
if ( $email_check['member_id'] AND $email_check['member_id'] != $member_id )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['m_emailalready'] );
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Load handler...
|
||||
//-----------------------------------------
|
||||
|
||||
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/handlers/han_login.php', 'han_login' );
|
||||
$han_login = new $classToLoad( $this->registry );
|
||||
$han_login->init();
|
||||
$han_login->changeEmail( trim( strtolower( $member['email'] ) ), trim( strtolower( $email ) ), $member );
|
||||
|
||||
//-----------------------------------------
|
||||
// We don't want to die just from a Converge error
|
||||
//-----------------------------------------
|
||||
|
||||
/*if ( $han_login->return_code AND ( $han_login->return_code != 'METHOD_NOT_DEFINED' AND $han_login->return_code != 'SUCCESS' ) )
|
||||
{
|
||||
$this->returnJsonError( $this->lang->words['m_emailalready'] );
|
||||
exit();
|
||||
}*/
|
||||
|
||||
//-----------------------------------------
|
||||
// Update member
|
||||
//-----------------------------------------
|
||||
|
||||
IPSLib::runMemberSync( 'onEmailChange', $member_id, strtolower( $email ), $member['email'] );
|
||||
|
||||
IPSMember::save( $member_id, array( 'core' => array( 'email' => strtolower( $email ) ) ) );
|
||||
|
||||
ipsRegistry::getClass('adminFunctions')->saveAdminLog( sprintf( $this->lang->words['m_emailchangelog'], $member['email'], $email, $member_id ) );
|
||||
|
||||
$this->registry->output->global_message = $this->lang->words['email_updated_success'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . 'module=members&do=viewmember&member_id=' . $member_id );
|
||||
}
|
||||
|
||||
/**
|
||||
* Change a member's password
|
||||
*
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
protected function save_password()
|
||||
{
|
||||
//-----------------------------------------
|
||||
// INIT
|
||||
//-----------------------------------------
|
||||
|
||||
$member_id = intval( $this->request['member_id'] );
|
||||
$password = IPSText::parseCleanValue( $_POST['password'] );
|
||||
$password2 = IPSText::parseCleanValue( $_POST['password2'] );
|
||||
$new_key = intval( $this->request['new_key'] );
|
||||
$new_salt = intval( $this->request['new_salt'] );
|
||||
$salt = str_replace( '\\', "\\\\", IPSMember::generatePasswordSalt(5) );
|
||||
$key = IPSMember::generateAutoLoginKey();
|
||||
$md5_once = md5( trim($password) );
|
||||
|
||||
//-----------------------------------------
|
||||
// AJAX debug
|
||||
//-----------------------------------------
|
||||
|
||||
IPSDebug::fireBug( 'info', array( 'Password: ' . $password ) );
|
||||
|
||||
//-----------------------------------------
|
||||
// Check
|
||||
//-----------------------------------------
|
||||
|
||||
if ( ! $password OR ! $password2 )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['password_nogood'] );
|
||||
}
|
||||
|
||||
if ( $password != $password2 )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['m_passmatch'] );
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Get member
|
||||
//-----------------------------------------
|
||||
|
||||
$member = IPSMember::load( $member_id );
|
||||
|
||||
//-----------------------------------------
|
||||
// Allowed to edit administrators?
|
||||
//-----------------------------------------
|
||||
|
||||
if( $member['g_access_cp'] AND !$this->registry->getClass('class_permissions')->checkPermission( 'member_edit_admin', 'members', 'members' ) )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['m_editadmin'] );
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Check Converge: Password
|
||||
//-----------------------------------------
|
||||
|
||||
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/handlers/han_login.php', 'han_login' );
|
||||
$han_login = new $classToLoad( $this->registry );
|
||||
$han_login->init();
|
||||
$han_login->changePass( $member['email'], $md5_once, $password, $member );
|
||||
|
||||
/*if ( $han_login->return_code != 'METHOD_NOT_DEFINED' AND $han_login->return_code != 'SUCCESS' )
|
||||
{
|
||||
$this->returnJsonError( $this->lang->words['m_passchange']);
|
||||
exit();
|
||||
}*/
|
||||
|
||||
//-----------------------------------------
|
||||
// Local DB
|
||||
//-----------------------------------------
|
||||
|
||||
$update = array();
|
||||
|
||||
if( $new_salt )
|
||||
{
|
||||
$update['members_pass_salt'] = $salt;
|
||||
}
|
||||
|
||||
if( $new_key )
|
||||
{
|
||||
$update['member_login_key'] = $key;
|
||||
}
|
||||
|
||||
if( count($update) )
|
||||
{
|
||||
IPSMember::save( $member_id, array( 'core' => $update ) );
|
||||
}
|
||||
|
||||
IPSMember::updatePassword( $member_id, $md5_once );
|
||||
IPSLib::runMemberSync( 'onPassChange', $member_id, $password );
|
||||
|
||||
ipsRegistry::getClass('adminFunctions')->saveAdminLog( sprintf( $this->lang->words['m_passlog'], $member_id ) );
|
||||
|
||||
$this->registry->output->global_message = $this->lang->words['pw_updated_success'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . 'module=members&do=viewmember&member_id=' . $member_id );
|
||||
}
|
||||
|
||||
/**
|
||||
* Update a user's login or display name
|
||||
*
|
||||
* @param string Field to update
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
protected function save_member_name( $field='members_display_name' )
|
||||
{
|
||||
$member_id = intval( $this->request['member_id'] );
|
||||
|
||||
$member = IPSMember::load( $member_id );
|
||||
|
||||
//-----------------------------------------
|
||||
// Allowed to edit administrators?
|
||||
//-----------------------------------------
|
||||
|
||||
if( $member['g_access_cp'] AND !$this->registry->getClass('class_permissions')->checkPermission( 'member_edit_admin', 'members', 'members' ) )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['m_editadmin'] );
|
||||
}
|
||||
|
||||
if ( $field == 'members_display_name' )
|
||||
{
|
||||
$display_name = $this->request['display_name'];
|
||||
$display_name = str_replace("+", "+", $display_name );
|
||||
}
|
||||
else
|
||||
{
|
||||
$display_name = $this->request['name'];
|
||||
$display_name = str_replace("+", "+", $display_name );
|
||||
|
||||
$display_name = str_replace( '|', '|' , $display_name );
|
||||
$display_name = trim( preg_replace( "/\s{2,}/", " ", $display_name ) );
|
||||
}
|
||||
|
||||
if ( $this->settings['strip_space_chr'] )
|
||||
{
|
||||
// use hexdec to convert between '0xAD' and chr
|
||||
$display_name = IPSText::removeControlCharacters( $display_name );
|
||||
}
|
||||
|
||||
if ( $field == 'members_display_name' AND preg_match( "#[\[\];,\|]#", str_replace( ''', "'", str_replace( '&', '&', str_replace( '"', '"', str_replace( '!', '!', $display_name ) ) ) ) ) )
|
||||
{
|
||||
$this->registry->output->showError( $this->lang->words['m_displaynames'] );
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if ( IPSMember::getFunction()->updateName( $member_id, $display_name, $field ) === TRUE )
|
||||
{
|
||||
if ( $field == 'members_display_name' )
|
||||
{
|
||||
ipsRegistry::getClass('adminFunctions')->saveAdminLog(sprintf( $this->lang->words['m_dnamelog'], $member['members_display_name'], $display_name ));
|
||||
}
|
||||
else
|
||||
{
|
||||
ipsRegistry::getClass('adminFunctions')->saveAdminLog(sprintf( $this->lang->words['m_namelog'], $member['name'], $display_name ) );
|
||||
|
||||
//-----------------------------------------
|
||||
// If updating a name, and display names
|
||||
// disabled, update display name too
|
||||
//-----------------------------------------
|
||||
|
||||
if( !ipsRegistry::$settings['auth_allow_dnames'] )
|
||||
{
|
||||
IPSMember::getFunction()->updateName( $member_id, $display_name, 'members_display_name' );
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// I say, did we choose to email 'dis member?
|
||||
//-----------------------------------------
|
||||
|
||||
if ( $this->request['send_email'] == 1 )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// By golly, we did!
|
||||
//-----------------------------------------
|
||||
|
||||
$msg = trim( IPSText::stripslashes( nl2br( $_POST['email_contents'] ) ) );
|
||||
|
||||
$msg = str_replace( "{old_name}", $member['name'], $msg );
|
||||
$msg = str_replace( "{new_name}", $display_name , $msg );
|
||||
$msg = str_replace( "<#BOARD_NAME#>", $this->settings['board_name'], $msg );
|
||||
$msg = str_replace( "<#BOARD_ADDRESS#>", $this->settings['board_url'] . '/index.' . $this->settings['php_ext'], $msg );
|
||||
|
||||
IPSText::getTextClass('email')->message = stripslashes( IPSText::getTextClass('email')->cleanMessage($msg) );
|
||||
IPSText::getTextClass('email')->subject = $this->lang->words['m_changesubj'];
|
||||
IPSText::getTextClass('email')->to = $member['email'];
|
||||
IPSText::getTextClass('email')->sendMail();
|
||||
}
|
||||
}
|
||||
|
||||
$this->cache->rebuildCache( 'stats', 'global' );
|
||||
}
|
||||
else
|
||||
{
|
||||
# We should absolutely never get here. So this is a fail-safe, really to
|
||||
# prevent a "false" positive outcome for the end-user
|
||||
$this->registry->output->showError( $this->lang->words['m_namealready'] );
|
||||
}
|
||||
}
|
||||
catch( Exception $error )
|
||||
{
|
||||
// $this->returnJsonError( $error->getMessage() );
|
||||
|
||||
switch( $error->getMessage() )
|
||||
{
|
||||
case 'NO_USER':
|
||||
$this->registry->output->showError( $this->lang->words['m_noid'] );
|
||||
break;
|
||||
case 'NO_PERMISSION':
|
||||
case 'NO_NAME':
|
||||
$this->registry->output->showError( sprintf($this->lang->words['m_morethan3'], $this->settings['max_user_name_length'] ) );
|
||||
break;
|
||||
case 'ILLEGAL_CHARS':
|
||||
$this->registry->output->showError( $this->lang->words['m_illegal'] );
|
||||
break;
|
||||
case 'USER_NAME_EXISTS':
|
||||
$this->registry->output->showError( $this->lang->words['m_namealready'] );
|
||||
break;
|
||||
default:
|
||||
$this->registry->output->showError( $error->getMessage() );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Load handler...
|
||||
//-----------------------------------------
|
||||
|
||||
if( $field == 'name' )
|
||||
{
|
||||
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/handlers/han_login.php', 'han_login' );
|
||||
$han_login = new $classToLoad( $this->registry );
|
||||
$han_login->init();
|
||||
$han_login->changeName( $member['name'], $display_name, $member['email'], $member );
|
||||
}
|
||||
else
|
||||
{
|
||||
IPSLib::runMemberSync( 'onNameChange', $member_id, $display_name );
|
||||
}
|
||||
|
||||
$this->registry->output->global_message = $this->lang->words[ $field . '_updated_success'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . 'module=members&do=viewmember&member_id=' . $member_id );
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionboard.com/">IP.Board</a>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -3,18 +3,18 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* IP.Board v3.2.3
|
||||
* Configure default notification options
|
||||
* Last Updated: $Date: 2010-06-17 21:29:47 -0400 (Thu, 17 Jun 2010) $
|
||||
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @author $Author: ips_terabyte $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @license This is NULLED!
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Rev: 6553 $
|
||||
* @link http://hatynka.in
|
||||
* @version $Rev: 8644 $
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -29,31 +29,27 @@ class admin_members_members_notifications extends ipsCommand
|
||||
/**
|
||||
* Skin object
|
||||
*
|
||||
* @access private
|
||||
* @var object Skin templates
|
||||
*/
|
||||
private $html;
|
||||
protected $html;
|
||||
|
||||
/**
|
||||
* Shortcut for url
|
||||
*
|
||||
* @access private
|
||||
* @var string URL shortcut
|
||||
*/
|
||||
private $form_code;
|
||||
protected $form_code;
|
||||
|
||||
/**
|
||||
* Shortcut for url (javascript)
|
||||
*
|
||||
* @access private
|
||||
* @var string JS URL shortcut
|
||||
*/
|
||||
private $form_code_js;
|
||||
protected $form_code_js;
|
||||
|
||||
/**
|
||||
* Notifications library
|
||||
*
|
||||
* @access protected
|
||||
* @var object
|
||||
*/
|
||||
protected $notifyLibrary;
|
||||
@@ -61,9 +57,8 @@ class admin_members_members_notifications extends ipsCommand
|
||||
/**
|
||||
* Main class entry point
|
||||
*
|
||||
* @access public
|
||||
* @param object ipsRegistry reference
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
public function doExecute( ipsRegistry $registry )
|
||||
{
|
||||
@@ -126,8 +121,7 @@ class admin_members_members_notifications extends ipsCommand
|
||||
/**
|
||||
* Show form to configure notification default options
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function showDefaults()
|
||||
{
|
||||
@@ -140,14 +134,12 @@ class admin_members_members_notifications extends ipsCommand
|
||||
/**
|
||||
* Save default notification configuration
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function saveDefaults()
|
||||
{
|
||||
$_configOptions = $this->notifyLibrary->getNotificationData();
|
||||
$_notifyConfig = $this->notifyLibrary->getDefaultNotificationConfig();
|
||||
$_noPrivateMessage = array( 'new_private_message', 'reply_private_message' );
|
||||
|
||||
foreach( $_configOptions as $option )
|
||||
{
|
||||
@@ -155,24 +147,6 @@ class admin_members_members_notifications extends ipsCommand
|
||||
$_notifyConfig[ $option['key'] ]['selected'] = ( is_array($this->request['default_' . $option['key'] ]) AND count($this->request['default_' . $option['key'] ]) ) ? $this->request['default_' . $option['key'] ] : array();
|
||||
$_notifyConfig[ $option['key'] ]['disabled'] = ( is_array($this->request['disabled_' . $option['key'] ]) AND count($this->request['disabled_' . $option['key'] ]) ) ? $this->request['disabled_' . $option['key'] ] : array();
|
||||
$_notifyConfig[ $option['key'] ]['disable_override'] = intval($this->request['disable_override_' . $option['key'] ]);
|
||||
|
||||
/**
|
||||
* @link http://community.invisionpower.com/tracker/issue-23453-notification-defaults/
|
||||
*/
|
||||
if( in_array( $option['key'], $_noPrivateMessage ) AND in_array( 'pm', $_notifyConfig[ $option['key'] ]['selected'] ) )
|
||||
{
|
||||
$_newSelected = array();
|
||||
|
||||
foreach( $_notifyConfig[ $option['key'] ]['selected'] as $_v )
|
||||
{
|
||||
if( $_v != 'pm' )
|
||||
{
|
||||
$_newSelected[] = $_v;
|
||||
}
|
||||
}
|
||||
|
||||
$_notifyConfig[ $option['key'] ]['selected'] = $_newSelected;
|
||||
}
|
||||
}
|
||||
|
||||
$this->notifyLibrary->saveNotificationConfig( $_notifyConfig );
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* IP.Board v3.2.3
|
||||
* Member management
|
||||
* Last Updated: $Date: 2010-01-15 10:18:44 -0500 (Fri, 15 Jan 2010) $
|
||||
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @author $Author: ips_terabyte $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @license This is NULLED!
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Revision: 5713 $
|
||||
* @link http://hatynka.in
|
||||
* @version $Revision: 8644 $
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -30,49 +30,29 @@ class admin_members_members_ranks extends ipsCommand
|
||||
/**
|
||||
* Skin object
|
||||
*
|
||||
* @access private
|
||||
* @var object Skin templates
|
||||
*/
|
||||
private $html;
|
||||
protected $html;
|
||||
|
||||
/**
|
||||
* Shortcut for url
|
||||
*
|
||||
* @access private
|
||||
* @var string URL shortcut
|
||||
*/
|
||||
private $form_code;
|
||||
protected $form_code;
|
||||
|
||||
/**
|
||||
* Shortcut for url (javascript)
|
||||
*
|
||||
* @access private
|
||||
* @var string JS URL shortcut
|
||||
*/
|
||||
private $form_code_js;
|
||||
|
||||
/**
|
||||
* Editor object
|
||||
*
|
||||
* @access private
|
||||
* @var object Editor library
|
||||
*/
|
||||
private $han_editor;
|
||||
|
||||
/**
|
||||
* Trash can forum id
|
||||
*
|
||||
* @access private
|
||||
* @var integer Trash can forum
|
||||
*/
|
||||
private $trash_forum = 0;
|
||||
protected $form_code_js;
|
||||
|
||||
/**
|
||||
* Main class entry point
|
||||
*
|
||||
* @access public
|
||||
* @param object ipsRegistry reference
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
public function doExecute( ipsRegistry $registry )
|
||||
{
|
||||
@@ -144,8 +124,7 @@ class admin_members_members_ranks extends ipsCommand
|
||||
/**
|
||||
* Recache ranks
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function titlesRecache()
|
||||
{
|
||||
@@ -173,8 +152,7 @@ class admin_members_members_ranks extends ipsCommand
|
||||
/**
|
||||
* Overview page
|
||||
*
|
||||
* @access protected
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
protected function _titlesStart()
|
||||
{
|
||||
@@ -209,9 +187,8 @@ class admin_members_members_ranks extends ipsCommand
|
||||
/**
|
||||
* Save rank [add/edit]
|
||||
*
|
||||
* @access protected
|
||||
* @param string 'add' or 'edit'
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
protected function _titlesSave( $type = 'add' )
|
||||
{
|
||||
@@ -261,19 +238,20 @@ class admin_members_members_ranks extends ipsCommand
|
||||
|
||||
if( $type == 'add' )
|
||||
{
|
||||
$this->registry->output->doneScreen($this->lang->words['rnk_added2'], $this->lang->words['rnk_rankcontrol'], "{$this->form_code}&do=title", 'redirect' );
|
||||
$this->registry->output->global_message = $this->lang->words['rnk_added2'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code . '&do=title' );
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->registry->output->doneScreen($this->lang->words['rnk_edited'], $this->lang->words['rnk_rankcontrol'], "{$this->form_code}&do=title", 'redirect' );
|
||||
$this->registry->output->global_message = $this->lang->words['rnk_edited'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code . '&do=title' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a rank
|
||||
*
|
||||
* @access protected
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
protected function _titlesDelete()
|
||||
{
|
||||
@@ -291,17 +269,17 @@ class admin_members_members_ranks extends ipsCommand
|
||||
$this->titlesRecache();
|
||||
|
||||
ipsRegistry::getClass('adminFunctions')->saveAdminLog( $this->lang->words['rnk_removed'] );
|
||||
|
||||
$this->registry->output->doneScreen($this->lang->words['rnk_removed2'], $this->lang->words['rnk_rankcontrol'], "{$this->form_code}&do=title", 'redirect' );
|
||||
|
||||
$this->registry->output->global_message = $this->lang->words['rnk_removed2'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code . '&do=title' );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show the form to add/edit a rank
|
||||
*
|
||||
* @access protected
|
||||
* @param string Type of form (add|edit)
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
protected function _titlesForm( $mode='edit' )
|
||||
{
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* IP.Board v3.2.3
|
||||
* Reputation System
|
||||
* Last Updated: $Date: 2010-01-15 10:18:44 -0500 (Fri, 15 Jan 2010) $
|
||||
* Last Updated: $Date: 2011-05-05 07:03:47 -0400 (Thu, 05 May 2011) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @author $Author: ips_terabyte $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @license This is NULLED!
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Rev: 5713 $
|
||||
* @link http://hatynka.in
|
||||
* @version $Rev: 8644 $
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -30,33 +30,29 @@ class admin_members_members_reputation extends ipsCommand
|
||||
/**
|
||||
* Skin object
|
||||
*
|
||||
* @access private
|
||||
* @var object Skin templates
|
||||
*/
|
||||
private $html;
|
||||
protected $html;
|
||||
|
||||
/**
|
||||
* Shortcut for url
|
||||
*
|
||||
* @access private
|
||||
* @var string URL shortcut
|
||||
*/
|
||||
private $form_code;
|
||||
protected $form_code;
|
||||
|
||||
/**
|
||||
* Shortcut for url (javascript)
|
||||
*
|
||||
* @access private
|
||||
* @var string JS URL shortcut
|
||||
*/
|
||||
private $form_code_js;
|
||||
protected $form_code_js;
|
||||
|
||||
/**
|
||||
* Main class entry point
|
||||
*
|
||||
* @access public
|
||||
* @param object ipsRegistry reference
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
public function doExecute( ipsRegistry $registry )
|
||||
{
|
||||
@@ -111,8 +107,7 @@ class admin_members_members_reputation extends ipsCommand
|
||||
/**
|
||||
* Rebuilds the reputation level cache
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function rebuildReputationLevelCache()
|
||||
{
|
||||
@@ -135,8 +130,7 @@ class admin_members_members_reputation extends ipsCommand
|
||||
/**
|
||||
* Removes the selected reputation level
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function deleteLevel()
|
||||
{
|
||||
@@ -153,15 +147,15 @@ class admin_members_members_reputation extends ipsCommand
|
||||
$this->rebuildReputationLevelCache();
|
||||
|
||||
/* Redirect */
|
||||
$this->registry->output->doneScreen( $this->lang->words['rep_level_removed'], $this->lang->words['rep_management'], $this->form_code, 'redirect' );
|
||||
$this->registry->output->global_message = $this->lang->words['rep_level_removed'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code );
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the add/edit reputation level form
|
||||
*
|
||||
* @access public
|
||||
* @param string $mode Either add or edit
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function doLevelForm( $mode='add' )
|
||||
{
|
||||
@@ -194,7 +188,8 @@ class admin_members_members_reputation extends ipsCommand
|
||||
$this->rebuildReputationLevelCache();
|
||||
|
||||
/* Redirect */
|
||||
$this->registry->output->doneScreen( $this->lang->words['rep_level_added'], $this->lang->words['rep_management'], $this->form_code, 'redirect' );
|
||||
$this->registry->output->global_message = $this->lang->words['rep_level_added'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -211,17 +206,17 @@ class admin_members_members_reputation extends ipsCommand
|
||||
$this->rebuildReputationLevelCache();
|
||||
|
||||
/* Redirect */
|
||||
$this->registry->output->doneScreen( $this->lang->words['rep_level_edited'], $this->lang->words['rep_management'], $this->form_code, 'redirect' );
|
||||
$this->registry->output->global_message = $this->lang->words['rep_level_edited'];
|
||||
$this->registry->output->silentRedirectWithMessage( $this->settings['base_url'] . $this->form_code );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Form for adding/exiting reputation levels
|
||||
*
|
||||
* @access public
|
||||
* @param string $mode Either add or edit
|
||||
* @param array $errors Array of error messages to display
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function levelForm( $mode='add', $errors=array() )
|
||||
{
|
||||
@@ -276,8 +271,7 @@ class admin_members_members_reputation extends ipsCommand
|
||||
/**
|
||||
* Reputation overview
|
||||
*
|
||||
* @access public
|
||||
* @return void
|
||||
* @return @e void
|
||||
*/
|
||||
public function reputationOverview()
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionboard.com/">IP.Board</a>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,46 +6,12 @@
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Управление пользователями</subitemtitle>
|
||||
<subitemlang>manage_members</subitemlang>
|
||||
<subsection>members</subsection>
|
||||
<subitemurl>do=members_overview</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
<subitem>
|
||||
<subitemtitle>Список неактивированных</subitemtitle>
|
||||
<subsection>tools</subsection>
|
||||
<subitemurl>section=tools&do=validating</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
<subitem>
|
||||
<subitemtitle>Список заблокированных</subitemtitle>
|
||||
<subsection>tools</subsection>
|
||||
<subitemurl>section=tools&do=locked</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
<subitem>
|
||||
<subitemtitle>Список забаненных</subitemtitle>
|
||||
<subsection>tools</subsection>
|
||||
<subitemurl>section=tools&do=banned</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
<subitem>
|
||||
<subitemtitle>Список спамеров</subitemtitle>
|
||||
<subsection>tools</subsection>
|
||||
<subitemurl>section=tools&do=spam</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
<subitem>
|
||||
<subitemtitle>Список не завершивших регистрацию</subitemtitle>
|
||||
<subsection>members</subsection>
|
||||
<subitemurl>section=tools&do=incomplete</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
</subitems>
|
||||
</item>
|
||||
|
||||
@@ -54,9 +20,10 @@
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Управление званиями пользователей</subitemtitle>
|
||||
<subitemlang>mem_ranks</subitemlang>
|
||||
<subsection>ranks</subsection>
|
||||
<subitemurl>do=ranks_overview</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subitemrolekey>ranks_add</subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
</subitems>
|
||||
@@ -67,9 +34,10 @@
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Управление репутацией пользователей</subitemtitle>
|
||||
<subitemlang>mem_rep</subitemlang>
|
||||
<subsection>reputation</subsection>
|
||||
<subitemurl>do=overview</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subitemrolekey>reps_manage</subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
</subitems>
|
||||
@@ -80,35 +48,10 @@
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Управление дополнительными полями профиля</subitemtitle>
|
||||
<subsection>customfields</subsection>
|
||||
<subitemurl></subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
</subitems>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Группы дополнительных полей</title>
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Управление группами дополнительных полей профиля</subitemtitle>
|
||||
<subsection>customfields</subsection>
|
||||
<subitemurl>do=group_overview</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
</subitems>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<title>Определение IP</title>
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Инструменты</subitemtitle>
|
||||
<subitemlang>mem_tools</subitemlang>
|
||||
<subsection>tools</subsection>
|
||||
<subitemurl></subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subitemrolekey>membertools_ip</subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
</subitems>
|
||||
@@ -119,9 +62,10 @@
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Добавление пользователя</subitemtitle>
|
||||
<subitemlang>mem_add</subitemlang>
|
||||
<subsection>members</subsection>
|
||||
<subitemurl>do=add</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subitemrolekey>member_add</subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
</subitems>
|
||||
@@ -132,9 +76,10 @@
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Управление бан фильтрами</subitemtitle>
|
||||
<subitemlang>banfilters</subitemlang>
|
||||
<subsection>banfilters</subsection>
|
||||
<subitemurl>do=add</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subitemurl></subitemurl>
|
||||
<subitemrolekey>ban_manage</subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
</subitems>
|
||||
@@ -145,9 +90,10 @@
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Настройки уведомлений</subitemtitle>
|
||||
<subitemlang>notifications</subitemlang>
|
||||
<subsection>notifications</subsection>
|
||||
<subitemurl></subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
<subitemrolekey>configure_notifications</subitemrolekey>
|
||||
<subisredirect>0</subisredirect>
|
||||
</subitem>
|
||||
</subitems>
|
||||
|
||||
@@ -2,112 +2,127 @@
|
||||
<permissions>
|
||||
<group>
|
||||
<grouptitle>Управление пользователями</grouptitle>
|
||||
<grouplang>members_members</grouplang>
|
||||
<items>
|
||||
<item>
|
||||
<key>member_add</key>
|
||||
<string>Может добавлять пользователей?</string>
|
||||
<string>Может добавлять?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_add_admin</key>
|
||||
<string>Может добавлять АДМИНОВ?</string>
|
||||
<string>Может добавлять администраторов?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_edit</key>
|
||||
<string>Может редактировать пользователей?</string>
|
||||
<string>Может изменять?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_edit_admin</key>
|
||||
<string>Может редактировать АДМИНОВ?</string>
|
||||
<string>Может изменять администраторов?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_delete</key>
|
||||
<string>Может удалять пользователей?</string>
|
||||
<string>Может удалять?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_delete_admin</key>
|
||||
<string>Может удалять АДМИНОВ?</string>
|
||||
<string>Может удалять администраторов?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>members_merge</key>
|
||||
<string>Может соединять пользовательские учетки?</string>
|
||||
<string>Может объединять?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_suspend</key>
|
||||
<string>Может блокировать и разблокировать пользователей?</string>
|
||||
<string>Может блокировать?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_suspend_admin</key>
|
||||
<string>Может блокировать и разблокировать АДМИНОВ?</string>
|
||||
<string>Может блокировать администраторов?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_prune</key>
|
||||
<string>Может массово удалять пользователей?</string>
|
||||
<string>Может удалять?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_prune_admin</key>
|
||||
<string>Может массово удалять АДМИНОВ?</string>
|
||||
<string>Может удалять администраторов?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_move</key>
|
||||
<string>Может перемещать пользователей в другие группы?</string>
|
||||
<string>Может переносить из группы в группу?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_move_admin1</key>
|
||||
<string>Может перемещать АДМИНОВ в другие группы?</string>
|
||||
<string>Может переносить администраторов в другие группы?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_move_admin2</key>
|
||||
<string>Может настроить продвижение группы в АДМИНА?</string>
|
||||
<string>Может переносить в группу администраторов?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_ban</key>
|
||||
<string>Может банить пользователей?</string>
|
||||
<string>Может банить?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_ban_admin</key>
|
||||
<string>Может банить АДМИНОВ?</string>
|
||||
<string>Может банить администраторов?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_photo</key>
|
||||
<string>Может изменять пользователские фотографии и аватары?</string>
|
||||
<string>Может изменять фотографии пользователям?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>member_photo_admin</key>
|
||||
<string>Может изменять фотографии и аватары у АДМИНОВ?</string>
|
||||
<string>Может изменять фотографии администраторам?</string>
|
||||
</item>
|
||||
</items>
|
||||
</group>
|
||||
<group>
|
||||
<grouptitle>Инструменты по работе с пользователями</grouptitle>
|
||||
<items>
|
||||
<item>
|
||||
<key>membertools_validating</key>
|
||||
<string>Может управлять неактивированными пользователями?</string>
|
||||
<string>Может управлять ожидающими активации?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>membertools_locked</key>
|
||||
<string>Может управлять заблокированными пользователями?</string>
|
||||
<string>Может управлять заблокированными?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>membertools_banned</key>
|
||||
<string>Может управлять забаненными пользователями?</string>
|
||||
<string>Может управлять забаненными?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>membertools_ip</key>
|
||||
<string>Может использовать инструмент для работы с IP адресами?</string>
|
||||
<key>membertools_spam</key>
|
||||
<string>Может управлять спам-пользователями?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>membertools_incomplete</key>
|
||||
<string>Может управлять не завершившими регистрацию?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>membertools_delete_pms</key>
|
||||
<string>Может удалять личные сообщения?</string>
|
||||
</item>
|
||||
</items>
|
||||
</group>
|
||||
<group>
|
||||
<grouptitle>Звания пользователей</grouptitle>
|
||||
<grouptitle>Инструменты</grouptitle>
|
||||
<grouplang>members_tools</grouplang>
|
||||
<items>
|
||||
<item>
|
||||
<key>membertools_ip</key>
|
||||
<string>Может использовать инструменты работы с IP-адресами?</string>
|
||||
</item>
|
||||
</items>
|
||||
</group>
|
||||
<group>
|
||||
<grouptitle>Звания</grouptitle>
|
||||
<grouplang>members_ranks</grouplang>
|
||||
<items>
|
||||
<item>
|
||||
<key>ranks_add</key>
|
||||
<string>Может добавлять новые?</string>
|
||||
<string>Может просматривать и добавлять?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>ranks_edit</key>
|
||||
<string>Может изменять существующие?</string>
|
||||
<string>Может изменять?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>ranks_delete</key>
|
||||
@@ -116,58 +131,40 @@
|
||||
</items>
|
||||
</group>
|
||||
<group>
|
||||
<grouptitle>Дополнительные поля</grouptitle>
|
||||
<items>
|
||||
<item>
|
||||
<key>profilefields_global</key>
|
||||
<string>Can access custom profile fields management?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>profilefields_add</key>
|
||||
<string>Может добавлять новые?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>profilefields_edit</key>
|
||||
<string>Может изменять существующие?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>profilefields_delete</key>
|
||||
<string>Может удалять?</string>
|
||||
</item>
|
||||
</items>
|
||||
</group>
|
||||
<group>
|
||||
<grouptitle>Бан фильтры</grouptitle>
|
||||
<grouptitle>Бан-фильтр</grouptitle>
|
||||
<grouplang>members_banfilters</grouplang>
|
||||
<items>
|
||||
<item>
|
||||
<key>ban_manage</key>
|
||||
<string>Может добавлять/изменять?</string>
|
||||
<string>Может управлять фильтром?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>ban_remove</key>
|
||||
<string>Может удалять?</string>
|
||||
<string>Может удалять правила?</string>
|
||||
</item>
|
||||
</items>
|
||||
</group>
|
||||
<group>
|
||||
<grouptitle>Репутация пользователей</grouptitle>
|
||||
<grouptitle>Репутация</grouptitle>
|
||||
<grouplang>members_reputation</grouplang>
|
||||
<items>
|
||||
<item>
|
||||
<key>reps_manage</key>
|
||||
<string>Может добавлять/изменять уровни репутации?</string>
|
||||
<string>Может управлять?</string>
|
||||
</item>
|
||||
<item>
|
||||
<key>reps_delete</key>
|
||||
<string>Может удалять уровни?</string>
|
||||
<string>Может удалять уровни репутации?</string>
|
||||
</item>
|
||||
</items>
|
||||
</group>
|
||||
<group>
|
||||
<grouptitle>Уведомления</grouptitle>
|
||||
<grouplang>members_notifications</grouplang>
|
||||
<items>
|
||||
<item>
|
||||
<key>configure_notifications</key>
|
||||
<string>Может настраивать уведомления?</string>
|
||||
<string>Может настраивать значения по-умолчанию для уведомлений?</string>
|
||||
</item>
|
||||
</items>
|
||||
</group>
|
||||
|
||||
@@ -1,32 +1,14 @@
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* Define the default restrictions section
|
||||
* Last Updated: $Date: 2010-01-15 10:18:44 -0500 (Fri, 15 Jan 2010) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @file defaultSection.php Define the default section for the 'restrictions' module
|
||||
*~TERABYTE_DOC_READY~
|
||||
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
|
||||
* $License: This is NULLED!
|
||||
* $Author: ips_terabyte $
|
||||
* @since 20th February 2002
|
||||
* @version $Rev: 5713 $
|
||||
*
|
||||
* $LastChangedDate: 2011-05-05 12:40:49 -0400 (Thu, 05 May 2011) $
|
||||
* @version v3.2.3
|
||||
* $Revision: 8655 $
|
||||
*/
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Very simply returns the default section if one is not
|
||||
* passed in the URL
|
||||
*/
|
||||
|
||||
$DEFAULT_SECTION = 'restrictions';
|
||||
$DEFAULT_SECTION = 'restrictions';
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionboard.com/">IP.Board</a>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -3,19 +3,20 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.4
|
||||
* IP.Board v3.2.3
|
||||
* ACP Restrictions
|
||||
* Last Updated: $Date: 2010-06-02 18:28:28 -0400 (Wed, 02 Jun 2010) $
|
||||
* Last Updated: $Date: 2011-06-14 12:04:59 -0400 (Tue, 14 Jun 2011) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @author $Author: ips_terabyte $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @license This is NULLED!
|
||||
* @package IP.Board
|
||||
* @subpackage Members
|
||||
* @link http://www.invisionpower.com
|
||||
* @link http://hatynka.in
|
||||
* @since 1st march 2002
|
||||
* @version $Revision: 6445 $
|
||||
* @version $Revision: 9039 $
|
||||
* @todo Update class_xml references to classXml
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -30,41 +31,36 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
/**
|
||||
* Skin object
|
||||
*
|
||||
* @access private
|
||||
* @var object Skin templates
|
||||
*/
|
||||
private $html;
|
||||
protected $html;
|
||||
|
||||
/**
|
||||
* Shortcut for url
|
||||
*
|
||||
* @access private
|
||||
* @var string URL shortcut
|
||||
*/
|
||||
private $form_code;
|
||||
protected $form_code;
|
||||
|
||||
/**
|
||||
* Shortcut for url (javascript)
|
||||
*
|
||||
* @access private
|
||||
* @var string JS URL shortcut
|
||||
*/
|
||||
private $form_code_js;
|
||||
protected $form_code_js;
|
||||
|
||||
/**
|
||||
* Member information
|
||||
*
|
||||
* @access private
|
||||
* @var array Member information
|
||||
*/
|
||||
private $member_info = array();
|
||||
protected $member_info = array();
|
||||
|
||||
/**
|
||||
* Main class entry point
|
||||
*
|
||||
* @access public
|
||||
* @param object ipsRegistry reference
|
||||
* @return void [Outputs to screen]
|
||||
* @return @e void [Outputs to screen]
|
||||
*/
|
||||
public function doExecute( ipsRegistry $registry )
|
||||
{
|
||||
@@ -165,11 +161,10 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
/**
|
||||
* Saving the ACP restrictions - here's where it gets really dirty
|
||||
*
|
||||
* @access private
|
||||
* @return void
|
||||
* @return @e void
|
||||
* @since 2.1.0.2005-7-11
|
||||
*/
|
||||
private function _restrictionsSave()
|
||||
protected function _restrictionsSave()
|
||||
{
|
||||
$role_id = intval($this->request['id']);
|
||||
$role_type = $this->request['type'];
|
||||
@@ -206,6 +201,99 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
return;
|
||||
}
|
||||
|
||||
//-------------------------------
|
||||
// Grab XML library
|
||||
//-------------------------------
|
||||
|
||||
require_once( IPS_KERNEL_PATH . 'class_xml.php' );/*noLibHook*/
|
||||
|
||||
$xml = new class_xml();
|
||||
$xml->doc_type = IPS_DOC_CHAR_SET;
|
||||
|
||||
//-------------------------------
|
||||
// Start the madness...err parsing
|
||||
//-------------------------------
|
||||
|
||||
foreach( ipsRegistry::$applications as $app_dir => $app_data )
|
||||
{
|
||||
if( !is_array(ipsRegistry::$modules[ $app_dir ]) OR !count(ipsRegistry::$modules[ $app_dir ]) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->lang->loadLanguageFile( array( 'admin_menulang' ), $app_dir );
|
||||
|
||||
foreach( ipsRegistry::$modules[ $app_dir ] as $module )
|
||||
{
|
||||
$_file = IPSLib::getAppDir( $app_dir ) . '/modules_admin/' . $module['sys_module_key'] . '/xml/permissions.xml';
|
||||
|
||||
if( ! $module['sys_module_admin'] )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if( ! is_file( $_file ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$content = file_get_contents( $_file );
|
||||
|
||||
$xml->xml_parse_document( $content );
|
||||
|
||||
if ( ! is_array( $xml->xml_array['permissions']['group'][0] ) )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Ensure [0] is populated
|
||||
//-----------------------------------------
|
||||
|
||||
$xml->xml_array['permissions']['group'] = array( 0 => $xml->xml_array['permissions']['group'] );
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// Loop through and sort out permissions and groups...
|
||||
//-----------------------------------------
|
||||
|
||||
$group = 0;
|
||||
|
||||
foreach( $xml->xml_array['permissions']['group'] as $entry )
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Do we have a row matching this already?
|
||||
//-----------------------------------------
|
||||
|
||||
$_title = ( $entry['grouplang']['VALUE'] AND $this->lang->words[ 'r__' . $entry['grouplang']['VALUE'] ] ) ? $this->lang->words[ 'r__' . $entry['grouplang']['VALUE'] ] : $entry['grouptitle']['VALUE'];
|
||||
$items = array();
|
||||
$group++;
|
||||
|
||||
if( is_array($entry['items']) AND count($entry['items']) )
|
||||
{
|
||||
foreach( $entry['items'] as $item )
|
||||
{
|
||||
if( is_array($item) AND count($item) )
|
||||
{
|
||||
if( isset($item['key']) )
|
||||
{
|
||||
$items[ $item['key']['VALUE'] ] = ( $item['key']['VALUE'] AND $this->lang->words[ 'r__' . $item['key']['VALUE'] ] ) ? $this->lang->words[ 'r__' . $item['key']['VALUE'] ] : $item['string']['VALUE'];
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach( $item as $sub_item )
|
||||
{
|
||||
$items[ $sub_item['key']['VALUE'] ] = ( $sub_item['key']['VALUE'] AND $this->lang->words[ 'r__' . $sub_item['key']['VALUE'] ] ) ? $this->lang->words[ 'r__' . $sub_item['key']['VALUE'] ] : $sub_item['string']['VALUE'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$perms[ $app_data['app_id'] ][ $module['sys_module_id'] ][ $group ]['title'] = $_title;
|
||||
$perms[ $app_data['app_id'] ][ $module['sys_module_id'] ][ $group ]['items'] = $items;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//echo '<PRE>';print_r( $perms );exit();
|
||||
|
||||
$updated_permissions = array(
|
||||
'applications' => array(),
|
||||
'modules' => array(),
|
||||
@@ -214,6 +302,9 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
|
||||
foreach( $_POST as $key => $value )
|
||||
{
|
||||
|
||||
|
||||
|
||||
if( preg_match( "/^app_(\d+)$/", $key, $matches ) )
|
||||
{
|
||||
if( $value )
|
||||
@@ -246,13 +337,11 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
/**
|
||||
* Manage ACP restrictions - The meat and potatoes, so to speak
|
||||
*
|
||||
* @access private
|
||||
* @param string [member|group]
|
||||
* @return void
|
||||
* @return @e void
|
||||
* @since 2.1.0.2005-7-11
|
||||
* @todo One of the only areas that still uses the old XML parser
|
||||
*/
|
||||
private function _restrictionsForm( $type='member' )
|
||||
protected function _restrictionsForm( $type='member' )
|
||||
{
|
||||
//-------------------------------
|
||||
// INIT
|
||||
@@ -293,7 +382,7 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
// Grab XML library
|
||||
//-------------------------------
|
||||
|
||||
require_once( IPS_KERNEL_PATH . 'class_xml.php' );
|
||||
require_once( IPS_KERNEL_PATH . 'class_xml.php' );/*noLibHook*/
|
||||
|
||||
$xml = new class_xml();
|
||||
$xml->doc_type = IPS_DOC_CHAR_SET;
|
||||
@@ -308,6 +397,8 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->lang->loadLanguageFile( array( 'admin_menulang' ), $app_dir );
|
||||
|
||||
foreach( ipsRegistry::$modules[ $app_dir ] as $module )
|
||||
{
|
||||
@@ -318,7 +409,7 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
continue;
|
||||
}
|
||||
|
||||
if( ! file_exists( $_file ) )
|
||||
if( ! is_file( $_file ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -348,7 +439,7 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
// Do we have a row matching this already?
|
||||
//-----------------------------------------
|
||||
|
||||
$_title = $entry['grouptitle']['VALUE'];
|
||||
$_title = ( $entry['grouplang']['VALUE'] AND $this->lang->words[ 'r__' . $entry['grouplang']['VALUE'] ] ) ? $this->lang->words[ 'r__' . $entry['grouplang']['VALUE'] ] : $entry['grouptitle']['VALUE'];
|
||||
$items = array();
|
||||
$group++;
|
||||
|
||||
@@ -360,13 +451,13 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
{
|
||||
if( isset($item['key']) )
|
||||
{
|
||||
$items[ $item['key']['VALUE'] ] = $item['string']['VALUE'];
|
||||
$items[ $item['key']['VALUE'] ] = ( $item['key']['VALUE'] AND $this->lang->words[ 'r__' . $item['key']['VALUE'] ] ) ? $this->lang->words[ 'r__' . $item['key']['VALUE'] ] : $item['string']['VALUE'];
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach( $item as $sub_item )
|
||||
{
|
||||
$items[ $sub_item['key']['VALUE'] ] = $sub_item['string']['VALUE'];
|
||||
$items[ $sub_item['key']['VALUE'] ] = ( $sub_item['key']['VALUE'] AND $this->lang->words[ 'r__' . $sub_item['key']['VALUE'] ] ) ? $this->lang->words[ 'r__' . $sub_item['key']['VALUE'] ] : $sub_item['string']['VALUE'];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -389,11 +480,10 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
/**
|
||||
* List members and groups with restrictions
|
||||
*
|
||||
* @access private
|
||||
* @return void Outputs to screen
|
||||
* @return @e void Outputs to screen
|
||||
* @since 2.1.0.2005-7-7
|
||||
*/
|
||||
private function _acppermsList()
|
||||
protected function _acppermsList()
|
||||
{
|
||||
//-------------------------------
|
||||
// INIT
|
||||
@@ -475,12 +565,11 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
/**
|
||||
* Remove ACP restrictions - this will make a restricted member or group have full permissions
|
||||
*
|
||||
* @access private
|
||||
* @param string [member|group]
|
||||
* @return void
|
||||
* @return @e void
|
||||
* @since 2.1.0.2005-7-11
|
||||
*/
|
||||
private function _removePermissions( $type='member' )
|
||||
protected function _removePermissions( $type='member' )
|
||||
{
|
||||
//-------------------------------
|
||||
// INIT
|
||||
@@ -516,12 +605,11 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
/**
|
||||
* ACP Perms: Add member form
|
||||
*
|
||||
* @access private
|
||||
* @param string [member|group]
|
||||
* @return void
|
||||
* @return @e void
|
||||
* @since 2.1.0.2005-7-7
|
||||
*/
|
||||
private function _addRole( $type='member' )
|
||||
protected function _addRole( $type='member' )
|
||||
{
|
||||
$this->registry->output->extra_nav[] = array( '', $this->lang->words['r_nav'] );
|
||||
|
||||
@@ -540,11 +628,10 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
* Checks input, adds row to DB if OK
|
||||
* This bud's for you
|
||||
*
|
||||
* @access private
|
||||
* @return void
|
||||
* @return @e void
|
||||
* @since 2.1.0.2005-7-8
|
||||
*/
|
||||
private function _addMemberDo()
|
||||
protected function _addMemberDo()
|
||||
{
|
||||
//-------------------------------
|
||||
// INIT
|
||||
@@ -672,7 +759,7 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
|
||||
$message = count($restrict) ? $this->lang->words['r_restrictbase'] : $this->lang->words['r_noacpaccessuntil'];
|
||||
|
||||
$this->registry->output->global_message = sprintf( $this->lang->words['r_addedmember'], $member['members_display_name'], $message );
|
||||
$this->registry->output->setMessage( sprintf( $this->lang->words['r_addedmember'], $member['members_display_name'], $message ), 1 );
|
||||
|
||||
$this->request[ 'mid'] = $member['member_id'] ;
|
||||
$this->_restrictionsForm( 'member' );
|
||||
@@ -681,11 +768,10 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
/**
|
||||
* ACP Perms: Finish adding the group
|
||||
*
|
||||
* @access private
|
||||
* @return void
|
||||
* @return @e void
|
||||
* @since 2.1.0.2005-7-8
|
||||
*/
|
||||
private function _addGroupDo()
|
||||
protected function _addGroupDo()
|
||||
{
|
||||
//-------------------------------
|
||||
// INIT
|
||||
@@ -772,7 +858,7 @@ class admin_members_restrictions_restrictions extends ipsCommand
|
||||
'row_perm_cache' => serialize( array() ),
|
||||
'row_updated' => time() ) );
|
||||
|
||||
$this->registry->output->global_message = sprintf( $this->lang->words['r_addedgroup'], $group['g_title'] );
|
||||
$this->registry->output->setMessage( sprintf( $this->lang->words['r_addedgroup'], $group['g_title'] ), 1 );
|
||||
$this->_acppermsList();
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionboard.com/">IP.Board</a>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,6 +6,7 @@
|
||||
<subitems>
|
||||
<subitem>
|
||||
<subitemtitle>Администраторские ограничения</subitemtitle>
|
||||
<subitemlang>restrictions</subitemlang>
|
||||
<subsection>restrictions</subsection>
|
||||
<subitemurl>do=overview</subitemurl>
|
||||
<subitemrolekey></subitemrolekey>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<permissions>
|
||||
<group>
|
||||
<grouptitle>Управление ограничениями доступа</grouptitle>
|
||||
<grouplang>members_restrictions</grouplang>
|
||||
<items>
|
||||
<item>
|
||||
<key>restrictions_add_member</key>
|
||||
|
||||
Reference in new issue
Block a user