Go Back   vb.org Archive > vBulletin Modifications > Archive > Modification Graveyard
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
vBulletin to Twitter, live tweets of new threads Details »»
vBulletin to Twitter, live tweets of new threads
Version: 1.00, by buro9 buro9 is offline
Developer Last Online: Jul 2012 Show Printable Version Email this Page

Category: Miscellaneous Hacks - Version: 4.0.x Rating:
Released: 01-26-2010 Last Update: Never Installs: 272
Uses Plugins
Re-useable Code Additional Files Translations  
No support by the author.

This should work on all 4 and 3 versions of vBulletin as it's trivial.

Description:

You start a new thread, this hack makes a tweet about it on your twitter account.

This are live updates... not delayed, not based on RSS... the instant the thread is started, a tweet is made. This is how this hack differs from other hacks.

Why:

Mostly for SEO, but also as an alert system.

For SEO the idea is simply that search engines are drinking from the Twitter firehose and are indexing the links that are tweeted. Faster and increased indexing of your site benefits you by helping it be found.

For alerts it means that users are able to use whatever twitter client they wish to obtain updates. A lot of these provide filtering capabilities, so they're able to get a live filtered stream of updates that interest them. This works very well when you also use thread prefixes.

Pre-requisites:

You should have an account on bit.ly for URL shortening, and you should have an account on Twitter.

Go and register if you haven't yet:
http://bit.ly/
http://twitter.com/

Installation:

NOTE: Most problems are related to not putting your bit.ly or twitter user details in the plugin. Follow the instructions carefully!

Upload the two attached files to your forum root. These are twitter and bitly classes that enable the hack to work, you can also download these from the author:
http://classes.verkoyen.eu/bitly
http://classes.verkoyen.eu/twitter/

Go to the plugin manager and create a new plugin with the following details:
Product: vBulletin
Hook: newthread_post_complete
Title: Tweet to Twitter

PHP Code: [See below]

To configure the PHP code you need to know your bit.ly API key (go get it from bit.ly/account) and your username and password for twitter.

You also should make a list of the forumIds that are non-public as you will want to put these in the array provided.

i.e. if your admin forum is forumId = 7 and you also have a private forum for regular members which is forumid = 12, then you will want this:
$excludedForums = array(7, 12);

The PHP code should be this, with all of the relevant values for your forum inserted (replace everything bolded, including the < and > bits):
PHP Code:
// The array below are the ids of non-public forums, update these to be your admin forum ids or anything non-public by default
$excludedForums = array(0);

// If you are having trouble getting bitly URL shortening to work... disable it!
$useBitly true;

