Version 3.2.3

This commit is contained in:
Neo committed 2025-12-19 00:34:03 -08:00
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( '&#46;', '.', $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("&#43;", "+", $display_name );
}
else
{
$display_name = $this->convertAndMakeSafe( $_POST['name'], 1 );
$display_name = str_replace("&#43;", "+", $display_name );
$display_name = str_replace( '|', '&#124;' , $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('&#39;', "'", str_replace('&amp;', '&', $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&amp;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>
@@ -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&amp;section=customfields&amp;';
$this->js_form_code = $this->html->form_code_js = '&module=members&section=customfields&';
$this->form_code = $this->html->form_code = '&module=cfields&amp;section=customfields&amp;';
$this->js_form_code = $this->html->form_code_js = '&module=cfields&section=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 -&gt; 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 -&gt; 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&amp;section=permissions&amp;do=edit_set_form' . $from . '&amp;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&amp;section=permissions&amp;do=edit_set_form' . $from . '&amp;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&amp;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&amp;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 . '&amp;_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 . '&amp;_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&amp;section=banfilters&amp;';
$this->form_code_js = $this->html->form_code_js = 'module=members&section=banfilters&';
$this->html = $this->registry->output->loadTemplate( 'cp_skin_banfilters' );
//-----------------------------------------
// Set up stuff
//-----------------------------------------
$this->form_code = $this->html->form_code = 'module=members&amp;section=banfilters';
$this->form_code_js = $this->html->form_code_js = 'module=members&section=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("&#43;", "+", $display_name );
}
else
{
$display_name = $this->request['name'];
$display_name = str_replace("&#43;", "+", $display_name );
$display_name = str_replace( '|', '&#124;' , $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( '&#39;', "'", str_replace( '&amp;', '&', str_replace( '&quot;', '"', str_replace( '&#33;', '!', $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 . '&amp;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 . '&amp;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 . '&amp;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&amp;do=validating</subitemurl>
<subitemrolekey></subitemrolekey>
<subisredirect>0</subisredirect>
</subitem>
<subitem>
<subitemtitle>Список заблокированных</subitemtitle>
<subsection>tools</subsection>
<subitemurl>section=tools&amp;do=locked</subitemurl>
<subitemrolekey></subitemrolekey>
<subisredirect>0</subisredirect>
</subitem>
<subitem>
<subitemtitle>Список забаненных</subitemtitle>
<subsection>tools</subsection>
<subitemurl>section=tools&amp;do=banned</subitemurl>
<subitemrolekey></subitemrolekey>
<subisredirect>0</subisredirect>
</subitem>
<subitem>
<subitemtitle>Список спамеров</subitemtitle>
<subsection>tools</subsection>
<subitemurl>section=tools&amp;do=spam</subitemurl>
<subitemrolekey></subitemrolekey>
<subisredirect>0</subisredirect>
</subitem>
<subitem>
<subitemtitle>Список не завершивших регистрацию</subitemtitle>
<subsection>members</subsection>
<subitemurl>section=tools&amp;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>