Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 06-09-2011, 04:36 PM
wraggster wraggster is offline
 
Join Date: Mar 2005
Posts: 78
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Code difference in VB 4 Query - Cant Connect to Database

Hi can anyone whos knowledgeable take a look at this code and spot anything that isnt compatible with VB4(the code works fine in VB3.8

PHP Code:
 <?php

// ---------------------------------------------------
// 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_old.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']['usepconnect'],
$config['MasterServer']['username'],
$config['MasterServer']['password'],
$config['SlaveServer']['servername'],
$config['SlaveServer']['usepconnect'],
$config['SlaveServer']['username'],
$config['SlaveServer']['password'],
$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:<br />{$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_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();
    }
    
        
// ---------------------------------------------------
    // FUNCTION: output_Content
    // DETAIL:   Outputs Content from the first post of a 
    //           specific thread to show SEO content
    // NOTE:     The parenthesis excludes threads from
    //           the staff forums.
    // ---------------------------------------------------

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

    if (empty(
$_GET['id'])) 
    { 
$threadid 28014; }
    else { 
$threadid = ($_GET['id']); } 
    
    if (!
preg_match("/^[0-9]{1,6}$/"$threadid)) die("Bad threadid, please re-enter.");
        
    
// Load Template
    
$Template LoadTemplate("contentseo.html");

    
// Collect Data
    
$NewestNews $db->query("SELECT post.*, thread.* FROM thread, post WHERE thread.visible=1 AND (thread.forumid!= 16 AND thread.forumid!= 29 AND thread.forumid!= 52) AND post.postid = thread.firstpostid AND thread.threadid = $threadid limit 1");


    
$bbcode_parser =& new vB_BbCodeParser($vbulletinfetch_tag_list());

        while(
$Content $db->fetch_array($NewestNews)){
        
$Data .= ParseTemplate($Template,
                            array(                                
                                
'threadid'     => $Content['threadid'],
                                
'threadname'   => $Content['title'],
                                
'forumid'      => $Content['forumid'],
                                
'seo'          => strtolower(preg_replace('/\W+/''-'preg_replace('/quot+/'''preg_replace('/!+/'''preg_replace('/%+/''-percent'$Content['title']))))),
                                
'postuserid'   => $Content['postuserid'],
                                
'postusername' => $Content['postusername'],
                                
'iconid'       => $Content['iconid'],
                                
'post'         => $bbcode_parser->parse(unhtmlspecialchars($Content['pagetext']), $f),
                                
'comments'     => vb_number_format($Content['replycount']),
                                
'date'         => vbdate($vbulletin->options['dateformat'], $Content['dateline']),                     
                                
'time'         => vbdate($vbulletin->options['timeformat'], $Content['dateline']),
                                
'lastposter'   => $Content['lastposter'],
                            )
            );
        }
        
    
doOutput();
    }
    
                
// ---------------------------------------------------
    // FUNCTION: output_News_Archive
    // DETAIL:   Outputs the first post from X threads
        //           from a specific forum (ordered by newest
        //           first)
    // ---------------------------------------------------

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

     
// query strings
          
     
$smonth = ($_GET['month']);
     
$emonth $smonth+1;
     
$year = ($_GET['year']);     
     
       
// start
   
     
$startday=01;
     
$startmonth=03;
     
$startyear=2004;
     
$start=mktime('01','03','2004',$smonth,$startday,$year);
     
     
// end
     
     
$endday=01;
     
$endmonth=02;
     
$endyear=2012;
     
$end=mktime('01','02','2020',$emonth,$endday,$year);
     
//     echo "$start";
//     echo "och";
//     echo "$end";
     
    // Load Template
    
$Template LoadTemplate("news.html");    
    
    
// Collect Data
    