if (!
in_array($foruminfo[forumid], $excludedForums)) {
    
$shortUrl 'http://www.yourforumsdomain.com/showthread.php?t='.$newpost[threadid];

    if (
$useBitly) {
      
// http://classes.verkoyen.eu/bitly
      
require_once 'bitly.php';
      
$bitly = new Bitly('<bit.ly username>''<bit.ly API key>');
      
$shortUrl $bitly->shorten($shortUrl);
    }

    
$tweet '';
    if (isset(
$newpost['prefixid']) && $newpost['prefixid'] != '') {
        
$tweet $vbphrase['prefix_'.$newpost['prefixid'].'_title_plain'].' ';
    }
    
$tweet .= $newpost['title'].' '.$shortUrl;

    
// http://classes.verkoyen.eu/twitter/
    
require_once 'twitter.php';
    
$twitter = new Twitter('<twitter username>','<twitter password>');
    
$twitter->updateStatus($tweet);

So the bit.ly line might look like this after you've put your values in:
$bitly = new Bitly('testUser', 'R_hj3456hgf3hig56hi2gf6');
NOT
$bitly = new Bitly('<testUser>', '<R_hj3456hgf3hig56hi2gf6>');
See? Remove those <> bits, they just show what to replace.

The shortUrl line might look like this:
$shortUrl = 'http://www.vbulletin.com/forum/showthread.php?t='.$newpost[threadid];

The Twitter line might look like this:
$twitter = new Twitter('stephenfry','op1umisn1ce');

All make sense?

And that's it. Save and activate the plugin and create a test thread.

Now whenever a new thread is started, a tweet will be made to twitter instantly.

You can see this in effect here:
http://twitter.com/lfgss

That is being pushed new threads for http://www.lfgss.com/ and it's working perfectly.

Any questions?

FAQ (Frequently Asked Questions)

Q: It doesn't work!

A: That's not a question, however if it doesn't work then it's extremely likely you got your username and passwords wrong or left the < > signs in there. Double-check and do it again.

Q: I see an "INVALID_JSON" error

A: Disable bitly by setting $useBitly to false.
Q: I see an "You must be authenticated to access shorten" error

A: The credentials that you entered are either wrong, or you made a mess of the syntax. You did remove the < > when you put your values in right? Did you check the example given above?

Q: I see an error that says "Warning: curl_setopt_array() [function.curl-setopt-array]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in [path]/bitly.php"

A: Wow, that's a good one... but easily fixable. Insert this at line 136 (just after the CURL options) in bitly.php:
PHP Code:
$no_hack_needed = (ini_get('safe_mode') !== '1' && ini_get('open_basedir') === false);
if (
$no_hack_needed) {
  
$options[CURLOPT_FOLLOWLOCATION] = true;
} else {
  
$options[CURLOPT_FOLLOWLOCATION] = false;
  
$options[CURLOPT_HEADER] = true;

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #152  
Old 02-07-2010, 07:33 AM
buro9 buro9 is offline
 
Join Date: Feb 2002
Location: London, UK
Posts: 585
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by nekiw View Post
is it possible to make it work for only articles from CMS portal ?
Quote:
Originally Posted by newmomsforum View Post
Hey all, although this is working really good for me For posts made by my members, I have a forum which is populated by an RSS feed and new posts made within this forum are not being posted.

I'm thinking that the hook isn't being activated as a user isn't physically clicking the submit post button in these instances. Any ideas?

Thanks

Mark
Quote:
Originally Posted by Chicken Racer View Post
Hey buro9 or any one, what do I need to edit to allow RSS feeds bot poster to work with the script?
I have some video sites that feed to forum and I would like for these to be added to tweet when they are posted by the feed bot.
Any help would be great!
You would need to identify which hook is in the script that vBulletin is using to consume the RSS. This usually just means opening the .php file that is used to consume the RSS and then reading the code and looking for a line that says "hook" anywhere on it, and within that is usually the name of the hook.

Once identified the plugin can be used there too, and looking above the hook line will reveal what variables are in use that you can use in the plugin.

If other people are willing to work that bit out (I don't use that functionality) then I'm happy to publish it here too and give you credit so that it all sits in one place and people can get all the bits they want.

Quote:
Originally Posted by Boko577 View Post
Oh well, screw this mod then if the person who made this doesn't even know what the problem with it is... Uninstalled.

Apologies for not knowing jack about your server environment, software stack or configuration, etc.

I have provided a solution that works in a lot of instances and when it fails appears to be down to:
1) User details being wrong.
2) CURL not being installed.
3) JSON not being enabled.
4) Safe_Mode being used.

Check those things, you have knowledge of your environment (I hope) whereas I do not. Unfortunately I've not yet acquired the ability to telepathically converse with random servers around the world, but when I do I will sort your problems out for you.
Reply With Quote
  #153  
Old 02-07-2010, 08:16 AM
I.am I.am is offline
 
Join Date: Mar 2009
Posts: 84
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Videx View Post
Can you expand on this a bit? What was solved? Is this a method of getting all the posts, not just a new thread? Where did you change this?

It is the second step when you create the plugin, I had wrong to set the Hook, instead to choose Hook: newthread_post_complete, I had used Hook: replythread_post_complete.

Quote:
Go to the plugin manager and create a new plugin with the following details:
Product: vBulletin
Hook: newthread_post_complete
Title: Tweet to Twitter
Reply With Quote
  #154  
Old 02-07-2010, 02:01 PM
Uberguilds Uberguilds is offline
 
Join Date: Jun 2006
Posts: 50
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Boko577 View Post
Oh well, screw this mod then if the person who made this doesn't even know what the problem with it is... Uninstalled.
Lol at that guy.

Is there a way to sneak in a re-tweat of popular threads every 24 hours or at a specific time frame? That would be extremely beneficial if it could be added in.
Reply With Quote
  #155  
