· 7 years ago · Apr 30, 2018, 11:54 AM
1 public function GETSOCIALTWITTERFEEDLIST($array_twitter_apis_feed = array()){
2 /* Twitter Api Feed Data */
3 //$array_twitter_apis_feed = array('https://twitter.com/NCAAsoftball','
4 https://twitter.com/USASoftball');
5 $oauth_access_token = "2613299264-xDKzOlKGX8W8HJOPYiqKnmEWDnJPyGidQzfLNwZ";
6 $oauth_access_token_secret = "YJoYRiN42h9seE4lHz2Z6mr14gkMBAZFaWDYfaB06tty5";
7 $consumer_key = "cdfvt09X1DWru1jQ36qAg6RMw";
8 $consumer_secret = "ZycKCqxnuhrk6qI4xPIqbbWEKwJ1jclx8JmVDH8fLNpGbJfJd4";
9 $return_data = array();
10 // we are going to use "user_timeline"
11 $twitter_timeline = "user_timeline";
12 $data_twitter = array();
13 $cache = Yii::$app->{Yii::$app->params['social_post_field_cache']};
14 foreach($array_twitter_apis_feed as $twitter_feed_url){
15 $screen_name = strtolower(basename($twitter_feed_url));
16 // keys from your app
17
18
19 // specify number of tweets to be shown and twitter username
20 // for example, we want to show 20 of Taylor Swift's twitter posts
21 $request = array(
22 'count' => '40',
23 'screen_name' => $screen_name
24 );
25
26
27
28 $twitter_feed_key = "twitter_".$request['screen_name'];
29 // $cache->set($key, '1234534543');
30 $tweets = $cache->get($twitter_feed_key);
31 //print_r($tweets);die('123');
32 if ($tweets === false) {
33 // die('123');
34 // put oauth values in one oauth array variable
35 $oauth = array(
36 'oauth_consumer_key' => $consumer_key,
37 'oauth_nonce' => time(),
38 'oauth_signature_method' => 'HMAC-SHA1',
39 'oauth_token' => $oauth_access_token,
40 'oauth_timestamp' => time(),
41 'oauth_version' => '1.0'
42 );
43
44 // combine request and oauth in one array
45 $oauth = array_merge($oauth, $request);
46
47 // make base string
48 $baseURI="https://api.twitter.com/1.1/statuses/$twitter_timeline.json";
49 $method="GET";
50 $params=$oauth;
51
52 $r = array();
53 ksort($params);
54 foreach($params as $key=>$value){
55 $r[] = "$key=" . rawurlencode($value);
56 }
57 $base_info = $method."&" . rawurlencode($baseURI) . '&' . rawurlencode(implode('&', $r));
58 $composite_key = rawurlencode($consumer_secret) . '&' . rawurlencode($oauth_access_token_secret);
59
60 // get oauth signature
61 $oauth_signature = base64_encode(hash_hmac('sha1', $base_info, $composite_key, true));
62 $oauth['oauth_signature'] = $oauth_signature;
63
64
65 // make request
66 // make auth header
67 $r = 'Authorization: OAuth ';
68
69 $values = array();
70 foreach($oauth as $key=>$value){
71 $values[] = "$key=\"" . rawurlencode($value) . "\"";
72 }
73 $r .= implode(', ', $values);
74
75 // get auth header
76 $header = array($r, 'Expect:');
77
78 // set cURL options
79 $options = array(
80 CURLOPT_HTTPHEADER => $header,
81 CURLOPT_HEADER => false,
82 CURLOPT_URL => "https://api.twitter.com/1.1/statuses/$twitter_timeline.json?". http_build_query($request),
83 CURLOPT_RETURNTRANSFER => true,
84 CURLOPT_SSL_VERIFYPEER => true
85 );
86 //print_r($options);
87
88 // retrieve the twitter feed
89 $feed = curl_init();
90 curl_setopt_array($feed, $options);
91 $json = curl_exec($feed);
92 curl_close($feed);
93
94 // decode json format tweets
95 $tweets = json_decode($json, true);
96//print_r( $tweets);
97
98 // $p_time = strtotime("Dec 30 02:17:01 +0001 2016");
99 // echo date("r",$s);
100
101
102
103 $cache->set($twitter_feed_key, $tweets,10800); // 3 hours
104
105
106
107 }
108 $tweets = is_array($tweets)?$tweets:array();
109 foreach($tweets as $tweets_data){
110 if(!isset($tweets_data['text'])){
111 continue;
112 }
113 $string_text = $tweets_data['text'];
114 /* if(isset($tweets_data['entities']['hashtags'])){
115 $replace_token = array();
116 foreach($tweets_data['entities']['hashtags'] as $hastag){
117 $hastag_data_start = $hastag['indices'][0];
118 $hastag_data_end = $hastag['indices'][1];
119
120 $replace_search = substr($tweets_data['text'],$hastag_data_start,($hastag_data_end - $hastag_data_start));//die;
121 $replace_token[$replace_search] = array('replace_value' => '<a href="https://twitter.com/hashtag/'.$hastag['text'].'?src=hash">'.$replace_search.'</a>', 'indices' => $hastag['indices']);
122
123 }
124 if(count($replace_token)){
125 print_r($replace_token);
126
127 foreach($replace_token as $replace_array_search => $replace_value){
128 $string_text = str_replace($replace_array_search,$replace_value['replace_value'],$string_text);
129 }
130 }
131 $string_text = str_replace("\n","<br>",$string_text);
132
133
134 }//die;*/
135
136 $twitter_image_url = str_replace("_normal","_200x200",$tweets_data['user']['profile_image_url_https']);
137 $data_twitter[] = array(
138 "post_status" => 3,
139 "feed_post" => "twitter",
140 "p_content" => $tweets_data['text'],
141 "hastag_text" => isset($tweets_data['entities']['hashtags'])?$tweets_data['entities']['hashtags']:array(),
142 "p_time" => strtotime($tweets_data['created_at']),
143 "created_at" => $tweets_data['created_at'],
144 "id" => $tweets_data['id'],
145 "id_str" => $tweets_data['id_str'],
146 "u_name" => $tweets_data['user']['name'],
147 "u_url" => $twitter_feed_url,
148 "u_image" => $twitter_image_url,
149 //"embedded_code" => $tweets_data['created_at'],
150 );
151 }
152 // print_r($data_twitter);
153 // die;
154 $return_data[$request['screen_name']] = $tweets;
155 }
156
157 $sort_post = $this->array_sort($data_twitter, 'p_time', SORT_DESC);
158 //print_r($sort_post);
159 // print_r($data_twitter);
160//die;
161
162 return $sort_post;
163 return $return_data;
164
165 // print_r($tweets);
166//die('1231231');
167
168 }