Completed
Push — add/changelog-62 ( 9977bb...d371c2 )
by
unknown
10:21
created

Jetpack_Likes::sharing_meta_box_content()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 8
nc 2
nop 1
dl 0
loc 11
rs 9.4285
c 0
b 0
f 0
1
<?php
2
/**
3
 * Module Name: Likes
4
 * Module Description: Give visitors an easy way to show they appreciate your content.
5
 * First Introduced: 2.2
6
 * Sort Order: 23
7
 * Requires Connection: Yes
8
 * Auto Activate: No
9
 * Module Tags: Social
10
 * Feature: Engagement
11
 * Additional Search Queries: like, likes, wordpress.com
12
 */
13
14
Jetpack::dns_prefetch( array(
15
	'//widgets.wp.com',
16
	'//s0.wp.com',
17
	'//0.gravatar.com',
18
	'//1.gravatar.com',
19
	'//2.gravatar.com',
20
) );
21
22
include_once dirname( __FILE__ ) . '/likes/jetpack-likes-master-iframe.php';
23
include_once dirname( __FILE__ ) . '/likes/jetpack-likes-settings.php';
24
25
class Jetpack_Likes {
26
	public static function init() {
27
		static $instance = NULL;
28
29
		if ( ! $instance ) {
30
			$instance = new Jetpack_Likes;
31
		}
32
33
		return $instance;
34
	}
35
36
	function __construct() {
37
		$this->in_jetpack = ( defined( 'IS_WPCOM' ) && IS_WPCOM ) ? false : true;
0 ignored issues
show
Bug introduced by
The property in_jetpack does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
38
		$this->settings = new Jetpack_Likes_Settings();
0 ignored issues
show
Bug introduced by
The property settings does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
39
40
		add_action( 'init', array( &$this, 'action_init' ) );
41
		add_action( 'admin_init', array( $this, 'admin_init' ) );
42
43
		if ( $this->in_jetpack ) {
44
			add_action( 'jetpack_activate_module_likes',   array( $this, 'set_social_notifications_like' ) );
45
			add_action( 'jetpack_deactivate_module_likes', array( $this, 'delete_social_notifications_like' ) );
46
47
			Jetpack::enable_module_configurable( __FILE__ );
48
			Jetpack::module_configuration_load( __FILE__, array( $this, 'configuration_redirect' ) );
49
50
			add_action( 'admin_print_scripts-settings_page_sharing', array( &$this, 'load_jp_css' ) );
51
			add_filter( 'sharing_show_buttons_on_row_start', array( $this, 'configuration_target_area' ) );
52
53
			$active = Jetpack::get_active_modules();
54
55 View Code Duplication
			if ( ! in_array( 'sharedaddy', $active ) && ! in_array( 'publicize', $active ) ) {
56
				// we don't have a sharing page yet
57
				add_action( 'admin_menu', array( $this->settings, 'sharing_menu' ) );
58
			}
59
60 View Code Duplication
			if ( in_array( 'publicize', $active ) && ! in_array( 'sharedaddy', $active ) ) {
61
				// we have a sharing page but not the global options area
62
				add_action( 'pre_admin_screen_sharing', array( $this->settings, 'sharing_block' ), 20 );
63
				add_action( 'pre_admin_screen_sharing', array( $this->settings, 'updated_message' ), -10 );
64
			}
65
66 View Code Duplication
			if( ! in_array( 'sharedaddy', $active ) ) {
67
				add_action( 'admin_init', array( $this->settings, 'process_update_requests_if_sharedaddy_not_loaded' ) );
68
				add_action( 'sharing_global_options', array( $this->settings, 'admin_settings_showbuttonon_init' ), 19 );
69
				add_action( 'sharing_admin_update', array( $this->settings, 'admin_settings_showbuttonon_callback' ), 19 );
70
				add_action( 'admin_init', array( $this->settings, 'add_meta_box' ) );
71
			} else {
72
				add_filter( 'sharing_meta_box_title', array( $this->settings, 'add_likes_to_sharing_meta_box_title' ) );
73
				add_action( 'start_sharing_meta_box_content', array( $this->settings, 'meta_box_content' ) );
74
			}
75
		} else { // wpcom
76
			add_action( 'wpmu_new_blog', array( $this, 'enable_comment_likes' ), 10, 1 );
77
			add_action( 'admin_init', array( $this->settings, 'add_meta_box' ) );
78
			add_action( 'end_likes_meta_box_content', array( $this->settings, 'sharing_meta_box_content' ) );
79
			add_filter( 'likes_meta_box_title', array( $this->settings, 'add_likes_to_sharing_meta_box_title' ) );
80
		}
81
82
		add_action( 'admin_init', array( $this, 'admin_discussion_likes_settings_init' ) ); // Likes notifications
83
84
		add_action( 'admin_bar_menu', array( $this, 'admin_bar_likes' ), 60 );
85
86
		add_action( 'wp_enqueue_scripts', array( $this, 'load_styles_register_scripts' ) );
87
88
		add_action( 'save_post', array( $this->settings, 'meta_box_save' ) );
89
		add_action( 'edit_attachment', array( $this->settings, 'meta_box_save' ) );
90
		add_action( 'sharing_global_options', array( $this->settings, 'admin_settings_init' ), 20 );
91
		add_action( 'sharing_admin_update',   array( $this->settings, 'admin_settings_callback' ), 20 );
92
	}
93
94
	/**
95
	 * Set the social_notifications_like option to `on` when the Likes module is activated.
96
	 *
97
	 * @since 3.7.0
98
	 *
99
	 * @return null
100
	 */
101
	function set_social_notifications_like() {
102
		update_option( 'social_notifications_like', 'on' );
103
	}
104
105
	/**
106
	 * Delete the social_notifications_like option that was set to `on` on module activation.
107
	 *
108
	 * @since 3.7.0
109
	 *
110
	 * @return null
111
	 */
112
	function delete_social_notifications_like() {
113
		delete_option( 'social_notifications_like' );
114
	}
115
116
	/**
117
	 * Redirects to the likes section of the sharing page.
118
	 */
119
	function configuration_redirect() {
120
		wp_safe_redirect( admin_url( 'options-general.php?page=sharing#likes' ) );
121
		die();
0 ignored issues
show
Coding Style Compatibility introduced by
The method configuration_redirect() contains an exit expression.

An exit expression should only be used in rare cases. For example, if you write a short command line script.

In most cases however, using an exit expression makes the code untestable and often causes incompatibilities with other libraries. Thus, unless you are absolutely sure it is required here, we recommend to refactor your code to avoid its usage.

Loading history...
122
	}
123
124
	/**
125
	 * Loads Jetpack's CSS on the sharing page so we can use .jetpack-targetable
126
	 */
127
	function load_jp_css() {
128
		// Do we really need `admin_styles`? With the new admin UI, it's breaking some bits.
129
		// Jetpack::init()->admin_styles();
130
	}
131
132
	/**
133
	 * Load scripts and styles for front end.
134
	 * @return null
135
	 */
136
	function load_styles_register_scripts() {
137
		if ( $this->in_jetpack ) {
138
			wp_enqueue_style( 'jetpack_likes', plugins_url( 'likes/style.css', __FILE__ ), array(), JETPACK__VERSION );
139
			$this->register_scripts();
140
		}
141
	}
142
143
	/**
144
	 * Stub for is_likes_visible, since some themes were calling it directly from this class
145
	 *
146
	 * @deprecated 5.4
147
	 * @return bool
148
	 */
149
	function is_likes_visible() {
150
		_deprecated_function( __METHOD__, 'jetpack-5.4', 'Jetpack_Likes_Settings()->is_likes_visible' );
151
152
		$settings = new Jetpack_Likes_Settings();
153
		return $settings->is_likes_visible();
154
	}
155
156
	/**
157
	 * Adds in the jetpack-targetable class so when we visit sharing#likes our like settings get highlighted by a yellow box
158
	 * @param  string $html row heading for the sharedaddy "which page" setting
159
	 * @return string       html with the jetpack-targetable class and likes id. tbody gets closed after the like settings
160
	 */
161
	function configuration_target_area( $html = '' ) {
162
		$html = "<tbody id='likes' class='jetpack-targetable'>" . $html;
163
		return $html;
164
	}
165
166
	/**
167
	 * WordPress.com: Metabox option for sharing (sharedaddy will handle this on the JP blog)
168
	 */
169
	function sharing_meta_box_content( $post ) {
170
		$post_id = ! empty( $post->ID ) ? (int) $post->ID : get_the_ID();
171
		$disabled = get_post_meta( $post_id, 'sharing_disabled', true ); ?>
172
		<p>
173
			<label for="wpl_enable_post_sharing">
174
				<input type="checkbox" name="wpl_enable_post_sharing" id="wpl_enable_post_sharing" value="1" <?php checked( !$disabled ); ?>>
175
				<?php _e( 'Show sharing buttons.', 'jetpack' ); ?>
176
			</label>
177
			<input type="hidden" name="wpl_sharing_status_hidden" value="1" />
178
		</p> <?php
179
	}
180
181
	/**
182
	  * Options to be added to the discussion page (see also admin_settings_init, etc below for Sharing settings page)
183
	  */
184
185 View Code Duplication
	function admin_discussion_likes_settings_init() {
186
		// Add a temporary section, until we can move the setting out of there and with the rest of the email notification settings
187
		add_settings_section( 'likes-notifications', __( 'Likes Notifications', 'jetpack' ), array( $this, 'admin_discussion_likes_settings_section' ), 'discussion' );
188
		add_settings_field( 'social-notifications', __( 'Email me whenever', 'jetpack' ), array( $this, 'admin_discussion_likes_settings_field' ), 'discussion', 'likes-notifications' );
189
		// Register the setting
190
		register_setting( 'discussion', 'social_notifications_like', array( $this, 'admin_discussion_likes_settings_validate' ) );
191
	}
192
193
	function admin_discussion_likes_settings_section() {
194
		// Atypical usage here.  We emit jquery to move likes notification checkbox to be with the rest of the email notification settings
195
?>
196
	<script type="text/javascript">
197
	jQuery( function( $ )  {
198
		var table = $( '#social_notifications_like' ).parents( 'table:first' ),
199
			header = table.prevAll( 'h2:first' ),
200
			newParent = $( '#moderation_notify' ).parent( 'label' ).parent();
201
202
		if ( !table.length || !header.length || !newParent.length ) {
203
			return;
204
		}
205
206
		newParent.append( '<br/>' ).append( table.end().parent( 'label' ).siblings().andSelf() );
207
		header.remove();
208
		table.remove();
209
	} );
210
	</script>
211
<?php
212
	}
213
214
	function admin_likes_get_option( $option ) {
215
		if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
216
			$option_setting = get_blog_option( get_current_blog_id(), $option, 'on' );
217
		} else {
218
			$option_setting = get_option( $option, 'on' );
219
		}
220
221
		return intval( 'on' == $option_setting );
222
	}
223
224
	function admin_discussion_likes_settings_field() {
225
		$like = $this->admin_likes_get_option( 'social_notifications_like' );
226
?>
227
		<label><input type="checkbox" id="social_notifications_like" name="social_notifications_like" value="1" <?php checked( $like ); ?> /> <?php esc_html_e( 'Someone likes one of my posts', 'jetpack' ); ?></label>
228
<?php
229
	}
230
231
	function admin_discussion_likes_settings_validate( $input ) {
232
		// If it's not set (was unchecked during form submission) or was set to off (during option update), return 'off'.
233
		if ( !$input || 'off' == $input )
234
			return 'off';
235
236
		// Otherwise, return 'on'.
237
		return 'on';
238
	}
239
240
	function admin_init() {
241
		add_filter( 'manage_posts_columns', array( $this, 'add_like_count_column' ) );
242
		add_filter( 'manage_pages_columns', array( $this, 'add_like_count_column' ) );
243
		add_action( 'manage_posts_custom_column', array( $this, 'likes_edit_column' ), 10, 2 );
244
		add_action( 'manage_pages_custom_column', array( $this, 'likes_edit_column' ), 10, 2 );
245
		add_action( 'admin_print_styles-edit.php', array( $this, 'load_admin_css' ) );
246
		add_action( "admin_print_scripts-edit.php", array( $this, 'enqueue_admin_scripts' ) );
247
	}
248
249
	function action_init() {
250
		if ( is_admin() ) {
251
			return;
252
		}
253
254
		if ( ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) ||
255
			 ( defined( 'APP_REQUEST' ) && APP_REQUEST ) ||
256
			 ( defined( 'REST_API_REQUEST' ) && REST_API_REQUEST ) ||
257
			 ( defined( 'COOKIE_AUTH_REQUEST' ) && COOKIE_AUTH_REQUEST ) ||
258
			 ( defined( 'JABBER_SERVER' ) && JABBER_SERVER ) ) {
259
			return;
260
		}
261
262
		if ( Jetpack_AMP_Support::is_amp_request() ) {
263
			return;
264
		}
265
266
		if ( $this->in_jetpack ) {
267
			add_filter( 'the_content', array( &$this, 'post_likes' ), 30, 1 );
268
			add_filter( 'the_excerpt', array( &$this, 'post_likes' ), 30, 1 );
269
270
		} else {
271
			add_filter( 'post_flair', array( &$this, 'post_likes' ), 30, 1 );
272
			add_filter( 'post_flair_block_css', array( $this, 'post_flair_service_enabled_like' ) );
273
274
			wp_enqueue_script( 'postmessage', '/wp-content/js/postmessage.js', array( 'jquery' ), JETPACK__VERSION, false );
275
			wp_enqueue_script( 'jetpack_resize', '/wp-content/js/jquery/jquery.jetpack-resize.js', array( 'jquery' ), JETPACK__VERSION, false );
276
			wp_enqueue_script( 'jetpack_likes_queuehandler', plugins_url( 'queuehandler.js' , __FILE__ ), array( 'jquery', 'postmessage', 'jetpack_resize' ), JETPACK__VERSION, true );
277
			wp_enqueue_style( 'jetpack_likes', plugins_url( 'jetpack-likes.css', __FILE__ ), array(), JETPACK__VERSION );
278
		}
