vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   Modification Requests/Questions (Unpaid) (https://vborg.vbsupport.ru/forumdisplay.php?f=112)
-   -   Small request, Newest member display on forum home ignores banned & inactive users. (https://vborg.vbsupport.ru/showthread.php?t=67895)

voogru 08-02-2004 06:59 AM

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.

Michael Morris 08-02-2004 07:45 AM

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.

nexialys 08-02-2004 10:13 AM

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.

CarCdr 08-02-2004 01:07 PM

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.

voogru 08-02-2004 04:29 PM

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!


All times are GMT. The time now is 11:01 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01123 seconds
  • Memory Usage 1,745KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (6)bbcode_code_printable
  • (1)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (5)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete