PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 8.7.0.1
Jetpack – WP Security, Backup, Speed, & Growth v8.7.0.1
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 5 years ago carousel 5 years ago comment-likes 7 years ago comments 6 years ago contact-form 5 years ago custom-css 5 years ago custom-post-types 5 years ago geo-location 6 years ago google-analytics 6 years ago gravatar 5 years ago infinite-scroll 5 years ago lazy-images 5 years ago likes 6 years ago markdown 5 years ago masterbar 5 years ago memberships 6 years ago photon 6 years ago photon-cdn 5 years ago plugin-search 7 years ago post-by-email 6 years ago protect 6 years ago publicize 6 years ago pwa 6 years ago related-posts 5 years ago scan 5 years ago search 5 years ago seo-tools 5 years ago sharedaddy 5 years ago shortcodes 5 years ago simple-payments 6 years ago site-icon 6 years ago sitemaps 5 years ago sso 6 years ago subscriptions 6 years ago theme-tools 5 years ago tiled-gallery 5 years ago verification-tools 6 years ago videopress 6 years ago widget-visibility 6 years ago widgets 5 years ago woocommerce-analytics 5 years ago wordads 5 years ago wpcom-block-editor 5 years ago wpcom-tos 6 years ago .eslintrc.js 6 years ago after-the-deadline.php 7 years ago carousel.php 7 years ago comment-likes.php 6 years ago comments.php 6 years ago contact-form.php 7 years ago copy-post.php 6 years ago custom-content-types.php 6 years ago custom-css.php 7 years ago enhanced-distribution.php 9 years ago geo-location.php 7 years ago google-analytics.php 8 years ago gravatar-hovercards.php 5 years ago infinite-scroll.php 6 years ago json-api.php 9 years ago latex.php 6 years ago lazy-images.php 6 years ago likes.php 6 years ago markdown.php 9 years ago masterbar.php 7 years ago minileven.php 6 years ago mobile-push.php 10 years ago module-extras.php 6 years ago module-headings.php 5 years ago module-info.php 6 years ago monitor.php 6 years ago notes.php 6 years ago photon-cdn.php 6 years ago photon.php 6 years ago plugin-search.php 5 years ago post-by-email.php 6 years ago protect.php 6 years ago publicize.php 6 years ago pwa.php 6 years ago related-posts.php 7 years ago search.php 6 years ago seo-tools.php 5 years ago sharedaddy.php 6 years ago shortcodes.php 6 years ago shortlinks.php 5 years ago sitemaps.php 5 years ago sso.php 5 years ago stats.php 6 years ago subscriptions.php 5 years ago theme-tools.php 6 years ago tiled-gallery.php 7 years ago vaultpress.php 7 years ago verification-tools.php 7 years ago videopress.php 7 years ago widget-visibility.php 7 years ago widgets.php 7 years ago woocommerce-analytics.php 5 years ago wordads.php 5 years ago wpgroho.js 6 years ago
comment-likes.php
213 lines
1 <?php
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
14 use Automattic\Jetpack\Assets;
15
16 Jetpack::dns_prefetch(
17 array(
18 '//widgets.wp.com',
19 )
20 );
21
22 require_once dirname( __FILE__ ) . '/likes/jetpack-likes-master-iframe.php';
23 require_once dirname( __FILE__ ) . '/likes/jetpack-likes-settings.php';
24
25 class Jetpack_Comment_Likes {
26
27 public static function init() {
28 static $instance = NULL;
29
30 if ( ! $instance ) {
31 $instance = new Jetpack_Comment_Likes();
32 }
33
34 return $instance;
35 }
36
37 private function __construct() {
38 $this->settings = new Jetpack_Likes_Settings();
39 $this->blog_id = Jetpack_Options::get_option( 'id' );
40 $this->url = home_url();
41 $this->url_parts = wp_parse_url( $this->url );
42 $this->domain = $this->url_parts['host'];
43
44 add_action( 'template_redirect', array( $this, 'frontend_init' ) );
45 add_action( 'admin_init', array( $this, 'admin_init' ) );
46
47 if ( ! Jetpack::is_module_active( 'likes' ) ) {
48 $active = Jetpack::get_active_modules();
49
50 if ( ! in_array( 'sharedaddy', $active ) && ! in_array( 'publicize', $active ) ) {
51 // we don't have a sharing page yet
52 add_action( 'admin_menu', array( $this->settings, 'sharing_menu' ) );
53 }
54
55 if ( in_array( 'publicize', $active ) && ! in_array( 'sharedaddy', $active ) ) {
56 // we have a sharing page but not the global options area
57 add_action( 'pre_admin_screen_sharing', array( $this->settings, 'sharing_block' ), 20 );
58 add_action( 'pre_admin_screen_sharing', array( $this->settings, 'updated_message' ), -10 );
59 }
60
61 if( ! in_array( 'sharedaddy', $active ) ) {
62 add_action( 'admin_init', array( $this->settings, 'process_update_requests_if_sharedaddy_not_loaded' ) );
63 add_action( 'sharing_global_options', array( $this->settings, 'admin_settings_showbuttonon_init' ), 19 );
64 add_action( 'sharing_admin_update', array( $this->settings, 'admin_settings_showbuttonon_callback' ), 19 );
65 add_action( 'admin_init', array( $this->settings, 'add_meta_box' ) );
66 } else {
67 add_filter( 'sharing_meta_box_title', array( $this->settings, 'add_likes_to_sharing_meta_box_title' ) );
68 add_action( 'start_sharing_meta_box_content', array( $this->settings, 'meta_box_content' ) );
69 }
70
71 add_action( 'save_post', array( $this->settings, 'meta_box_save' ) );
72 add_action( 'edit_attachment', array( $this->settings, 'meta_box_save' ) );
73 add_action( 'sharing_global_options', array( $this->settings, 'admin_settings_init' ), 20 );
74 add_action( 'sharing_admin_update', array( $this->settings, 'admin_settings_callback' ), 20 );
75 }
76 }
77
78 public function admin_init() {
79 add_filter( 'manage_edit-comments_columns', array( $this, 'add_like_count_column' ) );
80 add_action( 'manage_comments_custom_column', array( $this, 'comment_likes_edit_column' ), 10, 2 );
81 add_action( 'admin_print_styles-edit-comments.php', array( $this, 'enqueue_admin_styles_scripts' ) );
82 }
83
84 public function comment_likes_edit_column( $column_name, $comment_id ) {
85 if ( 'comment_likes' !== $column_name ) {
86 return;
87 }
88
89 $permalink = get_permalink( get_the_ID() );
90 ?>
91 <a
92 data-comment-id="<?php echo absint( $comment_id ); ?>"
93 data-blog-id="<?php echo absint( $this->blog_id ); ?>"
94 class="comment-like-count"
95 id="comment-like-count-<?php echo absint( $comment_id ); ?>"
96 href="<?php echo esc_url( $permalink ); ?>#comment-<?php echo absint( $comment_id ); ?>"
97 >
98 <span class="like-count">0</span>
99 </a>
100 <?php
101 }
102
103 function enqueue_admin_styles_scripts() {
104 wp_enqueue_style( 'comment-like-count', plugins_url( 'comment-likes/admin-style.css', __FILE__ ), array(), JETPACK__VERSION );
105 wp_enqueue_script(
106 'comment-like-count',
107 Assets::get_file_url_for_environment(
108 '_inc/build/comment-likes/comment-like-count.min.js',
109 'modules/comment-likes/comment-like-count.js'
110 ),
111 array( 'jquery' ),
112 JETPACK__VERSION
113 );
114 }
115
116 public function add_like_count_column( $columns ) {
117 $columns['comment_likes'] = '<span class="vers"></span>';
118
119 return $columns;
120 }
121
122 public function frontend_init() {
123 if ( Jetpack_AMP_Support::is_amp_request() ) {
124 return;
125 }
126
127 add_action( 'wp_enqueue_scripts', array( $this, 'load_styles_register_scripts' ) );
128 add_filter( 'comment_text', array( $this, 'comment_likes' ), 10, 2 );
129 }
130
131 public function load_styles_register_scripts() {
132 if ( ! $this->settings->is_likes_visible() ) {
133 return;
134 }
135
136 if ( ! wp_style_is( 'open-sans', 'registered' ) ) {
137 wp_register_style( 'open-sans', 'https://fonts.googleapis.com/css?family=Open+Sans', array(), JETPACK__VERSION );
138 }
139 wp_enqueue_style( 'jetpack_likes', plugins_url( 'likes/style.css', __FILE__ ), array( 'open-sans' ), JETPACK__VERSION );
140 wp_enqueue_script(
141 'postmessage',
142 Assets::get_file_url_for_environment( '_inc/build/postmessage.min.js', '_inc/postmessage.js' ),
143 array( 'jquery' ),
144 JETPACK__VERSION,
145 true
146 );
147 wp_enqueue_script(
148 'jetpack_resize',
149 Assets::get_file_url_for_environment(
150 '_inc/build/jquery.jetpack-resize.min.js',
151 '_inc/jquery.jetpack-resize.js'
152 ),
153 array( 'jquery' ),
154 JETPACK__VERSION,
155 true
156 );
157 wp_enqueue_script( 'jetpack_likes_queuehandler', plugins_url( 'likes/queuehandler.js' , __FILE__ ), array( 'jquery', 'postmessage', 'jetpack_resize' ), JETPACK__VERSION, true );
158 }
159
160 public function comment_likes( $content, $comment = null ) {
161 if ( empty( $comment ) ) {
162 return $content;
163 }
164
165 if ( ! $this->settings->is_likes_visible() ) {
166 return $content;
167 }
168
169 $comment_id = get_comment_ID();
170 if ( empty( $comment_id ) && ! empty( $comment->comment_ID ) ) {
171 $comment_id = $comment->comment_ID;
172 }
173
174 if ( empty( $content ) || empty( $comment_id ) ) {
175 return $content;
176 }
177
178 // In case master iframe hasn't been loaded. This could be the case when Post Likes module is disabled,
179 // or on pages on which we have comments but post likes are disabled.
180 if ( false === has_action( 'wp_footer', 'jetpack_likes_master_iframe' ) ) {
181 add_action( 'wp_footer', 'jetpack_likes_master_iframe', 21 );
182 }
183
184 $uniqid = uniqid();
185
186 $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 );
187 $name = sprintf( 'like-comment-frame-%1$d-%2$d-%3$s', $this->blog_id, $comment_id, $uniqid );
188 $wrapper = sprintf( 'like-comment-wrapper-%1$d-%2$d-%3$s', $this->blog_id, $comment_id, $uniqid );
189
190 $html = '';
191 $html .= "<div class='jetpack-comment-likes-widget-wrapper jetpack-likes-widget-unloaded' id='$wrapper' data-src='$src' data-name='$name'>";
192 $html .= "<div class='likes-widget-placeholder comment-likes-widget-placeholder comment-likes'><span class='loading'>" . esc_html__( 'Loading...', 'jetpack' ) . "</span></div>";
193 $html .= "<div class='comment-likes-widget jetpack-likes-widget comment-likes'><span class='comment-like-feedback'></span>";
194 $html .= "<span class='sd-text-color'></span><a class='sd-link-color'></a>";
195 $html .= '</div></div>';
196
197 /**
198 * Filters the Comment Likes button content.
199 *
200 * @module comment-likes
201 *
202 * @since 5.1.0
203 *
204 * @param string $html Comment Likes button content.
205 */
206 $like_button = apply_filters( 'comment_like_button', $html );
207
208 return $content . $like_button;
209 }
210 }
211
212 Jetpack_Comment_Likes::init();
213