Completed
Push — add/eventbrite-block ( f6ab89...292953 )
by Gary
06:12
created

eventbrite.php ➔ jetpack_eventbrite_embed_handler()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
nc 2
nop 1
dl 0
loc 21
rs 9.584
c 0
b 0
f 0
1
<?php
2
/**
3
 * Eventbrite Block.
4
 *
5
 * @since 8.0.0
6
 *
7
 * @package Jetpack
8
 */
9
10
jetpack_register_block(
11
	'jetpack/eventbrite',
12
	array(
13
		'attributes'      => array(
14
			'url'      => array(
15
				'type' => 'string',
16
			),
17
			'useModal' => array(
18
				'type' => 'boolean',
19
			),
20
		),
21
		'render_callback' => 'jetpack_eventbrite_block_load_assets',
22
	)
23
);
24
25
/**
26
 * Eventbrite block registration/dependency delclaration.
27
 *
28
 * @param array $attr    Eventbrite block attributes.
29
 *
30
 * @return string
31
 */
32
function jetpack_eventbrite_block_load_assets( $attr ) {
33
	if ( empty( $attr['url'] ) ) {
34
		return '';
35
	}
36
37
	$matches = array();
38
	preg_match( '/(\d+)$/', $attr['url'], $matches );
39
	$event_id = $matches[1];
40
41
	wp_enqueue_script( 'eventbrite-widget', 'https://www.eventbrite.com/static/widgets/eb_widgets.js', array(), JETPACK__VERSION, true );
42
43
	// Show the embedded version.
44
	if ( empty( $attr['useModal'] ) ) {
45
		wp_add_inline_script(
46
			'eventbrite-widget',
47
			"window.EBWidgets.createWidget({
48
				widgetType: 'checkout',
49
				event_id: ${event_id},
50
				iframeContainerId: 'eventbrite-widget-container-${event_id}',
51
			});"
52
		);
53
54
		return <<<EOT
55
<div id="eventbrite-widget-container-${event_id}"></div>
56
<noscript>
57
	<a href="https://www.eventbrite.com/e/${event_id}" rel="noopener noreferrer" target="_blank">Buy Tickets on Eventbrite</a>
58
</noscript>
59
EOT;
60
	}
61
62
	// Show the modal version.
63
	wp_add_inline_script(
64
		'eventbrite-widget',
65
		"window.EBWidgets.createWidget({
66
			widgetType: 'checkout',
67
			event_id: ${event_id},
68
			modal: true,
69
			modalTriggerElementId: 'eventbrite-widget-modal-trigger-${event_id}',
70
		});"
71
	);
72
73
	return <<<EOT
74
	<noscript><a href="https://www.eventbrite.com.au/e/${event_id}" rel="noopener noreferrer" target="_blank"></noscript>
75
	<button id="eventbrite-widget-modal-trigger-${event_id}" type="button">Buy Tickets</button>
76
	<noscript></a>Buy Tickets on Eventbrite</noscript>
77
EOT;
78
}
79