Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 26
0.00% covered (danger)
0.00%
0 / 2
CRAP
n/a
0 / 0
Automattic\Jetpack\Extensions\Nextdoor\register_block
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
Automattic\Jetpack\Extensions\Nextdoor\load_assets
0.00% covered (danger)
0.00%
0 / 19
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2/**
3 * Nextdoor Block.
4 *
5 * @since 12.8
6 *
7 * @package automattic/jetpack
8 */
9
10namespace Automattic\Jetpack\Extensions\Nextdoor;
11
12use Automattic\Jetpack\Blocks;
13use Jetpack_Gutenberg;
14
15if ( ! defined( 'ABSPATH' ) ) {
16    exit( 0 );
17}
18
19/**
20 * Registers the block for use in Gutenberg
21 * This is done via an action so that we can disable
22 * registration if we need to.
23 */
24function register_block() {
25    Blocks::jetpack_register_block(
26        __DIR__,
27        array( 'render_callback' => __NAMESPACE__ . '\load_assets' )
28    );
29}
30add_action( 'init', __NAMESPACE__ . '\register_block' );
31
32/**
33 * Nextdoor block registration/dependency declaration.
34 *
35 * @param array $attr    Array containing the Nextdoor block attributes.
36 * @return string
37 */
38function load_assets( $attr ) {
39    if ( ! isset( $attr['url'] ) ) {
40        return;
41    }
42
43    $url = Jetpack_Gutenberg::validate_block_embed_url(
44        $attr['url'],
45        array( '/^http[s]?:\/\/((?:www\.)?nextdoor(?:.*)?\/(?:embed)\/\S*)/i' ),
46        true
47    );
48
49    if ( empty( $url ) ) {
50        return;
51    }
52
53    $url = preg_replace( '#/embed/#', '/p/', $url );
54
55    /*
56     * Enqueue necessary scripts and styles.
57     */
58    Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
59
60    $block_id    = wp_unique_id( 'nextdoor-block-' );
61    $link_markup = '<a href="' . esc_url( $url ) . '" title="' . esc_html__( 'Nextdoor embed', 'jetpack' ) . '">' . esc_html( $url ) . '</a>';
62
63    $block_classes = Blocks::classes( Blocks::get_block_feature( __DIR__ ), $attr );
64
65    $html =
66        '<figure id="' . esc_attr( $block_id ) . '" class="' . esc_attr( $block_classes ) . '">' .
67            $link_markup .
68        '</figure>';
69
70    return $html;
71}