Completed
Push — add/amazon ( 1ce86a...634101 )
by Jeremy
16:15 queued 09:29
created

eventbrite.php ➔ jetpack_render_eventbrite_block()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 45

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 4
nc 3
nop 2
dl 0
loc 45
rs 9.2
c 0
b 0
f 0
1
<?php
2
/**
3
 * Eventbrite Block.
4
 *
5
 * @since 8.2.0
6
 *
7
 * @package Jetpack
8
 */
9
10
jetpack_register_block(
11
	'jetpack/eventbrite',
12
	array(
13
		'render_callback' => 'jetpack_render_eventbrite_block',
14
	)
15
);
16
17
const JETPACK_EVENTBRITE_WIDGET_SLUG = 'eventbrite-widget';
18
19
/**
20
 * Eventbrite block registration/dependency delclaration.
21
 *
22
 * @param array  $attr    Eventbrite block attributes.
23
 * @param string $content Rendered embed element (without scripts) from the block editor.
24
 *
25
 * @return string
26
 */
27
function jetpack_render_eventbrite_block( $attr, $content ) {
28
	if ( empty( $attr['eventId'] ) || empty( $attr['url'] ) ) {
29
		return '';
30
	}
31
32
	$widget_id = JETPACK_EVENTBRITE_WIDGET_SLUG . '-' . $attr['eventId'];
33
34
	wp_enqueue_script( 'eventbrite-widget', 'https://www.eventbrite.com/static/widgets/eb_widgets.js', array(), JETPACK__VERSION, true );
35
36
	// Show the embedded version.
37
	if ( empty( $attr['useModal'] ) ) {
38
		wp_add_inline_script(
39
			'eventbrite-widget',
40
			"window.EBWidgets.createWidget({
41
				widgetType: 'checkout',
42
				eventId: " . absint( $attr['eventId'] ) . ",
43
				iframeContainerId: '" . esc_js( $widget_id ) . "',
44
			});"
45
		);
46
47
		return sprintf(
48
			'%s<noscript><a href="%s" rel="noopener noreferrer" target="_blank">%s</a></noscript>',
49
			$content,
50
			esc_url( $attr['url'] ),
51
			esc_html__( 'Register on Eventbrite', 'jetpack' )
52
		);
53
	}
54
55
	// Show the modal version.
56
	wp_add_inline_script(
57
		'eventbrite-widget',
58
		"window.EBWidgets.createWidget({
59
			widgetType: 'checkout',
60
			eventId: " . absint( $attr['eventId'] ) . ",
61
			modal: true,
62
			modalTriggerElementId: '" . esc_js( $widget_id ) . "',
63
		});"
64
	);
65
66
	return sprintf(
67
		'<noscript><a href="%s" rel="noopener noreferrer" target="_blank"></noscript>%s<noscript></a></noscript>',
68
		esc_url( $attr['url'] ),
69
		$content
70
	);
71
}
72
73
/**
74
 * Share PHP block settings with js block code.
75
 *
76
 * @return void
77
 */
78
function jetpack_eventbrite_block_editor_assets() {
79
	wp_localize_script(
80
		'jetpack-blocks-editor',
81
		'Jetpack_Block_Eventbrite_Settings',
82
		array(
83
			'widget_slug' => JETPACK_EVENTBRITE_WIDGET_SLUG,
84
		)
85
	);
86
}
87
88
add_action( 'enqueue_block_editor_assets', 'jetpack_eventbrite_block_editor_assets' );
89