Old 02-07-2010, 09:18 PM
delmarva's Avatar
delmarva delmarva is offline
 
Join Date: Jun 2006
Posts: 140
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kefallon View Post
Double checked my twitter deatils at bitly and in PHP code all correct still getting following error message.

statuses/update.xml Could not authenticate you. Unauthorized on line 229 in /var/www/vhosts/ionian-island.co.uk/httpdocs/forums/twitter.php
#0 /var/www/vhosts/ionian-island.co.uk/httpdocs/forums/twitter.php(648): Twitter->doCall('statuses/update...', Array, true)
#1 /var/www/vhosts/ionian-island.co.uk/httpdocs/forums/newthread.php(262) : eval()'d code(26): Twitter->updateStatus('test http://www...')
#2 /var/www/vhosts/ionian-island.co.uk/httpdocs/forums/newthread.php(262): eval()
#3 {main}

Could not find anything in previous threads i was clever enough to understand! regarding this problem....
Same issue here... Looks like a great mod.
Reply With Quote
  #156  
Old 02-07-2010, 09:32 PM
redhawk89 redhawk89 is offline
 
Join Date: Dec 2008
Posts: 139
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Can this be made into a product?
Reply With Quote
  #157  
Old 02-08-2010, 12:37 AM
Videx's Avatar
Videx Videx is offline
 
Join Date: Feb 2007
Posts: 3,085
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by delmarva View Post
Same issue here... Looks like a great mod.
This mod is doing what it's supposed to, but for some reason some servers are failing to authenticate with Twitter, others get past that and can't authenticate with bitly (like my shared server).

Perhaps someone with a dedicated server can check their error logs and see just what's going on?
Reply With Quote
  #158  
Old 02-08-2010, 02:18 PM
Robru Robru is offline
 
Join Date: Aug 2005
Location: Netherlands
Posts: 368
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Perfect Mod, thanks !!!
Reply With Quote
  #159  
Old 02-08-2010, 03:56 PM
sqzdog sqzdog is offline
 
Join Date: Apr 2005
Posts: 80
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Is there a way to tweet new posts, instead of just new threads?
Reply With Quote
  #160  
Old 02-08-2010, 04:09 PM
sqzdog sqzdog is offline
 
Join Date: Apr 2005
Posts: 80
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I keep getting these SQL error emails from my server. Are these errors related to this plug-in??

Quote:
Database error in vBulletin 4.0.1:

Invalid SQL:

SELECT thread.threadid, thread.title, thread.lastpost, thread.forumid, thread.replycount, thread.postusername, thread.postuserid, thread.lastposter, thread.lastposterid, thread.dateline, thread.views, thread.visible, thread.open, user.usergroupid, user.displaygroupid
FROM vbthread AS thread
LEFT JOIN vbuser AS user ON (user.userid = thread.lastposterid)
WHERE NOT ISNULL(thread.threadid) AND thread.visible = '1' AND thread.open!='10' AND thread.forumid NOT IN(34,33,51,52,59,24,47,48,49,50,8,35,11,12,13,14, 15,58,37,38,60,)
ORDER BY lastpost DESC
LIMIT 0, 15;

MySQL Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')
ORDER BY lastpost DESC
LIMIT 0, 15' at line 4
Error Number : 1064
Request Date : Saturday, February 6th 2010 @ 10:54:59 PM
Error Date : Saturday, February 6th 2010 @ 10:54:59 PM
Script : http://www.****.org/****/forums/forumdisplay.php?f=39
Referrer :
IP Address : 208.***.***.**
Username : Unregistered
Classname : vB_Database
MySQL Version :
Reply With Quote
  #161  
Old 02-09-2010, 05:31 AM
TyPenn613 TyPenn613 is offline
 
Join Date: Dec 2006
Posts: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I tagged this and most definitely plan to install it tomorrow.

I haven't had time to read all the posts here, but just my thoughts on what would be a great addition to this. If this could somehow be connected to separate user accounts, so that a member can have any new threads/posts they make attached to their personal Twitter account, I think it would go a very long way to attract attention to your forums.

Great work!
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:47 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.06292 seconds
  • Memory Usage 2,346KB
  • Queries Executed 25 (?)
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
  • (2)bbcode_php
  • (10)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (2)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)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
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete