PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.3.2
Jetpack – WP Security, Backup, Speed, & Growth v12.3.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 / modules / comment-likes.php
jetpack / modules Last commit date
calypsoify 3 years ago carousel 3 years ago cloudflare-analytics 4 years ago comment-likes 5 years ago comments 3 years ago contact-form 1 year ago custom-css 3 years ago custom-post-types 3 years ago geo-location 4 years ago google-analytics 3 years ago gravatar 6 years ago infinite-scroll 3 years ago likes 3 years ago markdown 3 years ago masterbar 3 years ago memberships 3 years ago photon-cdn 3 years ago plugin-search 4 years ago post-by-email 3 years ago related-posts 3 years ago scan 3 years ago seo-tools 3 years ago sharedaddy 3 years ago shortcodes 3 years ago simple-payments 3 years ago site-icon 4 years ago sitemaps 3 years ago sso 3 years ago stats 3 years ago subscriptions 3 years ago theme-tools 3 years ago tiled-gallery 3 years ago verification-tools 4 years ago videopress 3 years ago widget-visibility 3 years ago widgets 3 years ago woocommerce-analytics 3 years ago wordads 3 years ago wpcom-block-editor 3 years ago wpcom-tos 5 years ago action-bar.php 3 years ago blaze.php 3 years ago carousel.php 4 years ago comment-likes.php 3 years ago comments.php 4 years ago contact-form.php 3 years ago copy-post.php 3 years ago custom-content-types.php 4 years ago custom-css.php 3 years ago enhanced-distribution.php 4 years ago geo-location.php 4 years ago google-analytics.php 4 years ago google-fonts.php 3 years ago gravatar-hovercards.php 3 years ago infinite-scroll.php 3 years ago json-api.php 5 years ago latex.php 4 years ago lazy-images.php 4 years ago likes.php 3 years ago markdown.php 4 years ago masterbar.php 4 years ago module-extras.php 4 years ago module-headings.php 3 years ago module-info.php 3 years ago monitor.php 4 years ago notes.php 3 years ago photon-cdn.php 3 years ago photon.php 3 years ago plugin-search.php 3 years ago post-by-email.php 5 years ago post-list.php 4 years ago protect.php 3 years ago publicize.php 3 years ago related-posts.php 4 years ago search.php 4 years ago seo-tools.php 4 years ago sharedaddy.php 4 years ago shortcodes.php 3 years ago shortlinks.php 4 years ago sitemaps.php 4 years ago sso.php 3 years ago stats.php 3 years ago subscriptions.php 3 years ago theme-tools.php 3 years ago tiled-gallery.php 4 years ago vaultpress.php 4 years ago verification-tools.php 5 years ago videopress.php 4 years ago waf.php 3 years ago widget-visibility.php 4 years ago widgets.php 3 years ago woocommerce-analytics.php 5 years ago wordads.php 5 years ago wpgroho.js 6 years ago
comment-likes.php
252 lines
1 <?php //phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Module Name: Comment Likes
4 * Module Description: Increase visitor engagement by adding a Like button to comments.
5 * Sort Order: 39
6 * Recommendation Order: 17
7 * First Introduced: 5.1
8 * Requires Connection: Yes
9 * Auto Activate: No
10 * Module Tags: Social
11 * Additional Search Queries: like widget, like button, like, likes
12 *
13 * @package automattic/jetpack
14 */
15
16 use Automattic\Jetpack\Assets;
17
18 Assets::add_resource_hint( '//widgets.wp.com', 'dns-prefetch' );
19
20 require_once __DIR__ . '/likes/jetpack-likes-master-iframe.php';
21 require_once __DIR__ . '/likes/jetpack-likes-settings.php';
22
23 /**
24 * Jetpack Comment Like Class
25 */
26 class Jetpack_Comment_Likes {
27
28 /**
29 * Jetpack_Likes_Settings object
30 *
31 * @var Jetpack_Likes_Settings
32 */
33 public $settings;
34
35 /**
36 * Blog ID
37 *
38 * @var int
39 */
40 public $blog_id;
41
42 /**
43 * Site home URL domain
44 *
45 * @var string
46 */
47 public $domain;
48
49 /**
50 * Initialize comment like module
51 */
52 public static function init() {
53 static $instance = null;
54
55 if ( ! $instance ) {
56 $instance = new Jetpack_Comment_Likes();
57 }
58
59 return $instance;
60 }
61
62 /**
63 * Construct comment like module.
64 */
65 private function __construct() {
66 $this->settings = new Jetpack_Likes_Settings();
67 $this->blog_id = Jetpack_Options::get_option( 'id' );
68 $url_parts = wp_parse_url( home_url() );
69 $this->domain = $url_parts['host'];
70
71 add_action( 'template_redirect', array( $this, 'frontend_init' ) );
72 add_action( 'admin_init', array( $this, 'admin_init' ) );
73
74 if ( ! Jetpack::is_module_active( 'likes' ) ) {
75 $active = Jetpack::get_active_modules();
76
77 if ( ! in_array( 'sharedaddy', $active, true ) && ! in_array( 'publicize', $active, true ) ) {
78 // we don't have a sharing page yet.
79 add_action( 'admin_menu', array( $this->settings, 'sharing_menu' ) );
80 }
81
82 if ( in_array( 'publicize', $active, true ) && ! in_array( 'sharedaddy', $active, true ) ) {
83 // we have a sharing page but not the global options area.
84 add_action( 'pre_admin_screen_sharing', array( $this->settings, 'sharing_block' ), 20 );
85 add_action( 'pre_admin_screen_sharing', array( $this->settings, 'updated_message' ), -10 );
86 }
87
88 if ( ! in_array( 'sharedaddy', $active, true ) ) {
89 add_action( 'admin_init', array( $this->settings, 'process_update_requests_if_sharedaddy_not_loaded' ) );
90 add_action( 'sharing_global_options', array( $this->settings, 'admin_settings_showbuttonon_init' ), 19 );
91 add_action( 'sharing_admin_update', array( $this->settings, 'admin_settings_showbuttonon_callback' ), 19 );
92 add_action( 'admin_init', array( $this->settings, 'add_meta_box' ) );
93 } else {
94 add_filter( 'sharing_meta_box_title', array( $this->settings, 'add_likes_to_sharing_meta_box_title' ) );
95 add_action( 'start_sharing_meta_box_content', array( $this->settings, 'meta_box_content' ) );
96 }
97
98 add_action( 'save_post', array( $this->settings, 'meta_box_save' ) );
99 add_action( 'edit_attachment', array( $this->settings, 'meta_box_save' ) );
100 add_action( 'sharing_global_options', array( $this->settings, 'admin_settings_init' ), 20 );
101 add_action( 'sharing_admin_update', array( $this->settings, 'admin_settings_callback' ), 20 );
102 }
103 }
104
105 /**
106 * Initialize admin section
107 */
108 public function admin_init() {
109 add_filter( 'manage_edit-comments_columns', array( $this, 'add_like_count_column' ) );
110 add_action( 'manage_comments_custom_column', array( $this, 'comment_likes_edit_column' ), 10, 2 );
111 add_action( 'admin_print_styles-edit-comments.php', array( $this, 'enqueue_admin_styles_scripts' ) );
112 }
113
114 /**
115 * Displays number of comment likes in comment admin page.
116 *
117 * @param string $column_name name of the column.
118 * @param int $comment_id ID of the comment.
119 */
120 public function comment_likes_edit_column( $column_name, $comment_id ) {
121 if ( 'comment_likes' !== $column_name ) {
122 return;
123 }
124
125 $permalink = get_permalink( get_the_ID() );
126 ?>
127 <a
128 data-comment-id="<?php echo absint( $comment_id ); ?>"
129 data-blog-id="<?php echo absint( $this->blog_id ); ?>"
130 class="comment-like-count"
131 id="comment-like-count-<?php echo absint( $comment_id ); ?>"
132 href="<?php echo esc_url( $permalink ); ?>#comment-<?php echo absint( $comment_id ); ?>"
133 >
134 <span class="like-count">0</span>
135 </a>
136 <?php
137 }
138
139 /**
140 * Enqueue admin style scripts.
141 */
142 public function enqueue_admin_styles_scripts() {
143 wp_enqueue_style( 'comment-like-count', plugins_url( 'comment-likes/admin-style.css', __FILE__ ), array(), JETPACK__VERSION );
144 wp_enqueue_script(
145 'comment-like-count',
146 Assets::get_file_url_for_environment(
147 '_inc/build/comment-likes/comment-like-count.min.js',
148 'modules/comment-likes/comment-like-count.js'
149 ),
150 array( 'jquery' ),
151 JETPACK__VERSION,
152 false
153 );
154 }
155
156 /**
157 * Adds like count column to admin page.
158 *
159 * @param array $columns column of admin table.
160 */
161 public function add_like_count_column( $columns ) {
162 $columns['comment_likes'] = '<span class="vers"></span>';
163 return $columns;
164 }
165
166 /**
167 * Initialize front end
168 */
169 public function frontend_init() {
170 if ( class_exists( Jetpack_AMP_Support::class ) && Jetpack_AMP_Support::is_amp_request() ) {
171 return;
172 }
173
174 add_action( 'wp_enqueue_scripts', array( $this, 'load_styles_register_scripts' ) );
175 add_filter( 'comment_text', array( $this, 'comment_likes' ), 10, 2 );
176 }
177
178 /**
179 * Load styling scripts
180 */
181 public function load_styles_register_scripts() {
182 if ( ! $this->settings->is_likes_visible() ) {
183 return;
184 }
185
186 if ( ! wp_style_is( 'open-sans', 'registered' ) ) {
187 wp_register_style( 'open-sans', 'https://fonts.googleapis.com/css?family=Open+Sans', array(), JETPACK__VERSION );
188 }
189 wp_enqueue_style( 'jetpack_likes', plugins_url( 'likes/style.css', __FILE__ ), array( 'open-sans' ), JETPACK__VERSION );
190 wp_enqueue_script( 'jetpack_likes_queuehandler', plugins_url( 'likes/queuehandler.js', __FILE__ ), array(), JETPACK__VERSION, true );
191 }
192
193 /**
194 * Display like count.
195 *
196 * @param string $content text content of the comment itself.
197 * @param object $comment comment object containing comment data.
198 */
199 public function comment_likes( $content, $comment = null ) {
200 if ( empty( $comment ) ) {
201 return $content;
202 }
203
204 if ( ! $this->settings->is_likes_visible() ) {
205 return $content;
206 }
207
208 $comment_id = get_comment_ID();
209 if ( empty( $comment_id ) && ! empty( $comment->comment_ID ) ) {
210 $comment_id = $comment->comment_ID;
211 }
212
213 if ( empty( $content ) || empty( $comment_id ) ) {
214 return $content;
215 }
216
217 // In case master iframe hasn't been loaded. This could be the case when Post Likes module is disabled,
218 // or on pages on which we have comments but post likes are disabled.
219 if ( false === has_action( 'wp_footer', 'jetpack_likes_master_iframe' ) ) {
220 add_action( 'wp_footer', 'jetpack_likes_master_iframe', 21 );
221 }
222
223 $uniqid = uniqid();
224
225 $src = sprintf( 'https://widgets.wp.com/likes/#blog_id=%1$d&amp;comment_id=%2$d&amp;origin=%3$s&amp;obj_id=%1$d-%2$d-%4$s', $this->blog_id, $comment_id, $this->domain, $uniqid );
226 $name = sprintf( 'like-comment-frame-%1$d-%2$d-%3$s', $this->blog_id, $comment_id, $uniqid );
227 $wrapper = sprintf( 'like-comment-wrapper-%1$d-%2$d-%3$s', $this->blog_id, $comment_id, $uniqid );
228
229 $html = '';
230 $html .= "<div class='jetpack-comment-likes-widget-wrapper jetpack-likes-widget-unloaded' id='$wrapper' data-src='$src' data-name='$name'>";
231 $html .= "<div class='likes-widget-placeholder comment-likes-widget-placeholder comment-likes'><span class='loading'>" . esc_html__( 'Loading...', 'jetpack' ) . '</span></div>';
232 $html .= "<div class='comment-likes-widget jetpack-likes-widget comment-likes'><span class='comment-like-feedback'></span>";
233 $html .= "<span class='sd-text-color'></span><a class='sd-link-color'></a>";
234 $html .= '</div></div>';
235
236 /**
237 * Filters the Comment Likes button content.
238 *
239 * @module comment-likes
240 *
241 * @since 5.1.0
242 *
243 * @param string $html Comment Likes button content.
244 */
245 $like_button = apply_filters( 'comment_like_button', $html );
246
247 return $content . $like_button;
248 }
249 }
250
251 Jetpack_Comment_Likes::init();
252