Version 4.1.2

This commit is contained in:
Neo committed 2025-12-19 05:32:19 -08:00
1 parent 3ba79295ee
commit 28bd025b35
1131 files changed
+63658 -20579

No files matched your search

@@ -124,13 +124,13 @@ class _members extends \IPS\Dispatcher\Controller
'from' => array( 'core_pfields_content', 'p' ),
'where' => 'p.member_id=core_members.member_id' ),
array(
'select' => 'row_id',
'from' => array( 'core_admin_permission_rows', 'a' ),
'where' => "a.row_id=core_members.member_id AND a.row_id_type='member'" ),
'select' => 'm.row_id',
'from' => array( 'core_admin_permission_rows', 'm' ),
'where' => "m.row_id=core_members.member_id AND m.row_id_type='member'" ),
array(
'select' => 'g_access_cp',
'from' => array( 'core_groups', 'g' ),
'where' => "g.g_id=core_members.member_group_id" ),
'select' => 'g.row_id',
'from' => array( 'core_admin_permission_rows', 'g' ),
'where' => "( g.row_id=core_members.member_group_id OR FIND_IN_SET( g.row_id, core_members.mgroup_others ) ) AND g.row_id_type='group'" ),
);
/* Makes query less efficient */
@@ -183,7 +183,7 @@ class _members extends \IPS\Dispatcher\Controller
'members_filter_locked' => 'failed_login_count>=' . (int) \IPS\Settings::i()->ipb_bruteforce_attempts,
'members_filter_spam' => \IPS\Db::i()->bitwiseWhere( \IPS\Member::$bitOptions['members_bitoptions'], 'bw_is_spammer' ),
'members_filter_validating' => '( v.lost_pass=0 AND v.vid IS NOT NULL )',
'members_filter_administrators' => '( a.row_id IS NOT NULL OR g.g_access_cp=1 )'
'members_filter_administrators' => '( m.row_id IS NOT NULL OR g.row_id IS NOT NULL )'
);
/* Custom parsers */
@@ -372,6 +372,7 @@ class _members extends \IPS\Dispatcher\Controller
'members_last_post' => \IPS\Request::i()->members_last_post,
'members_last_visit' => \IPS\Request::i()->members_last_visit,
'members_posts' => \IPS\Request::i()->members_posts,
'filter' => \IPS\Request::i()->filter,
) );
if ( \IPS\Member::loggedIn()->hasAcpRestriction( 'core', 'members', 'member_delete' ) )
@@ -519,6 +520,28 @@ class _members extends \IPS\Dispatcher\Controller
$where[] = array( 'posts'.$operator.'?', (int) \IPS\Request::i()->members_posts[1] );
}
if( isset( \IPS\Request::i()->filter ) )
{
switch ( \IPS\Request::i()->filter )
{
case 'members_filter_banned':
$where[] = array( 'temp_ban<>0' );
break;
case 'members_filter_locked':
$where[] = array( 'failed_login_count>=' . (int) \IPS\Settings::i()->ipb_bruteforce_attempts );
break;
case 'members_filter_spam':
$where[] = array( \IPS\Db::i()->bitwiseWhere( \IPS\Member::$bitOptions['members_bitoptions'], 'bw_is_spammer' ) );
break;
case 'members_filter_validating':
$where[] = array( '( v.lost_pass=0 AND v.vid IS NOT NULL )' );
break;
case 'members_filter_administrators':
$where[] = array( '( m.row_id IS NOT NULL OR g.row_id IS NOT NULL )' );
break;
}
}
if ( !count( $where ) )
{
if ( \IPS\Request::i()->action === 'prune' )
@@ -812,7 +835,7 @@ class _members extends \IPS\Dispatcher\Controller
$form = new \IPS\Helpers\Form;
foreach ( $extensions as $k => $class )
{
$form->addtab( 'member__' . $k );
$form->addTab( 'member__' . $k );
$class->process( $form, $member );
if ( method_exists( $class, 'actionButtons' ) )
@@ -999,6 +1022,7 @@ class _members extends \IPS\Dispatcher\Controller
$member->pp_main_photo = NULL;
$member->pp_main_photo = (string) $values['member_photo_upload'];
$member->pp_thumb_photo = (string) $values['member_photo_upload']->thumbnail( 'core_Profile', \IPS\PHOTO_THUMBNAIL_SIZE, \IPS\PHOTO_THUMBNAIL_SIZE, TRUE );
$member->photo_last_update = time();
}
break;
@@ -1006,11 +1030,13 @@ class _members extends \IPS\Dispatcher\Controller
$member->pp_photo_type = 'custom';
$member->pp_main_photo = NULL;
$member->pp_main_photo = (string) $values['member_photo_url'];
$member->photo_last_update = time();
break;
case 'none':
$member->pp_main_photo = NULL;
$member->members_bitoptions['bw_disable_gravatar'] = 1;
$member->photo_last_update = NULL;
break;
default:
@@ -1057,10 +1083,13 @@ class _members extends \IPS\Dispatcher\Controller
}
/* Init Table */
$table = new \IPS\Helpers\Table\Custom( $member->ipAddresses(), \IPS\Http\Url::internal( "app=core&module=members&controller=members&id={$member->member_id}&do=ip" ) );
$table->langPrefix = 'members_iptable_';
$table->mainColumn = 'ip';
$table->sortBy = $table->sortBy ?: 'last';
$ips = $member->ipAddresses();
$table = new \IPS\Helpers\Table\Custom( $ips, \IPS\Http\Url::internal( "app=core&module=members&controller=members&id={$member->member_id}&do=ip" ) );
$table->langPrefix = 'members_iptable_';
$table->mainColumn = 'ip';
$table->sortBy = $table->sortBy ?: 'last';
$table->quickSearch = 'ip';
/* Parsers */
$table->parsers = array(
@@ -1404,7 +1433,14 @@ class _members extends \IPS\Dispatcher\Controller
}
/* Do it */
$accountToKeep->merge( $accountToDelete );
try
{
$accountToKeep->merge( $accountToDelete );
}
catch( \InvalidArgumentException $e )
{
\IPS\Output::i()->error( $e->getMessage(), '3C114/J', 403, '' );
}
/* Delete the account */
$accountToDelete->delete( FALSE );