PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
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 week ago render.php 1 week ago
render.php
131 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 // make sure we have `jetpack_likes_master_iframe` defined
53 require_once JETPACK__PLUGIN_DIR . 'modules/likes/jetpack-likes-master-iframe.php';
54
55 if ( ! has_action( 'wp_footer', 'jetpack_likes_master_iframe' ) ) {
56 add_action( 'wp_footer', 'jetpack_likes_master_iframe', 21 );
57 }
58
59 $style_path = null;
60 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
61 $style_url = content_url( 'mu-plugins/likes/jetpack-likes.css' );
62 if ( defined( 'WP_CONTENT_DIR' ) && WP_CONTENT_DIR ) {
63 $style_path = WP_CONTENT_DIR . '/mu-plugins/likes/jetpack-likes.css';
64 }
65 $script_url = content_url( 'mu-plugins/likes/queuehandler.js' );
66 } else {
67 $style_url = Assets::get_file_url_for_environment(
68 '_inc/build/likes/style.min.css',
69 'modules/likes/style.css'
70 );
71 /** This filter is documented in projects/plugins/jetpack/load-jetpack.php */
72 $style_path = JETPACK__PLUGIN_DIR . ( apply_filters( 'jetpack_should_use_minified_assets', true ) ? '_inc/build/likes/style.min.css' : 'modules/likes/style.css' );
73 $script_url = Assets::get_file_url_for_environment(
74 '_inc/build/likes/queuehandler.min.js',
75 'modules/likes/queuehandler.js'
76 );
77 }
78 wp_enqueue_script(
79 'jetpack_likes_queuehandler',
80 $script_url,
81 array(),
82 JETPACK__VERSION,
83 array(
84 'strategy' => 'defer',
85 'in_footer' => true,
86 )
87 );
88 wp_enqueue_style( 'jetpack_likes', $style_url, array(), JETPACK__VERSION );
89
90 if ( $style_path ) {
91 wp_style_add_data( 'jetpack_likes', 'path', $style_path );
92 }
93
94 $show_reblog_button = $attr['showReblogButton'] ?? false;
95 $show_avatars = $attr['showAvatars'] ?? true;
96 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
97 $blog_id = get_current_blog_id();
98 $bloginfo = get_blog_details( (int) $blog_id );
99 $domain = $bloginfo->domain;
100 $reblog_param = $show_reblog_button ? '&amp;reblog=1' : '';
101 $show_avatars_param = $show_avatars ? '' : '&amp;slim=1';
102 $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 );
103
104 // provide the mapped domain when needed
105 if ( isset( $_SERVER['HTTP_HOST'] ) && strpos( sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ), '.wordpress.com' ) === false ) {
106 $sanitized_host = filter_var( wp_unslash( $_SERVER['HTTP_HOST'] ), FILTER_SANITIZE_URL );
107 $src .= '&amp;domain=' . rawurlencode( $sanitized_host );
108 }
109 } else {
110 $blog_id = \Jetpack_Options::get_option( 'id' );
111 $url = home_url();
112 $url_parts = wp_parse_url( $url );
113 $domain = $url_parts['host'];
114 $show_avatars_param = $show_avatars ? '' : '&amp;slim=1';
115 $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 );
116 }
117
118 $name = sprintf( 'like-post-frame-%1$d-%2$d-%3$s', $blog_id, $post_id, $uniqid );
119 $wrapper = sprintf( 'like-post-wrapper-%1$d-%2$d-%3$s', $blog_id, $post_id, $uniqid );
120
121 $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 ) . "'>"
122 . "<div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='loading'>" . esc_html__( 'Loading…', 'jetpack' ) . '</span></div>'
123 . "<span class='sd-text-color'></span><a class='sd-link-color'></a>"
124 . '</div>';
125 return sprintf(
126 '<div class="%1$s">%2$s</div>',
127 esc_attr( Blocks::classes( Blocks::get_block_feature( __DIR__ ), $attr ) ),
128 $html
129 );
130 }
131