· 7 years ago · Mar 08, 2018, 05:54 PM
1<?php
2 // Session start
3 //session_start();
4
5 // Set timezone. (Modify to match your timezone) If you need help with this, you can find it here. (http://php.net/manual/en/timezones.php)
6 date_default_timezone_set('Europe/London');
7
8 // Require TwitterOAuth files. (Downloadable from : https://github.com/abraham/twitteroauth)
9 require_once("./wordpress/wp-content/themes/dmmusic/twitteroauth/twitteroauth/twitteroauth.php");
10
11 // Function to authenticate app with Twitter.
12 function getConnectionWithAccessToken($cons_key, $cons_secret, $oauth_token, $oauth_token_secret) {
13 $connection = new TwitterOAuth($cons_key, $cons_secret, $oauth_token, $oauth_token_secret);
14 return $connection;
15 }
16
17 // Function to display the latest tweets.
18 function display_latest_tweets(
19
20 // Function parameters.
21 $twitter_user_id,
22 $cache_file = './wordpress/wp-content/themes/dmmusic/tweets.txt', // Change this to the path of your cache file. (Default : ./tweets.txt)
23 $tweets_to_display = 2, // Number of tweets you would like to display. (Default : 5)
24 $ignore_replies = false, // Ignore replies from the timeline. (Default : false)
25 $include_rts = false, // Include retweets. (Default : false)
26 $twitter_wrap_open = '<ul class="home-tweets-ul">',
27 $twitter_wrap_close = '</ul>',
28 $tweet_wrap_open = '<li><p class="home-tweet-tweet">',
29 $meta_wrap_open = '<br/><span class="home-tweet-date">',
30 $meta_wrap_close = '</span>',
31 $tweet_wrap_close = '</p></li>',
32 $date_format = 'g:i A M jS', // Date formatting. (http://php.net/manual/en/function.date.php)
33 $twitter_style_dates = true){ // Twitter style days. [about an hour ago] (Default : true)
34
35 // Twitter keys (You'll need to visit https://dev.twitter.com and register to get these.
36 $consumerkey = "NPpTRi6tXzFWZvPnlvcSZw";
37 $consumersecret = "Q7k4sh2yPInTW8YgzBCJFQ6T0othbM94ny9fjxkYa8";
38 $accesstoken = "14923229-1k3zaMrvPtJIgGYeR0mXO0ZY0OgFAR2CHCvMhxk6q";
39 $accesstokensecret = "4cEO8jEEf9vAqmwfbmdh81jzbXSFhkRKyTmjAVaw4SLks";
40
41 // Seconds to cache feed (Default : 1 minute).
42 $cachetime = 1*3;
43
44 // Time that the cache was last updtaed.
45 $cache_file_created = ((file_exists($cache_file))) ? filemtime($cache_file) : 0;
46
47 // A flag so we know if the feed was successfully parsed.
48 $tweet_found = false;
49
50 // Show cached version of tweets, if it's less than $cachetime.
51 if (time() - $cachetime < $cache_file_created) {
52 $tweet_found = true;
53 // Display tweets from the cache.
54 readfile($cache_file);
55 } else {
56
57 // Cache file not found, or old. Authenticae app.
58 $connection = getConnectionWithAccessToken($consumerkey, $consumersecret, $accesstoken, $accesstokensecret);
59
60 if($connection){
61 // Get the latest tweets from Twitter
62 $get_tweets = $connection->get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$twitter_user_id."&count=".$tweets_to_display."&include_rts=".$include_rts."&exclude_replies=".$ignore_replies);
63 // Error check: Make sure there is at least one item.
64 if (count($get_tweets)) {
65 // Define tweet_count as zero
66 $tweet_count = 0;
67
68 // Start output buffering.
69 ob_start();
70
71 // Open the twitter wrapping element.
72 $twitter_html = $twitter_wrap_open;
73
74 // Iterate over tweets.
75 foreach($get_tweets as $tweet) {
76
77 $tweet_found = true;
78 $tweet_count++;
79 $tweet_desc = $tweet->text;
80 // Add hyperlink html tags to any urls, twitter ids or hashtags in the tweet.
81 $tweet_desc = preg_replace("/((http)+(s)?:\/\/[^<>\s]+)/i", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $tweet_desc );
82 $tweet_desc = preg_replace("/[@]+([A-Za-z0-9-_]+)/", "<a href=\"http://twitter.com/\\1\" target=\"_blank\">\\0</a>", $tweet_desc );
83 $tweet_desc = preg_replace("/[#]+([A-Za-z0-9-_]+)/", "<a href=\"http://twitter.com/search?q=%23\\1\" target=\"_blank\">\\0</a>", $tweet_desc );
84
85 // Convert Tweet display time to a UNIX timestamp. Twitter timestamps are in UTC/GMT time.
86 $tweet_time = strtotime($tweet->created_at);
87 if ($twitter_style_dates){
88 // Current UNIX timestamp.
89 $current_time = time();
90 $time_diff = abs($current_time - $tweet_time);
91 switch ($time_diff)
92 {
93 case ($time_diff < 60):
94 $display_time = $time_diff.' seconden geleden';
95 break;
96 case ($time_diff >= 60 && $time_diff < 3600):
97 $min = floor($time_diff/60);
98 $display_time = $min.' minunten geleden';
99 break;
100 case ($time_diff >= 3600 && $time_diff < 86400):
101 $hour = floor($time_diff/3600);
102 $display_time = 'ongeveer '.$hour.' uur';
103 if ($hour > 1){ $display_time .= ''; }
104 $display_time .= ' geleden';
105 break;
106 default:
107 $display_time = date($date_format,$tweet_time);
108 break;
109 }
110 } else {
111 $display_time = date($date_format,$tweet_time);
112 }
113
114 // Render the tweet.
115 $twitter_html .= $tweet_wrap_open.html_entity_decode($tweet_desc).$meta_wrap_open.'<a href="http://twitter.com/'.$twitter_user_id.'">'.$display_time.'</a>'.$meta_wrap_close.$tweet_wrap_close;
116
117 // If we have processed enough tweets, stop.
118 if ($tweet_count >= $tweets_to_display){
119 break;
120 }
121 }
122
123 // Close the twitter wrapping element.
124 $twitter_html .= $twitter_wrap_close;
125 echo $twitter_html;
126
127 // Generate a new cache file.
128 $file = fopen($cache_file, 'w');
129
130 // Save the contents of output buffer to the file, and flush the buffer.
131 fwrite($file, ob_get_contents());
132 fclose($file);
133 ob_end_flush();
134 }
135 }
136 }
137 }
138
139 // Display latest tweets. (Modify username to your Twitter handle)
140 display_latest_tweets('dmmusicshow');
141?>