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
  #72  
Old 01-28-2010, 05:17 PM
Nordinho Nordinho is offline
 
Join Date: Aug 2004
Location: Netherlands
Posts: 288
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by buro9 View Post
@Nordinho and @Flep

I've updated the instructions so that disabling bitly and using the long version of the URL is trivial.

Just set $useBitly = false; where it is currently true.
Thanks, tried it, getting this error as well (allthough the thread gets posted on twitter)

Quote:
Fatal error: Uncaught exception 'TwitterException' with message 'invalid body' in /home/dir/twitter.php:662 Stack trace: #0 /home/dir/newthread.php(271) : eval()'d code(28): Twitter->updateStatus('yrdyasdfsadfsgs...') #1 /home/dir/newthread.php(271): eval() #2 {main} thrown in /home/dir/twitter.php on line 662
Quote:
Originally Posted by buro9 View Post
That certainly looks extremely promising.

Indeed, on my server json support is enabled.
It seems to be enabled on mine. Maybe I have an outdated version?
Quote:
json support enabled
json version 1.2.1
Reply With Quote
  #73  
Old 01-28-2010, 05:37 PM
Jesh Jesh is offline
 
Join Date: Aug 2009
Posts: 53
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'm using vBSEO, 4.0.1 and here is what I have set up, receiving a 500 Internal Error, but thread is being posted. I have the two files in my forum root (which is www.uscoininfo.com). edit: using IIS6. Ideas?

Hook Location: newthread_post_complete


// 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.uscoininfo.com/showthread.php?t='.$newpost[threadid];

if ($useBitly) {
// http://classes.verkoyen.eu/bitly
require_once 'bitly.php';
$bitly = new Bitly('uscoininfo', 'mykey');
$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('uscoininfo','mypassword');
$twitter->updateStatus($tweet);
}
Reply With Quote
  #74  
Old 01-28-2010, 06:36 PM
Bouncer222 Bouncer222 is offline
 
Join Date: Oct 2009
Posts: 705
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

One big REQUEST...

Is it possible to implement into this addon so that once we install it, we can have the option to tweet all old threads/posts etc.. onto twitter.com that were made before this installation? AND.. having the option to delay each tweet so that the site doesn't slow down or anything.

Also it seems it is not working for me and I put in all the stuff in the php code...
I made a test thread http://www.brotherhoodofgamers.com/g...d.html#post696
and it doesnt show up on my twitter at: http://twitter.com/bogbouncer1

What I edited:
bit.ly username and inserted API ( I did not include the < > anywhere, I removed those as well as the instructions say to)
I put in my twitter username and pass, changed yourforumsdomain.com to www.brotherhoodofgamers.com

Did I miss anything? I also uploaded files to root from the author's post, NOT from the 2 links it says to, since I believe it says I can just download it from here. correct me if I'm wrong or missed anything, thanks
Reply With Quote
  #75  
Old 01-28-2010, 08:40 PM
SJ073 SJ073 is offline
 
Join Date: Aug 2007
Posts: 6
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by SJ073 View Post
I am seeing this error:

Fatal error: Call to undefined function curl_init() in bitly.php on line 138


ANy Ideas of where to start looking?
Fixed! Help to have cURL enabled

Great Mod - Installed and Voted!
Reply With Quote
  #76  
Old 01-28-2010, 08:40 PM
buro9 buro9 is offline
 
Join Date: Feb 2002
Location: London, UK
Posts: 585
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by SJ073 View Post
I am seeing this error:

Fatal error: Call to undefined function curl_init() in bitly.php on line 138


ANy Ideas of where to start looking?
Looks like you don't have CURL installed as a module in your PHP installation.
Quote:
Originally Posted by Moondust View Post
oh... verry hard.... i have no delete the < > in Username etc....

