Go Back   vb.org Archive > Community Discussions > Modification Requests/Questions (Unpaid)
  #1  
Old 08-02-2004, 06:59 AM
voogru's Avatar
voogru voogru is offline
 
Join Date: Dec 2001
Location: Miami, FL
Posts: 104
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Small request, Newest member display on forum home ignores banned & inactive users.

Hello,

I have a small request, which should be simple.

For the past 5-6 months I've been having a user constantly register on my forums with fake emails & insulting user names with no intent to use his registrations, he just wants to see his name which is supposed to offend me, calling me derogatory names on the “Welcome our newest member” area.

I don’t want to remove the user (collecting them for an abuse report and want to preserve the data). And an IP ban is not feasible since I have members that are in his area, plus the IP range I'd have to ban is huge.

But I don’t want his fake registrations showing up on my forum home on the "Welcome our newest member, <insert insulting name here>"

So what I want is the "Welcome our newest member" thing, to ignore members that are banned, or haven’t been authorized yet by email.

Any takers?

Thanks.
Reply With Quote
  #2  
Old 08-02-2004, 07:45 AM
Michael Morris's Avatar
Michael Morris Michael Morris is offline
 
Join Date: Nov 2003
Location: Knoxville TN
Posts: 774
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok, figuring out the newest member is the last thing index.php does before spitting out the HTML. Here's the code.

PHP Code:
// get total members and newest member from template
$userstats unserialize($datastore['userstats']);
$numbermembers vb_number_format($userstats['numbermembers']);
$newusername $userstats['newusername'];
$newuserid $userstats['newuserid']; 
Now, if you can run newuserid through the is_member_of function you could prune out new users who's registration is pending confirmation. However, I don't know how you would go back through the list of users to find the most recent confirmed member.
Reply With Quote
  #3  
Old 08-02-2004, 10:13 AM
nexialys
Guest
 
Posts: n/a
Default

the best thing would be to forget him... one day, this gnome will stop harassing you because he will not have the attention he ask for...

and yes, filtering the Newset Member can be good... i always thought it was already doing so... i may take a look later, if nobody do it.
Reply With Quote
  #4  
Old 08-02-2004, 01:07 PM
CarCdr CarCdr is offline
 
Join Date: Apr 2004
Posts: 242
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I had to rework that area myself just after we installed vB. Understand that we run a corporate site where we might add only one user per week (after the initial load). Anyway, the main thing we wanted was to issue the welcome to the last N users rather than simple the last user to be registered. Here is what that looks like in index.php:
Code:
// get newest members
$homepage_ShowNewMembersMaxCount = 3;         // show this many new members
$homepage_ShowNewMembersDaysCutoff = 7;       // no longer new after this many days
$homepage_ShowNewMembersExclGroups = '3,4';   // never show users from these groups

$dateCutoffTmp = TIMENOW - ($homepage_ShowNewMembersDaysCutoff * 86400);
$membersNew = $DB_site->query("
          SELECT username
          FROM " . TABLE_PREFIX . "user
          WHERE joindate > $dateCutoffTmp
             AND usergroupid NOT IN ($homepage_ShowNewMembersExclGroups)
          ORDER BY joindate DESC
          LIMIT $homepage_ShowNewMembersMaxCount");

// If we did not get any, $newusernames will be empty and HTML template won't show it
// because '<if condition="$newusernames">' will be false.
$newusernames = '';
while ($newMember = $DB_site->fetch_array($membersNew)) {
	$newusernames .= (empty($newusernames)? '': ', ') . $newMember['username'];
}
$DB_site->free_result($membersNew);
This approach requires modifying the FORUMHOME template.

To adapt it to your simpler needs, try this code:

Find these lines in index.php:
Code:
$newusername = $userstats['newusername'];
$newuserid = $userstats['newuserid'];
Comment-out these lines (begin line with //) and replace with:
Code:
     $newuser = $DB_site->query_first("SELECT userid, username
                                  FROM " . TABLE_PREFIX . "user
                                  WHERE usergroupid NOT IN (3,4)
                                  ORDER BY userid DESC
                                  LIMIT 1");
     $newuserid = $newuser['userid'];		// set template variables
     $newusername = $newuser['username'];
Just change the '(3,4)' to the list of usergroups to ignore.
Reply With Quote
  #5  
Old 08-02-2004, 04:29 PM
voogru's Avatar
voogru voogru is offline
 
Join Date: Dec 2001
Location: Miami, FL
Posts: 104
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by CarCdr
I had to rework that area myself just after we installed vB. Understand that we run a corporate site where we might add only one user per week (after the initial load). Anyway, the main thing we wanted was to issue the welcome to the last N users rather than simple the last user to be registered. Here is what that looks like in index.php:
Code:
// get newest members
$homepage_ShowNewMembersMaxCount = 3;         // show this many new members
$homepage_ShowNewMembersDaysCutoff = 7;       // no longer new after this many days
$homepage_ShowNewMembersExclGroups = '3,4';   // never show users from these groups

$dateCutoffTmp = TIMENOW - ($homepage_ShowNewMembersDaysCutoff * 86400);
$membersNew = $DB_site->query("
          SELECT username
          FROM " . TABLE_PREFIX . "user
          WHERE joindate > $dateCutoffTmp
             AND usergroupid NOT IN ($homepage_ShowNewMembersExclGroups)
          ORDER BY joindate DESC
          LIMIT $homepage_ShowNewMembersMaxCount");

// If we did not get any, $newusernames will be empty and HTML template won't show it
// because '<if condition="$newusernames">' will be false.
$newusernames = '';
while ($newMember = $DB_site->fetch_array($membersNew)) {
	$newusernames .= (empty($newusernames)? '': ', ') . $newMember['username'];
}
$DB_site->free_result($membersNew);
This approach requires modifying the FORUMHOME template.

To adapt it to your simpler needs, try this code:

Find these lines in index.php:
Code:
$newusername = $userstats['newusername'];
$newuserid = $userstats['newuserid'];
Comment-out these lines (begin line with //) and replace with:
Code:
     $newuser = $DB_site->query_first("SELECT userid, username
                                  FROM " . TABLE_PREFIX . "user
                                  WHERE usergroupid NOT IN (3,4)
                                  ORDER BY userid DESC
                                  LIMIT 1");
     $newuserid = $newuser['userid'];		// set template variables
     $newusername = $newuser['username'];
Just change the '(3,4)' to the list of usergroups to ignore.

Works like a charm, Thanks!
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 02:06 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.09456 seconds
  • Memory Usage 2,212KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (6)bbcode_code
  • (1)bbcode_php
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (4)postbit_onlinestatus
  • (5)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete