vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.0 Full Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=33)
-   -   List latest X paid subscribers on Forum Home (https://vborg.vbsupport.ru/showthread.php?t=65254)

tamarian 05-17-2004 10:00 PM

List latest X paid subscribers on Forum Home
 
There's also a vB 3.5 version here: https://vborg.vbsupport.ru/showthrea...threadid=99049

What this hack does: This hack will list and instantly refresh (when a new subscription is made) a list of the latest X paid subscribers to your forum. It's a nice way of recognizing members who help pay the the forum bills, and encourages others to join.

Demo: http://forum.lowcarber.org

PHP edits:
1. 2 edits in index.php
2. 1 edit in includes/functions.php
3. 2 edits in includes/functions_subscriptions.php

Template edits:
1. 1 new template: thanks
2. 1 edit in FORUMHOME

Installation:

1. In index.php

Find:

PHP Code:

'FORUMHOME'

Add after:

PHP Code:

'thanks'

Find:

PHP Code:

// ### TODAY'S BIRTHDAYS 

Add before:

PHP Code:

$thanks $templatecache['thanks']; 

2. In include/functions.php

At the end of the file, just before the end/footer stuff,
Code:

/*======================================================================*\
|| ####################################################################
|| # Downloaded: Thu Apr 15th 2004
|| # CVS: $RCSfile: functions.php,v $ - $Revision: 1.967 $
|| ####################################################################
\*======================================================================*/
?>

add before:
PHP Code:

// ###################### thankyou #######################
function thankyou(){
      global 
$DB_site;

    
// This is the template for usernames
    
$thanksbit ' <a href=\"member.php?$session[sessionurl]u=$contributer[userid]\"><font color=\"#228E8E\"><b>$contributer[username]</b></font></a>';

    
$latestcontributers $DB_site->query("SELECT username, status,regdate,  subscriptionlog.userid
                FROM " 
TABLE_PREFIX "subscriptionlog AS subscriptionlog
                LEFT  JOIN " 
TABLE_PREFIX "user AS user
                USING ( userid )
                WHERE user.userid = subscriptionlog.userid
                AND STATUS = '1'
                ORDER  BY  regdate  DESC
                LIMIT 5"
);

    
$latest_str '';
    while (
$contributer $DB_site->fetch_array($latestcontributers))
    {
        eval(
"\$latest_str .= ', ' . \"$thanksbit\";");
    }
    
$latest_str substr($latest_str 2);
    
$latest_str addslashes($latest_str);
    
$DB_site->query("UPDATE " TABLE_PREFIX "template SET template=\"$latest_str\", template_un=\"$latest_str\"  WHERE title='thanks'");


Note 1: Change "LIMIT 5" to any number. By default, it will show the latest 5 paid subscribers. If you want to show the latest 3, simply change to "LIMIT 3".
Note2 The template for usernames is in the code. To change the style and colour, edit this line from the code you added to functions.php:
PHP Code:

    $thanksbit ' <a href=\"member.php?$session[sessionurl]u=$contributer[userid]\"><font color=\"#228E8E\"><b>$contributer[username]</b></font></a>'


3. In includes/functions_subscriptions.php

Find:

PHP Code:

}
      
      
// ###################### Start leavesubscription #######################
      
      
function delete_user_subscription($subscriptionid$userid

Add before (before the bracket):

PHP Code:

thankyou(); 

Find:

PHP Code:

}
      
      
// ###################### Start getsubscriptionscache #######################
      
function cache_user_subscriptions() 

Add before (before the bracket:

PHP Code:

thankyou(); 

4. Create a new template: thanks

Leave the new template empty

5. Edit the FORUMHOME template

Add $thanks where you want the list of members to appear.

For example, I use this in the stats area of FORUMHOME:

Code:

<div>Thanks latest <a href="subscriptions.php">contributing members</a>: $thanks</div>
6. First run To auto fill the list for the first time, you just need to edit an existing subscription, or just wait for the next subscription to arrive.

To auto fill it right now: Simply go to your admin control panel, click on subscriptions, view list, edit any existing subscription, for example, add 1 day to the subscription of a member, and save. You can re-edit to subtract the 1 day if you want.

ryancooper 05-18-2004 09:13 PM

This looks great! any way to make it work with vbportal?

tamarian 05-18-2004 09:42 PM

Quote:

Originally Posted by ryancooper
any way to make it work with vbportal?

I think it would be quite easy, but I've never used vbportal.

Let's see if any vbportal expert can suggest the right template edits.

jilly 05-20-2004 09:19 PM

the top of the template says Warning: Invalid argument supplied for foreach() in /web/forums/includes/functions.php on line 2871

tamarian 05-20-2004 09:53 PM

Quote:

Originally Posted by jilly
the top of the template says Warning: Invalid argument supplied for foreach() in /web/forums/includes/functions.php on line 2871

Could you post what you added to functions.php, and specify which line is 2871.

jilly 05-21-2004 12:48 AM

this is line 2871 in my functions.php


// ###################### Start bits2array #######################
// takes a bitfield and the array describing the resulting fields
function convert_bits_to_array(&$bitfield, $_FIELDNAMES)
{
$bitfield = intval($bitfield);
$arry = array();
foreach ($_FIELDNAMES AS $field => $bitvalue) {
if ($bitfield & $bitvalue)
{
$arry["$field"] = 1;
}
else

{
$arry["$field"] = 0;
}
}
return $arry;
}


and I added the thank you code right above the end of the file, here:


// ###################### thankyou #######################
function thankyou(){
global $DB_site, $stylevar, $vboptions, $vbphrase;

require_once('./global.php');

$latestcontributers = $DB_site->query("SELECT username, subscriptionlog.userid
FROM " . TABLE_PREFIX . "subscriptionlog AS subscriptionlog
LEFT JOIN " . TABLE_PREFIX . "user AS user
USING ( userid )
WHERE user.userid = subscriptionlog.userid
AND STATUS = '1'
ORDER BY regdate DESC
LIMIT 10");

$latest_str = "";
while ($contributer = $DB_site->fetch_array($latestcontributers))
{
eval ('$latest_str .= ", ' . fetch_template('thanksbit') . '";');
}
$latest_str = substr($latest_str , 2);
$latest_str = addslashes($latest_str);
$DB_site->query("UPDATE " . TABLE_PREFIX . "template SET template=\"$latest_str\", template_un=\"$latest_str\" WHERE title='thanks'");
}


/*================================================= =====================*\
|| ################################################## ##################
|| # Downloaded: 18:53, Tue Apr 27th 2004
|| # CVS: $RCSfile: functions.php,v $ - $Revision: 1.967 $
|| ################################################## ##################
\*================================================ ======================*/
?>


I couldnt post the whole file, it was too big

tamarian 05-21-2004 01:00 AM

This is strange, as that portion of the code is not related.

Try this: remove the thankyou stuff from the bottom of functions.php (and from functions_subscriptions.php), and see if this still keeps happening. It might be totally unrelated.

rookie7 05-28-2004 11:07 PM

Great hack! *install*

Bryan Ex 06-02-2004 09:44 PM

I'd really like to use this but I use a third party script for subscriptions that moves users in and out of a specified usergroup. Is there a way this could query a usergroup ID instead of the subscription logs?

tamarian 06-02-2004 10:01 PM

Quote:

Originally Posted by Bryan Ex
I'd really like to use this but I use a third party script for subscriptions that moves users in and out of a specified usergroup. Is there a way this could query a usergroup ID instead of the subscription logs?

But that won't be enough, since there would be no way to determine "last X", since there's no place to keep a record of the date the user changed usergroups by that 3rd party script.


All times are GMT. The time now is 03:11 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.01179 seconds
  • Memory Usage 1,780KB
  • 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
  • (2)bbcode_code_printable
  • (10)bbcode_php_printable
  • (3)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (2)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)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
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete