9b283eab2a76350190b84627aad6ef1250f39598
[WebKit.git] / Websites / webkit.org / wp-content / plugins / tweet-listener.php
1 <?php
2 /*
3 Plugin Name: Tweet Listener
4 Description: Listens for Tweets from @webkit
5 Version:     1.0
6 Author:      Jonathan Davis
7 Author URI:  http://webkit.org
8 */
9
10 TweetListener::object();
11
12 class TweetListener {
13
14     private static $object = null;
15     
16     const AUTH_TOKEN = TWITTER_LISTENER_AUTH;
17     const DATA_KEY = 'recent_tweet';
18
19     public static function object() {
20         if (self::$object === null)
21             self::$object = new self();
22         return self::$object;
23     }
24
25     private function __construct() {
26         add_action('wp_ajax_nopriv_tweet', array($this, 'listen'));
27         add_action('wp_ajax_tweet', array($this, 'listen'));
28     }
29
30     public function listen() {
31         
32         $defaults = array(
33             'text' => '', 
34             'username' => '@webkit',
35             'link' => '',
36             'created' => '',
37             'embed' => ''
38         );
39         $data = array_merge($defaults, $_POST);
40
41         update_option(self::DATA_KEY, $data);
42         wp_die();
43     }
44     
45     public function tweet() {
46         $data = (object)get_option(self::DATA_KEY);
47         
48         // Setup compatible Tweet structure
49
50         $Tweet = new StdClass();
51         $Tweet->id = substr($data->link, strrpos($data->link, '/') + 1);
52         $Tweet->text = stripslashes($data->text);
53
54         $Tweet->entities = new StdClass();
55         $Tweet->entities->urls = array();
56         $Tweet->entities->media = array();
57
58         // Search for embedded images
59         if ( preg_match_all('/<a href="([^"]+)">(.*?)<\/a>/', stripslashes($data->embed), $matches, PREG_SET_ORDER) ) {
60             foreach ($matches as $embedlink) {
61                 $URL = new StdClass();
62                 $URL->expanded_url = $URL->display_url = $URL->url =$embedlink[1];
63                 $URL->display_url = str_replace(array('https://','http://'), '', $URL->display_url);
64                 $Tweet->entities->urls[] = $URL;
65             }
66         }
67         
68         return $Tweet;
69     }
70
71 } // end class TweetListener