279
	}
280
281
	/**
282
	* Register scripts
283
	*/
284
	function register_scripts() {
285
		wp_register_script(
286
			'postmessage',
287
			Jetpack::get_file_url_for_environment( '_inc/build/postmessage.min.js', '_inc/postmessage.js' ),
288
			array( 'jquery' ),
289
			JETPACK__VERSION,
290
			false
291
		);
292
		wp_register_script(
293
			'jetpack_resize',
294
			Jetpack::get_file_url_for_environment(
295
				'_inc/build/jquery.jetpack-resize.min.js',
296
				'_inc/jquery.jetpack-resize.js'
297
			),
298
			array( 'jquery' ),
299
			JETPACK__VERSION,
300
			false
301
		);
302
		wp_register_script(
303
			'jetpack_likes_queuehandler',
304
			Jetpack::get_file_url_for_environment(
305
				'_inc/build/likes/queuehandler.min.js',
306
				'modules/likes/queuehandler.js'
307
			),
308
			array( 'jquery', 'postmessage', 'jetpack_resize' ),
309
			JETPACK__VERSION,
310
			true
311
		);
312
	}
313
314
	/**
315
	* Load the CSS needed for the wp-admin area.
316
	*/
317
	function load_admin_css() {
318
	?>
319
		<style type="text/css">
320
			.vers img { display: none; }
321
			.metabox-prefs .vers img { display: inline; }
322
			.fixed .column-likes { width: 5.5em; padding: 8px 0; text-align: left; }
323
			.fixed .column-stats { width: 5em; }
324
			.fixed .column-likes .post-com-count {
325
				-webkit-box-sizing: border-box;
326
				-moz-box-sizing: border-box;
327
				box-sizing: border-box;
328
				display: inline-block;
329
				padding: 0 8px;
330
				height: 2em;
331
				margin-top: 5px;
332
				-webkit-border-radius: 5px;
333
				border-radius: 5px;
334
				background-color: #72777C;
335
				color: #FFF;
336
				font-size: 11px;
337
				line-height: 21px;
338
			}
339
			.fixed .column-likes .post-com-count::after { border: none !important; }
340
			.fixed .column-likes .post-com-count:hover { background-color: #0073AA; }
341
			.fixed .column-likes .vers:before {
342
				font: normal 20px/1 dashicons;
343
				content: '\f155';
344
				speak: none;
345
				-webkit-font-smoothing: antialiased;
346
				-moz-osx-font-smoothing: grayscale;
347
			}
348
			@media screen and (max-width: 782px) {
349
				.fixed .column-likes {
350
					display: none;
351
				}
352
			}
353
		</style>
354
		<?php
355
	}
356
357
	/**
358
	* Load the JS required for loading the like counts.
359
	*/
360
	function enqueue_admin_scripts() {
361
		if ( empty( $_GET['post_type'] ) || 'post' == $_GET['post_type'] || 'page' == $_GET['post_type'] ) {
362
			if ( $this->in_jetpack ) {
363
				wp_enqueue_script(
364
					'likes-post-count',
365
					Jetpack::get_file_url_for_environment(
366
						'_inc/build/likes/post-count.min.js',
367
						'modules/likes/post-count.js'
368
					),
369
					array( 'jquery' ),
370
					JETPACK__VERSION
371
				);
372
				wp_enqueue_script(
373
					'likes-post-count-jetpack',
374
					Jetpack::get_file_url_for_environment(
375
						'_inc/build/likes/post-count-jetpack.min.js',
376
						'modules/likes/post-count-jetpack.js'
377
					),
378
					array( 'likes-post-count' ),
379
					JETPACK__VERSION
380
				);
381
			} else {
382
				wp_enqueue_script( 'jquery.wpcom-proxy-request', "/wp-content/js/jquery/jquery.wpcom-proxy-request.js", array('jquery'), NULL, true );
383
				wp_enqueue_script( 'likes-post-count', plugins_url( 'likes/post-count.js', dirname( __FILE__ ) ), array( 'jquery' ), JETPACK__VERSION );
384
				wp_enqueue_script( 'likes-post-count-wpcom', plugins_url( 'likes/post-count-wpcom.js', dirname( __FILE__ ) ), array( 'likes-post-count', 'jquery.wpcom-proxy-request' ), JETPACK__VERSION );
385
			}
386
		}
387
	}
388
389
	/**
390
	* Add "Likes" column data to the post edit table in wp-admin.
391
	*
392
	* @param string $column_name
393
	* @param int $post_id
394
	*/
395
	function likes_edit_column( $column_name, $post_id ) {
396
		if ( 'likes' == $column_name ) {
397
398
			if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
399
				$blog_id = get_current_blog_id();
400
			} else {
401
				$blog_id = Jetpack_Options::get_option( 'id' );
402
			}
403
404
			$permalink = get_permalink( get_the_ID() ); ?>
405
			<a title="" data-post-id="<?php echo (int) $post_id; ?>" class="post-com-count post-like-count" id="post-like-count-<?php echo (int) $post_id; ?>" data-blog-id="<?php echo (int) $blog_id; ?>" href="<?php echo esc_url( $permalink ); ?>#like-<?php echo (int) $post_id; ?>">
406
				<span class="comment-count">0</span>
407
			</a>
408
			<?php
409
		}
410
	}
