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
  #222  
Old 02-15-2010, 03:41 PM
steeler7 steeler7 is offline
 
Join Date: Oct 2009
Posts: 141
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kall View Post
Does it make it to Twitter?

Have you checked your error_log to see if that sheds light on the white page issue? I'd guess out of memory, but that is a total stab in the dark.
It doesn't make it to Twitter.

Sorry it took me a few minutes i went into my server to download the error log and look through. Couldn't find anything
Reply With Quote
  #223  
Old 02-15-2010, 04:05 PM
Hateman Hateman is offline
 
Join Date: Jul 2008
Posts: 56
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kall View Post
Hello Penelope,

What is the content of your plugin?

If you filled it in correctly, that error does not occur.
Hi there,

here is my code=

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(59,64);

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

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

    if ($useBitly) {
      // http://classes.verkoyen.eu/bitly
      require_once 'bitly.php';
      $bitly = new Bitly('BITLYNAME', 'R_APIKEY');
      $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('MYTWITTERNAME','MYPASSWORD'
Reply With Quote
  #224  
Old 02-15-2010, 04:48 PM
steeler7 steeler7 is offline
 
Join Date: Oct 2009
Posts: 141
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I noticed while logged into my bitly account that the 2 test threads I had tried are being shown on the "Home" section. They just never went from bitly to Twitter. I have the correct Twitter information submitted to bitly. Is there something else I'm supposed to do?
Reply With Quote
  #225  
Old 02-15-2010, 05:09 PM
kall's Avatar
kall kall is offline
 
Join Date: Apr 2004
Location: New Zealand
Posts: 2,608
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Hateman View Post
Hi there,

here is my code=

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(59,64);

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

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

    if ($useBitly) {
      // http://classes.verkoyen.eu/bitly
      require_once 'bitly.php';
      $bitly = new Bitly('BITLYNAME', 'R_APIKEY');
      $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('MYTWITTERNAME','MYPASSWORD'
You're missing a chunk of code.

PHP Code:
);
       
$twitter->updateStatus($tweet);

Reply With Quote
  #226  
Old 02-15-2010, 08:39 PM
wolfyman's Avatar
wolfyman wolfyman is offline
 
Join Date: Apr 2005
Posts: 719
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

it just started working.

I have no idea why, but it did.
Reply With Quote
  #227  
Old 02-16-2010, 12:19 AM
steeler7 steeler7 is offline
 
Join Date: Oct 2009
Posts: 141
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Ok... I basically disabled bit.ly by changing the variable from true to false, did a test thread post and it went straight to Twitter, no white screen or anything. worked nice except for the super long Link.

So, I've narrowed the problem down to being a bit.ly issue and I remember reading in this thread where others had the same issue. did anyone figure out a way to solve this?
Reply With Quote
  #228  
Old 02-16-2010, 12:20 AM
lhridley lhridley is offline
 
Join Date: Dec 2009
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Well, shoot. Now the bitly link to replies takes users to the "page not found" page on vBulletin. So, I don't have the replies piece working after all (however, the new threads component works great).

Anyone else get replies tweets working?
Reply With Quote
  #229  
Old 02-16-2010, 01:42 AM
icarusforde icarusforde is offline
 
Join Date: Jun 2009
Location: New Zealand
Posts: 27
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Videx View Post
First, you could just disable bitly (change $useBitly= ; to false). In the above code I see the <> signs included in both your keys; they aren't supposed to be.
Ah, always the obvious ones that nail me. >.<

Call myself a coder and i don't find the right thing to fix my own screwups. xD

I'll try it *without* them now.

Edit: Thanks, this worked for me. :P

I also figured out why it wouldn't go away even when i disabled the plugin... I'd edited another plugin by another name by mistake and it had the screwed up code in it. :P
Reply With Quote
  #230  
Old 02-16-2010, 03:35 AM
jandb jandb is offline
 
Join Date: Aug 2009
Posts: 15
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If you are having problems with not being authorised make sure you don't have a extra space after your API key before the last ' . This worked for me and everything is running fine now.
Reply With Quote
  #231  
Old 02-16-2010, 04:54 AM
steeler7 steeler7 is offline
 
Join Date: Oct 2009
Posts: 141
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I've tried everything within my ability. Re-copied code and started from scratch, I reset the API key and put it in (no blank space at the end).

If I have bit.ly turned on, I get a blank screen, no errors that I can find. The post/thread goes through. I have to hit the back button and view the forum to see the thread. It doesn't go to Twitter, it shows up at Bit.ly. It gets listed, has a shortened URL that can posted to Twitter. If I choose that, it goes there just fine.... If I turn off Bit.ly, the new Thread goes through to Twitter with no problems and no white screen. I just have a really long URL
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:18 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.05224 seconds
  • Memory Usage 2,347KB
  • 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_code
  • (3)bbcode_php
  • (4)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