$NewestNews $db->query("SELECT post.*, thread.* FROM thread, post WHERE thread.visible=1 AND (thread.forumid = 37  OR thread.forumid = 251 OR thread.forumid = 112 OR thread.forumid = 263 OR thread.forumid = 322) AND post.postid = thread.firstpostid AND thread.dateline >= '$start' AND thread.dateline <= '$end' order by thread.dateline ASC limit 2000");


    
$bbcode_parser =& new vB_BbCodeParser($vbulletinfetch_tag_list());

        while(
$News $db->fetch_array($NewestNews)){
        
$Data .= ParseTemplate($Template,
                            array(                                
                                
'threadid'     => $News['threadid'],
                                
'threadname'   => $News['title'],
                                
'forumid'      => $News['forumid'],
                                
'seo'          => strtolower(preg_replace('/\W+/''-'preg_replace('/quot+/'''preg_replace('/!+/'''preg_replace('/%+/''-percent'$News['title']))))),
                                
'postuserid'   => $News['postuserid'],
                                
'postusername' => $News['postusername'],
                                
'iconid'       => $News['iconid'],
                                
'post'         => $bbcode_parser->parse(unhtmlspecialchars($News['pagetext']), $f),
                                
'comments'     => vb_number_format($News['replycount']),
                                
'date'         => vbdate($vbulletin->options['dateformat'], $News['dateline']),                        
                                
'time'         => vbdate($vbulletin->options['timeformat'], $News['dateline']),
                                
'lastposter'   => $News['lastposter'],
                            )
            );
        }
        
    
doOutput();
    }

/*
    // ---------------------------------------------------
    // FUNCTION: output_News
    // DETAIL:   Outputs the first post from X threads
        //           from a specific forum (ordered by newest
        //           first)
    // ---------------------------------------------------

    function output_News($a = 5,$f = ""){
    global $db, $Data, $vbulletin;

    // How many news posts should we display?
    $Amount = '35';

    // Which forums should we pull news from? 
    // Only display news from one forum? Change to ie. $Forum = '82';
    $Forum = '36';
    
      // Which users are allowed to post news? 
    // Only allow one user to post news: $User = '2181'; 
    // Allow all users to post news? Remove "t.postuserid = $User AND" from Collect Data below. If it's already removed below you're allowing everyone to post news.
    $User = '2181 or t.postuserid = 1 or t.postuserid = 32457';
    
        if(!$Forum){
        RunError("No specified forum to pull news from.");
        }

    // Load Template
    $Template = LoadTemplate("news.html");

    // Collect Data
    $NewestNews = $db->query("SELECT post.*, thread.* FROM thread, post WHERE thread.visible=1 AND (thread.forumid = 51) AND post.postid = thread.firstpostid order by thread.dateline DESC limit 35");


    $bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());

        while($News = $db->fetch_array($NewestNews)){
        $Data .= ParseTemplate($Template,
                            array(                                
                                'threadid'     => $News['threadid'],
                                'threadname'   => $News['title'],
                                'forumid'      => $News['forumid'],
                                'seo'          => strtolower(preg_replace('/\W+/', '-', preg_replace('/quot+/', '', preg_replace('/!+/', '', preg_replace('/%+/', '-percent', $News['title']))))),
                                'postuserid'   => $News['postuserid'],
                                'postusername' => $News['postusername'],
                                'iconid'       => $News['iconid'],
                                'post'         => $bbcode_parser->parse(unhtmlspecialchars($News['pagetext']), $f),
                                'comments'     => vb_number_format($News['replycount']),
                                'date'         => vbdate($vbulletin->options['dateformat'], $News['dateline']),                        
                                'time'         => vbdate($vbulletin->options['timeformat'], $News['dateline']),
                                'lastposter'   => $News['lastposter'],
                            )
            );
        }
        
    doOutput();
    }
*/

// ---------------------------------------------------
    // FUNCTION: output_News
    // DETAIL:   Outputs the first post from X threads
    //           from a specific forum (ordered by newest
    //           first)
    // Modified by BlueCrab to support multiple pages of output.
    // ---------------------------------------------------

    
