PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.1
16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 All 504 releases
← All changes | modules/shortcodes/tweet.php +13 -122 12.0.3 → 16.3-a.1 View file →
@@ -17,8 +17,12 @@
17 17 *
18 18 * @package automattic/jetpack
19 19 */
20 20
21 +if ( ! defined( 'ABSPATH' ) ) {
22 + exit( 0 );
23 +}
24 +
21 25 add_shortcode( 'tweet', array( 'Jetpack_Tweet', 'jetpack_tweet_shortcode' ) );
22 26
23 27 /**
24 28 * Tweet Shortcode class.
@@ -79,132 +83,20 @@
79 83 return '<!-- Invalid tweet id -->';
80 84 }
81 85 }
82 86
87 + // Add shortcode arguments to provider URL.
88 + add_filter( 'oembed_fetch_url', array( 'Jetpack_Tweet', 'jetpack_tweet_url_extra_args' ), 10, 3 );
89 +
83 90 /*
84 - * Fetch tweet.
85 - *
86 - * On WordPress.com, we also cache tweets for better performance and less requests.
87 - */
88 - if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
89 - /*
90 - * See if we have the tweet stored in our tweet store
91 - * if not get_tweet_store queues up a job to request
92 - */
93 - $data = get_tweet_store( $tweet_id );
94 - if ( $data ) {
95 - $tweet_handler = new Tweet_Handler();
91 + * In Jetpack, we use $wp_embed->shortcode() to return the tweet output.
92 + * @see https://github.com/Automattic/jetpack/pull/11173
93 + */
94 + $output = $wp_embed->shortcode( $atts, $id );
96 95
97 - /*
98 - * Replace Unicode characters with ther entities like Blackbird Pie v 0.3.2 did
99 - * to store tweets from other languages (important for non-english bloggers)
100 - */
101 - $data->text = $tweet_handler->unicode_replace_entities( $data->text );
102 - $data->user->screen_name = $tweet_handler->unicode_replace_entities( $data->user->screen_name );
103 - $data->user->name = $tweet_handler->unicode_replace_entities( $data->user->name );
96 + // Clean up filter.
97 + remove_filter( 'oembed_fetch_url', array( 'Jetpack_Tweet', 'jetpack_tweet_url_extra_args' ), 10 );
104 98
105 - $tweet = esc_html( $data->text );
106 - $tweet = $tweet_handler->expand_tco_links( $tweet, $data );
107 -
108 - $tweet = $tweet_handler->autolink( $tweet );
109 -
110 - $screen_name = esc_html( $data->user->screen_name );
111 - $name = esc_html( $data->user->name );
112 -
113 - $url = 'https://twitter.com/' . $screen_name . '/status/' . (int) $data->id;
114 -
115 - // Only show the user's real name if they set it to something different from their screename.
116 - if ( $screen_name !== $name ) {
117 - $real_name = '<br />' . $name;
118 - } else {
119 - $real_name = '<br />&nbsp;';
120 - }
121 -
122 - $time = strtotime( $data->created_at );
123 - $human_readable = gmdate( 'F d, Y', $time );
124 - $data_datetime = gmdate( 'Y-m-d\TH:i:sP', $time );
125 -
126 - /*
127 - * Additional params.
128 - */
129 -
130 - // align (float).
131 - $extra_classes = '';
132 - if ( in_array( $attr['align'], array( 'left', 'right', 'center' ), true ) ) {
133 - $extra_classes = ' tw-align-' . $attr['align'];
134 - }
135 -
136 - if ( 'true' === $attr['hide_thread'] ) {
137 - $extra_classes .= ' tw-hide-thread';
138 - }
139 -
140 - if ( 'true' === $attr['hide_media'] ) {
141 - $extra_classes .= ' tw-hide-media';
142 - }
143 -
144 - // lang.
145 - $lang = substr( $attr['lang'], 0, 2 );
146 - if ( empty( $lang ) ) {
147 - $lang = 'en';
148 - }
149 -
150 - // width.
151 - $width_html = '';
152 - $width = (int) $attr['width'];
153 - if ( $width > 100 ) {
154 - $width_html = ' width="' . esc_attr( $width ) . '"';
155 - }
156 -
157 - // in reply to id (conversation tweets).
158 - $in_reply_to_html = '';
159 - $in_reply_to = (int) $data->in_reply_to_status_id;
160 - if ( ! empty( $in_reply_to ) && 'false' === $attr['hide_thread'] ) {
161 - $in_reply_to_html = ' data-in-reply-to="' . esc_attr( $in_reply_to ) . '"';
162 - }
163 -
164 - // Generate the HTML output.
165 - $output = sprintf(
166 - '<blockquote class="twitter-tweet%1$s"%2$s%3$s lang="%4$s"><p>%5$s</p>&mdash; %6$s (@%7$s) <a href="%8$s" data-datetime="%9$s">%10$s</a></blockquote>',
167 - esc_attr( $extra_classes ),
168 - $width_html,
169 - $in_reply_to_html,
170 - esc_attr( $lang ),
171 - $tweet,
172 - wp_kses( $real_name, array( 'br' => array() ) ),
173 - esc_html( $screen_name ),
174 - esc_url( $url ),
175 - esc_attr( $data_datetime ),
176 - esc_html( $human_readable )
177 - );
178 - } else {
179 - /**
180 - * Filter the default display when a tweet is not available in the store.
181 - * Not available in Jetpack.
182 - *
183 - * @module shortcodes
184 - *
185 - * @since 5.1.0
186 - *
187 - * @param string $message Default display when a tweet is not available.
188 - * @param string $id Twitter URL.
189 - * @param array $attr Shortcode attributes.
190 - */
191 - return apply_filters( 'tweet_shortcode_pending_tweet', '', $id, $attr );
192 - }
193 - } else {
194 - // Add shortcode arguments to provider URL.
195 - add_filter( 'oembed_fetch_url', array( 'Jetpack_Tweet', 'jetpack_tweet_url_extra_args' ), 10, 3 );
196 -
197 - /*
198 - * In Jetpack, we use $wp_embed->shortcode() to return the tweet output.
199 - * @see https://github.com/Automattic/jetpack/pull/11173
200 - */
201 - $output = $wp_embed->shortcode( $atts, $id );
202 -
203 - // Clean up filter.
204 - remove_filter( 'oembed_fetch_url', array( 'Jetpack_Tweet', 'jetpack_tweet_url_extra_args' ), 10 );
205 - }
206 -
207 99 /** This action is documented in modules/widgets/social-media-icons.php */
208 100 do_action( 'jetpack_bump_stats_extras', 'embeds', 'tweet' );
209 101
210 102 if ( class_exists( 'Jetpack_AMP_Support' ) && Jetpack_AMP_Support::is_amp_request() ) {
@@ -282,6 +174,5 @@
282 174 wp_register_script( 'twitter-widgets', 'https://platform.twitter.com/widgets.js', array(), JETPACK__VERSION, true );
283 175 wp_print_scripts( 'twitter-widgets' );
284 176 }
285 177 }
286 -
287 178 } // class end