PluginProbe
ezCache / 1.3
ezCache v1.3
2.6.5 2.6.4 2.6.2 2.6.3 2.6.1 2.6.0 2.5.6 2.5.5 2.5.4 2.5.3 2.5.2 2.5.1 2.5 2.2.1 2.2.2 trunk 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.3 1.3.1 1.3.10 1.3.11 All 49 releases
ezcache / includes / Settings.php

Settings.php in ezCache 1.3, at includes/Settings.php

118 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Upress\EzCache;
3
4 class Settings {
5 /** @var object */
6 protected static $settings;
7
8 /**
9 * Get the path to the config file
10 * @return string
11 */
12 protected static function settings_file_path() {
13 return WP_CONTENT_DIR . '/ezcache-config.json';
14 }
15
16 public static function get_default_settings() {
17 return (object) [
18 'no_cache_known_users' => true,
19 'separate_mobile_cache' => true,
20 'cache_lifetime' => 86400,
21 'cache_expiry_interval' => 3600,
22
23 'disable_wp_emoji' => false,
24 'optimize_google_fonts' => false,
25 'minify_html' => false,
26 'minify_inline_js' => false,
27 'minify_inline_css' => false,
28 'minify_js' => false,
29 'combine_head_js' => false,
30 'combine_body_js' => false,
31 'minify_css' => false,
32 'combine_css' => false,
33 'enable_webp_support' => true,
34
35 'no_cache_query_params' => false,
36 'cache_clear_on_post_edit' => true,
37 'bypass_cache' => [
38 'single' => false,
39 'pages' => false,
40 'frontpage' => false,
41 'home' => false,
42 'archives' => false,
43 'tag' => false,
44 'category' => false,
45 'feed' => false,
46 'search' => false,
47 'author' => false,
48 ],
49 'rejected_uri' => "/cart\n/checkout",
50 'rejected_user_agent' => '',
51 ];
52 }
53
54 /**
55 * Get the settings stored in the config file
56 * @return object
57 */
58 public static function get_settings() {
59
60 if ( self::$settings ) {
61 return self::$settings;
62 }
63
64 $file = self::settings_file_path();
65 $default_settings = self::get_default_settings();
66
67 if ( ! file_exists( $file ) || ! $json = json_decode( file_get_contents( $file ) ) ) {
68 self::$settings = $default_settings;
69 file_put_contents( $file, json_encode( self::$settings ) );
70
71 return self::$settings;
72 }
73
74 self::$settings = (object) array_merge( (array) $default_settings, (array) $json );
75 return self::$settings;
76 }
77
78 /**
79 * Merge new settings into the settings file
80 * @param array $new_settings
81 * @return object
82 */
83 public static function set_settings( $new_settings=[] ) {
84 $settings = self::get_settings();
85
86 foreach( $new_settings as $key => $value ) {
87 $settings->{$key} = $value;
88 }
89
90 self::maybe_update_cronjobs( $settings );
91
92 file_put_contents( self::settings_file_path(), json_encode( $settings ) );
93 self::$settings = $settings;
94 return $settings;
95 }
96
97 /**
98 * @param $settings
99 */
100 public static function maybe_update_cronjobs( $settings ) {
101 if ( wp_next_scheduled( 'ezcache_clear_expired_cache' ) ) {
102 wp_clear_scheduled_hook( 'ezcache_clear_expired_cache' );
103 }
104
105 if ( $settings->cache_lifetime > 0 ) {
106 $schedules = wp_get_schedules();
107 foreach( $schedules as $key=>$s ) {
108 if( $s['interval'] == $settings->cache_expiry_interval ) {
109 if ( ! wp_next_scheduled( 'ezcache_clear_expired_cache' ) ) {
110 wp_schedule_event( time(), $key, 'ezcache_clear_expired_cache' );
111 }
112 break;
113 }
114 }
115 }
116 }
117 }
118