Codice PHP:
//*======================================================================*\
|| #################################################################### ||
|| # vBExternal v1.6 By Zero Tolerance [[url]http://gzevolution.net[/url]]        ||
|| # This file may not be redistributed, copied in whole or part    ||
|| # without written permission.                    ||
|| # Copyright (C) 2005 Inferno Technologies.                ||
|| #################################################################### ||
\*======================================================================*/

// ---------------------------------------------------
// Start Set PHP Environment
// ---------------------------------------------------

error_reporting(E_ALL & ~E_NOTICE);

// ---------------------------------------------------
// End Set PHP Environment
// ---------------------------------------------------

// ---------------------------------------------------
// Start Define Important Constants
// ---------------------------------------------------

define('NO_REGISTER_GLOBALS'1);
define('THIS_SCRIPT''vBExternal');

// ---------------------------------------------------
// End Define Important Constants
// ---------------------------------------------------

// ---------------------------------------------------
// Start Cache Of Any Needed Templates/Phrase's
// ---------------------------------------------------

$phrasegroups = array();

$specialtemplates = array(
                
'options',
);

$actiontemplates = array();

$globaltemplates = array();

// ---------------------------------------------------
// End Cache Of Any Needed Templates/Phrase's
// ---------------------------------------------------

// ---------------------------------------------------
// Start Call DB & Establish Connection
// ---------------------------------------------------

if( !file_exists('./includes/config.php'))
{
    echo 
"includes/config.php does not exist. Cannot continue.";
    exit;
}

require_once(
'./includes/class_core.php');
require(
'./includes/config.php');

DEFINE('DIR','.');
DEFINE('TABLE_PREFIX',$config['Database']['tableprefix']);

$vbulletin =& new vB_Registry(); // Fake an OOP Object

switch (strtolower($config['Database']['dbtype']))
{
    
// load standard MySQL class
    
case 'mysql':
    case 
'':
    {
        
$db =& new vB_Database($vbulletin);
        break;
    }

    
// load MySQLi class
    
case 'mysqli':
    {
        
$db =& new vB_Database_MySQLi($vbulletin);
        break;
    }

    
// load extended, non MySQL class
    
default:
    {
        die(
'Fatal error: Database class not found');
    }
}

require_once(
'./includes/functions.php');


// make database connection
$db->connect(
    
$config['Database']['dbname'],
    
$config['MasterServer']['servername'],
        
$config['MasterServer']['port'],
    
$config['MasterServer']['username'],
    
$config['MasterServer']['password'],
    
$config['MasterServer']['usepconnect'],
    
$config['SlaveServer']['servername'],
        
$config['SlaveServer']['username'],
    
$config['SlaveServer']['password'],
    
$config['SlaveServer']['usepconnect'],
    
$config['Mysqli']['ini_file']
);

$vbulletin->db =& $db;

// ---------------------------------------------------
// End Call DB & Establish Connection
// ---------------------------------------------------

// ---------------------------------------------------
// Start Require Globalized Settings
// ---------------------------------------------------

class vBulletinHook { function fetch_hook() { return false; } }

define('TIMENOW'time());
require_once(
'./includes/class_bbcode.php');
$Data "";       // Page Output Variable


$datastore_class = (!empty($config['Misc']['datastore'])) ? $config['Misc']['datastore'] : 'vB_Datastore';

if (
$datastore_class != 'vB_Datastore')
{
    require_once(
'./includes/class_datastore.php');
}
$vbulletin->datastore =& new $datastore_class($vbulletin$db);
$vbulletin->datastore->fetch($specialtemplates);

// ---------------------------------------------------
// End Require Globalized Settings
// ---------------------------------------------------

    // ---------------------------------------------------
    // Start Globalized Function - LoadTemplate
    // ---------------------------------------------------

    
function LoadTemplate($template ""){

    
$template "vBExternal/{$template}";

        if(!
file_exists($template)){
        
RunError("System was unable to find the template '{$template}'");
        }

        if(!
$Handler fopen($template,'r')){
        
RunError("System was unable to open the template '{$template}'");
        }

    
$template fread($Handler,filesize($template));
    
fclose($Handler);

    return 
$template;
    }

    
// ---------------------------------------------------
    // End Globalized Function - LoadTemplate
    // ---------------------------------------------------

    // ---------------------------------------------------
    // Start Globalized Function - RunError
    // ---------------------------------------------------

    
function RunError($message ""){
    echo 
"<font size='1' face='verdana'>There was an error while processing vBExternal:
{$message}</font>";
    exit;
    }

    
// ---------------------------------------------------
    // End Globalized Function - RunError
    // ---------------------------------------------------

    // ---------------------------------------------------
    // Start Globalized Function - ParseTemplate
    // ---------------------------------------------------

    
function ParseTemplate($template$parser = array(), $doGlobals 0){
    global 
$vbulletin;

        if(
is_array($parser)){
            foreach(
$parser as $find => $replace){
            
$template str_replace("{".$find."}"$replace$template);
            }
        } else if(
$doGlobals){
        
$RepGlobals = array(
                    
'url' => $vbulletin->options['bburl'],
                );

            foreach(
$RepGlobals as $find => $replace){
            
$template str_replace("{".$find."}"$replace$template);
            }

        }

    return 
$template;
    }

    
// ---------------------------------------------------
    // End Globalized Function - ParseTemplate
    // ---------------------------------------------------

    // ---------------------------------------------------
    // FUNCTION: output_NewestMembers
    // DETAIL:   Outputs newest X members in order of
        //           newest registered first. $a
    //           specifies amount to show (Default 5)
    // ---------------------------------------------------

    
function output_NewestMembers($a 5){
    global 
$db$Data;

    
// Define amount to show
    
$Amount = ($a)? intval($a) : 5;

    
// Load Template
    
$Template LoadTemplate("newest_members.html");

    
// Collect Data
    
$NewestMem $db->query("select username,posts,userid from ".TABLE_PREFIX."user order by joindate desc limit 0,$Amount");

        while(
$Member $db->fetch_array($NewestMem)){
        
$Data .= ParseTemplate($Template,
                            array(
                                
'username' => $Member['username'],
                                
'posts'    => vb_number_format($Member['posts']),
                                
'userid'   => $Member['userid'],
                            )
            );
        }

    
doOutput();
    }

    
// ---------------------------------------------------
    // FUNCTION: output_TopPosters
    // DETAIL:   Outputs Top X posts in order of
        //           highest post count descending. $a
    //           specifies amount to show (Default 5)
    // ---------------------------------------------------

    
function output_TopPosters($a 5){
    global 
$db$Data;

    
// Define amount to show
    
$Amount = ($a)? intval($a) : 5;

    
// Load Template
    
$Template LoadTemplate("newest_members.html");

    
// Collect Data
    
$TopPosters $db->query("select username,posts,userid from ".TABLE_PREFIX."user order by posts desc limit 0,$Amount");

        while(
$Member $db->fetch_array($TopPosters)){
        
$Data .= ParseTemplate($Template,
                            array(
                                
'username' => $Member['username'],
                                
'posts'    => vb_number_format($Member['posts']),
                                
'userid'   => $Member['userid'],
                            )
            );
        }

    
doOutput();
    }

    
// ---------------------------------------------------
    // FUNCTION: output_NewestThreads
    // DETAIL:   Outputs X newest threads ordered by
        //           start date descending. $a
    //           specifies amount to show (Default 5)
        //           and $f can specify certain forums
    //           to grab from (1,3,4), by default it pulls
        //           from all forums.
    // ---------------------------------------------------

    
function output_NewestThreads($a 5,$f ""){
    global 
$db$Data;

    
// Define amount to show
    
$Amount = ($a)? intval($a) : 5;

    
// Define Forum(s) To Pull From
    
$Forums = ($f)? $f'';
    
$SQL    '';

        if(
$Forums){
        
$SQL " where forumid in({$Forums})";
        }

    
// Load Template
    
$Template LoadTemplate("newest_threads.html");

    
// Collect Data
    
$NewestThreads $db->query("select * from ".TABLE_PREFIX."thread{$SQL} order by dateline desc limit 0,$Amount");

        while(
$Thread $db->fetch_array($NewestThreads)){
        
$Data .= ParseTemplate($Template,
                            array(
                                
'threadid'     => $Thread['threadid'],
                                
'threadname'   => $Thread['title'],
                                
'postuserid'   => $Thread['postuserid'],
                                
'postusername' => $Thread['postusername'],
                                
'replies'      => vb_number_format($Thread['replycount']),
                                
'views'        => vb_number_format($Thread['views']),
                                
'lastposter'   => $Thread['lastposter'],
                            )

            );
        }

    
doOutput();
    }

    
// ---------------------------------------------------
    // FUNCTION: output_NewestReplies
    // DETAIL:   Outputs X newest threads ordered by
        //           last post descending. $a
    //           specifies amount to show (Default 5)
        //           and $f can specify certain forums
    //           to grab from (1,3,4), by default it pulls
        //           from all forums.
    // ---------------------------------------------------

    
function output_NewestReplies($a 5,$f ""){
    global 
$db$Data;

    
// Define amount to show
    
$Amount = ($a)? intval($a) : 5;

    
// Define Forum(s) To Pull From
    
$Forums = ($f)? $f'';
    
$SQL    '';

        if(
$Forums){
        
$SQL " where forumid in({$Forums})";
        }

    
// Load Template
    
$Template LoadTemplate("newest_threads.html");

    
// Collect Data
    
$NewestReplies $db->query("select * from ".TABLE_PREFIX."thread{$SQL} order by lastpost desc limit 0,$Amount");

        while(
$Thread $db->fetch_array($NewestReplies)){
        
$Data .= ParseTemplate($Template,
                            array(
                                
'threadid'     => $Thread['threadid'],
                                
'threadname'   => $Thread['title'],
                                
'postuserid'   => $Thread['postuserid'],
                                
'postusername' => $Thread['postusername'],
                                
'replies'      => vb_number_format($Thread['replycount']),
                                
'views'        => vb_number_format($Thread['views']),
                                
'lastposter'   => $Thread['lastposter'],
                            )
            );
        }

    
doOutput();
    }