Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
90.91% covered (success)
90.91%
10 / 11
100.00% covered (success)
100.00%
1 / 1
CRAP
n/a
0 / 0
Automattic\Jetpack\Extensions\Repeat_Visitor\render_block_implementation
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
7
1<?php
2/**
3 * Repeat Visitor block render implementation.
4 *
5 * Loaded lazily from repeat-visitor.php only when the block is rendered, to keep
6 * the render body out of the eager front-end PHP/opcache footprint.
7 *
8 * @package automattic/jetpack
9 */
10
11namespace Automattic\Jetpack\Extensions\Repeat_Visitor;
12
13use Automattic\Jetpack\Blocks;
14use Jetpack_Gutenberg;
15
16if ( ! defined( 'ABSPATH' ) ) {
17    exit( 0 );
18}
19
20/**
21 * Repeat Visitor block dependency declaration.
22 *
23 * @param array  $attributes Array containing the block attributes.
24 * @param string $content    String containing the block content.
25 *
26 * @return string
27 */
28function render_block_implementation( $attributes, $content ) {
29    Jetpack_Gutenberg::load_assets_as_required( __DIR__ );
30
31    $classes = Blocks::classes( Blocks::get_block_feature( __DIR__ ), $attributes );
32
33    $count     = isset( $_COOKIE['jp-visit-counter'] ) ? (int) $_COOKIE['jp-visit-counter'] : 0;
34    $criteria  = $attributes['criteria'] ?? 'after-visits';
35    $threshold = isset( $attributes['threshold'] ) ? (int) $attributes['threshold'] : 3;
36
37    if (
38        ( 'after-visits' === $criteria && $count >= $threshold ) ||
39        ( 'before-visits' === $criteria && $count < $threshold )
40    ) {
41        return $content;
42    }
43
44    // return an empty div so that view script increments the visit counter in the cookie.
45    return '<div class="' . esc_attr( $classes ) . '"></div>';
46}