PDA

View Full Version : More "Realistic" Member Count on Forumhome


NTLDR
01-08-2004, 10:00 PM
Show Only Active/Certain Usergroups In Member Count

Details:

Author: NTLDR
Version: 1.0.1
Requested by: kie (here) and xtremeathlonxp (here).

Description: This hack will alter the member count shown on the forums home page to exclude certain usergroups or only include members with X posts. PLEASE NOTE: the member count will only alter to effect the new totals when the stats update, ie when a new user registers.

Changes to make:

In includes/functions_databuild.php find:

$members = $DB_site->query_first("SELECT COUNT(*) AS users, MAX(userid) AS max FROM " . TABLE_PREFIX . "user");

Replace with (if you only want to exclude certain groups) (replace X and Y with the usergroupids to exclude):

$members = $DB_site->query_first("SELECT COUNT(*) AS users FROM " . TABLE_PREFIX . "user WHERE usergroupid NOT IN (X,Y)");

or Replace with (if you only want to show members with X posts) (replace W with the number of posts a user must have):

$members = $DB_site->query_first("SELECT COUNT(*) AS users FROM " . TABLE_PREFIX . "user WHERE posts >= W");

or Replace with (for both of the above):

$members = $DB_site->query_first("SELECT COUNT(*) AS users FROM " . TABLE_PREFIX . "user WHERE usergroupid NOT IN (X,Y) AND posts >= W");

Find:

// get newest member
$newuser = $DB_site->query_first("SELECT userid, username FROM " . TABLE_PREFIX . "user WHERE userid = $members[max]");

Replace with:


$members2 = $DB_site->query_first("SELECT MAX(userid) AS max FROM " . TABLE_PREFIX . "user");
// get newest member
$newuser = $DB_site->query_first("SELECT userid, username FROM " . TABLE_PREFIX . "user WHERE userid = $members2[max]");

Please click install if you use this hack :)

corsacrazy
01-09-2004, 09:46 PM
so u will appear to have less members than you do cos lets admit it our forums probally have not even a half of members that are active

NTLDR
01-09-2004, 09:53 PM
Yep thats about right :)

Mr. Brian
01-09-2004, 09:55 PM
Just like mine..

Chris M
01-09-2004, 10:20 PM
Nice work Mr Lee :)

Satan

FleaBag
01-09-2004, 10:34 PM
I have a 70% activity rate which isn't bad. I'd like to exclude users awaiting e-mails, as they basically can do nothing on my site. Thanks for this!

VampireMan
01-09-2004, 10:59 PM
I would install this , but with only 318 members .. and probably only 25% of them are active ... well it dont look too good lol.

But if i manage to get lots more brides2be i will consider this :)

gmarik
01-09-2004, 11:07 PM
fine, but too "realistic" for me ... ;)

Kentaurus
01-10-2004, 08:25 AM
Show Only Active/Certain Usergroups In Member Count

Details:

Author: NTLDR
Version: 1.0.1
Requested by: kie (here) and xtremeathlonxp (here).

Description: This hack will alter the member count shown on the forums home page to exclude certain usergroups or only include members with X posts. PLEASE NOTE: the member count will only alter to effect the new totals when the stats update, ie when a new user registers.

Changes to make:

In includes/functions_databuild.php find:

$members = $DB_site->query_first("SELECT COUNT(*) AS users, MAX(userid) AS max FROM " . TABLE_PREFIX . "user");

Replace with (if you only want to exclude certain groups) (replace X and Y with the usergroupids to exclude):

$members = $DB_site->query_first("SELECT COUNT(*) AS users FROM " . TABLE_PREFIX . "user WHERE usergroupid NOT IN (X,Y)");

or Replace with (if you only want to show members with X posts) (replace W with the number of posts a user must have):

$members = $DB_site->query_first("SELECT COUNT(*) AS users FROM " . TABLE_PREFIX . "user WHERE posts >= W");

or Replace with (for both of the above):

$members = $DB_site->query_first("SELECT COUNT(*) AS users FROM " . TABLE_PREFIX . "user WHERE usergroupid NOT IN (X,Y) AND posts >= W");

Find:

// get newest member
$newuser = $DB_site->query_first("SELECT userid, username FROM " . TABLE_PREFIX . "user WHERE userid = $members[max]");

Replace with:


$members2 = $DB_site->query_first("SELECT MAX(userid) AS max FROM " . TABLE_PREFIX . "user");
// get newest member
$newuser = $DB_site->query_first("SELECT userid, username FROM " . TABLE_PREFIX . "user WHERE userid = $members2[max]");

Please click install if you use this hack :)Maybe I would like a hack that behaves this way (but this is just my personal preference): display all users that have been active in the forum, where active means that they have posted at least 20 posts in the last week (that's the media for my forum).

Currently the lastactivity, lastpost and posts counters are pretty useless because a user may come to the forum, put 100 posts in it and then disappear for five months or so, that is not an active user for me. Also it is argueable that a user that only browses the forum but doesn't post is an active user.

NTLDR
01-10-2004, 06:22 PM
Basing it on X Posts in X time wouldn't be very efficent, especially if you have alot of members and alot of posts. Basing it on say total posts and the last activity is easily doable though (replacing X with the total posts) this would get all users with X posts that have visted in the past week:

$members = $DB_site->query_first("SELECT COUNT(*) AS users FROM " . TABLE_PREFIX . "user WHERE posts >= X AND lastactivity >= ".TIMENOW - (60 * 60 * 24 * 7));

Wonko of Shinra
02-15-2004, 05:04 AM
NTLDR, last idea was the one I was about to suggest, this works much better for us with large forums and high member turn over.

only you got a few typos in that one



$members = $DB_site->query_first("SELECT COUNT(*) AS users, MAX(userid) AS max FROM " . TABLE_PREFIX . "user WHERE posts >= X AND lastactivity >= ".(TIMENOW - (60 * 60 * 24 * 7))."");




*thud*
from 5000 members to 1000, boy do i feel hollow.

ChuanSE
02-25-2004, 11:43 PM
As I see it now, only registered members (or awaiting email confirmation) are counted. Guest are not (according to my pphlogger unique visitors stats).
Is there a way to have a stat that counts every guest, but resets itself every 24hr?
(cause pphlogger doesn't reset)

thx