The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
|||
|
|||
latest posts and content on non-vb page help
I had a script that would call contents of posts from the db and display it on a regular php page sort of like a content mgmt script, however it broke with the introduction of Vbulletin 3.5+. I had a work around that worked by just using the old vbulletin files that it required however when I upgraded to php5 that broke also due to the old files not being compatible with php5.
I need to port this script to work with Vbulletin 3.8 / 4 I tried to modify it to update the way vbparse changed but just get a blank page --------------------------------------------- <?php // See bottom for more instructions. // We need vB global for bbcode parsing. // This scripts needs to be in the forums directory or you need to uncomment the chdir // lines (and edit them). chdir("/path/to/your/forums/"); require_once("./global.php"); chdir("/path/to/your/forums"); // VARIABLES TO SET // hostname or ip of server $servername="localhost"; // username and password to log onto db server $dbusername="dbusername"; $dbpassword="dbpassword"; // name of database $dbname="forums"; //path to your forums $forumspath = "http://forums.someforum.com"; function writenews($cats, $filetw, $newsitems=7){ global $servername; global $dbusername; global $dbpassword; global $dbname; global $forumspath; //Connect to the database $connection = mysql_connect("$servername","$dbusername","$dbpass word") or die ("Cannot connect to server."); $db = mysql_select_db("$dbname", $connection) or die ("Could not select database."); //Create SQL statement this gets the title poster and other bits $sql = "SELECT threadid, title, forumid, attach, replycount, postusername, postuserid, lastposter, dateline, iconid FROM thread WHERE forumid IN ($cats) AND sticky = '0' ORDER BY threadid DESC LIMIT $newsitems"; //execute sql query $sql_result = mysql_query($sql, $connection) or die ("Could not execute query."); if (!$sql_result) { echo "Could not get news."; } $attachment=0; while ($row = mysql_fetch_array($sql_result)) { $threadid = $row["threadid"]; $title = $row["title"]; $forumid = $row["forumid"]; $attachment = $row["attach"]; $replycount = $row["replycount"]; $postusername = $row["postusername"]; $postuserid = $row["postuserid"]; $lastposter = $row["lastposter"]; $iconid = $row["iconid"]; $dateline = $row["dateline"]; //create the second SQL statement to pull the post from the thread it resides in $sql2 = "SELECT postid, threadid, username, userid, title, dateline, pagetext, iconid FROM post WHERE threadid = \"$threadid\" ORDER BY postid ASC LIMIT 1"; //This gets the text of the post $sql_result2 = mysql_query($sql2, $connection) or die ("Could not execute query in second sql statement."); if (!$sql_result2) { echo "Could not get news."; } while ($row2 = mysql_fetch_array($sql_result2)) { $ptext = $row2["pagetext"]; $atlink= $row2["postid"]; //create a third conditional SQL statement to pull the image attachment from the thread $sql3=""; $attachmentshow=""; if ($attachment == "1") { $sql3 = mysql_query("SELECT attachmentid, dateline, filename FROM attachment WHERE postid=$atlink"); while($attachments_get=mysql_fetch_array($sql3)) { $attachmentid = $attachments_get['attachmentid']; } $attachmentshow = ("<img src=\"$forumspath/attachment.php?attachmentid=$attachmentid\" width=\"100\" height=\"100\" align=\"left\" hspace=\"15\" vspace=\"0\"/>"); } else {echo ""; } //Convert time $dateposted = date("D j M Y, g:i A",$dateline); //Comments or comment depending on number of replies if ($replycount==1) { $commenttext = "Comment"; } else { $commenttext = "Comments"; } // This parses the bbcode require_once("./includes/functions_bbcodeparse.php"); $outxt=parse_bbcode2($ptext,"1","1","1","1","1"); // Uncomment next 4 lines if you want to limit the amount of text displayed to the first paragraph. // $trimmed = explode("<br />", $outxt); //$outxt=$trimmed[0]; //$trimmed = explode("</p>", $outxt); //$outxt=$trimmed[0]; //$outxt=substr($outxt,0,1000); // This is optional. It strips out unecessary tags if you wish and leaves those specified behind $outxt = strip_tags($outxt, '<a>,<b>,<strong>,<i>,<em>,<br />,<br>,<p>'); // This sql gets the title of the forum $sql3 = "SELECT title FROM forum WHERE forumid = \"$forumid\" LIMIT 1"; $sql_result3 = mysql_query($sql3, $connection) or die ("Could not execute query in second sql statement."); $row3 = mysql_fetch_array($sql_result3); $forumname = $row3["title"]; //EDIT the HTML OUTPUT HERE $towrite .= " <table border=0 width=600 cellpadding=0 class=tborder1> <tr> <td> <!-- Overall Table --> <table border=0 width=100% cellpadding=8> <tr> <td align=\"right\" class=\"smallfrontpagefont\"> $forumname </td> <tr> <td> <a class=\"contentheading\" href=\"$forumspath/showthread.php?s=&threadid=$threadid\">$title</a><P> </td></tr> <td align=\"left\" class=\"tablefont\"> Posted by : $postusername , Lounge0101 Administrator<P><br> </td> <tr> <td class=\"tablefont\" valign=\"top\"> $attachmentshow $outxt <b>...</b> </td><tr> <td align=\"right\"> <a class=\"tablefont\" href=\"$forumspath/showthread.php?s=&threadid=$threadid\">[ Read More ]</a><P> </td> </tr> <td> <table border=0 width=\"100%\"> <tr> <td align=\"left\" class=\"tablefont\"> <img src=\"$forumspath/images/icons/icon1.gif\"> Posted on <i><font color=#333333>$dateposted</i></font> </td> <td align=\"right\"> <a href=\"$forumspath/newreply.php?do=newreply&t=$threadid\"><img src=\"$forumspath/images/reply_small.gif\" title=\"Post a reply to this article\" border=\"0\"></a> </td> </tr> </tr></table> </tr></table> <center><hr></center> <!-- /overall table --> </td></tr></table> <P> "; // END HTML EDIT } } //disconnect //mysql_free_result($sql_result); //mysql_close($connection); // If you want to wite out to a file - good idea to reduce db load // Then uncomment this section and edit appropriately. You need // to have a folder to stores the output file and they need to writeable (chmod 666) // $filetw is name of output file. // You may then want to call this file by cron so thing update reguarly. //$tmpfile = fopen("/path/to/storafe/folder/".$filetw."","w+"); //$fp = fwrite($tmpfile,$towrite); //fclose($tmpfile); //flush (); // If you are writing to a file comment the line below out. echo $towrite; } // This calls the writenews function. Done as a function so can be called multiple times. // First variable is forum id to get news from. One forum is like 1 and multiple forums // like 1,2,3. Output file onyl applies if you are outputting a file (see just above) // The last variable is the number of news itmes to grab / display. Deafults to 10. @writenews("237,238,239,240,241,260", "outputfile.txt","7"); // Want another write out (useful for files etc?) just call function again as below // @writenews("16,17", "outputfile.txt","10"); ?> --------------------------------------------- |
#2
|
|||
|
|||
The problem is that the bbcode parsing stuff changed. Add this code (in red) around the beginning of the writenews function:
Code:
require_once('./includes/class_bbcode.php'); $bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list()); function writenews($cats, $filetw, $newsitems=7){ global $servername; global $dbusername; global $dbpassword; global $dbname; global $forumspath; global $bbcode_parser; //Connect to the database then find "This parses the bbcode" and change it like this: Code:
// This parses the bbcode //require_once("./includes/functions_bbcode.php"); //$outxt=parse_bbcode2($ptext,"1","1","1","1","1"); $outxt = $bbcode_parser->parse($ptext, $row['forumid']); |
#3
|
|||
|
|||
Thanks so much, you are awesome
I had been trying to figure that out for a long time |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|