function output_News($page 1$a 5,$f ""){
        global 
$db$Data$vbulletin;
        
// Amount of items to display per page:
        
$page_amount 10;

        
// The starting value for displaying news:
        
$page_start = ($page 1) * $page_amount;

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

        
// Collect Data
        
$NewestNews $db->query("SELECT post.*, thread.* FROM thread, post WHERE thread.visible=1 AND (thread.forumid = 51   OR thread.forumid = 263 OR thread.forumid = 322  OR thread.forumid = 290  OR thread.forumid = 242 OR thread.forumid = 112) AND post.postid = thread.firstpostid order by thread.dateline DESC limit " $page_amount " OFFSET " $page_start);


        
$bbcode_parser =& new vB_BbCodeParser($vbulletinfetch_tag_list());

            while(
$News $db->fetch_array($NewestNews)){
            
$Data .= ParseTemplate($Template,
                                array(                                
                                    
'threadid'     => $News['threadid'],
                                    
'threadname'   => $News['title'],
                                    
'forumid'      => $News['forumid'],
                                    
'seo'          => strtolower(preg_replace('/\W+/''-'preg_replace('/quot+/'''preg_replace('/!+/'''preg_replace('/%+/''-percent'$News['title']))))),
                                    
'postuserid'   => $News['postuserid'],
                                    
'postusername' => $News['postusername'],
                                    
'iconid'       => $News['iconid'],
                                    
'post'         => $bbcode_parser->parse(unhtmlspecialchars($News['pagetext']), $f),
                                    
'comments'     => vb_number_format($News['replycount']),
                                    
'date'         => vbdate($vbulletin->options['dateformat'], $News['dateline']),                        
                                    
'time'         => vbdate($vbulletin->options['timeformat'], $News['dateline']),
                                    
'lastposter'   => $News['lastposter'],
                                )
                );
            }
            
        
doOutput();
    }



    
// ---------------------------------------------------
    // FUNCTION: output_UsersOnline
    // DETAIL:   Outputs All Users Online In The Forum
    // ---------------------------------------------------

    
function output_UsersOnline(){
    global 
$db$Data$vbulletin;

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

    
$cache = array();

    
// Collect Data
    
$datecut      TIMENOW $vbulletin->options['cookietimeout'];
    
$UsersOnline $db->query("
        SELECT
            user.username, (user.options) AS invisible, user.usergroupid,
            session.userid,
            IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid
        FROM " 
TABLE_PREFIX "session AS session
        LEFT JOIN " 
TABLE_PREFIX "user AS user ON(user.userid = session.userid)
        WHERE session.lastactivity > 
$datecut and user.userid > 0
        " 
iif($vbulletin->options['displayloggedin'] == 1"ORDER BY username ASC") . "
    "
);

        while(
$User $db->fetch_array($UsersOnline)){
            if(!
$cache[$User['userid']]){
            
$cache[$User['userid']] = $User['userid'];

            
$Data .= ParseTemplate($Template,
                                array(
                                    
'userid'     => $User['userid'],
                                    
'username'   => $User['username'],
                                )
                );
            }
        }

    unset(
$cache);
    
doOutput();
    }

    function 
doOutput(){
    global 
$Data$vbulletin;

    echo 
ParseTemplate($Data,"",1);
    
$Data "";
    }
?>
Reply With Quote
  #2  
Old 06-09-2011, 04:49 PM
Disasterpiece's Avatar
Disasterpiece Disasterpiece is offline
 
Join Date: Apr 2007
Location: GER
Posts: 765
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Seems a weird way to establish a database connection...
why not simply including global.php and use the db connection from $vbulletin->db ?

PHP Code:
require_once('./includes/class_bbcode.php'); 
Are you sure this file exists and actually does something usable?

Overall a not-so-good way to use vbulletin methods in external scripts, i suggest to use this instead: https://vborg.vbsupport.ru/showthread.php?t=228112
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 01:36 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.03907 seconds
  • Memory Usage 2,379KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (2)post_thanks_box
  • (2)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit_info
  • (2)postbit
  • (2)postbit_onlinestatus
  • (2)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete