Version 2.2.0 RC-1

This commit is contained in:
Neo committed 2025-12-19 00:22:37 -08:00
1 parent f73f8bff6d
commit 22f1b963ee
1034 files changed
+178610 -70897

No files matched your search

+165 -115
View File
@@ -2,28 +2,18 @@
/*
+--------------------------------------------------------------------------
| Invision Power Board 2.1.7
| Invision Power Board
| =============================================
| by Matthew Mecham
| (c) 2001 - 2005 Invision Power Services, Inc.
| (c) 2001 - 2006 Invision Power Services, Inc.
| http://www.invisionpower.com
| =============================================
| Web: http://www.invisionboard.com
| http://www.ibresource.ru/products/invisionpowerboard/
| Time: Tuesday 18th of July 2006 05:56:00 PM
| Release: 52f408a29988b02f45b5e6f4ba5af0ae
| Licence Info: http://www.invisionboard.com/?license
| http://www.ibresource.ru/license
+---------------------------------------------------------------------------
| INVISION POWER BOARD IS NOT FREE / OPEN SOURCE!
+---------------------------------------------------------------------------
| INVISION POWER BOARD ÍÅ ßÂËßÅÒÑß ÁÅÑÏËÀÒÍÛÌ ÏÐÎÃÐÀÌÌÍÛÌ ÎÁÅÑÏÅ×ÅÍÈÅÌ!
| Ïðàâà íà ÏÎ ïðèíàäëåæàò Invision Power Services
| Ïðàâà íà ïåðåâîä IBResource (http://www.ibresource.ru)
+---------------------------------------------------------------------------
| > $Date: 2006-01-11 22:47:48 +0000 (Wed, 11 Jan 2006) $
| > $Revision: 122 $
| > $Author: bfarber $
| > $Date: 2006-10-09 16:33:46 +0100 (Mon, 09 Oct 2006) $
| > $Revision: 622 $
| > $Author: matt $
+---------------------------------------------------------------------------
|
| > Show all the members
@@ -39,7 +29,7 @@
if ( ! defined( 'IN_IPB' ) )
{
print "<h1>Íåêîððåêòíûé àäðåñ</h1>Âû íå èìååòå äîñòóïà ê ýòîìó ôàéëó íàïðÿìóþ. Åñëè âû íåäàâíî îáíîâëÿëè ôîðóì, âû äîëæíû îáíîâèòü âñå ñîîòâåòñòâóþùèå ôàéëû.";
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();
}
@@ -66,6 +56,8 @@ class memberlist
var $ucp_html = "";
var $topic = "";
var $lib_profile = '';
/*-------------------------------------------------------------------------*/
// Auto-run
/*-------------------------------------------------------------------------*/
@@ -78,8 +70,33 @@ class memberlist
$this->ipsclass->load_language('lang_mlist');
$this->ipsclass->load_template('skin_mlist');
//-----------------------------------------
// INIT
//-----------------------------------------
$see_groups = array();
$the_filter = array( 'ALL' => $this->ipsclass->lang['show_all'] );
$the_members = array();
$custom_fields = array();
$checked = $this->ipsclass->input['photoonly'] == 1 ? 'checked="checked"' : "";
$query = array();
$url = array();
$query_string = "";
$error = 0;
$quick_jump = "";
$pp_rating_real = intval( $this->ipsclass->input['pp_rating_real'] );
$pp_gender = substr( trim( $this->ipsclass->input['pp_gender'] ), 0, 10 );
$this->ipsclass->input['showall'] = intval($this->ipsclass->input['showall']);
$this->first = intval($this->ipsclass->input['st']);
$this->max_results = isset( $this->ipsclass->input['max_results'] ) ? $this->ipsclass->input['max_results'] : '20';
$this->sort_key = isset( $this->ipsclass->input['sort_key'] ) ? $this->ipsclass->input['sort_key'] : 'members_display_name';
$this->sort_order = isset( $this->ipsclass->input['sort_order'] ) ? $this->ipsclass->input['sort_order'] : 'asc';
$this->filter = isset( $this->ipsclass->input['filter'] ) ? ( $this->ipsclass->input['filter'] == 'ALL' ? 'ALL' : intval( $this->ipsclass->input['filter'] ) ) : 'ALL';
if ($this->ipsclass->member['g_mem_info'] != 1)
if ( $this->ipsclass->member['g_mem_info'] != 1 )
{
$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'no_permission' ) );
}
@@ -92,65 +109,63 @@ class memberlist
$this->topic = new topics();
$this->topic->ipsclass =& $this->ipsclass;
$this->topic->topic_init( 1 );
$this->topic->topic['forum_id'] = 0;
$this->topic->topic['tid'] = 0;
$see_groups = array();
//-----------------------------------------
// Load profile lib
//-----------------------------------------
require_once( ROOT_PATH . 'sources/action_public/profile.php' );
$this->lib_profile = new profile();
$this->lib_profile->ipsclass =& $this->ipsclass;
//-----------------------------------------
// Get the member groups, member titles stuff
//-----------------------------------------
foreach( $this->ipsclass->cache['group_cache'] as $id => $row )
foreach( $this->ipsclass->cache['group_cache'] as $row )
{
if ( $row['g_hide_from_list'] )
{
continue;
if ( ! ( $this->ipsclass->member['g_access_cp'] AND $this->ipsclass->input['showall'] ) )
{
continue;
}
}
$see_groups[] = $row['g_id'];
$this->mem_groups[ $row['g_id'] ] = array( 'TITLE' => $row['g_title'],
'ICON' => $row['g_icon'],
);
'ICON' => $row['g_icon'] );
}
$the_filter = array( 'ALL' => $this->ipsclass->lang['show_all'] );
foreach($this->mem_groups as $id => $data)
foreach( $this->mem_groups as $id => $data )
{
if ($id == $this->ipsclass->vars['guest_group'])
if ( $id == $this->ipsclass->vars['guest_group'] )
{
continue;
}
$the_filter[$id] = $data['TITLE'];
$the_filter[ $id ] = $data['TITLE'];
}
$group_string = implode( ",", $see_groups );
//-----------------------------------------
// Test for input
//-----------------------------------------
if (isset($this->ipsclass->input['st'])) $this->first = intval($this->ipsclass->input['st']);
if (isset($this->ipsclass->input['max_results'])) $this->max_results = $this->ipsclass->input['max_results'];
if (isset($this->ipsclass->input['sort_key'])) $this->sort_key = $this->ipsclass->input['sort_key'];
if (isset($this->ipsclass->input['sort_order'])) $this->sort_order = $this->ipsclass->input['sort_order'];
if (isset($this->ipsclass->input['filter'])) $this->filter = $this->ipsclass->input['filter'];
//-----------------------------------------
// Init some arrays
//-----------------------------------------
$the_sort_key = array( 'members_display_name' => 'sort_by_name',
'posts' => 'sort_by_posts',
'joined' => 'sort_by_joined',
$the_sort_key = array( 'members_display_name' => 'sort_by_name',
'posts' => 'sort_by_posts',
'joined' => 'sort_by_joined',
'members_profile_views' => 'm_dd_views',
);
$the_max_results = array( 10 => '10',
$the_max_results = array(
20 => '20',
30 => '30',
40 => '40',
50 => '50',
60 => '60',
);
$the_sort_order = array( 'desc' => 'descending_order',
@@ -168,36 +183,34 @@ class memberlist
foreach ($the_sort_order as $k => $v)
{
$sort_order_html .= $k == $this->sort_order ? "<option value='$k' selected>" . $this->ipsclass->lang[ $the_sort_order[ $k ] ] . "</option>\n"
$sort_order_html .= $k == $this->sort_order ? "<option value='$k' selected='selected'>" . $this->ipsclass->lang[ $the_sort_order[ $k ] ] . "</option>\n"
: "<option value='$k'>" . $this->ipsclass->lang[ $the_sort_order[ $k ] ] . "</option>\n";
}
foreach ($the_filter as $k => $v)
{
$filter_html .= $k == $this->filter ? "<option value='$k' selected>" . $the_filter[ $k ] . "</option>\n"
: "<option value='$k'>" . $the_filter[ $k ] . "</option>\n";
$filter_html .= $k == $this->filter ? "<option value='$k' selected='selected'>" . $the_filter[ $k ] . "</option>\n"
: "<option value='$k'>" . $the_filter[ $k ] . "</option>\n";
}
foreach ($the_sort_key as $k => $v)
{
$sort_key_html .= $k == $this->sort_key ? "<option value='$k' selected>" . $this->ipsclass->lang[ $the_sort_key[ $k ] ] . "</option>\n"
: "<option value='$k'>" . $this->ipsclass->lang[ $the_sort_key[ $k ] ] . "</option>\n";
$sort_key_html .= $k == $this->sort_key ? "<option value='$k' selected='selected'>" . $this->ipsclass->lang[ $the_sort_key[ $k ] ] . "</option>\n"
: "<option value='$k'>" . $this->ipsclass->lang[ $the_sort_key[ $k ] ] . "</option>\n";
}
foreach ($the_max_results as $k => $v)
{
$max_results_html .= $k == $this->max_results ? "<option value='$k' selected>". $the_max_results[ $k ] . "</option>\n"
: "<option value='$k'>" . $the_max_results[ $k ] . "</option>\n";
$max_results_html .= $k == $this->max_results ? "<option value='$k' selected='selected'>". $the_max_results[ $k ] . "</option>\n"
: "<option value='$k'>" . $the_max_results[ $k ] . "</option>\n";
}
$this->ipsclass->lang['sorting_text'] = preg_replace( "/<#FILTER#>/" , $filter_html."</select>" , $this->ipsclass->lang['sorting_text'] );
$this->ipsclass->lang['sorting_text'] = preg_replace( "/<#SORT_KEY#>/" , $sort_key_html."</select>" , $this->ipsclass->lang['sorting_text'] );
$this->ipsclass->lang['sorting_text'] = preg_replace( "/<#SORT_ORDER#>/" , $sort_order_html."</select>" , $this->ipsclass->lang['sorting_text'] );
$this->ipsclass->lang['sorting_text'] = preg_replace( "/<#MAX_RESULTS#>/" , $max_results_html."</select>", $this->ipsclass->lang['sorting_text'] );
$error = 0;
$this->ipsclass->lang['sorting_text'] = str_replace( "<#FILTER#>" , $filter_html."</select>" , $this->ipsclass->lang['sorting_text'] );
$this->ipsclass->lang['sorting_text'] = str_replace( "<#SORT_KEY#>" , $sort_key_html."</select>" , $this->ipsclass->lang['sorting_text'] );
$this->ipsclass->lang['sorting_text'] = str_replace( "<#SORT_ORDER#>" , $sort_order_html."</select>" , $this->ipsclass->lang['sorting_text'] );
$this->ipsclass->lang['sorting_text'] = str_replace( "<#MAX_RESULTS#>" , $max_results_html."</select>", $this->ipsclass->lang['sorting_text'] );
if ( ! isset($the_sort_key[ $this->sort_key ]) ) $error = 1;
if ( ! isset($the_sort_order[ $this->sort_order ]) ) $error = 1;
if ( ! isset($the_filter[ $this->filter ]) ) $error = 1;
if ( ! isset($the_max_results[ $this->max_results ]) ) $error = 1;
if ( ! isset($the_max_results[ $this->max_results ]) ) $this->max_results = 20;
//-----------------------------------------
// Error?
@@ -219,12 +232,10 @@ class memberlist
// Quick form?
//-----------------------------------------
$quick_jump = "";
for ( $i = 65; $i <= 90; $i++ )
{
$letter = strtolower(chr($i));
$selected = $this->ipsclass->input['quickjump'] == $letter ? ' selected="selected"' : '';
$selected = isset($this->ipsclass->input['quickjump']) AND $this->ipsclass->input['quickjump'] == $letter ? ' selected="selected"' : '';
$quick_jump .= $this->ipsclass->compiled_templates['skin_mlist']->mlist_quick_jump_entry( $letter, $selected );
}
@@ -238,23 +249,17 @@ class memberlist
$this->topic->custom_fields->supmod = intval($this->ipsclass->member['g_is_supmod']);
$this->topic->custom_fields->member_id = $this->ipsclass->member['id'];
$this->topic->custom_fields->mem_data_id = 0;
$this->topic->custom_fields->mem_list = 1;
$this->topic->custom_fields->init_data();
$this->topic->custom_fields->parse_to_edit();
//-----------------------------------------
// Query..
//-----------------------------------------
$query = array();
$url = array();
$query_string = "";
//-----------------------------------------
// Quick jump rehash...
//-----------------------------------------
if ( $this->ipsclass->input['qjbutton'] and $this->ipsclass->input['quickjump'] )
if ( isset($this->ipsclass->input['qjbutton']) AND $this->ipsclass->input['qjbutton']
AND isset($this->ipsclass->input['quickjump']) AND $this->ipsclass->input['quickjump'] )
{
$this->ipsclass->input['name_box'] = 'begins';
$this->ipsclass->input['name'] = $this->ipsclass->input['quickjump'];
@@ -284,11 +289,14 @@ class memberlist
{
$hide_ids = array();
foreach( $this->ipsclass->cache['group_cache'] as $id => $data )
foreach( $this->ipsclass->cache['group_cache'] as $data )
{
if ( $data['g_hide_from_list'] )
{
$hide_ids[] = $data['g_id'];
if( !($this->ipsclass->member['g_access_cp'] && $this->ipsclass->input['showall']) )
{
$hide_ids[] = $data['g_id'];
}
}
}
@@ -315,7 +323,7 @@ class memberlist
'signature' => 'me.signature',
'homepage' => 'me.website',
'name' => 'm.name',
'photoonly' => 'me.photo_location',
'photoonly' => 'pp.pp_main_photo',
);
//-----------------------------------------
@@ -324,7 +332,8 @@ class memberlist
foreach( $mapit as $in => $tbl )
{
$inbit = $this->ipsclass->parse_clean_value(trim(urldecode(stripslashes($this->ipsclass->input[ $in ]))));
$this->ipsclass->input[ $in ] = isset($this->ipsclass->input[ $in ]) ? $this->ipsclass->input[ $in ] : '';
$inbit = $this->ipsclass->parse_clean_value(trim(urldecode(stripslashes($this->ipsclass->input[ $in ]))));
$url[] = $in.'='.$this->ipsclass->input[ $in ];
@@ -336,11 +345,11 @@ class memberlist
{
if ( $this->ipsclass->input['name_box'] == 'begins' )
{
$query[] = "m.members_display_name LIKE '".$inbit."%'";
$query[] = "m.members_l_display_name LIKE '".$inbit."%'";
}
else
{
$query[] = "m.members_display_name LIKE '%".$inbit."%'";
$query[] = "m.members_l_display_name LIKE '%".$inbit."%'";
}
}
else if ( $in == 'posts' and intval($inbit) > 0 )
@@ -390,19 +399,47 @@ class memberlist
{
foreach( $this->topic->custom_fields->out_fields as $id => $data )
{
if ( $this->ipsclass->input['field_'.$id] )
if ( isset($this->ipsclass->input['field_'.$id]) AND $this->ipsclass->input['field_'.$id] )
{
$query[] = "p.field_{$id} LIKE '{$this->ipsclass->input['field_'.$id]}%'";
$url[] = "field_{$id}=".$this->ipsclass->input['field_'.$id];
}
}
}
//-----------------------------------------
// Rating..
//-----------------------------------------
if ( $pp_rating_real )
{
$query[] = "pp.pp_rating_real > ".$pp_rating_real;
$url[] = "pp_rating_real=".$pp_rating_real;
}
//-----------------------------------------
// Rating..
//-----------------------------------------
if ( $pp_gender )
{
if ( $pp_gender == 'male' )
{
$query[] = "pp.pp_gender='male'";
$url[] = "pp_gender=male";
}
else if ( $pp_gender == 'female' )
{
$query[] = "pp.pp_gender='female'";
$url[] = "pp_gender=female";
}
}
//-----------------------------------------
// Finish query
//-----------------------------------------
if ( count($query) )
if ( count( $query ) )
{
$query_string = implode( " AND ", $query );
}
@@ -415,8 +452,10 @@ class memberlist
$this->ipsclass->DB->cache_exec_query();
$max = $this->ipsclass->DB->fetch_row();
$this->ipsclass->input['name_box'] = isset($this->ipsclass->input['name_box']) ? $this->ipsclass->input['name_box'] : '';
$links = $this->ipsclass->build_pagelinks( array( 'TOTAL_POSS' => $max['total_members'],
$pages = $this->ipsclass->build_pagelinks( array( 'TOTAL_POSS' => $max['total_members'],
'PER_PAGE' => $this->max_results,
'CUR_ST_VAL' => $this->first,
'L_SINGLE' => "",
@@ -425,16 +464,10 @@ class memberlist
)
);
$this->output = $this->ipsclass->compiled_templates['skin_mlist']->mlist_start();
$this->output .= $this->ipsclass->compiled_templates['skin_mlist']->mlist_page_header( $links, $quick_jump );
//-----------------------------------------
// Get custom profile information
//-----------------------------------------
$custom_fields = "";
if ( count( $this->topic->custom_fields->out_fields ) )
{
foreach( $this->topic->custom_fields->out_fields as $id => $data )
@@ -456,6 +489,9 @@ class memberlist
// START THE LISTING
//-----------------------------------------
$_count = 0;
$_per_row = 4;
if ( $max['total_members'] > 0 )
{
$this->ipsclass->DB->cache_add_query( 'mlist_get_members', array( 'query' => $query_string,
@@ -467,56 +503,70 @@ class memberlist
while ($member = $this->ipsclass->DB->fetch_row() )
{
$member['members_display_name'] = $member['members_display_name'] ? $member['members_display_name'] : $member['name'];
//-----------------------------------------
// Kludgy.. kludge.. must out in IPB 3.0
//-----------------------------------------
#$member = $this->lib_profile->personal_portal_set_information( $member );
$member = $this->topic->parse_member( $member );
$photo_vars = $this->ipsclass->cache['group_cache'][$member['mgroup']]['g_photo_max_vars'];
$photo_dims = array( 'pwidth' => 180, 'pheight' => 180 );
if( strpos( $photo_vars, ":" ) )
{
$tmp = array();
$tmp = explode( ":", $photo_vars );
$photo_dims['pwidth'] = $tmp[1]+30;
$photo_dims['pheight'] = $tmp[2]+30;
unset( $tmp, $photo_vars );
}
# Stop the length check taking into account member title formatting
$member['_members_display_name'] = $member['members_display_name'];
$member['joined'] = $this->ipsclass->get_date( $member['joined'], 'JOINED' );
$member['group'] = $this->mem_groups[ $member['mgroup'] ]['TITLE'];
if ($member['photo_type'] and $member['photo_location'])
{
$member['camera'] = "<a href=\"javascript:PopUp('{$this->ipsclass->base_url}act=Profile&amp;CODE=showphoto&amp;MID={$member['id']}','Photo','{$photo_dims['pwidth']}','{$photo_dims['pheight']}','0','1','1','1')\"><{CAMERA}></a>";
}
$member['posts'] = $this->ipsclass->do_number_format($member['posts']);
$member['group'] = $this->ipsclass->make_name_formatted( $this->mem_groups[ $member['mgroup'] ]['TITLE'], $member['mgroup'] );
$member['posts'] = $this->ipsclass->do_number_format($member['posts']);
//-----------------------------------------
// Bug fix... name-- breaks formatting
// xhmlt invalid..
//-----------------------------------------
$member['members_display_name'] = str_replace( '--', '&#45;&#45;', $member['members_display_name'] );
$member['members_display_name'] = str_replace( '--', '&#45;&#45;', $this->ipsclass->make_name_formatted( $member['members_display_name'], $member['mgroup'] ) );
$this->output .= $this->ipsclass->compiled_templates['skin_mlist']->mlist_show_row($member);
//-----------------------------------------
// New row?
//-----------------------------------------
if ( $_count % $_per_row == 0 )
{
$member['_new_row'] = 1;
}
$_count++;
$the_members[] = $member;
}
}
else
//-----------------------------------------
// More rows?
//-----------------------------------------
if ( $_count % $_per_row != 0 )
{
$this->output .= $this->ipsclass->compiled_templates['skin_mlist']->mlist_no_results();
for( $i = 0 ; $i < $_per_row ; $i ++ )
{
if ( $_count % $_per_row != 0 )
{
$the_members[] = array( '_blank' => 1 );
}
else
{
break;
}
$_count++;
}
}
$checked = $this->ipsclass->input['photoonly'] == 1 ? 'checked="checked"' : "";
//-----------------------------------------
// Print bottom...
// Print...
//-----------------------------------------
$this->output .= $this->ipsclass->compiled_templates['skin_mlist']->mlist_page_end( $checked );
$this->output .= $this->ipsclass->compiled_templates['skin_mlist']->mlist_end( $links );
$this->output .= $this->ipsclass->compiled_templates['skin_mlist']->member_list_show($the_members, $pages, $quick_jump, $checked);
if ( $custom_fields )
{