Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
4.35% covered (danger)
4.35%
1 / 23
33.33% covered (danger)
33.33%
1 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
Checkbox_Setting_Element_Abstract
4.35% covered (danger)
4.35%
1 / 23
33.33% covered (danger)
33.33%
1 / 3
37.51
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 get_is_checked_value
n/a
0 / 0
n/a
0 / 0
0
 get_is_not_checked_value
n/a
0 / 0
n/a
0 / 0
0
 print_field_callback
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 1
6
 sanitize_callback
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3namespace BrianHenryIE\WP_Autologin_URLs\Admin\Settings_Fields;
4
5abstract class Checkbox_Setting_Element_Abstract extends Settings_Section_Element_Abstract {
6
7    public function __construct( $settings_page_slugname_slug_name, $section = 'default' ) {
8        parent::__construct( $settings_page_slugname_slug_name, $section );
9    }
10
11    abstract protected function get_is_checked_value(): string;
12
13    abstract protected function get_is_not_checked_value(): string;
14
15    /**
16     * Prints the checkbox as displayed in the right-hand column of the settings table.
17     *
18     * @param array{placeholder:string, helper:string, supplemental:string, default:string} $arguments The field data as registered with add_settings_field().
19     */
20    public function print_field_callback( $arguments ): void {
21
22        $is_checked = $this->get_is_checked_value() === $this->value ? 'checked ' : '';
23        $label      = $arguments['helper'];
24
25        printf(
26            '<fieldset><label for="%1$s"><input id="%1$s" name="%1$s" type="checkbox" value="%2$s" %3$s />%4$s</label></fieldset>',
27            esc_attr( $this->id ),
28            esc_attr( $this->get_is_checked_value() ),
29            esc_attr( $is_checked ),
30            wp_kses( $label, array( 'i' => array() ) )
31        );
32
33        $allowed_html = array(
34            'br' => array(),
35            'a'  => array(
36                'href'   => array(),
37                'target' => array(),
38            ),
39        );
40
41        printf( '<p class="description">%s</p>', wp_kses( $arguments['supplemental'], $allowed_html ) );
42    }
43
44    /**
45     * If an unexpected value is POSTed, don't make any change to what's in the database.
46     *
47     * @param ?string $value The data posted from the HTML form.
48     *
49     * @return string The value to save in the database.
50     */
51    public function sanitize_callback( $value ) {
52
53        if ( $this->get_is_checked_value() === $value ) {
54            return $value;
55        } elseif ( null === $value ) {
56            return $this->get_is_not_checked_value();
57        } else {
58            return $this->value;
59        }
60    }
61}