411
412
	/**
413
	* Add a "Likes" column header to the post edit table in wp-admin.
414
	*
415
	* @param array $columns
416
	* @return array
417
	*/
418
	function add_like_count_column( $columns ) {
419
		$date = $columns['date'];
420
		unset( $columns['date'] );
421
422
		$columns['likes'] = '<span class="vers"><img title="' . esc_attr__( 'Likes', 'jetpack' ) . '" alt="' . esc_attr__( 'Likes', 'jetpack' ) . '" src="//s0.wordpress.com/i/like-grey-icon.png" /></span>';
423
		$columns['date'] = $date;
424
425
		return $columns;
426
	}
427
428
	function post_likes( $content ) {
429
		$post_id = get_the_ID();
430
431
		if ( ! is_numeric( $post_id ) || ! $this->settings->is_likes_visible() )
432
			return $content;
433
434 View Code Duplication
		if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
435
			$blog_id = get_current_blog_id();
436
			$bloginfo = get_blog_details( (int) $blog_id );
437
			$domain = $bloginfo->domain;
438
		} else {
439
			$blog_id = Jetpack_Options::get_option( 'id' );
440
			$url = home_url();
441
			$url_parts = parse_url( $url );
442
			$domain = $url_parts['host'];
443
		}
444
		// make sure to include the scripts before the iframe otherwise weird things happen
445
		add_action( 'wp_footer', 'jetpack_likes_master_iframe', 21 );
446
447
		/**
448
		* if the same post appears more then once on a page the page goes crazy
449
		* we need a slightly more unique id / name for the widget wrapper.
450
		*/
