Originally Posted by komodo
Doughboy/jms... great thoughts, however I don't know how that would work in practicality (being the devil's advocate for a second). As dough said, some sponsors decide based on numbers alone (for better or for worse). For example when I approached umnitza a long time ago, they said come back when we have 1,000 members.
If we did that, it'd probably be best to introduce a new number completely, such as a forum active ratio count, but that wouldn't mean much to very many people, and most wouldn't take the time to read about it.... so at the end of the day, would it be worth all the programming and time invested? It might be a "cool" feature, but when you balance the positive benefit from it with the effort it would take to make it, I'm not sure if it results in a good answer.
And Death, "A mari usque ad mare" means "From Sea to Sea", Canada's motto.
Agreed, It would be strictly an internal number. You still approach advertisers with the general membership number and for internal things maybe some graphic in the profile or enhanced priveledge. What to do with it is more difficult than it's execution. I came up with it on a tangent thought that had no purpose in being other than it was.
the execution is pretty simple. on a daily basis you calulate average postcount for the past 30 days from all members who posted.
first create a new table which serves as the calculated data. consisting of post_count(int) and user_id(int) we'll call it monthly_post_count execute a cron with the following and have it occur nightly. shouldn't take long to execute. (we do this because the values only change daily, you could of course calculate it in real time but that level of granularity shouldn't be required. Of course this could always be done more frequently as load permits)
insert into monthly_post_count(post_count,user_id)
select count(post)as p_count, userid from posts where
post_date > date_sub(curdate(),INTERVAL 30 DAY)
and p_count > 0
group by userid[/CODE]
you now have a list of all members and posts for the last 30 days who have posted.
and from this table you simply execute
select avg(post_count) as avg_post from monthly_post_count
I'm sure you have application level variables that you set from time to time. That's where this would go.
then when you want to use it simply divide the user's post count by the average time 100 and you have a value
select round(post_count/<value of avg>*100) as activity_level
where user_id = <value of user_id>
of course I have made some assumptions and my mysql is weaker than my MSSql but It does the job with the minimium of disruption and code. now where you do profile you can just call a simple query and do with it what you will. At the very least it is a useful report.