PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.0.2
Jetpack – WP Security, Backup, Speed, & Growth v13.0.2
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 2 years ago
like.php
172 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 /*
46 * Enqueue necessary scripts and styles.
47 */
48 Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
49
50 $html = '';
51
52 $uniqid = uniqid();
53 $post_id = $block->context['postId'];
54 $title = esc_html__( 'Like or Reblog', 'jetpack' );
55
56 if ( ! $post_id ) {
57 return;
58 }
59
60 /**
61 * Enable an alternate Likes layout.
62 *
63 * @since 12.9
64 *
65 * @module likes
66 *
67 * @param bool $new_layout Enable the new Likes layout. False by default.
68 */
69 $new_layout = apply_filters( 'likes_new_layout', true ) ? '&amp;n=1' : '';
70
71 static $main_iframe_added = false;
72
73 if ( ! $main_iframe_added && is_legacy_likes_disabled() ) {
74 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
75 add_action( 'wp_footer', array( 'Jetpack_Likes', 'likes_master' ), 21 );
76 } else {
77 require_once JETPACK__PLUGIN_DIR . 'modules/likes.php';
78 add_action( 'wp_footer', 'jetpack_likes_master_iframe', 21 );
79 }
80 wp_enqueue_script( 'jetpack_likes_queuehandler' );
81 wp_enqueue_style( 'jetpack_likes' );
82 $main_iframe_added = true;
83 }
84
85 $show_reblog_button = $attr['showReblogButton'] ?? false;
86 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
87 $blog_id = get_current_blog_id();
88 $bloginfo = get_blog_details( (int) $blog_id );
89 $domain = $bloginfo->domain;
90 $version = '20231201';
91 $reblog_param = $show_reblog_button ? '&amp;reblog=1' : '';
92 $src = sprintf( '//widgets.wp.com/likes/index.html?ver=%1$d#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', $version, $blog_id, $post_id, $domain, $uniqid, $new_layout, $reblog_param );
93 $headline = '';
94
95 // provide the mapped domain when needed
96 if ( isset( $_SERVER['HTTP_HOST'] ) && strpos( sanitize_text_field( wp_unslash( $_SERVER['HTTP_HOST'] ) ), '.wordpress.com' ) === false ) {
97 $sanitized_host = filter_var( wp_unslash( $_SERVER['HTTP_HOST'] ), FILTER_SANITIZE_URL );
98 $src .= '&amp;domain=' . rawurlencode( $sanitized_host );
99 }
100 } else {
101 $blog_id = \Jetpack_Options::get_option( 'id' );
102 $url = home_url();
103 $url_parts = wp_parse_url( $url );
104 $domain = $url_parts['host'];
105 $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', JETPACK__VERSION, $blog_id, $post_id, $domain, $uniqid, $new_layout );
106 $headline = sprintf(
107 /** This filter is already documented in modules/sharedaddy/sharing-service.php */
108 apply_filters( 'jetpack_sharing_headline_html', '<h3 class="sd-title">%s</h3>', esc_html__( 'Like this:', 'jetpack' ), 'likes' ),
109 esc_html__( 'Like this:', 'jetpack' )
110 );
111 }
112
113 $name = sprintf( 'like-post-frame-%1$d-%2$d-%3$s', $blog_id, $post_id, $uniqid );
114 $wrapper = sprintf( 'like-post-wrapper-%1$d-%2$d-%3$s', $blog_id, $post_id, $uniqid );
115
116 $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 ) . "'>"
117 . $headline
118 . "<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>'
119 . "<span class='sd-text-color'></span><a class='sd-link-color'></a>"
120 . '</div>';
121 return sprintf(
122 '<div class="%1$s">%2$s</div>',
123 esc_attr( Blocks::classes( Blocks::get_block_feature( __DIR__ ), $attr ) ),
124 $html
125 );
126 }
127
128 /**
129 * Helper function to determine whether the Like module has been disabled
130 */
131 function is_legacy_likes_disabled() {
132 $is_wpcom = defined( 'IS_WPCOM' ) && IS_WPCOM;
133 $is_likes_module_inactive = ! \Jetpack::is_module_active( 'likes' );
134 $is_disabled_on_wpcom = $is_wpcom && get_option( 'disabled_likes' ) && get_option( 'disabled_reblogs' );
135 $is_disabled_on_non_wpcom = ! $is_wpcom && get_option( 'disabled_likes' );
136
137 return $is_likes_module_inactive || $is_disabled_on_wpcom || $is_disabled_on_non_wpcom;
138 }
139
140 /**
141 * Registers and enqueues script and style for Jetpack Likes.
142 *
143 * This function conditionally registers and enqueues the Jetpack Likes
144 * CSS and JavaScript files based on the environment. It handles both
145 * WordPress.com and self-hosted WordPress environments. The function
146 * relies on `IS_WPCOM` to determine the environment and uses different
147 * paths for script and style files accordingly.
148 *
149 * @return void Early return if legacy likes are not disabled.
150 */
151 function register_script_and_style() {
152 if ( ! is_legacy_likes_disabled() ) {
153 return;
154 }
155
156 if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
157 $style_url = content_url( 'mu-plugins/likes/jetpack-likes.css' );
158 $script_url = content_url( 'mu-plugins/likes/queuehandler.js' );
159 } else {
160 $style_url = plugins_url( 'modules/likes/style.css', dirname( __DIR__, 2 ) );
161 $script_url = Assets::get_file_url_for_environment(
162 '_inc/build/likes/queuehandler.min.js',
163 'modules/likes/queuehandler.js'
164 );
165 }
166
167 wp_register_style( 'jetpack_likes', $style_url, array(), JETPACK__VERSION );
168 wp_register_script( 'jetpack_likes_queuehandler', $script_url, array(), JETPACK__VERSION, true );
169 }
170
171 add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\register_script_and_style' );
172