Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 24
0.00% covered (danger)
0.00%
0 / 3
CRAP
n/a
0 / 0
jetpack_load_theme_tools
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
6
jetpack_load_theme_compat
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
6
_jetpack_require_compat_file
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2/**
3 * Module: Theme Tools
4 *
5 * Load code specific to themes or theme tools
6 * This file is special, and is not an actual `module` as such.
7 * It is included by ./module-extras.php
8 *
9 * @package automattic/jetpack
10 */
11
12if ( ! defined( 'ABSPATH' ) ) {
13    exit( 0 );
14}
15
16/**
17 * Conditionally require the Tonesque lib depending on theme support.
18 */
19function jetpack_load_theme_tools() {
20    if ( current_theme_supports( 'tonesque' ) ) {
21        require_once JETPACK__PLUGIN_DIR . '/_inc/lib/tonesque.php';
22    }
23}
24add_action( 'init', 'jetpack_load_theme_tools', 30 );
25
26/**
27 * Load theme compat file if it exists.
28 */
29function jetpack_load_theme_compat() {
30
31    /**
32     * Filter theme compat files.
33     *
34     * Themes can add their own compat files here if they like. For example:
35     *
36     * add_filter( 'jetpack_theme_compat_files', 'mytheme_jetpack_compat_file' );
37     * function mytheme_jetpack_compat_file( $files ) {
38     *     $files['mytheme'] = locate_template( 'jetpack-compat.php' );
39     *     return $files;
40     * }
41     *
42     * @module theme-tools
43     *
44     * @since 2.8.0
45     *
46     * @param array Associative array of theme compat files to load.
47     */
48    $compat_files = apply_filters(
49        'jetpack_theme_compat_files',
50        array(
51            'twentyfourteen'  => JETPACK__PLUGIN_DIR . 'modules/theme-tools/compat/twentyfourteen.php',
52            'twentyfifteen'   => JETPACK__PLUGIN_DIR . 'modules/theme-tools/compat/twentyfifteen.php',
53            'twentysixteen'   => JETPACK__PLUGIN_DIR . 'modules/theme-tools/compat/twentysixteen.php',
54            'twentynineteen'  => JETPACK__PLUGIN_DIR . 'modules/theme-tools/compat/twentynineteen.php',
55            'twentytwenty'    => JETPACK__PLUGIN_DIR . 'modules/theme-tools/compat/twentytwenty.php',
56            'twentytwentyone' => JETPACK__PLUGIN_DIR . 'modules/theme-tools/compat/twentytwentyone.php',
57        )
58    );
59
60    _jetpack_require_compat_file( get_stylesheet(), $compat_files );
61
62    if ( is_child_theme() ) {
63        _jetpack_require_compat_file( get_template(), $compat_files );
64    }
65}
66add_action( 'after_setup_theme', 'jetpack_load_theme_compat', -1 );
67
68/**
69 * Requires a file once, if the passed key exists in the files array.
70 *
71 * @access private
72 * @param string $key The key to check.
73 * @param array  $files Array of files to check in.
74 * @return void|WP_Error
75 */
76function _jetpack_require_compat_file( $key, $files ) {
77    if ( ! is_string( $key ) ) {
78        return new WP_Error( 'key_not_string', 'The specified key is not actually a string.', compact( 'key' ) );
79    }
80
81    if ( array_key_exists( $key, $files ) && is_readable( $files[ $key ] ) ) {
82        require_once $files[ $key ];
83    }
84}