Now.... it WORK !
Brilliant.
[quote=Nordinho;1969151It seems to be enabled on mine. Maybe I have an outdated version?[/quote]
If it's working, wrap it in a try {} catch {} and silence the beast.

Perhaps not the most scientific approach but the library and twitter itself aren't my speciality.
Quote:
Originally Posted by Jesh View Post
I'm using vBSEO, 4.0.1 and here is what I have set up, receiving a 500 Internal Error, but thread is being posted. I have the two files in my forum root (which is www.uscoininfo.com). edit: using IIS6. Ideas?
Your config is correct, so it's not that.

Can you check that JSON is enabled in PHP and that you have the CURL extension installed.

Quote:
Originally Posted by Bouncer222 View Post
One big REQUEST...

Is it possible to implement into this addon so that once we install it, we can have the option to tweet all old threads/posts etc.. onto twitter.com that were made before this installation? AND.. having the option to delay each tweet so that the site doesn't slow down or anything.

Also it seems it is not working for me and I put in all the stuff in the php code...
I made a test thread http://www.brotherhoodofgamers.com/g...d.html#post696
and it doesnt show up on my twitter at: http://twitter.com/bogbouncer1

What I edited:
bit.ly username and inserted API ( I did not include the < > anywhere, I removed those as well as the instructions say to)
I put in my twitter username and pass, changed yourforumsdomain.com to www.brotherhoodofgamers.com

Did I miss anything? I also uploaded files to root from the author's post, NOT from the 2 links it says to, since I believe it says I can just download it from here. correct me if I'm wrong or missed anything, thanks
You got everything, it should be working. (though I realise it's not).

As for the add-on. There's little value in going back over old threads, for starters twitter rate limits the posting. And even if that didn't the point is to drive search engines and people to fresh content, the rest they discover as time goes on.

It would be nice to wrap it up as a vbulletin product so that all of this config that seems to be causing people trouble could be put into a HTML form where people seem fine with such things... and perhaps to perform tests for CURL and JSON during install to validate that their server meet the pre-reqs for the libraries.

Issue is, I have no experience in building vb products... I just hack my forums and when I have a small gem that helps I share it with the world. If anyone else wants to wrap it up in a lovely product, then I'm happy to make you a co-author thingy and to publish it.
Reply With Quote
  #77  
Old 01-28-2010, 09:18 PM
Bouncer222 Bouncer222 is offline
 
Join Date: Oct 2009
Posts: 705
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

This is sad... it won't work... I'm pretty sure I did everything it says..

Anyone?
Reply With Quote
  #78  
Old 01-28-2010, 09:29 PM
buro9 buro9 is offline
 
Join Date: Feb 2002
Location: London, UK
Posts: 585
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Bouncer222 View Post
This is sad... it won't work... I'm pretty sure I did everything it says..

Anyone?
Feel free to PM me your plugin PHP and I'll take a look.

Do you not get any errors at all visible?
Reply With Quote
  #79  
Old 01-28-2010, 10:16 PM
Jesh Jesh is offline
 
Join Date: Aug 2009
Posts: 53
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I dont have cURL installed, doh. Will install tomorrow and let you know if that solves the 500 internal errors.
Reply With Quote
  #80  
Old 01-28-2010, 11:03 PM
Jesh Jesh is offline
 
Join Date: Aug 2009
Posts: 53
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

My problem (500 Internal Error)
Solved

Issue: cURL not installed, Windows Server 2003 / IIS6

Thanks for the info buro!
Reply With Quote
  #81  
Old 01-29-2010, 05:42 AM
blake247 blake247 is offline
 
Join Date: Sep 2008
Posts: 99
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by tazattitude View Post
cagbaazee - I did the same thing you did, I left the " < " and the " > " in there. Remove those and it should work as long as you have your un, pw, and the key correct

the bitly should look like this (example)
$bitly = new Bitly('testUser', 'R_hj3456hgf3hig56hi2gf6');
not $bitly = new Bitly('<testUser>', '<R_hj3456hgf3hig56hi2gf6>');

same with the twitter line
Thanks! That fixed my problem :up:
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 11:12 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.05420 seconds
  • Memory Usage 2,353KB
  • 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
  • (11)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