Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
Cache
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 5
56
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
2
 hooks
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 on_rewrite
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 on_cache_level_change
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
12
 add_to_runtime
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace NewfoldLabs\WP\Module\Performance\Cache;
4
5use NewfoldLabs\WP\ModuleLoader\Container;
6
7use function NewfoldLabs\WP\Module\Performance\get_cache_exclusion;
8use function NewfoldLabs\WP\Module\Performance\get_cache_level;
9
10/**
11 * Cache manager.
12 */
13class Cache {
14
15    /**
16     * Dependency injection container.
17     *
18     * @var Container
19     */
20    protected $container;
21
22    /**
23     * Constructor.
24     *
25     * @param Container $container the container
26     */
27    public function __construct( Container $container ) {
28        $this->container = $container;
29
30        $cacheManager = new CacheManager( $container );
31        $cachePurger  = new CachePurgingService( $cacheManager->get_instances() );
32
33        $container->set( 'cachePurger', $cachePurger );
34
35        new CacheExclusion( $container );
36
37        $container->set( 'hasMustUsePlugin', file_exists( WPMU_PLUGIN_DIR . '/endurance-page-cache.php' ) );
38
39        $this->hooks();
40
41        add_filter( 'newfold-runtime', array( $this, 'add_to_runtime' ), 100 );
42    }
43
44    /**
45     * Add hooks.
46     */
47    public function hooks() {
48        add_action( 'after_mod_rewrite_rules', array( $this, 'on_rewrite' ) );
49    }
50
51    /**
52     * When updating mod rewrite rules, also update our rewrites as appropriate.
53     */
54    public function on_rewrite() {
55        $this->on_cache_level_change();
56    }
57
58    /**
59     * On cache level change, update the response headers.
60     */
61    public function on_cache_level_change() {
62        // Remove the old option from EPC, if it exists.
63        if ( $this->container->get( 'hasMustUsePlugin' ) && absint( get_option( 'endurance_cache_level', 0 ) ) ) {
64            update_option( 'endurance_cache_level', 0 );
65            delete_option( 'endurance_cache_level' );
66        }
67    }
68
69    /**
70     * Add to Newfold SDK runtime.
71     *
72     * @param array $sdk SDK data.
73     * @return array SDK data.
74     */
75    public function add_to_runtime( $sdk ) {
76
77        $values = array(
78            'level'     => get_cache_level(),
79            'exclusion' => get_cache_exclusion(),
80        );
81
82        return array_merge( $sdk, array( 'cache' => $values ) );
83    }
84}