451
		$uniqid = uniqid();
452
453
		$src = sprintf( 'https://widgets.wp.com/likes/#blog_id=%1$d&amp;post_id=%2$d&amp;origin=%3$s&amp;obj_id=%1$d-%2$d-%4$s', $blog_id, $post_id, $domain, $uniqid );
454
		$name = sprintf( 'like-post-frame-%1$d-%2$d-%3$s', $blog_id, $post_id, $uniqid );
455
		$wrapper = sprintf( 'like-post-wrapper-%1$d-%2$d-%3$s', $blog_id, $post_id, $uniqid );
456
		$headline = sprintf(
457
			/** This filter is already documented in modules/sharedaddy/sharing-service.php */
458
			apply_filters( 'jetpack_sharing_headline_html', '<h3 class="sd-title">%s</h3>', esc_html__( 'Like this:', 'jetpack' ), 'likes' ),
459
			esc_html__( 'Like this:', 'jetpack' )
460
		);
461
462
		$html  = "<div class='sharedaddy sd-block sd-like jetpack-likes-widget-wrapper jetpack-likes-widget-unloaded' id='$wrapper' data-src='$src' data-name='$name'>";
463
		$html .= $headline;
464
		$html .= "<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>';
465
		$html .= "<span class='sd-text-color'></span><a class='sd-link-color'></a>";
466
		$html .= '</div>';
467
468
		// Let's make sure that the script is enqueued
469
		wp_enqueue_script( 'jetpack_likes_queuehandler' );
470
471
		return $content . $html;
472
	}
473
474
	function post_flair_service_enabled_like( $classes ) {
475
		$classes[] = 'sd-like-enabled';
476
		return $classes;
477
	}
478
479
	function is_admin_bar_button_visible() {
480
		global $wp_admin_bar;
481
482
		if ( ! is_object( $wp_admin_bar ) )
483
			return false;
484
485
		if ( ( ! is_singular( 'post' ) && ! is_attachment() && ! is_page() ) )
486
			return false;
487
488
		if ( ! $this->settings->is_likes_visible() )
489
			return false;
490
491
		if ( ! $this->settings->is_post_likeable() )
492
			return false;
493
494
		/**
495
		 * Filters whether the Like button is enabled in the admin bar.
496
		 *
497
		 * @module likes
498
		 *
499
		 * @since 2.2.0
500
		 *
501
		 * @param bool true Should the Like button be visible in the Admin bar. Default to true.
502
		 */
503
		return (bool) apply_filters( 'jetpack_admin_bar_likes_enabled', true );
504
	}
505
506
	function admin_bar_likes() {
507
		global $wp_admin_bar;
508
509
		$post_id = get_the_ID();
510
511
		if ( ! is_numeric( $post_id ) || ! $this->is_admin_bar_button_visible() ) {
512
			return;
513
		}
514
515
		$protocol = 'http';
516
		if ( is_ssl() )
517
			$protocol = 'https';
518
519 View Code Duplication
		if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) {
520
			$blog_id = get_current_blog_id();
521
			$bloginfo = get_blog_details( (int) $blog_id );
522
			$domain = $bloginfo->domain;
523
		} else {
524
			$blog_id = Jetpack_Options::get_option( 'id' );
525
			$url = home_url();
526
			$url_parts = parse_url( $url );
527
			$domain = $url_parts['host'];
528
		}
529
		// make sure to include the scripts before the iframe otherwise weird things happen
530
		add_action( 'wp_footer', 'jetpack_likes_master_iframe', 21 );
531
532
		$src = sprintf( 'https://widgets.wp.com/likes/#blog_id=%2$d&amp;post_id=%3$d&amp;origin=%1$s://%4$s', $protocol, $blog_id, $post_id, $domain );
533
534
		$html = "<iframe class='admin-bar-likes-widget jetpack-likes-widget' scrolling='no' frameBorder='0' name='admin-bar-likes-widget' src='$src'></iframe>";
535
536
		$node = array(
537
				'id'   => 'admin-bar-likes-widget',
538
				'meta' => array(
539
							'html' => $html
540
				)
541
		);
542
543
		$wp_admin_bar->add_node( $node );
544
	}
545
}
546
547
Jetpack_Likes::init();
548