PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.5.1
Jetpack – WP Security, Backup, Speed, & Growth v15.5.1
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 14.1.1 14.2.2 14.3.1 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 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 / like.php
jetpack / extensions / blocks / like Last commit date
like.php 7 months ago
like.php
152 lines
1 <?php
2 /**
3 * Like Block.
4 *
5 * @since 12.9
6 *
7 * @package automattic/jetpack
8 */
9
10 namespace Automattic\Jetpack\Extensions\Like;
11
12 use Automattic\Jetpack\Assets;
13 use Automattic\Jetpack\Blocks;
14 use Automattic\Jetpack\Status\Request;
15 use Jetpack_Gutenberg;
16
17 if ( ! defined( 'ABSPATH' ) ) {
18 exit( 0 );
19 }
20
21 /**
22 * Registers the block for use in Gutenberg
23 * This is done via an action so that we can disable
24 * registration if we need to.
25 */
26 function register_block() {
27 $is_wpcom = defined( 'IS_WPCOM' ) && IS_WPCOM;
28 $is_connected = \Jetpack::is_connection_ready();
29
30 if ( $is_wpcom || $is_connected ) {
31 Blocks::jetpack_register_block(
32 __DIR__,
33 array(
34 'api_version' => 3,
35 'render_callback' => __NAMESPACE__ . '\render_block',
36 'description' => $is_wpcom ? __( 'Give your readers the ability to show appreciation for your posts and easily share them with others.', 'jetpack' ) : __( 'Give your readers the ability to show appreciation for your posts.', 'jetpack' ),
37 )
38 );
39 }
40 }
41 add_action( 'init', __NAMESPACE__ . '\register_block' );
42
43 /**
44 * Like block render function.
45 *
46 * @param array $attr Array containing the Like block attributes.
47 * @param string $content String containing the Like block content.
48 * @param object $block Object containing the Like block data.
49 *
50 * @return string
51 */
52 function render_block( $attr, $content, $block ) {
53 // Do not render the Like block in other context than front-end (i.e. feed, emails, API, etc.).
54 if ( ! Request::is_frontend() ) {
55 return;
56 }
57
58 /*
59 * Enqueue necessary scripts and styles.
60 */
61 Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
62
63 $html = '';
64
65 $uniqid = uniqid();
66 $post_id = $block->context['postId'] ?? null;
67 $title = esc_html__( 'Like or Reblog', 'jetpack' );
68
69 if ( ! $post_id ) {
70 return;
71 }
72
73 // make sure we have `jetpack_likes_master_iframe` defined
74 require_once JETPACK__PLUGIN_DIR . 'modules/likes/jetpack-likes-master-iframe.php';
75
76 if ( ! has_action( 'wp_footer', 'jetpack_likes_master_iframe' ) ) {
77 add_action( 'wp_footer', 'jetpack_likes_master_iframe', 21 );
78 }
79
80 $style_path = null;
81 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
82 $style_url = content_url( 'mu-plugins/likes/jetpack-likes.css' );
83 if ( defined( 'WP_CONTENT_DIR' ) && WP_CONTENT_DIR ) {
84 $style_path = WP_CONTENT_DIR . '/mu-plugins/likes/jetpack-likes.css';
85 }
86 $script_url = content_url( 'mu-plugins/likes/queuehandler.js' );
87 } else {
88 $style_url = Assets::get_file_url_for_environment(
89 '_inc/build/likes/style.min.css',
90 'modules/likes/style.css'
91 );
92 /** This filter is documented in projects/plugins/jetpack/load-jetpack.php */
93 $style_path = JETPACK__PLUGIN_DIR . ( apply_filters( 'jetpack_should_use_minified_assets', true ) ? '_inc/build/likes/style.min.css' : 'modules/likes/style.css' );
94 $script_url = Assets::get_file_url_for_environment(
95 '_inc/build/likes/queuehandler.min.js',
96 'modules/likes/queuehandler.js'
97 );
98 }
99 wp_enqueue_script(
100 'jetpack_likes_queuehandler',
101 $script_url,
102 array(),
103 JETPACK__VERSION,
104 array(
105 'strategy' => 'defer',
106 'in_footer' => true,
107 )
108 );
109 wp_enqueue_style( 'jetpack_likes', $style_url, array(), JETPACK__VERSION );
110
111 if ( $style_path ) {
112 wp_style_add_data( 'jetpack_likes', 'path', $style_path );
113 }
114
115 $show_reblog_button = $attr['showReblogButton'] ?? false;
116 $show_avatars = $attr['showAvatars'] ?? true;
117 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
118 $blog_id = get_current_blog_id();
119 $bloginfo = get_blog_details( (int) $blog_id );
120 $domain = $bloginfo->domain;
121 $reblog_param = $show_reblog_button ? '&amp;reblog=1' : '';
122 $show_avatars_param = $show_avatars ? '' : '&amp;slim=1';
123 $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 );
124
125 // provide the mapped domain when needed
126 if ( isset( $_SERVER['HTTP_HOST'] ) && strpos( sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ), '.wordpress.com' ) === false ) {
127 $sanitized_host = filter_var( wp_unslash( $_SERVER['HTTP_HOST'] ), FILTER_SANITIZE_URL );
128 $src .= '&amp;domain=' . rawurlencode( $sanitized_host );
129 }
130 } else {
131 $blog_id = \Jetpack_Options::get_option( 'id' );
132 $url = home_url();
133 $url_parts = wp_parse_url( $url );
134 $domain = $url_parts['host'];
135 $show_avatars_param = $show_avatars ? '' : '&amp;slim=1';
136 $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 );
137 }
138
139 $name = sprintf( 'like-post-frame-%1$d-%2$d-%3$s', $blog_id, $post_id, $uniqid );
140 $wrapper = sprintf( 'like-post-wrapper-%1$d-%2$d-%3$s', $blog_id, $post_id, $uniqid );
141
142 $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 ) . "'>"
143 . "<div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='loading'>" . esc_html__( 'Loading…', 'jetpack' ) . '</span></div>'
144 . "<span class='sd-text-color'></span><a class='sd-link-color'></a>"
145 . '</div>';
146 return sprintf(
147 '<div class="%1$s">%2$s</div>',
148 esc_attr( Blocks::classes( Blocks::get_block_feature( __DIR__ ), $attr ) ),
149 $html
150 );
151 }
152