Version 3.4.5

This commit is contained in:
Neo committed 2025-12-19 00:38:12 -08:00
1 parent fb6b5baabc
commit e4478369d8
1360 files changed
+228921 -179445

No files matched your search

@@ -3,19 +3,19 @@
/**
* <pre>
* Invision Power Services
* IP.Board v3.3.4
* IP.Board v3.4.5
* Member stats functions
* Last Updated: $Date: 2012-06-12 10:14:49 -0400 (Tue, 12 Jun 2012) $
* Last Updated: $Date: 2012-11-08 12:08:29 -0500 (Thu, 08 Nov 2012) $
* </pre>
*
* @author $Author: bfarber $
* @author $Author: AndyMillne $
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
* @license http://www.invisionpower.com/company/standards.php#license
* @package IP.Board
* @subpackage Forums
* @link http://www.invisionpower.com
* @since 20th February 2002
* @version $Revision: 10914 $
* @version $Revision: 11578 $
*
*/
@@ -367,125 +367,128 @@ class public_forums_extras_stats extends ipsCommand
/* Get a count */
$count = $this->DB->buildAndFetch( array( 'select' => 'count(*) as dracula', 'from' => array( 'members' => 'm' ), 'where' => implode( ' OR ', $whereClause ) ) );
/* Sort out pagination */
$pagination = $this->registry->output->generatePagination( array( 'totalItems' => $count['dracula'],
'itemsPerPage' => $perpage,
'currentStartValue' => $st,
'baseUrl' => "app=forums&module=extras&section=stats&do=leaders" ) );
/* Fetch the ones we want */
$this->DB->build( array(
'select' => 'm.*, m.member_id as my_member_id',
'from' => array( 'members' => 'm' ),
'add_join' => array(
array(
'select' => 'pp.*',
'from' => array( 'profile_portal' => 'pp' ),
'where' => 'pp.pp_member_id=m.member_id',
'type' => 'left',
if ( $count['dracula'] )
{
/* Sort out pagination */
$pagination = $this->registry->output->generatePagination( array( 'totalItems' => $count['dracula'],
'itemsPerPage' => $perpage,
'currentStartValue' => $st,
'baseUrl' => "app=forums&module=extras&section=stats&do=leaders" ) );
/* Fetch the ones we want */
$this->DB->build( array(
'select' => 'm.*, m.member_id as my_member_id',
'from' => array( 'members' => 'm' ),
'add_join' => array(
array(
'select' => 'pp.*',
'from' => array( 'profile_portal' => 'pp' ),
'where' => 'pp.pp_member_id=m.member_id',
'type' => 'left',
),
array(
'select' => 'pf.*',
'from' => array( 'pfields_content' => 'pf' ),
'where' => 'pf.member_id=m.member_id',
'type' => 'left',
),
),
array(
'select' => 'pf.*',
'from' => array( 'pfields_content' => 'pf' ),
'where' => 'pf.member_id=m.member_id',
'type' => 'left',
),
),
'where' => implode( ' OR ', $whereClause ),
'order' => 'm.members_display_name',
'limit' => array( $st, $perpage )
) );
$e = $this->DB->execute();
while( $r = $this->DB->fetch( $e ) )
{
/* Reset member ID just in case.. */
$r['member_id'] = $r['my_member_id'];
$members[ $r['member_id'] ] = IPSMember::buildDisplayData( $r );
}
/* Now fetch session data */
$this->DB->build( array( 'select' => '*',
'from' => 'sessions',
'where' => 'member_id IN (' . implode( ',', array_keys( $members ) ) . ')' ) );
$this->DB->execute();
while( $r = $this->DB->fetch() )
{
if( ! $r['id'] or IPSMember::isLoggedInAnon( $members[ $r['member_id'] ] ) )
{
$location_info[ $r['member_id'] ] = '';
}
else
{
$location_info[ $r['member_id'] ] = IPSMember::getLocation( $r );
}
}
//-----------------------------------------
// Display
//-----------------------------------------
foreach( $members as $k => $member )
{
$forums = isset( $member_ids[ $member['member_id'] ] ) ? $member_ids[ $member['member_id'] ] : array();
if ( $forums == '*' )
{
$forums = $this->lang->words['leader_all_forums'];
}
else
{
$forums = array();
'where' => implode( ' OR ', $whereClause ),
'order' => 'm.members_display_name',
'limit' => array( $st, $perpage )
) );
foreach ( $group_ids as $gid => $fs )
$e = $this->DB->execute();
while( $r = $this->DB->fetch( $e ) )
{
/* Reset member ID just in case.. */
$r['member_id'] = $r['my_member_id'];
$members[ $r['member_id'] ] = IPSMember::buildDisplayData( $r );
}
/* Now fetch session data */
$this->DB->build( array( 'select' => '*',
'from' => 'sessions',
'where' => 'member_id IN (' . implode( ',', array_keys( $members ) ) . ')' ) );
$this->DB->execute();
while( $r = $this->DB->fetch() )
{
if( ! $r['id'] or IPSMember::isLoggedInAnon( $members[ $r['member_id'] ] ) )
{
if ( IPSMember::isInGroup( $member, $gid ) )
$location_info[ $r['member_id'] ] = '';
}
else
{
$location_info[ $r['member_id'] ] = IPSMember::getLocation( $r );
}
}
//-----------------------------------------
// Display
//-----------------------------------------
foreach( $members as $k => $member )
{
$forums = isset( $member_ids[ $member['member_id'] ] ) ? $member_ids[ $member['member_id'] ] : array();
if ( $forums == '*' )
{
$forums = $this->lang->words['leader_all_forums'];
}
else
{
$forums = array();
foreach ( $group_ids as $gid => $fs )
{
if ( $fs == '*' )
if ( IPSMember::isInGroup( $member, $gid ) )
{
$forums = $this->lang->words['leader_all_forums'];
break;
}
else
{
foreach ( $fs as $f_id => $f_name )
if ( $fs == '*' )
{
if ( ! isset( $forums[ $f_id ] ) && $this->registry->getClass('class_forums')->forumsCheckAccess( $f_id, 0, 'forum', array(), true ) )
$forums = $this->lang->words['leader_all_forums'];
break;
}
else
{
foreach ( $fs as $f_id => $f_name )
{
$forums[ $f_id ] = $f_name;
if ( ! isset( $forums[ $f_id ] ) && $this->registry->getClass('class_forums')->forumsCheckAccess( $f_id, 0, 'forum', array(), true ) )
{
$forums[ $f_id ] = $f_name;
}
}
}
}
}
/* Now merge in member specific */
if ( ! is_string( $forums ) && ! empty( $forumsMembers[ $member['member_id'] ] ) )
{
foreach( $forumsMembers[ $member['member_id'] ] as $f_id => $f_name )
{
if ( ! isset( $forums[ $f_id ] ) && $this->registry->getClass('class_forums')->forumsCheckAccess( $f_id, 0, 'forum', array(), true ) )
{
$forums[ $f_id ] = $f_name;
}
}
}
}
/* Now merge in member specific */
if ( ! is_string( $forums ) && ! empty( $forumsMembers[ $member['member_id'] ] ) )
/* Do not list if the user cannot see the forums this mod is a mod of - Bug report 36929 */
if ( empty( $forums ) )
{
foreach( $forumsMembers[ $member['member_id'] ] as $f_id => $f_name )
{
if ( ! isset( $forums[ $f_id ] ) && $this->registry->getClass('class_forums')->forumsCheckAccess( $f_id, 0, 'forum', array(), true ) )
{
$forums[ $f_id ] = $f_name;
}
}
unset( $members[ $k ] );
continue;
}
$members[ $k ]['forums'] = $forums;
$members[ $k ]['online_extra'] = isset( $location_info[ $k ]['online_extra'] ) ? $location_info[ $k ]['online_extra'] : '';
$members[ $k ]['last_active'] = ( $members[ $k ]['member_id'] == $this->memberData['member_id'] ) ? IPS_UNIX_TIME_NOW : ( ( $members[ $k ]['online_extra'] ) ? $members[ $k ]['last_activity'] : $members[ $k ]['last_visit'] );
}
/* Do not list if the user cannot see the forums this mod is a mod of - Bug report 36929 */
if ( empty( $forums ) )
{
unset( $members[ $k ] );
continue;
}
$members[ $k ]['forums'] = $forums;
$members[ $k ]['online_extra'] = isset( $location_info[ $k ]['online_extra'] ) ? $location_info[ $k ]['online_extra'] : '';
$members[ $k ]['last_active'] = ( $members[ $k ]['member_id'] == $this->memberData['member_id'] ) ? IPS_UNIX_TIME_NOW : ( ( $members[ $k ]['online_extra'] ) ? $members[ $k ]['last_activity'] : $members[ $k ]['last_visit'] );
}
}
@@ -562,6 +565,8 @@ class public_forums_extras_stats extends ipsCommand
$this->DB->build( array('select' => 'post_author_id, COUNT(post_id) as tpost',
'from' => 'forums_recent_posts',
'where' => "post_date > {$time_low} AND post_forum_id IN(" . implode( ',', $fiddyCent ) . ')',
'order' => 'tpost DESC',
'limit' => array( 0, 20 ),
'group' => 'post_author_id' ) );
$this->DB->execute();
@@ -608,8 +613,6 @@ class public_forums_extras_stats extends ipsCommand
uasort( $rows, create_function( '$a,$b', 'return $a[\'today_pct\']<$b[\'today_pct\'];' ) );
$rows = array_slice( $rows, 0, 20 );
$this->output .= $this->registry->getClass('output')->getTemplate('stats')->top_posters( $rows );
$this->registry->output->setTitle( $this->lang->words['top_poster_title'] . ' - ' . ipsRegistry::$settings['board_name'] );