PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.1.1
Jetpack – WP Security, Backup, Speed, & Growth v14.1.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 1 year ago
like.php
161 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 Jetpack_Gutenberg;
15
16 /**
17 * Registers the block for use in Gutenberg
18 * This is done via an action so that we can disable
19 * registration if we need to.
20 */
21 function register_block() {
22 $is_wpcom = defined( 'IS_WPCOM' ) && IS_WPCOM;
23
24 Blocks::jetpack_register_block(
25 __DIR__,
26 array(
27 'api_version' => 3,
28 'render_callback' => __NAMESPACE__ . '\render_block',
29 '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' ),
30 )
31 );
32 }
33 add_action( 'init', __NAMESPACE__ . '\register_block' );
34
35 /**
36 * Like block render function.
37 *
38 * @param array $attr Array containing the Like block attributes.
39 * @param string $content String containing the Like block content.
40 * @param object $block Object containing the Like block data.
41 *
42 * @return string
43 */
44 function render_block( $attr, $content, $block ) {
45 // Do not render the Like block in other context than front-end (i.e. feed, emails, API, etc.).
46 if ( ! jetpack_is_frontend() ) {
47 return;
48 }
49
50 /*
51 * Enqueue necessary scripts and styles.
52 */
53 Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
54
55 $html = '';
56
57 $uniqid = uniqid();
58 $post_id = $block->context['postId'] ?? null;
59 $title = esc_html__( 'Like or Reblog', 'jetpack' );
60
61 if ( ! $post_id ) {
62 return;
63 }
64
65 /**
66 * Enable an alternate Likes layout.
67 *
68 * @since 12.9
69 *
70 * @module likes
71 *
72 * @param bool $new_layout Enable the new Likes layout. False by default.
73 */
74 $new_layout = apply_filters( 'likes_new_layout', true ) ? '&amp;n=1' : '';
75
76 add_action( 'wp_footer', __NAMESPACE__ . '\render_iframe', 25 );
77
78 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
79 $style_url = content_url( 'mu-plugins/likes/jetpack-likes.css' );
80 $script_url = content_url( 'mu-plugins/likes/queuehandler.js' );
81 } else {
82 require_once JETPACK__PLUGIN_DIR . 'modules/likes.php';
83 $style_url = plugins_url( 'modules/likes/style.css', dirname( __DIR__, 2 ) );
84 $script_url = Assets::get_file_url_for_environment(
85 '_inc/build/likes/queuehandler.min.js',
86 'modules/likes/queuehandler.js'
87 );
88 }
89 wp_enqueue_script( 'jetpack_likes_queuehandler', $script_url, array(), JETPACK__VERSION, true );
90 wp_enqueue_style( 'jetpack_likes', $style_url, array(), JETPACK__VERSION );
91
92 $show_reblog_button = $attr['showReblogButton'] ?? false;
93 $show_avatars = $attr['showAvatars'] ?? true;
94 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
95 $blog_id = get_current_blog_id();
96 $bloginfo = get_blog_details( (int) $blog_id );
97 $domain = $bloginfo->domain;
98 $reblog_param = $show_reblog_button ? '&amp;reblog=1' : '';
99 $show_avatars_param = $show_avatars ? '' : '&amp;slim=1';
100 $src = sprintf( '//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%7$s%8$s', rawurlencode( JETPACK__VERSION ), $blog_id, $post_id, $domain, $uniqid, $new_layout, $reblog_param, $show_avatars_param );
101
102 // provide the mapped domain when needed
103 if ( isset( $_SERVER['HTTP_HOST'] ) && strpos( sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ), '.wordpress.com' ) === false ) {
104 $sanitized_host = filter_var( wp_unslash( $_SERVER['HTTP_HOST'] ), FILTER_SANITIZE_URL );
105 $src .= '&amp;domain=' . rawurlencode( $sanitized_host );
106 }
107 } else {
108 $blog_id = \Jetpack_Options::get_option( 'id' );
109 $url = home_url();
110 $url_parts = wp_parse_url( $url );
111 $domain = $url_parts['host'];
112 $show_avatars_param = $show_avatars ? '' : '&amp;slim=1';
113 $src = sprintf( 'https://widgets.wp.com/likes/?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%7$s', rawurlencode( JETPACK__VERSION ), $blog_id, $post_id, $domain, $uniqid, $new_layout, $show_avatars_param );
114 }
115
116 $name = sprintf( 'like-post-frame-%1$d-%2$d-%3$s', $blog_id, $post_id, $uniqid );
117 $wrapper = sprintf( 'like-post-wrapper-%1$d-%2$d-%3$s', $blog_id, $post_id, $uniqid );
118
119 $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 ) . "'>"
120 . "<div class='likes-widget-placeholder post-likes-widget-placeholder' style='height: 55px;'><span class='button'><span>" . esc_html__( 'Like', 'jetpack' ) . "</span></span> <span class='loading'>" . esc_html__( 'Loading...', 'jetpack' ) . '</span></div>'
121 . "<span class='sd-text-color'></span><a class='sd-link-color'></a>"
122 . '</div>';
123 return sprintf(
124 '<div class="%1$s">%2$s</div>',
125 esc_attr( Blocks::classes( Blocks::get_block_feature( __DIR__ ), $attr ) ),
126 $html
127 );
128 }
129
130 /**
131 * Helper function to determine whether the Like module has been disabled
132 */
133 function is_legacy_likes_disabled() {
134 $settings = new \Jetpack_Likes_Settings();
135
136 $is_wpcom = defined( 'IS_WPCOM' ) && IS_WPCOM;
137 $is_likes_module_inactive = ! \Jetpack::is_module_active( 'likes' );
138 $is_disabled_on_wpcom = $is_wpcom && get_option( 'disabled_likes' ) && get_option( 'disabled_reblogs' );
139 $is_disabled_on_non_wpcom = ! $is_wpcom && get_option( 'disabled_likes' );
140 return $is_likes_module_inactive || $is_disabled_on_wpcom || $is_disabled_on_non_wpcom || ! $settings->is_likes_module_enabled();
141 }
142
143 /**
144 * Renders the iframe and enqueues the necessary scripts.
145 */
146 function render_iframe() {
147 static $main_iframe_added = false;
148
149 if ( ! $main_iframe_added ) {
150 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
151 // @phan-suppress-next-line PhanUndeclaredStaticMethod -- Can't do a stub for this one since Jetpack has its own class with the same name.
152 \Jetpack_Likes::likes_master();
153 } else {
154 require_once JETPACK__PLUGIN_DIR . 'modules/likes.php';
155 jetpack_likes_master_iframe();
156 }
157
158 $main_iframe_added = true;
159 }
160 }
161