PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-a.5
Jetpack – WP Security, Backup, Speed, & Growth v16.1-a.5
16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / extensions / blocks / like / render.php
jetpack / extensions / blocks / like Last commit date
like.php 1 month ago render.php 5 days ago
render.php
143 lines
1 <?php
2 /**
3 * Like block render implementation.
4 *
5 * Loaded lazily from like.php only when the block is rendered, to keep the
6 * render body out of the eager front-end PHP/opcache footprint.
7 *
8 * @package automattic/jetpack
9 */
10
11 namespace Automattic\Jetpack\Extensions\Like;
12
13 use Automattic\Jetpack\Assets;
14 use Automattic\Jetpack\Blocks;
15 use Automattic\Jetpack\Status\Request;
16 use Jetpack_Gutenberg;
17
18 if ( ! defined( 'ABSPATH' ) ) {
19 exit( 0 );
20 }
21
22 /**
23 * Like block render implementation.
24 *
25 * @param array $attr Array containing the Like block attributes.
26 * @param string $content String containing the Like block content.
27 * @param object $block Object containing the Like block data.
28 *
29 * @return string
30 */
31 function render_block_implementation( $attr, $content, $block ) {
32 // Do not render the Like block in other context than front-end (i.e. feed, emails, API, etc.).
33 if ( ! Request::is_frontend() ) {
34 return;
35 }
36
37 /*
38 * Enqueue necessary scripts and styles.
39 */
40 Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
41
42 $html = '';
43
44 $uniqid = uniqid();
45 $post_id = $block->context['postId'] ?? null;
46 $title = esc_html__( 'Like or Reblog', 'jetpack' );
47
48 if ( ! $post_id ) {
49 return;
50 }
51
52 /*
53 * Never render the Like block on password-protected posts, even for viewers
54 * who can read the post (owners, admins, or after unlocking). We gate on the
55 * post having a password rather than post_password_required(), which is
56 * request-scoped and would let the Like button leak once a viewer unlocked
57 * the post.
58 */
59 $post = get_post( $post_id );
60 if ( $post instanceof \WP_Post && ! empty( $post->post_password ) ) {
61 return;
62 }
63
64 // make sure we have `jetpack_likes_master_iframe` defined
65 require_once JETPACK__PLUGIN_DIR . 'modules/likes/jetpack-likes-master-iframe.php';
66
67 if ( ! has_action( 'wp_footer', 'jetpack_likes_master_iframe' ) ) {
68 add_action( 'wp_footer', 'jetpack_likes_master_iframe', 21 );
69 }
70
71 $style_path = null;
72 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
73 $style_url = content_url( 'mu-plugins/likes/jetpack-likes.css' );
74 if ( defined( 'WP_CONTENT_DIR' ) && WP_CONTENT_DIR ) {
75 $style_path = WP_CONTENT_DIR . '/mu-plugins/likes/jetpack-likes.css';
76 }
77 $script_url = content_url( 'mu-plugins/likes/queuehandler.js' );
78 } else {
79 $style_url = Assets::get_file_url_for_environment(
80 '_inc/build/likes/style.min.css',
81 'modules/likes/style.css'
82 );
83 /** This filter is documented in projects/plugins/jetpack/load-jetpack.php */
84 $style_path = JETPACK__PLUGIN_DIR . ( apply_filters( 'jetpack_should_use_minified_assets', true ) ? '_inc/build/likes/style.min.css' : 'modules/likes/style.css' );
85 $script_url = Assets::get_file_url_for_environment(
86 '_inc/build/likes/queuehandler.min.js',
87 'modules/likes/queuehandler.js'
88 );
89 }
90 wp_enqueue_script(
91 'jetpack_likes_queuehandler',
92 $script_url,
93 array(),
94 JETPACK__VERSION,
95 array(
96 'strategy' => 'defer',
97 'in_footer' => true,
98 )
99 );
100 wp_enqueue_style( 'jetpack_likes', $style_url, array(), JETPACK__VERSION );
101
102 if ( $style_path ) {
103 wp_style_add_data( 'jetpack_likes', 'path', $style_path );
104 }
105
106 $show_reblog_button = $attr['showReblogButton'] ?? false;
107 $show_avatars = $attr['showAvatars'] ?? true;
108 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
109 $blog_id = get_current_blog_id();
110 $bloginfo = get_blog_details( (int) $blog_id );
111 $domain = $bloginfo->domain;
112 $reblog_param = $show_reblog_button ? '&amp;reblog=1' : '';
113 $show_avatars_param = $show_avatars ? '' : '&amp;slim=1';
114 $src = sprintf( 'https://widgets.wp.com/likes/index.html?ver=%1$s#blog_id=%2$d&amp;post_id=%3$d&amp;origin=%4$s&amp;obj_id=%2$d-%3$d-%5$s%6$s%7$s&amp;block=1', rawurlencode( JETPACK__VERSION ), $blog_id, $post_id, $domain, $uniqid, $reblog_param, $show_avatars_param );
115
116 // provide the mapped domain when needed
117 if ( isset( $_SERVER['HTTP_HOST'] ) && strpos( sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ), '.wordpress.com' ) === false ) {
118 $sanitized_host = filter_var( wp_unslash( $_SERVER['HTTP_HOST'] ), FILTER_SANITIZE_URL );
119 $src .= '&amp;domain=' . rawurlencode( $sanitized_host );
120 }
121 } else {
122 $blog_id = \Jetpack_Options::get_option( 'id' );
123 $url = home_url();
124 $url_parts = wp_parse_url( $url );
125 $domain = $url_parts['host'];
126 $show_avatars_param = $show_avatars ? '' : '&amp;slim=1';
127 $src = sprintf( 'https://widgets.wp.com/likes/index.html?ver=%1$s#blog_id=%2$d&amp;post_id=%3$d&amp;origin=%4$s&amp;obj_id=%2$d-%3$d-%5$s%6$s&amp;block=1', rawurlencode( JETPACK__VERSION ), $blog_id, $post_id, $domain, $uniqid, $show_avatars_param );
128 }
129
130 $name = sprintf( 'like-post-frame-%1$d-%2$d-%3$s', $blog_id, $post_id, $uniqid );
131 $wrapper = sprintf( 'like-post-wrapper-%1$d-%2$d-%3$s', $blog_id, $post_id, $uniqid );
132
133 $html = "<div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='" . esc_attr( $wrapper ) . "' data-src='" . esc_attr( $src ) . "' data-name='" . esc_attr( $name ) . "' data-title='" . esc_attr( $title ) . "'>"
134 . "<div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='loading'>" . esc_html__( 'Loading…', 'jetpack' ) . '</span></div>'
135 . "<span class='sd-text-color'></span><a class='sd-link-color'></a>"
136 . '</div>';
137 return sprintf(
138 '<div class="%1$s">%2$s</div>',
139 esc_attr( Blocks::classes( Blocks::get_block_feature( __DIR__ ), $attr ) ),
140 $html
141 );
142 }
143