Version: , by (Guest)
Developer Last Online: Jan 1970
Version: Unknown
Rating:
Released: 06-18-2001
Last Update: Never
Installs: 3
No support by the author.
Another quick, but kick-arse hack. We have a home-made content management system (actually, a beta tool see incursio.com for more info - product is called Editio). At any rate, it allows staff or community members to create online articles. Once articles are published, I wanted a way to automatically link them into our forums, so people could start a discussion, or join a discussion already in progress about that particular article. Yahoo! does this with news events as well.
At any rate, perl script. chmod 755, I call it discuss_link.cgi. It should be invoked via SSI. Under Apache:
In the link above, plug in your forum number (forumid column in VB), and the title of the article. The title will be used as the title of the post. If a post exists in the passed forum with that title, a link to "Join the conversation" will be emitted. Otherwise, you get a link called "Start a conversation". You get the picture.
Our content management system (through its plugin concept) allows us to have stuff like this embedded within each article - you could cobble up something similar in your own system with a little effort.
Code:
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
use DBI;
#Require the cgi library
require '/opt/web/cgi-bin/cgi-lib.pl';
&ReadParse(*input);
# Grab fields
$topic = $input{'topic'};
$forum = $input{'forum'};
# Does the forum/topic combo exist?
# Connect to mySQL
$dbh = DBI->connect( "DBI:mysql:vbulletin", "id", "password");
if ( !defined $dbh ) {
print "<LI>Cannot connect to mySQL server: $DBI::errstr\n";
}
# Grab the forum name
$q = "SELECT title FROM forum WHERE forum = $forum";
$sth = $dbh->prepare($q);
$sth->execute;
@result = $sth->fetchrow_array;
$forum_name = $result[0];
$sth->finish;
$quoted_title = $dbh->quote($topic);
$q = "SELECT threadid FROM thread WHERE forumid = $forum AND title = $quoted_title";
$sth = $dbh->prepare($q);
$sth->execute;
@result = $sth->fetchrow_array;
$threadid = $result[0];
$sth->finish;
# Prep for linking
$topic =~ tr/ /+/;
if( $threadid <= 0 ) {
print "<A HREF=http://www.mysite.com/forums/newthread.php?s=&action=newthread&forumid=$forum&subject=$topic>Start a Conversation!</A>";
exit(1);
}
print ("<A HREF=http://www.mysite.com/forums/showthread.php?s=&threadid=$threadid>Join the Conversation!</A>");
exit;
Cheers.
Show Your Support
This modification may not be copied, reproduced or published elsewhere without author's permission.