PluginProbe
Powerkit – Supercharge your WordPress Site / 2.3.6
Powerkit – Supercharge your WordPress Site v2.3.6
3.1.1 3.1.0 3.0.9 3.0.8 trunk 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 All 87 releases
powerkit / modules / twitter / helpers / helper-powerkit-twitter.php

helper-powerkit-twitter.php in Powerkit – Supercharge your WordPress Site 2.3.6, at modules/twitter/helpers/helper-powerkit-twitter.php

185 lines 5.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Helpers Twitter
4 *
5 * @package Powerkit
6 * @subpackage Modules/Helper
7 */
8
9 /**
10 * Convert links to clickable format
11 *
12 * @param string $name Specific template.
13 * @param array $twitter Array of twitter.
14 * @param array $params Array of params.
15 */
16 function powerkit_twitter_template_handler( $name, $twitter, $params ) {
17 $templates = apply_filters( 'powerkit_twitter_templates', array() );
18
19 $new = isset( $templates['default'] ) ? false : true;
20
21 if ( $new && count( $templates ) > 0 ) {
22 $first_item = array_shift( $templates );
23
24 if ( function_exists( $first_item['func'] ) ) {
25 call_user_func( $first_item['func'], $twitter, $params );
26 } else {
27 call_user_func( 'powerkit_twitter_default_template', $twitter, $params );
28 }
29 } elseif ( isset( $templates[ $name ] ) && function_exists( $templates[ $name ]['func'] ) ) {
30 call_user_func( $templates[ $name ]['func'], $twitter, $params );
31 } else {
32 call_user_func( 'powerkit_twitter_default_template', $twitter, $params );
33 }
34 }
35
36 /**
37 * Get templates options
38 *
39 * @return array Items.
40 */
41 function powerkit_twitter_get_templates_options() {
42 $options = array();
43
44 $templates = apply_filters( 'powerkit_twitter_templates', array() );
45
46 if ( $templates ) {
47 foreach ( $templates as $key => $item ) {
48 if ( isset( $item['name'] ) ) {
49 $options[ $key ] = $item['name'];
50 }
51 }
52 }
53
54 return $options;
55 }
56
57 /**
58 * Convert links to clickable format
59 *
60 * @param string $links Text with links.
61 * @param bool $targetblank Open links in a new tab.
62 * @return string Text with replaced links.
63 */
64 function powerkit_twitter_convert_links( $links, $targetblank = true ) {
65
66 // The target.
67 $target = $targetblank ? ' target="_blank" ' : '';
68
69 // Convert link to url.
70 $links = preg_replace( '/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[A-Z0-9+&@#\/%=~_|]/i', '<a href="\0" target="_blank">\0</a>', $links );
71
72 // Convert @ to follow.
73 $links = preg_replace( '/(@([_a-z0-9\-]+))/i', '<a href="http://twitter.com/$2" title="Follow $2" $target >$1</a>', $links );
74
75 // Convert # to search.
76 $links = preg_replace( '/(#([_a-z0-9\-]+))/i', '<a href="https://twitter.com/search?q=$2" title="Search $1" $target >$1</a>', $links );
77
78 // Return links.
79 return $links;
80 }
81
82 /**
83 * Get timeline twitter
84 *
85 * @param array $options Timeline options.
86 * @param array $cache_time Cache time.
87 */
88 function powerkit_twitter_get_timeline( $options, $cache_time ) {
89
90 if ( powerkit_connect( 'twitter_app_oauth_token' ) ) {
91
92 $twitter_connect = new Powerkit_Twitter_API();
93 $twitter_connect->init( array(
94 'consumer_key' => powerkit_connect( 'twitter_app_consumer_key' ),
95 'consumer_secret' => powerkit_connect( 'twitter_app_consumer_secret' ),
96 'access_token' => powerkit_connect( 'twitter_app_oauth_token' ),
97 'access_token_secret' => powerkit_connect( 'twitter_app_oauth_token_secret' ),
98 ), 'timeline' );
99 $twitter_connect->set_url_base();
100 $twitter_connect->set_get_fields( $options );
101 $twitter_connect->perform_request();
102
103 $response_code = wp_remote_retrieve_response_code( $twitter_connect->json );
104 $response_message = wp_remote_retrieve_response_message( $twitter_connect->json );
105 $response_body = json_decode( wp_remote_retrieve_body( $twitter_connect->json ) );
106
107 if ( 200 !== $response_code && ! empty( $response_message ) ) {
108
109 $twitter = new WP_Error( $response_code, $response_message );
110
111 } elseif ( 200 !== $response_code ) {
112
113 $twitter = new WP_Error( $response_code, sprintf( '%s <a href="%s">%s</a>', esc_html__( 'Twitter data is not set. Please check your Twitter User or ', 'powerkit' ), powerkit_get_page_url( 'connect&tab=twitter' ), esc_html__( ' Twitter Settings', 'powerkit' ) ) );
114
115 } elseif ( empty( $response_body ) ) {
116
117 $twitter = new WP_Error( $response_code, esc_html__( 'There are no tweets in your account.', 'powerkit' ) );
118
119 } else {
120 $twitter = $response_body;
121 }
122 } else {
123 $twitter = new WP_Error( 'No token.', sprintf( '%s <a href="%s">%s</a>', esc_html__( 'Twitter data is not set. Please check your Twitter User or ', 'powerkit' ), powerkit_get_page_url( 'connect&tab=twitter' ), esc_html__( ' Twitter Settings', 'powerkit' ) ) );
124 }
125
126 return $twitter;
127 }
128
129 /**
130 * Get recent feed from twitter
131 *
132 * @param array $params Recent options.
133 * @param string $cache_name The cache name.
134 */
135 function powerkit_twitter_get_recent( $params, $cache_name = 'powerkit_twitter_data' ) {
136 $params = array_merge(
137 array(
138 'title' => esc_html__( 'Twitter Feed', 'powerkit' ),
139 'username' => '',
140 'number' => 5,
141 'template' => 'default',
142 'header' => true,
143 'button' => true,
144 'replies' => false,
145 'retweets' => false,
146 'cache_time' => (int) apply_filters( 'powerkit_twitter_cache_timeout', 60 ),
147 ),
148 (array) $params
149 );
150
151 $cache_name = $cache_name . '_' . md5( maybe_serialize( $params ) . powerkit_connect( 'twitter_app_oauth_token' ) );
152
153 // Check if transient already exists.
154 $twitter = get_transient( $cache_name );
155
156 if ( ! empty( $twitter ) ) {
157
158 // Fetch twitter from the transient.
159 $twitter = maybe_unserialize( $twitter );
160
161 } else {
162
163 // Get Twitter via Twitter OAuth.
164 $twitter = powerkit_twitter_get_timeline(
165 array(
166 'screen_name' => $params['username'],
167 'count' => $params['number'],
168 'include_rts' => $params['retweets'] ? 'true' : 'false',
169 'exclude_replies' => $params['replies'] ? 'false' : 'true',
170 ),
171 $params['cache_time']
172 );
173
174 // Set a new transient if no errors returned.
175 set_transient( $cache_name, maybe_serialize( $twitter ), $params['cache_time'] * 60 );
176 }
177
178 // Check if errors have been returned.
179 if ( ! is_wp_error( $twitter ) ) {
180 powerkit_twitter_template_handler( $params['template'], $twitter, $params );
181 } else {
182 powerkit_alert_warning( $twitter->get_error_message() );
183 }
184 }
185