Version 4.7.23

This commit is contained in:
Neo committed 2025-12-19 16:21:27 -08:00
1 parent 7124a02564
commit 25ddeb65d6
1791 files changed
+76990 -44452

No files matched your search

@@ -133,7 +133,7 @@ class _membersactivity extends \IPS\Dispatcher\Controller
/* And now build the table */
$table = new \IPS\Helpers\Table\Db( 'core_members', \IPS\Request::i()->url()->setQueryString( array( 'postDateStart' => $startTime, 'postDateEnd' => $endTime, 'postGroups' => \is_array( $groups ) ? implode( ',', $groups ) : NULL ) ), $where );
$table->include = array( 'name', 'email', 'member_posts', 'member_last_post', 'group_name', 'ip_address' );
$table->include = array( 'name', 'email', 'member_last_post', 'group_name', 'ip_address' );
$table->mainColumn = 'name';
$table->langPrefix = 'activity_';
$table->rowClasses = array( 'email' => array( 'ipsTable_wrap' ), 'group_name' => array( 'ipsTable_wrap' ) );
@@ -11,8 +11,21 @@
namespace IPS\core\modules\admin\stats;
use IPS\Dispatcher;
use IPS\Dispatcher\Controller;
use IPS\Member;
use IPS\Request;
use IPS\Output;
use IPS\Theme;
use IPS\Http\Url;
use IPS\core\Statistics\Chart;
use IPS\Helpers\Table\Db as TableDb;
use function defined;
use function header;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' );
exit;
@@ -21,13 +34,18 @@ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) )
/**
* moderators
*/
class _moderators extends \IPS\Dispatcher\Controller
class _moderators extends Controller
{
/**
* @brief Has been CSRF-protected
*/
public static $csrfProtected = TRUE;
/**
* @brief Allow MySQL RW separation for efficiency
*/
public static $allowRWSeparation = TRUE;
/**
* Execute
*
@@ -35,7 +53,7 @@ class _moderators extends \IPS\Dispatcher\Controller
*/
public function execute()
{
\IPS\Dispatcher::i()->checkAcpPermission( 'moderatorstats_manage' );
Dispatcher::i()->checkAcpPermission( 'moderatorstats_manage' );
parent::execute();
}
@@ -46,14 +64,27 @@ class _moderators extends \IPS\Dispatcher\Controller
*/
protected function manage()
{
if ( \IPS\Request::i()->isAjax() )
$tabs = array(
'users' => 'stats_moderators_users',
'actions' => 'stats_moderators_actions'
);
Request::i()->tab ??= 'users';
$activeTab = ( array_key_exists( Request::i()->tab, $tabs ) ) ? Request::i()->tab : 'users';
$output = match( $activeTab ) {
'users' => Chart::loadFromExtension( 'core', 'Moderators' )->getChart( Url::internal( 'app=core&module=stats&controller=moderators&tab=users' ) ),
'actions' => Chart::loadFromExtension( 'core', 'ModeratorsByAction' )->getChart( Url::internal( "app=core&module=stats&controller=moderators&tab=actions" ) )
};
if ( Request::i()->isAjax() )
{
\IPS\Output::i()->output = (string) \IPS\core\Statistics\Chart::loadFromExtension( 'core', 'Moderators' )->getChart( \IPS\Http\Url::internal( 'app=core&module=stats&controller=moderators' ) );
Output::i()->output = (string) $output;
}
else
{
\IPS\Output::i()->title = \IPS\Member::loggedIn()->language()->addToStack('menu__core_stats_moderators');
\IPS\Output::i()->output = (string) \IPS\core\Statistics\Chart::loadFromExtension( 'core', 'Moderators' )->getChart( \IPS\Http\Url::internal( 'app=core&module=stats&controller=moderators' ) );
Output::i()->title = Member::loggedIn()->language()->addToStack('menu__core_stats_moderators');
Output::i()->output = Theme::i()->getTemplate( 'global', 'core' )->tabs( $tabs, $activeTab, (string) $output, Url::internal( "app=core&module=stats&controller=moderators" ) );
}
}
}
@@ -79,12 +79,12 @@ class _referrals extends \IPS\Dispatcher\Controller
if( $params['start'] )
{
$where[] = array( 'joined>?', $params['start'] );
$where[] = array( 'core_members.joined>?', $params['start'] );
}
if( $params['end'] )
{
$where[] = array( 'joined<?', $params['end'] );
$where[] = array( 'core_members.joined<?', $params['end'] );
}
$page = isset( \IPS\Request::i()->page ) ? \intval( \IPS\Request::i()->page ) : 1;
@@ -96,7 +96,8 @@ class _referrals extends \IPS\Dispatcher\Controller
try
{
$total = \IPS\Db::i()->select( 'COUNT(DISTINCT(core_referrals.referred_by))', 'core_referrals', $where )->join( 'core_members', 'core_members.member_id = core_referrals.referred_by')->first();
$total = \IPS\Db::i()->select( 'COUNT(DISTINCT(core_referrals.referred_by))', 'core_referrals', $where )
->join( 'core_members', 'core_members.member_id = core_referrals.member_id')->first();
}
catch ( \UnderflowException $e )
{
@@ -105,7 +106,8 @@ class _referrals extends \IPS\Dispatcher\Controller
if( $total )
{
$select = \IPS\Db::i()->select( 'core_referrals.referred_by as member_id, count(*) as count', 'core_referrals', $where, 'count DESC', array( ( $page - 1 ) * static::PER_PAGE, static::PER_PAGE ), 'member_id' )->join( 'core_members', 'core_members.member_id = core_referrals.referred_by');
$select = \IPS\Db::i()->select( 'core_referrals.referred_by as member_id, count(*) as count', 'core_referrals', $where, 'count DESC', array( ( $page - 1 ) * static::PER_PAGE, static::PER_PAGE ), 'member_id' )
->join( 'core_members', 'core_members.member_id = core_referrals.member_id');
$mids = array();
foreach( $select as $row )