Version Description
Download this release
Release Info
Developer | kraftbj |
Plugin | WP Super Cache |
Version | 1.8 |
Comparing to | |
See all releases |
Code changes from version 1.7.9 to 1.8
- .eslintignore +6 -0
- CHANGELOG.md +605 -0
- LICENSE.txt +357 -0
- README.md +20 -0
- SECURITY.md +38 -0
- composer.json +41 -0
- composer.lock +2913 -0
- inc/delete-cache-button.js +18 -18
- inc/preload-notification.js +12 -12
- languages/wp-super-cache-de_DE.po +1 -1
- languages/wp-super-cache-ja.po +2 -2
- languages/wp-super-cache-ru_RU.po +2 -2
- languages/wp-super-cache-sr_RS.po +2 -2
- languages/wp-super-cache-tr_TR.po +2 -2
- languages/wp-super-cache-zh_CN.po +1 -1
- languages/wp-super-cache-zh_TW.po +2 -2
- package.json +25 -0
- partials/advanced.php +3 -3
- partials/easy.php +1 -0
- readme.txt +20 -539
- rest/load.php +10 -10
- src/example.php +8 -0
- wp-cache-base.php +3 -0
- wp-cache-phase1.php +23 -3
- wp-cache-phase2.php +552 -444
- wp-cache.php +157 -24
- wp-super-cache.pot +0 -2242
.eslintignore
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Not loaded by default eslint, but we use tools/js-tools/load-eslint-ignore.js in .eslintrc to pull it in.
|
2 |
+
|
3 |
+
# @todo: Files below ignored as part of Automattic/jetpack/pull/25449
|
4 |
+
# They can be removed here as lint errors are addressed.
|
5 |
+
/inc/delete-cache-button.js
|
6 |
+
/inc/preload-notification.js
|
CHANGELOG.md
ADDED
@@ -0,0 +1,605 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Changelog
|
2 |
+
|
3 |
+
### This is a list detailing changes for all Super Cache releases.
|
4 |
+
|
5 |
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
6 |
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7 |
+
|
8 |
+
## [1.8] - 2022-08-16
|
9 |
+
### Added
|
10 |
+
- Added WP Super cache to the repo.
|
11 |
+
- PHP 8 Support: Ensure the expected value for the $auto_release in sem_get is used.
|
12 |
+
|
13 |
+
### Fixed
|
14 |
+
- Fixed the display issue with the survey link
|
15 |
+
- Updated readme.txt, changelog.md and the composer slug.
|
16 |
+
|
17 |
+
## 1.7.9 - 2022-06-07
|
18 |
+
|
19 |
+
- Fix nonces used by "Delete Cache" button and remove JS from it on the frontend admin bar.
|
20 |
+
- Define the constant WPSCDISABLEDELETEBUTTON to disable the "Delete Cache" button in the admin bar.
|
21 |
+
|
22 |
+
## 1.7.8 - 2022-06-07
|
23 |
+
|
24 |
+
* Change the admin bar "Delete Cache" button into an AJAX link #808 #810
|
25 |
+
* Fix link to log file in custom WordPress structure #807
|
26 |
+
* Add an auto updating preload message. #811 #816
|
27 |
+
* Use REQUEST_URI instead of GET to check GET status. #813
|
28 |
+
* Add commonWP and disclaimer to "recommended links" #812
|
29 |
+
* Hide warnings in case files deleted #814
|
30 |
+
* Remove the GET param when removing tracking params #818
|
31 |
+
* Check that post is private to unpublish it and clear cache 2249e58e6f585d936c0993e9d18e6382fa976a66
|
32 |
+
* Check $gc_flag was opened before closing it. #819
|
33 |
+
|
34 |
+
## 1.7.7 - 2022-02-01
|
35 |
+
|
36 |
+
* Fixes to settings page
|
37 |
+
|
38 |
+
## 1.7.6 - 2022-01-31
|
39 |
+
|
40 |
+
* Fix for PHP < 7.3
|
41 |
+
|
42 |
+
## 1.7.5 - 2022-01-31
|
43 |
+
|
44 |
+
* Move the text of the settings pages into separate files. #791
|
45 |
+
* Allow editors to delete all the cache files. #793
|
46 |
+
* Only clear the cache from the current site, not the whole network (admin bar link). #794
|
47 |
+
* Check $cache_path is somewhat sane. #797
|
48 |
+
* realpath returns false if directory not found. #798
|
49 |
+
* Don't reject bots for new installs. They "preload pages" too. #800
|
50 |
+
|
51 |
+
## 1.7.4 - 2021-07-08
|
52 |
+
|
53 |
+
* Make config file path configurable, props @sebastianpopp #755
|
54 |
+
* Stop a very rare/difficult attack when updating wp-config.php, props @guyasyou for reporting. #780
|
55 |
+
* Add textbox to add tracking parameters to ignore when caching. props @markfinst, @radex02 #777
|
56 |
+
* Add "Rejected Cookies" setting to the advanced settings page. #774
|
57 |
+
|
58 |
+
## 1.7.3 - 2021-04-28
|
59 |
+
|
60 |
+
* Sanitize the settings that are written to the config file #763
|
61 |
+
* Fix the display of "direct cached" example urls in some circumstance. #766
|
62 |
+
|
63 |
+
## 1.7.2 - 2021-03-15
|
64 |
+
|
65 |
+
* Fixed authenticated RCE in the settings page. Props @m0ze
|
66 |
+
* Small bug fixes.
|
67 |
+
|
68 |
+
## 1.7.1 - 2020-01-30
|
69 |
+
|
70 |
+
* Minor fixes to docs. #709 #645
|
71 |
+
* Fixed typo on cache contents page. #719
|
72 |
+
* Fixed array index warning. #724
|
73 |
+
* Updated yellow box links. #725
|
74 |
+
|
75 |
+
## 1.7.0 - 2020-01-27
|
76 |
+
|
77 |
+
* Added "wpsc_cdn_urls" filter to modify the URLs used to rewrite URLs. #697
|
78 |
+
* Fixed CDN functionality for logged in users. #698
|
79 |
+
* Disable settings that don't work in Expert mode. #699
|
80 |
+
* Don't enable mobile support by default, but it can still be enabled manually. #700
|
81 |
+
* Change "admin bar" to "Toolbar". Props @garrett-eclipse. #701
|
82 |
+
* Show settings enabled by "easy" settings page. #703
|
83 |
+
|
84 |
+
## 1.6.9 - 2019-07-25
|
85 |
+
|
86 |
+
* Improve the variables and messaging used by advanced-cache.php code. #687
|
87 |
+
* Add a warning message to the debug log viewer. #688
|
88 |
+
* Disable raw viewing of the debug log. #691
|
89 |
+
* Clean up the debug log. #692 #694
|
90 |
+
* Added wpsc_update_check() in 9659af156344a77ae247dc582d52053d95c79b93.
|
91 |
+
|
92 |
+
## 1.6.8 - 2019-06-27
|
93 |
+
|
94 |
+
* Added new constants, WPSC_SERVE_DISABLED (disable serving of cached files) and WPSC_SUPERCACHE_ONLY (only serve supercache cache files). #682 and #672
|
95 |
+
* Hide get_post() warning on some sites. #684
|
96 |
+
* Check if WPCACHEHOME is set correctly before maybe updating it. #683
|
97 |
+
* Remove object cache support as it never worked properly. #681
|
98 |
+
* Add "logged in users" to the "do not cache for users" setting and rename that setting to "Cache Restrictions" #657
|
99 |
+
|
100 |
+
## 1.6.7 - 2019-05-30
|
101 |
+
|
102 |
+
* wp_cache_setting() can now save boolean values since many of the settings are bools. #676
|
103 |
+
* Check if $super_cache_enabled is true in a less strict way because it might be '1' rather than true. #677
|
104 |
+
|
105 |
+
## 1.6.6 - 2019-05-28
|
106 |
+
|
107 |
+
* Fix problems with saving settings. Returns false ONLY when there's an issue with the config file, not when the setting isn't changed. Change other code to cope with that, including updating WPCACHEHOME (#670)
|
108 |
+
* When saving settings rename the temporary config file correctly, and delete wp-admin/.php if it exists. (#673)
|
109 |
+
* Fix adding WPCACHEHOME to wp-config.php when advanced-cache.php is not found and wp-config.php is RO. (#674)
|
110 |
+
|
111 |
+
## 1.6.5 - 2019-05-27
|
112 |
+
|
113 |
+
* Check advanced-cache.php was created by the plugin before modifying/deleting it. (#666)
|
114 |
+
* When saving settings, save blank lines. Fixes problems with WP_CACHE and WPCACHEHOME in wp-config.php. Related to #652. (#667)
|
115 |
+
* Update outdated code and use is_multisite() (#600)
|
116 |
+
* Fix the delete cache button in the Toolbar. (#603)
|
117 |
+
* Code cleanup in #602
|
118 |
+
* Use get_post_status instead of post_status (#623)
|
119 |
+
* Fixes button - Update Direct Pages (#622)
|
120 |
+
* Removes apache_response_headers and uses only headers_list (#618)
|
121 |
+
* Function is_site_admin has been deprecated (#611)
|
122 |
+
* Fixes action urls in wp_cache_manager (#610)
|
123 |
+
* Remove the link to the HibbsLupusTrust tweet. (#635)
|
124 |
+
* Don't load wp-cache-config.php if it's already loaded (#605)
|
125 |
+
* PHPCS fixes and optimization for plugins/domain-mapping.php (#615)
|
126 |
+
* Introduces PHP_VERSION_ID for faster checking (#604)
|
127 |
+
* Fixes regex and optimizes ossdl-cdn.php (#596)
|
128 |
+
* Only update new settings and use a temporary file to avoid corruption. (#652)
|
129 |
+
* Serve cached files to rejected user agents, don't cache them. (#658)
|
130 |
+
* Combine multiple headers with the same name (#641)
|
131 |
+
* Open ‘Delete Cache’ link in same window (#656)
|
132 |
+
* Promote the Jetpack Site Accelerator on the CDN page. (#636)
|
133 |
+
|
134 |
+
## 1.6.4 - 2018-08-22
|
135 |
+
|
136 |
+
* Changes between [1.6.3 and 1.6.4](https://github.com/Automattic/wp-super-cache/compare/1.6.3...1.6.4)
|
137 |
+
* Fixes for WP-CLI (#587) (#592)
|
138 |
+
* Bumped the minimum WordPress version to 3.1 to use functions introduced then. (#591)
|
139 |
+
* Fixes to wpsc_post_transition to avoid a fatal error using get_sample_permalink. (#595)
|
140 |
+
* Fixed the Toolbar "Delete Cache" link. (#589)
|
141 |
+
* Fixed the headings used in the settings page. (#597)
|
142 |
+
|
143 |
+
## 1.6.3 - 2018-08-10
|
144 |
+
|
145 |
+
* Changes between [1.6.2 and 1.6.3](https://github.com/Automattic/wp-super-cache/compare/1.6.2...1.6.3)
|
146 |
+
* Added cookie helper functions (#580)
|
147 |
+
* Added plugin helper functions (#574)
|
148 |
+
* Added actions to modify cookie and plugin lists. (#582)
|
149 |
+
* Really disable garbage collection when timeout = 0 (#571)
|
150 |
+
* Added warnings about DISABLE_WP_CRON (#575)
|
151 |
+
* Don't clean expired cache files after preload if garbage collection is disabled (#572)
|
152 |
+
* On preload, if deleting a post don't delete the sub directories if it's the homepage. (#573)
|
153 |
+
* Fix generation of semaphores when using WP CLI (#576)
|
154 |
+
* Fix deleting from the Toolbar (#578)
|
155 |
+
* Avoid a strpos() warning. (#579)
|
156 |
+
* Improve deleting of cache in edit/delete/publish actions (#577)
|
157 |
+
* Fixes to headers code (#496)
|
158 |
+
|
159 |
+
## 1.6.2 - 2018-06-19
|
160 |
+
|
161 |
+
* Fixed serving expired supercache files (#562)
|
162 |
+
* Write directly to the config file to avoid permission problems with wp-content. (#563)
|
163 |
+
* Correctly set the .htaccess rules on the main site of a multisite. (#557)
|
164 |
+
* Check if set_transient() exists before using it. (#565)
|
165 |
+
* Removed searchengine.php example plugin as it sets a cookie to track users. Still available [here](https://github.com/Automattic/wp-super-cache/blob/4cda5c0f2218e40e118232b5bf22d227fb3206b7/plugins/searchengine.php). (#567)
|
166 |
+
* For advanced users only. Change the vary and cache control headers. See https://github.com/Automattic/wp-super-cache/pull/555 (#555)
|
167 |
+
|
168 |
+
## 1.6.1 - 2018-05-15
|
169 |
+
|
170 |
+
* Fix the name of the WP Crontrol plugin. (#549)
|
171 |
+
* Handle errors during deactivation/uninstall by email rather than exiting. (#551)
|
172 |
+
* Add a notice when settings can't be updated. (#552 and #553)
|
173 |
+
|
174 |
+
## 1.6.0 - 2018-04-30
|
175 |
+
|
176 |
+
* Fix issues in multisite plugin (#501)
|
177 |
+
* Fixes wp-cli plugin deactivate/activate (#499)
|
178 |
+
* Cleanup - change quotes. (#495)
|
179 |
+
* $htaccess_path defines the path to the global .htacess file. (#507)
|
180 |
+
* Fix 'cannot redeclare gzip_accepted()' (#511)
|
181 |
+
* Correct the renaming of tmp_wpcache_filename (removed unnecessary slash in path) which caused renaming to fail. (#516)
|
182 |
+
* Add check for Jetpack mobile theme cookie (#515)
|
183 |
+
* Optimize wp_cache_phase2 and create wpsc_register_post_hooks (#508)
|
184 |
+
* WPCACHEHOME has a trailing slash (#513)
|
185 |
+
* Cleanup cache enable/disable and update_mod_rewrite_rules (#500)
|
186 |
+
* Post Update now clears category cache (#519)
|
187 |
+
* Various fixes for saving the debug page form (#542)
|
188 |
+
* Expert-caching and empty parameters, like ?amp, should not serve cached page (#533)
|
189 |
+
* Tiny Yslow description fix (#527)
|
190 |
+
* Add ipad to mobile list (#525)
|
191 |
+
* Hide opcache_invalidate() warnings since it's disabled some places. (#543)
|
192 |
+
* Check that HTTP_REFERER exists before checking it. (#544)
|
193 |
+
* Replace Cron View" with WP Crontrol because it's still updated. (#546)
|
194 |
+
* adding hook (wp_cache_cleared) for full cache purges (#537)
|
195 |
+
|
196 |
+
## 1.5.9 - 2017-12-15
|
197 |
+
|
198 |
+
* Fixed fatal error if the debug log was deleted while debugging was enabled and a visitor came to the site.
|
199 |
+
* Fixed the dynamic caching test plugin because of PHP7 changes. Dynamic cache mode must be enabled now.
|
200 |
+
* Lots of WordPress coding style formatting fixes to the code.
|
201 |
+
* All changes: https://github.com/Automattic/wp-super-cache/compare/1.5.8...1.5.9
|
202 |
+
|
203 |
+
## 1.5.8 - 2017-10-31
|
204 |
+
|
205 |
+
* PHP 7 fixes. (#429)
|
206 |
+
* Fix debug comments checkbox. (#433)
|
207 |
+
* Only register uninstall function in admin pages to save queries. (#430)
|
208 |
+
* Check that wp-cache-phase1.php is loaded before saving settings page. (#428)
|
209 |
+
* If a url has a "?" in it then don't delete the associated cache. It'll delete the whole cache after stripping out ?... part. (#427 & #420)
|
210 |
+
* Allow static functions in classes to be used in cacheactions. (#425)
|
211 |
+
* Don't make AJAX requests anonymous. (#423)
|
212 |
+
* Fixed link to chmod explanation. (#421)
|
213 |
+
* Add more escaping to the CDN settings page. (#416)
|
214 |
+
* Use SERVER_PROTOCOL to determine http protocol. (#412 & #413)
|
215 |
+
* If preload stalls only send one email per day, but do display an admin notice. (#432)
|
216 |
+
* Fixed more PHP warnings in #438 and #437
|
217 |
+
* Hide mod_rewrite warnings for Nginx users. #434
|
218 |
+
|
219 |
+
## 1.5.7.1 - 2017-10-11
|
220 |
+
|
221 |
+
* If the HTTP HOST is empty then don't use it in strpos to avoid a PHP warning. (#408)
|
222 |
+
* Don't preload posts with permalinks that contain rejected strings. (#407)
|
223 |
+
* Generate a list of archive feeds that can be deleted when the site is updated. Also fixes corrupted config file issue and fatal error with older versions of WordPress. (#403)
|
224 |
+
|
225 |
+
## 1.5.7 - 2017-10-06
|
226 |
+
|
227 |
+
* Fix fatal error in plugins/searchengine.php (#398)
|
228 |
+
|
229 |
+
## 1.5.6 - 2017-10-04
|
230 |
+
|
231 |
+
* REST API: Added /plugins endpoint to handle the plugins settings page. (#382)
|
232 |
+
* Minor changes to indentaion and spaces to tabs conversion (#371) (#395)
|
233 |
+
* Don't set $wp_super_cache_comments here as it's not saved. (#379)
|
234 |
+
* realpath() only works on directories. The cache_file wasn't set correctly. (#377)
|
235 |
+
* Fix problem deleting cache from Toolbar because of realpath() (#381)
|
236 |
+
* Use trigger_error() instead of echoing to the screen if a config file isn't writeable. (#394)
|
237 |
+
* Added the "wpsc_enable_wp_config_edit" filter to disable editing the wp-config.php (#392)
|
238 |
+
* Fix some PHP notices when comments are edited/published/maintained. (#386)
|
239 |
+
* Minor changes to description on plugins page. (#393)
|
240 |
+
|
241 |
+
## 1.5.5 - 2017-08-29
|
242 |
+
|
243 |
+
* Catch fatal errors so they're not cached, improve code that catches unknown page types. (#367)
|
244 |
+
* Fix caching on older WP installs, and if the plugin is inactive on a blog, but still caching, give feeds a short TTL to ensure they're fresh. (#366)
|
245 |
+
* When preloading don't delete sub-directories, or child pages, when caching pages. (#363)
|
246 |
+
* Avoid PHP warnings from the REST API for settings that are not yet defined. (#361)
|
247 |
+
* Added missing settings to the config file. (#360)
|
248 |
+
|
249 |
+
## 1.5.4 - 2017-08-23
|
250 |
+
|
251 |
+
* Fix messages related to creating advanced-cache.php (#355, #354)
|
252 |
+
* Deleting the plugin doesn't need to delete the cache directory as it's already done on deactivation. (#323)
|
253 |
+
* Disable Jetpack mobile detection if Jetpack Beta is detected. (#298)
|
254 |
+
* Add more checks on directories to make sure they exist before deleting them. (#324)
|
255 |
+
* Add siteurl setting to CDN page for users who have WordPress in it's own directory. (#332)
|
256 |
+
* Don't enable and then not save debug comments when toggling logging. (#334)
|
257 |
+
* Show plugin activity html comments to users who disable caching for logged in users. (#335)
|
258 |
+
* Better notifications on Preload page, and redo sql to fetch posts. Added "wpsc_preload_post_types_args" filter on post visibility, and wpsc_preload_post_types filter on post types used. (#336)
|
259 |
+
* Use a cached feed if it is newer than the last time a post was updated. (#337)
|
260 |
+
* Better define a sitemap (#340) but when the content type is unknown add more checks to find out what it is. (#346)
|
261 |
+
* Save cache location correctly on the advanced settings page. (#345)
|
262 |
+
* Make sure the debug log exists before toggling it on/off to ensure the http auth code is added to it.
|
263 |
+
* Return the correct cache type to the REST API. Ignore supercache enabled status. (#352)
|
264 |
+
* Fix cache contents in REST API showing double count of supercache files. (#353)
|
265 |
+
* Move the nonce in the CDN page back into a function. (#346)
|
266 |
+
* Use realpath to compare directories when loading the sample config file to account for symlinked directories. (#342)
|
267 |
+
* Other minor changes to html or typos
|
268 |
+
(Numbers are [pull requests](https://github.com/Automattic/wp-super-cache/pulls) on Github.)
|
269 |
+
|
270 |
+
## 1.5.3 - 2017-07-26
|
271 |
+
|
272 |
+
* Fix a critical bug that caused unlink to be run on null while deleting the plugin.
|
273 |
+
|
274 |
+
## 1.5.2 - 2017-07-26
|
275 |
+
|
276 |
+
* Add a trailing slash to home path. Fixes problems with finding the .htaccess file.
|
277 |
+
* Delete WPCACHEHOME and WP_CACHE from wp-config.php when plugin deactivated.
|
278 |
+
* Check that WPCACHEHOME is the right path on each load of the settings page.
|
279 |
+
* Load the REST API code without using WPCACHEHOME.
|
280 |
+
* Fixed mobile browser caching when using WP-Cache caching.
|
281 |
+
* Fixed directory checks on Windows machines.
|
282 |
+
* Reverted CDN changes in 1.5.0 as they caused problems in older "WordPress in a separate directory" installs.
|
283 |
+
* Added note to CDN page when site url != home url. Site owners can use a filter to adjust the URL used.
|
284 |
+
* Stop preload quicker when requested while preloading taxonomies.
|
285 |
+
* Added more information for when updating the .htaccess file fails.
|
286 |
+
* "Served by" header is now optional. Enable it by setting $wpsc_served_header to true in the config file.
|
287 |
+
|
288 |
+
## 1.5.1 - 2017-07-20
|
289 |
+
|
290 |
+
* Don't use anonymous functions in REST API
|
291 |
+
* Check that REST API Controller is available before loading the REST API.
|
292 |
+
* Don't use multibyte string functions because some sites don't have it enabled.
|
293 |
+
|
294 |
+
## 1.5.0 - 2017-07-19
|
295 |
+
|
296 |
+
* REST API settings endpoints.
|
297 |
+
* Simplified settings page.
|
298 |
+
* WP-Cache files reorganised.
|
299 |
+
* Caching of more http headers.
|
300 |
+
* Lots of bug fixes.
|
301 |
+
|
302 |
+
## 1.4.9 - 2017-06-01
|
303 |
+
|
304 |
+
* Fixed bug when not running sem_remove after sem_release. See https://github.com/Automattic/wp-super-cache/issues/85
|
305 |
+
* Fixed a PHP error impacting PHP 7.1.
|
306 |
+
* Fixed a bug where we cached PUT and DELETE requests. We're treating them like POST requests now.
|
307 |
+
* Delete supercache cache files, even when supercache is disabled, because mod_rewrite rules might still be active.
|
308 |
+
* Updated the settings page, moving things around. [#173](https://github.com/Automattic/wp-super-cache/pull/173)
|
309 |
+
* Make file locking less attractive on the settings page and fixed the WPSC_DISABLE_LOCKING constant so it really disables file locking even if the user has enabled it already.
|
310 |
+
* Added a WPSC_REMOVE_SEMAPHORE constant that must be defined if sem_remove() is to be used as it may cause problems. [#174](https://github.com/Automattic/wp-super-cache/pull/174)
|
311 |
+
* Added a "wpsc_delete_related_pages_on_edit" filter that on returning 0 will disable deletion of pages outside of page being edited. [#175](https://github.com/Automattic/wp-super-cache/pull/175)
|
312 |
+
* Fixed plugin deleting all cached pages when a site had a static homepage. [#175](https://github.com/Automattic/wp-super-cache/pull/175)
|
313 |
+
* Make sure $cache_path has a trailing slash [#177](https://github.com/Automattic/wp-super-cache/pull/77)
|
314 |
+
* Remove flush() [#127](https://github.com/Automattic/wp-super-cache/pull/127) but also check if headers are empty and flush and get headers again. [#179](https://github.com/Automattic/wp-super-cache/pull/179)
|
315 |
+
* Add fix for customizer [#161](https://github.com/Automattic/wp-super-cache/pull/161) and don't cache PUT AND DELETE requests [#178](https://github.com/Automattic/wp-super-cache/pull/178)
|
316 |
+
* Check for superglobals before using them. [#131](https://github.com/Automattic/wp-super-cache/pull/131)
|
317 |
+
|
318 |
+
## 1.4.8 - 2017-01-11
|
319 |
+
|
320 |
+
* Removed malware URL in a code comment. (harmless to operation of plugin but gets flagged by A/V software)
|
321 |
+
* Updated translation file.
|
322 |
+
|
323 |
+
## 1.4.7 - 2016-12-09
|
324 |
+
|
325 |
+
* Update the settings page for WordPress 4.4. layout changes.
|
326 |
+
|
327 |
+
## 1.4.6 - 2015-10-09
|
328 |
+
|
329 |
+
* Generate the file cache/.htaccess even when one exists so gzip rules are created and gzipped pages are served correctly. Props Tigertech. https://wordpress.org/support/topic/all-website-pages-downloading-gz-file-after-latest-update?replies=36#post-7494087
|
330 |
+
|
331 |
+
## 1.4.5 - 2015-09-25
|
332 |
+
|
333 |
+
* Enhancement: Only preload public post types. Props webaware.
|
334 |
+
* Added an uninstall function that deletes the config file. Deactivate function doesn't delete it any more.
|
335 |
+
* Possible to deactivate the plugin without visiting the settings page now.
|
336 |
+
* Fixed the cache rebuild system. Rebuild files now survive longer than the request that generate them.
|
337 |
+
* Minor optimisations: prune_super_cache() exits immediately if the file doesn't exist. The output of wp_cache_get_cookies_values() is now cached.
|
338 |
+
* Added PHP pid to the debug log to aid debugging.
|
339 |
+
* Various small bug fixes.
|
340 |
+
* Fixed reset of expiry time and GC settings when updating advanced settings.
|
341 |
+
* Removed CacheMeta class to avoid APC errors. It's not used any more.
|
342 |
+
* Fixed reset of advanced settings when using "easy" settings page.
|
343 |
+
* Fixed XSS in settings page.
|
344 |
+
* Hide cache files when servers display directory indexes.
|
345 |
+
* Prevent PHP object injection through use of serialize().
|
346 |
+
|
347 |
+
## 1.4.4 - 2015-05-15
|
348 |
+
|
349 |
+
* Fixed fatal error in output handler if GET parameters present in query. Props webaware.
|
350 |
+
* Fixed debug log. It wasn't logging the right message.
|
351 |
+
|
352 |
+
## 1.4.3 - 2015-04-03
|
353 |
+
|
354 |
+
* Security release fixing an XSS bug in the settings page. Props Marc Montpas from Sucuri.
|
355 |
+
* Added wp_debug_log(). Props Jen Heilemann.
|
356 |
+
* Minor fixes.
|
357 |
+
|
358 |
+
## 1.4.2 - 2014-12-18
|
359 |
+
|
360 |
+
* Fixed "acceptable file list".
|
361 |
+
* Fixed "Don't cache GET requests" feature.
|
362 |
+
* Maybe fixed "304 not modified" problem for some users.
|
363 |
+
* Fixed some PHP warnings.
|
364 |
+
|
365 |
+
## 1.4.1 - 2014-08-07
|
366 |
+
|
367 |
+
* Fixed XSS in settings page. Props Simon Waters, Surevine Limited.
|
368 |
+
* Fix to object cache so entries may now be deleted when posts updated. (object cache still experimental)
|
369 |
+
* Documentation updates and cleanup of settings page.
|
370 |
+
|
371 |
+
## 1.4 - 2014-04-17
|
372 |
+
|
373 |
+
* Replace legacy mfunc/mnclude/dynamic-cached-content functionality with a "wpsc_cachedata" cacheaction filter.
|
374 |
+
* Added dynamic-cache-test.php plugin example wpsc_cachedata filter plugin.
|
375 |
+
* Delete post, tag and category cache when a post changes from draft to publish or vice versa. Props @Biranit.
|
376 |
+
* Update advanced-cache.php and wp-config.php if wp-cache-phase1.php doesn't load, usually happening after migrating to a new hosting service.
|
377 |
+
* Misc bugfixes.
|
378 |
+
|
379 |
+
## 1.3.2 - 2013-08-19
|
380 |
+
|
381 |
+
* Any mfunc/mclude/dynamic-cached-content tags in comments are now removed.
|
382 |
+
* Dynamic cached content feature disabled by default and must be enabled on the Advanced Settings page.
|
383 |
+
* Support for the mobile theme in Jetpack via helper plugin on script's Plugins tab.
|
384 |
+
|
385 |
+
## 1.3.1 - 2013-04-12
|
386 |
+
|
387 |
+
* Minor updates to documentation
|
388 |
+
* Fixed XSS in settings page.
|
389 |
+
|
390 |
+
## 1.3 - 2013-04-11
|
391 |
+
|
392 |
+
* mfunc tags could be executed in comments. Fixed.
|
393 |
+
* More support for sites that use the LOGGED_IN_COOKIE constant and custom cookies.
|
394 |
+
|
395 |
+
## 1.2 - 2012-12-13
|
396 |
+
|
397 |
+
* Garbage collection of old cache files is significantly improved. I added a scheduled job that keeps an eye on things and restarts the job if necessary. Also, if you enable caching from the Easy page garbage collection will be enabled too.
|
398 |
+
* Editors can delete single cached files from the Toolbar now.
|
399 |
+
* Fixed the cached page counter on the settings page.
|
400 |
+
* Some sites that updated to 1.0 experienced too much garbage collection. There are still stragglers out there who haven't upgraded but that's fixed now!
|
401 |
+
* Supercached mobile files are now used as there was a tiny little typo that needed fixing.
|
402 |
+
* If your site is in a directory and you saw problems updating a page then that should be fixed now.
|
403 |
+
* The deactivate hook has been changed so your configuration isn.t hosed when you upgrade. Unfortunately this will only happen after you do this upgrade.
|
404 |
+
* Some sites use custom cookies with the LOGGED_IN_COOKIE constant. Added support for that.
|
405 |
+
* Added support for WPTouch Pro, but it appears to be flaky still. Anyone have time to work on that? I don.t.
|
406 |
+
* Some sites had problems with scheduled posts. For some reason the plugin thought the post was in draft mode and then because it only checked the same post once, when the post magically became published the cache wasn.t cleared. That.s fixed, thanks to the debug logging of several patient users.
|
407 |
+
* And more bug fixes and translation updates.
|
408 |
+
|
409 |
+
## 1.1 - 2012-06-13
|
410 |
+
|
411 |
+
* Use $_SERVER[ 'SERVER_NAME' ] to create cache directories.
|
412 |
+
* Only create blogs cached directories if valid requests and blogs exist.
|
413 |
+
* Only clear current blog's cache files if navigation menu is modified
|
414 |
+
* Added clean_post_cache action to clear cache on post actions
|
415 |
+
* Removed garbage collection details on Contents tab
|
416 |
+
* Added wp_cache_check_mobile cacheaction filter to shortcircuit mobile device check.
|
417 |
+
* Don't delete cache files for draft posts
|
418 |
+
* Added action on wp_trash_post to clear the cache when trashed posts are deleted
|
419 |
+
* Show a warning when 304 browser caching is disabled (because mod_rewrite caching is on)
|
420 |
+
* New check for safe mode if using less that PHP 5.3.0
|
421 |
+
* Added wp_supercache_remove_cookies filter to disable anonymous browsing mode.
|
422 |
+
* Fixed garbage collection schedule dropdown
|
423 |
+
* Fixed preload problem clearing site's cache on "page on front" sites.
|
424 |
+
* Fix for PHP variable not defined warnings
|
425 |
+
* Fixed problem refreshing cache when comments made as siteurl() sometimes didn't work
|
426 |
+
* Preloading of taxonomies is now optional
|
427 |
+
* Domain mapping fixes.
|
428 |
+
* Better support for https sites. Remove https:// to get cache paths.
|
429 |
+
* Added AddDefaultCharset .htaccess rule back in and added an option to remove it if required.
|
430 |
+
* Added multisite plugin that adds a "Cached" column to Network->Sites to disable caching on a per site basis.
|
431 |
+
* Added WPTouch plugin to modify browser and prefix list in mobile detection code. Added support for that plugin's exclude list.
|
432 |
+
* Fixed cache tester
|
433 |
+
* Filter the tags that are used to detect end-of-page using the wp_cache_eof_tags filter.
|
434 |
+
* Removed debug level from logging as it wasn't helpful.
|
435 |
+
* Removed mention of wp-minify.
|
436 |
+
|
437 |
+
## 1.0 - 2012-01-30
|
438 |
+
|
439 |
+
* Removed AddDefaultCharset .htaccess rule
|
440 |
+
* Fixed problem with blogs in a folder and don't have a trailing slash
|
441 |
+
* New scheduling of garbage collection
|
442 |
+
* Added a "Delete cache" link to Toolbar to delete cache of current page.
|
443 |
+
* Updated documentation
|
444 |
+
* Sorry Digg, Stephen Fry power now!
|
445 |
+
* Updated translations
|
446 |
+
* Preload taxonomies and all post types except revisionsand nav menu items
|
447 |
+
* Fixed previews by logged in users.
|
448 |
+
* Added option to make logged in users anonymous
|
449 |
+
* Use WP 3.0 variables to detect multisite installs
|
450 |
+
* Hash filenames so files are served from the same CDNs
|
451 |
+
|
452 |
+
## 0.9.9.9 - 2011-07-12
|
453 |
+
|
454 |
+
* Fixed typo, is_front_page.
|
455 |
+
* Serve repeated static files from the same CDN hostname.
|
456 |
+
* Updated translations.
|
457 |
+
* Make supercache dir lowercase to avoid problems with unicode URLs.
|
458 |
+
* Add option to skip https loaded static content.
|
459 |
+
* Remove 5 second check on age of existing cache files. Should help with posts that get lots of comments and traffic.
|
460 |
+
* Lots of bugs fixed.
|
461 |
+
|
462 |
+
## 0.9.9.8 - 2011-01-07
|
463 |
+
|
464 |
+
* CDN updates: can be switched off, multiple CNAMEs.
|
465 |
+
* Uninstall process improved. It removes generated files and fixes edited files.
|
466 |
+
* Cached dynamic pages can now be stored in Supercache files and compressed.
|
467 |
+
* 1and1 Webhosting fix (/kunden/)
|
468 |
+
* Remove log by email functionality as it caused problems for users who were inundated by email
|
469 |
+
* Many more minor fixes and changes.
|
470 |
+
|
471 |
+
## 0.9.9.6 - 2010-09-29
|
472 |
+
|
473 |
+
* Fixed problem serving cached files with PHP
|
474 |
+
* Added support for 304 "file not modified" header to help browser caching. (PHP caching only)
|
475 |
+
* Added French & German translations, updated Italian translation and fixed translation strings.
|
476 |
+
* Sleep 4 seconds between preload urls to reduce load on the server
|
477 |
+
* Updated docs and FAQs.
|
478 |
+
|
479 |
+
## 0.9.9.5 - 2010-09-24
|
480 |
+
|
481 |
+
* Disable compression on on easy setup page. Still causes problems on some hosts.
|
482 |
+
* Remove footerlink on easy setup page.
|
483 |
+
* Don't delete mod_rewrite rules when caching is disabled.
|
484 |
+
* Don't stop users using settings page when in safe mode.
|
485 |
+
|
486 |
+
## 0.9.9.4 - 2010-09-22
|
487 |
+
|
488 |
+
* Settings page split into tabbed pages.
|
489 |
+
* Added new "Easy" settings page for new users.
|
490 |
+
* New PHP caching mode to serve supercached files.
|
491 |
+
* Mobile support fixes.
|
492 |
+
* Added Domain mapping support plugin.
|
493 |
+
* Added "awaiting moderation" plugin that removes that text from posts.
|
494 |
+
* Terminology change. Changed "half on" to "legacy caching".
|
495 |
+
* Fixed cache tester on some installs of WordPress.
|
496 |
+
* Updated documentation
|
497 |
+
* Added $wp_super_cache_lock_down config variable to hide lockdown and directly cached pages admin items.
|
498 |
+
* Preloaded checks if it has stalled and reschedules the job to continue.
|
499 |
+
* Serve the gzipped page when first cached if the client supports compression.
|
500 |
+
* Lots more bug fixes..
|
501 |
+
|
502 |
+
## 0.9.9.3 - 2010-06-16
|
503 |
+
|
504 |
+
* Fixed division by zero error in half on mode.
|
505 |
+
* Always show "delete cache" button.
|
506 |
+
* Fixed "Update mod_rewrite rules" button.
|
507 |
+
* Minor text changes to admin page.
|
508 |
+
|
509 |
+
## 0.9.9.2 - 2010-06-15
|
510 |
+
|
511 |
+
* Forgot to change version number in wp-cache.php
|
512 |
+
|
513 |
+
## 0.9.9.1 - 2010-06-15
|
514 |
+
|
515 |
+
* Added preloading of static cache.
|
516 |
+
* Better mobile plugin support
|
517 |
+
* .htaccess rules can be updated now. Added wpsc_update_htaccess().
|
518 |
+
* Fixed "page on front" cache clearing bug.
|
519 |
+
* Check for wordpress_logged_in cookie so test cookie isn't detected.
|
520 |
+
* Added clear_post_supercache() to clear supercache for a single post.
|
521 |
+
* Put quotes around rewrite rules in case paths have spaces.
|
522 |
+
|
523 |
+
## 0.9.9 - 2010-02-08
|
524 |
+
|
525 |
+
* Added experimental object cache support.
|
526 |
+
* Added Chinese(Traditional) translation by Pseric.
|
527 |
+
* Added FAQ on WP-Cache vs Supercache files.
|
528 |
+
* Use Supercache file if WP-Cache file not found. Useful if mod_rewrite rules are broken or not working.
|
529 |
+
* Get mobile browser list from WP Mobile Edition if found. Warn user if .htaccess out of date.
|
530 |
+
* Make sure writer lock is unlocked after writing cache files.
|
531 |
+
* Added link to developer docs in readme.
|
532 |
+
* Added Ukranian translation by Vitaly Mylo.
|
533 |
+
* Added Upgrade Notice section to readme.
|
534 |
+
* Warn if zlib compression in PHP is enabled.
|
535 |
+
* Added compression troubleshooting answer. Props Vladimir (http://blog.sjinks.pro/)
|
536 |
+
* Added Japanese translation by Tai (http://tekapo.com/)
|
537 |
+
* Updated Italian translation.
|
538 |
+
* Link to WP Mobile Edition from admin page for mobile support.
|
539 |
+
|
540 |
+
## 0.9.8 - 2009-11-18
|
541 |
+
|
542 |
+
* Added Spanish translation by Omi.
|
543 |
+
* Added Italian translation by Gianni Diurno.
|
544 |
+
* Addded advanced debug code to check front page for category problem. Enable by setting $wp_super_cache_advanced_debug to 1 in the config file.
|
545 |
+
* Fixed wordpress vs wordpress_logged_in cookie mismatch in cookie checking function.
|
546 |
+
* Correctly check if WP_CACHE is set or not. PHP is weird.
|
547 |
+
* Added wp_cache_clear_cache() to clear out cache directory.
|
548 |
+
* Only show logged in message when debugging enabled.
|
549 |
+
* Added troubleshooting point 20. PHP vs Apache user.
|
550 |
+
* Fixed problem deleting cache file.
|
551 |
+
* Don't delete cache files when moderated comments are deleted.
|
552 |
+
|
553 |
+
## 0.9.7 - 2009-10-02
|
554 |
+
|
555 |
+
* Fixed problem with blogs in folders.
|
556 |
+
* Added cache file listing and delete links to admin page.
|
557 |
+
* Added "Newest Cached Pages" listing in sidebox.
|
558 |
+
* Made admin page translatable.
|
559 |
+
* Added "How do I make certain parts of the page stay dynamic?" to FAQ.
|
560 |
+
* Advanced: added "late init" feature so that plugin activates on "init". Set $wp_super_cache_late_init to true in config file to use.
|
561 |
+
* Disable supercaching when GET parameters present instead of disabling all caching. Disable on POST (as normal) and preview.
|
562 |
+
* Fixed problem with cron job and mutex filename.
|
563 |
+
* Warn users they must enable mobile device support if rewrite rules detected. Better detection of when to warn that .htaccess rules must be updated (no need when rewrite rules not present)
|
564 |
+
* Advanced: Added "wpsupercache_404" filter. Return true to cache 404 error pages.
|
565 |
+
* Use the wordpress_test_cookie in the cache key.
|
566 |
+
* Show correct number of cache files when compression off.
|
567 |
+
* Fixed problem with PHP safe_mode detection.
|
568 |
+
* Various bugfixes and documentation updates. See Changelog.txt
|
569 |
+
|
570 |
+
## 0.9.6.1 - 2009-07-29
|
571 |
+
|
572 |
+
* Move "not logged in" message init below check for POST.
|
573 |
+
* Add is_admin() check so plugin definitely can't cache the backend.
|
574 |
+
* Add "do not cache" page type to admin page.
|
575 |
+
|
576 |
+
## 0.9.6 - 2009-07-27
|
577 |
+
|
578 |
+
* Add uninstall.php uninstall script.
|
579 |
+
* Updated cache/.htaccess rules (option to upgrade that)
|
580 |
+
* Added FAQ about category and static homepage problem.
|
581 |
+
* Add wp_cache_user_agent_is_rejected() back to wp-cache-phase2.php
|
582 |
+
* Show message for logged in users when caching disable for them.
|
583 |
+
* Check filemtime on correct supercache file
|
584 |
+
|
585 |
+
## 0.9.5 - 2009-07-17
|
586 |
+
|
587 |
+
* Show next and last GC times in minutes, not local time.
|
588 |
+
* Don't serve wp_cache cache files to rejected user agents. Supercache files are still served to them.
|
589 |
+
* If enabled, mobile support now serves php cached files to mobile clients and static cached files to everyone else.
|
590 |
+
* Added checks for "WPSC_DISABLE_COMPRESSION" and "WPSC_DISABLE_LOCKING" constants to disable compression and file locking. For hosting companies primarily.
|
591 |
+
* Added check for DONOTCACHEPAGE constant to avoid caching a page.
|
592 |
+
* Use PHP_DOCUMENT_ROOT when creating .htaccess if necessary.
|
593 |
+
|
594 |
+
## 0.9.4.3 - 2009-04-25
|
595 |
+
|
596 |
+
1. Added "Don't cache for logged in users" option.
|
597 |
+
2. Display file size stats on admin page.
|
598 |
+
3. Clear the cache when profile page is updated.
|
599 |
+
4. Don't cache post previews.
|
600 |
+
5. Added backslashes to rejected URI regex list.
|
601 |
+
6. Fixed problems with posts and comments not refreshing.
|
602 |
+
|
603 |
+
Misc fixes
|
604 |
+
|
605 |
+
[1.8]: https://github.com/Automattic/wp-super-cache/compare/v1.7.9...v1.8
|
LICENSE.txt
ADDED
@@ -0,0 +1,357 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
This program is free software; you can redistribute it and/or modify
|
2 |
+
it under the terms of the GNU General Public License as published by
|
3 |
+
the Free Software Foundation; either version 2 of the License, or
|
4 |
+
(at your option) any later version.
|
5 |
+
|
6 |
+
This program is distributed in the hope that it will be useful,
|
7 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
8 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
9 |
+
GNU General Public License for more details.
|
10 |
+
|
11 |
+
You should have received a copy of the GNU General Public License
|
12 |
+
along with this program; if not, write to the Free Software
|
13 |
+
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
14 |
+
|
15 |
+
|
16 |
+
===================================
|
17 |
+
|
18 |
+
|
19 |
+
GNU GENERAL PUBLIC LICENSE
|
20 |
+
Version 2, June 1991
|
21 |
+
|
22 |
+
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
23 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
24 |
+
Everyone is permitted to copy and distribute verbatim copies
|
25 |
+
of this license document, but changing it is not allowed.
|
26 |
+
|
27 |
+
Preamble
|
28 |
+
|
29 |
+
The licenses for most software are designed to take away your
|
30 |
+
freedom to share and change it. By contrast, the GNU General Public
|
31 |
+
License is intended to guarantee your freedom to share and change free
|
32 |
+
software--to make sure the software is free for all its users. This
|
33 |
+
General Public License applies to most of the Free Software
|
34 |
+
Foundation's software and to any other program whose authors commit to
|
35 |
+
using it. (Some other Free Software Foundation software is covered by
|
36 |
+
the GNU Lesser General Public License instead.) You can apply it to
|
37 |
+
your programs, too.
|
38 |
+
|
39 |
+
When we speak of free software, we are referring to freedom, not
|
40 |
+
price. Our General Public Licenses are designed to make sure that you
|
41 |
+
have the freedom to distribute copies of free software (and charge for
|
42 |
+
this service if you wish), that you receive source code or can get it
|
43 |
+
if you want it, that you can change the software or use pieces of it
|
44 |
+
in new free programs; and that you know you can do these things.
|
45 |
+
|
46 |
+
To protect your rights, we need to make restrictions that forbid
|
47 |
+
anyone to deny you these rights or to ask you to surrender the rights.
|
48 |
+
These restrictions translate to certain responsibilities for you if you
|
49 |
+
distribute copies of the software, or if you modify it.
|
50 |
+
|
51 |
+
For example, if you distribute copies of such a program, whether
|
52 |
+
gratis or for a fee, you must give the recipients all the rights that
|
53 |
+
you have. You must make sure that they, too, receive or can get the
|
54 |
+
source code. And you must show them these terms so they know their
|
55 |
+
rights.
|
56 |
+
|
57 |
+
We protect your rights with two steps: (1) copyright the software, and
|
58 |
+
(2) offer you this license which gives you legal permission to copy,
|
59 |
+
distribute and/or modify the software.
|
60 |
+
|
61 |
+
Also, for each author's protection and ours, we want to make certain
|
62 |
+
that everyone understands that there is no warranty for this free
|
63 |
+
software. If the software is modified by someone else and passed on, we
|
64 |
+
want its recipients to know that what they have is not the original, so
|
65 |
+
that any problems introduced by others will not reflect on the original
|
66 |
+
authors' reputations.
|
67 |
+
|
68 |
+
Finally, any free program is threatened constantly by software
|
69 |
+
patents. We wish to avoid the danger that redistributors of a free
|
70 |
+
program will individually obtain patent licenses, in effect making the
|
71 |
+
program proprietary. To prevent this, we have made it clear that any
|
72 |
+
patent must be licensed for everyone's free use or not licensed at all.
|
73 |
+
|
74 |
+
The precise terms and conditions for copying, distribution and
|
75 |
+
modification follow.
|
76 |
+
|
77 |
+
GNU GENERAL PUBLIC LICENSE
|
78 |
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
79 |
+
|
80 |
+
0. This License applies to any program or other work which contains
|
81 |
+
a notice placed by the copyright holder saying it may be distributed
|
82 |
+
under the terms of this General Public License. The "Program", below,
|
83 |
+
refers to any such program or work, and a "work based on the Program"
|
84 |
+
means either the Program or any derivative work under copyright law:
|
85 |
+
that is to say, a work containing the Program or a portion of it,
|
86 |
+
either verbatim or with modifications and/or translated into another
|
87 |
+
language. (Hereinafter, translation is included without limitation in
|
88 |
+
the term "modification".) Each licensee is addressed as "you".
|
89 |
+
|
90 |
+
Activities other than copying, distribution and modification are not
|
91 |
+
covered by this License; they are outside its scope. The act of
|
92 |
+
running the Program is not restricted, and the output from the Program
|
93 |
+
is covered only if its contents constitute a work based on the
|
94 |
+
Program (independent of having been made by running the Program).
|
95 |
+
Whether that is true depends on what the Program does.
|
96 |
+
|
97 |
+
1. You may copy and distribute verbatim copies of the Program's
|
98 |
+
source code as you receive it, in any medium, provided that you
|
99 |
+
conspicuously and appropriately publish on each copy an appropriate
|
100 |
+
copyright notice and disclaimer of warranty; keep intact all the
|
101 |
+
notices that refer to this License and to the absence of any warranty;
|
102 |
+
and give any other recipients of the Program a copy of this License
|
103 |
+
along with the Program.
|
104 |
+
|
105 |
+
You may charge a fee for the physical act of transferring a copy, and
|
106 |
+
you may at your option offer warranty protection in exchange for a fee.
|
107 |
+
|
108 |
+
2. You may modify your copy or copies of the Program or any portion
|
109 |
+
of it, thus forming a work based on the Program, and copy and
|
110 |
+
distribute such modifications or work under the terms of Section 1
|
111 |
+
above, provided that you also meet all of these conditions:
|
112 |
+
|
113 |
+
a) You must cause the modified files to carry prominent notices
|
114 |
+
stating that you changed the files and the date of any change.
|
115 |
+
|
116 |
+
b) You must cause any work that you distribute or publish, that in
|
117 |
+
whole or in part contains or is derived from the Program or any
|
118 |
+
part thereof, to be licensed as a whole at no charge to all third
|
119 |
+
parties under the terms of this License.
|
120 |
+
|
121 |
+
c) If the modified program normally reads commands interactively
|
122 |
+
when run, you must cause it, when started running for such
|
123 |
+
interactive use in the most ordinary way, to print or display an
|
124 |
+
announcement including an appropriate copyright notice and a
|
125 |
+
notice that there is no warranty (or else, saying that you provide
|
126 |
+
a warranty) and that users may redistribute the program under
|
127 |
+
these conditions, and telling the user how to view a copy of this
|
128 |
+
License. (Exception: if the Program itself is interactive but
|
129 |
+
does not normally print such an announcement, your work based on
|
130 |
+
the Program is not required to print an announcement.)
|
131 |
+
|
132 |
+
These requirements apply to the modified work as a whole. If
|
133 |
+
identifiable sections of that work are not derived from the Program,
|
134 |
+
and can be reasonably considered independent and separate works in
|
135 |
+
themselves, then this License, and its terms, do not apply to those
|
136 |
+
sections when you distribute them as separate works. But when you
|
137 |
+
distribute the same sections as part of a whole which is a work based
|
138 |
+
on the Program, the distribution of the whole must be on the terms of
|
139 |
+
this License, whose permissions for other licensees extend to the
|
140 |
+
entire whole, and thus to each and every part regardless of who wrote it.
|
141 |
+
|
142 |
+
Thus, it is not the intent of this section to claim rights or contest
|
143 |
+
your rights to work written entirely by you; rather, the intent is to
|
144 |
+
exercise the right to control the distribution of derivative or
|
145 |
+
collective works based on the Program.
|
146 |
+
|
147 |
+
In addition, mere aggregation of another work not based on the Program
|
148 |
+
with the Program (or with a work based on the Program) on a volume of
|
149 |
+
a storage or distribution medium does not bring the other work under
|
150 |
+
the scope of this License.
|
151 |
+
|
152 |
+
3. You may copy and distribute the Program (or a work based on it,
|
153 |
+
under Section 2) in object code or executable form under the terms of
|
154 |
+
Sections 1 and 2 above provided that you also do one of the following:
|
155 |
+
|
156 |
+
a) Accompany it with the complete corresponding machine-readable
|
157 |
+
source code, which must be distributed under the terms of Sections
|
158 |
+
1 and 2 above on a medium customarily used for software interchange; or,
|
159 |
+
|
160 |
+
b) Accompany it with a written offer, valid for at least three
|
161 |
+
years, to give any third party, for a charge no more than your
|
162 |
+
cost of physically performing source distribution, a complete
|
163 |
+
machine-readable copy of the corresponding source code, to be
|
164 |
+
distributed under the terms of Sections 1 and 2 above on a medium
|
165 |
+
customarily used for software interchange; or,
|
166 |
+
|
167 |
+
c) Accompany it with the information you received as to the offer
|
168 |
+
to distribute corresponding source code. (This alternative is
|
169 |
+
allowed only for noncommercial distribution and only if you
|
170 |
+
received the program in object code or executable form with such
|
171 |
+
an offer, in accord with Subsection b above.)
|
172 |
+
|
173 |
+
The source code for a work means the preferred form of the work for
|
174 |
+
making modifications to it. For an executable work, complete source
|
175 |
+
code means all the source code for all modules it contains, plus any
|
176 |
+
associated interface definition files, plus the scripts used to
|
177 |
+
control compilation and installation of the executable. However, as a
|
178 |
+
special exception, the source code distributed need not include
|
179 |
+
anything that is normally distributed (in either source or binary
|
180 |
+
form) with the major components (compiler, kernel, and so on) of the
|
181 |
+
operating system on which the executable runs, unless that component
|
182 |
+
itself accompanies the executable.
|
183 |
+
|
184 |
+
If distribution of executable or object code is made by offering
|
185 |
+
access to copy from a designated place, then offering equivalent
|
186 |
+
access to copy the source code from the same place counts as
|
187 |
+
distribution of the source code, even though third parties are not
|
188 |
+
compelled to copy the source along with the object code.
|
189 |
+
|
190 |
+
4. You may not copy, modify, sublicense, or distribute the Program
|
191 |
+
except as expressly provided under this License. Any attempt
|
192 |
+
otherwise to copy, modify, sublicense or distribute the Program is
|
193 |
+
void, and will automatically terminate your rights under this License.
|
194 |
+
However, parties who have received copies, or rights, from you under
|
195 |
+
this License will not have their licenses terminated so long as such
|
196 |
+
parties remain in full compliance.
|
197 |
+
|
198 |
+
5. You are not required to accept this License, since you have not
|
199 |
+
signed it. However, nothing else grants you permission to modify or
|
200 |
+
distribute the Program or its derivative works. These actions are
|
201 |
+
prohibited by law if you do not accept this License. Therefore, by
|
202 |
+
modifying or distributing the Program (or any work based on the
|
203 |
+
Program), you indicate your acceptance of this License to do so, and
|
204 |
+
all its terms and conditions for copying, distributing or modifying
|
205 |
+
the Program or works based on it.
|
206 |
+
|
207 |
+
6. Each time you redistribute the Program (or any work based on the
|
208 |
+
Program), the recipient automatically receives a license from the
|
209 |
+
original licensor to copy, distribute or modify the Program subject to
|
210 |
+
these terms and conditions. You may not impose any further
|
211 |
+
restrictions on the recipients' exercise of the rights granted herein.
|
212 |
+
You are not responsible for enforcing compliance by third parties to
|
213 |
+
this License.
|
214 |
+
|
215 |
+
7. If, as a consequence of a court judgment or allegation of patent
|
216 |
+
infringement or for any other reason (not limited to patent issues),
|
217 |
+
conditions are imposed on you (whether by court order, agreement or
|
218 |
+
otherwise) that contradict the conditions of this License, they do not
|
219 |
+
excuse you from the conditions of this License. If you cannot
|
220 |
+
distribute so as to satisfy simultaneously your obligations under this
|
221 |
+
License and any other pertinent obligations, then as a consequence you
|
222 |
+
may not distribute the Program at all. For example, if a patent
|
223 |
+
license would not permit royalty-free redistribution of the Program by
|
224 |
+
all those who receive copies directly or indirectly through you, then
|
225 |
+
the only way you could satisfy both it and this License would be to
|
226 |
+
refrain entirely from distribution of the Program.
|
227 |
+
|
228 |
+
If any portion of this section is held invalid or unenforceable under
|
229 |
+
any particular circumstance, the balance of the section is intended to
|
230 |
+
apply and the section as a whole is intended to apply in other
|
231 |
+
circumstances.
|
232 |
+
|
233 |
+
It is not the purpose of this section to induce you to infringe any
|
234 |
+
patents or other property right claims or to contest validity of any
|
235 |
+
such claims; this section has the sole purpose of protecting the
|
236 |
+
integrity of the free software distribution system, which is
|
237 |
+
implemented by public license practices. Many people have made
|
238 |
+
generous contributions to the wide range of software distributed
|
239 |
+
through that system in reliance on consistent application of that
|
240 |
+
system; it is up to the author/donor to decide if he or she is willing
|
241 |
+
to distribute software through any other system and a licensee cannot
|
242 |
+
impose that choice.
|
243 |
+
|
244 |
+
This section is intended to make thoroughly clear what is believed to
|
245 |
+
be a consequence of the rest of this License.
|
246 |
+
|
247 |
+
8. If the distribution and/or use of the Program is restricted in
|
248 |
+
certain countries either by patents or by copyrighted interfaces, the
|
249 |
+
original copyright holder who places the Program under this License
|
250 |
+
may add an explicit geographical distribution limitation excluding
|
251 |
+
those countries, so that distribution is permitted only in or among
|
252 |
+
countries not thus excluded. In such case, this License incorporates
|
253 |
+
the limitation as if written in the body of this License.
|
254 |
+
|
255 |
+
9. The Free Software Foundation may publish revised and/or new versions
|
256 |
+
of the General Public License from time to time. Such new versions will
|
257 |
+
be similar in spirit to the present version, but may differ in detail to
|
258 |
+
address new problems or concerns.
|
259 |
+
|
260 |
+
Each version is given a distinguishing version number. If the Program
|
261 |
+
specifies a version number of this License which applies to it and "any
|
262 |
+
later version", you have the option of following the terms and conditions
|
263 |
+
either of that version or of any later version published by the Free
|
264 |
+
Software Foundation. If the Program does not specify a version number of
|
265 |
+
this License, you may choose any version ever published by the Free Software
|
266 |
+
Foundation.
|
267 |
+
|
268 |
+
10. If you wish to incorporate parts of the Program into other free
|
269 |
+
programs whose distribution conditions are different, write to the author
|
270 |
+
to ask for permission. For software which is copyrighted by the Free
|
271 |
+
Software Foundation, write to the Free Software Foundation; we sometimes
|
272 |
+
make exceptions for this. Our decision will be guided by the two goals
|
273 |
+
of preserving the free status of all derivatives of our free software and
|
274 |
+
of promoting the sharing and reuse of software generally.
|
275 |
+
|
276 |
+
NO WARRANTY
|
277 |
+
|
278 |
+
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
279 |
+
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
280 |
+
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
281 |
+
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
282 |
+
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
283 |
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
284 |
+
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
285 |
+
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
286 |
+
REPAIR OR CORRECTION.
|
287 |
+
|
288 |
+
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
289 |
+
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
290 |
+
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
291 |
+
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
292 |
+
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
293 |
+
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
294 |
+
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
295 |
+
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
296 |
+
POSSIBILITY OF SUCH DAMAGES.
|
297 |
+
|
298 |
+
END OF TERMS AND CONDITIONS
|
299 |
+
|
300 |
+
How to Apply These Terms to Your New Programs
|
301 |
+
|
302 |
+
If you develop a new program, and you want it to be of the greatest
|
303 |
+
possible use to the public, the best way to achieve this is to make it
|
304 |
+
free software which everyone can redistribute and change under these terms.
|
305 |
+
|
306 |
+
To do so, attach the following notices to the program. It is safest
|
307 |
+
to attach them to the start of each source file to most effectively
|
308 |
+
convey the exclusion of warranty; and each file should have at least
|
309 |
+
the "copyright" line and a pointer to where the full notice is found.
|
310 |
+
|
311 |
+
<one line to give the program's name and a brief idea of what it does.>
|
312 |
+
Copyright (C) <year> <name of author>
|
313 |
+
|
314 |
+
This program is free software; you can redistribute it and/or modify
|
315 |
+
it under the terms of the GNU General Public License as published by
|
316 |
+
the Free Software Foundation; either version 2 of the License, or
|
317 |
+
(at your option) any later version.
|
318 |
+
|
319 |
+
This program is distributed in the hope that it will be useful,
|
320 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
321 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
322 |
+
GNU General Public License for more details.
|
323 |
+
|
324 |
+
You should have received a copy of the GNU General Public License along
|
325 |
+
with this program; if not, write to the Free Software Foundation, Inc.,
|
326 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
327 |
+
|
328 |
+
Also add information on how to contact you by electronic and paper mail.
|
329 |
+
|
330 |
+
If the program is interactive, make it output a short notice like this
|
331 |
+
when it starts in an interactive mode:
|
332 |
+
|
333 |
+
Gnomovision version 69, Copyright (C) year name of author
|
334 |
+
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
335 |
+
This is free software, and you are welcome to redistribute it
|
336 |
+
under certain conditions; type `show c' for details.
|
337 |
+
|
338 |
+
The hypothetical commands `show w' and `show c' should show the appropriate
|
339 |
+
parts of the General Public License. Of course, the commands you use may
|
340 |
+
be called something other than `show w' and `show c'; they could even be
|
341 |
+
mouse-clicks or menu items--whatever suits your program.
|
342 |
+
|
343 |
+
You should also get your employer (if you work as a programmer) or your
|
344 |
+
school, if any, to sign a "copyright disclaimer" for the program, if
|
345 |
+
necessary. Here is a sample; alter the names:
|
346 |
+
|
347 |
+
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
348 |
+
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
349 |
+
|
350 |
+
<signature of Ty Coon>, 1 April 1989
|
351 |
+
Ty Coon, President of Vice
|
352 |
+
|
353 |
+
This General Public License does not permit incorporating your program into
|
354 |
+
proprietary programs. If your program is a subroutine library, you may
|
355 |
+
consider it more useful to permit linking proprietary applications with the
|
356 |
+
library. If this is what you want to do, use the GNU Lesser General
|
357 |
+
Public License instead of this License.
|
README.md
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# super-cache
|
2 |
+
|
3 |
+
A very fast caching engine for WordPress that produces static html files.
|
4 |
+
|
5 |
+
## How to install super-cache
|
6 |
+
|
7 |
+
### Installation From Git Repo
|
8 |
+
|
9 |
+
## Contribute
|
10 |
+
|
11 |
+
## Get Help
|
12 |
+
More will be added here soon.
|
13 |
+
## Security
|
14 |
+
|
15 |
+
Need to report a security vulnerability? Go to [https://automattic.com/security/](https://automattic.com/security/) or directly to our security bug bounty site [https://hackerone.com/automattic](https://hackerone.com/automattic).
|
16 |
+
|
17 |
+
## License
|
18 |
+
|
19 |
+
super-cache is licensed under [GNU General Public License v2 (or later)](./LICENSE.txt)
|
20 |
+
|
SECURITY.md
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Security Policy
|
2 |
+
|
3 |
+
Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/).
|
4 |
+
|
5 |
+
## Supported Versions
|
6 |
+
|
7 |
+
Generally, only the latest version of Jetpack has continued support. If a critical vulnerability is found in the current version of Jetpack, we may opt to backport any patches to previous versions.
|
8 |
+
|
9 |
+
## Reporting a Vulnerability
|
10 |
+
|
11 |
+
[Jetpack](https://jetpack.com/) is an open-source plugin for WordPress. Our HackerOne program covers the plugin software, as well as a variety of related projects and infrastructure.
|
12 |
+
|
13 |
+
**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.**
|
14 |
+
|
15 |
+
Our most critical targets are:
|
16 |
+
|
17 |
+
* Jetpack and the Jetpack composer packages (all within this repo)
|
18 |
+
* Jetpack.com -- the primary marketing site.
|
19 |
+
* cloud.jetpack.com -- a management site.
|
20 |
+
* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites.
|
21 |
+
|
22 |
+
For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic).
|
23 |
+
|
24 |
+
_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._
|
25 |
+
|
26 |
+
## Guidelines
|
27 |
+
|
28 |
+
We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines:
|
29 |
+
|
30 |
+
* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines).
|
31 |
+
* Pen-testing Production:
|
32 |
+
* Please **setup a local environment** instead whenever possible. Most of our code is open source (see above).
|
33 |
+
* If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC.
|
34 |
+
* **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels.
|
35 |
+
* To be eligible for a bounty, all of these guidelines must be followed.
|
36 |
+
* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability.
|
37 |
+
|
38 |
+
We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties.
|
composer.json
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"name": "automattic/wp-super-cache",
|
3 |
+
"description": "A very fast caching engine for WordPress that produces static html files.",
|
4 |
+
"type": "wordpress-plugin",
|
5 |
+
"license": "GPL-2.0-or-later",
|
6 |
+
"require": {},
|
7 |
+
"require-dev": {
|
8 |
+
"yoast/phpunit-polyfills": "1.0.3",
|
9 |
+
"automattic/jetpack-changelogger": "^3.2"
|
10 |
+
},
|
11 |
+
"autoload": {
|
12 |
+
"classmap": [
|
13 |
+
"src/"
|
14 |
+
]
|
15 |
+
},
|
16 |
+
"scripts": {
|
17 |
+
"phpunit": [
|
18 |
+
"./vendor/phpunit/phpunit/phpunit --colors=always"
|
19 |
+
],
|
20 |
+
"test-coverage": [
|
21 |
+
"php -dpcov.directory=. ./vendor/bin/phpunit --coverage-clover \"$COVERAGE_DIR/clover.xml\""
|
22 |
+
],
|
23 |
+
"test-php": [
|
24 |
+
"@composer phpunit"
|
25 |
+
],
|
26 |
+
"build-production": "echo 'Add your build step to composer.json, please!'",
|
27 |
+
"build-development": "echo 'Add your build step to composer.json, please!'"
|
28 |
+
},
|
29 |
+
"repositories": [],
|
30 |
+
"minimum-stability": "dev",
|
31 |
+
"prefer-stable": true,
|
32 |
+
"extra": {
|
33 |
+
"mirror-repo": "Automattic/wp-super-cache",
|
34 |
+
"changelogger": {
|
35 |
+
"link-template": "https://github.com/Automattic/wp-super-cache/compare/v${old}...v${new}",
|
36 |
+
"versioning": "wordpress"
|
37 |
+
},
|
38 |
+
"release-branch-prefix": "super-cache",
|
39 |
+
"wp-plugin-slug": "wp-super-cache"
|
40 |
+
}
|
41 |
+
}
|
composer.lock
ADDED
@@ -0,0 +1,2913 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"_readme": [
|
3 |
+
"This file locks the dependencies of your project to a known state",
|
4 |
+
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
5 |
+
"This file is @generated automatically"
|
6 |
+
],
|
7 |
+
"content-hash": "b2c692cc6ab38f6d0b21ff9104cc0c16",
|
8 |
+
"packages": [],
|
9 |
+
"packages-dev": [
|
10 |
+
{
|
11 |
+
"name": "automattic/jetpack-changelogger",
|
12 |
+
"version": "v3.2.0",
|
13 |
+
"source": {
|
14 |
+
"type": "git",
|
15 |
+
"url": "https://github.com/Automattic/jetpack-changelogger.git",
|
16 |
+
"reference": "56cb628fc9ddfca6785f24c2ec598a038da4d9de"
|
17 |
+
},
|
18 |
+
"dist": {
|
19 |
+
"type": "zip",
|
20 |
+
"url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/56cb628fc9ddfca6785f24c2ec598a038da4d9de",
|
21 |
+
"reference": "56cb628fc9ddfca6785f24c2ec598a038da4d9de",
|
22 |
+
"shasum": ""
|
23 |
+
},
|
24 |
+
"require": {
|
25 |
+
"php": ">=5.6",
|
26 |
+
"symfony/console": "^3.4 || ^5.2 || ^6.0",
|
27 |
+
"symfony/process": "^3.4 || ^5.2 || ^6.0",
|
28 |
+
"wikimedia/at-ease": "^1.2 || ^2.0"
|
29 |
+
},
|
30 |
+
"require-dev": {
|
31 |
+
"wikimedia/testing-access-wrapper": "^1.0 || ^2.0",
|
32 |
+
"yoast/phpunit-polyfills": "1.0.3"
|
33 |
+
},
|
34 |
+
"bin": [
|
35 |
+
"bin/changelogger"
|
36 |
+
],
|
37 |
+
"type": "project",
|
38 |
+
"extra": {
|
39 |
+
"autotagger": true,
|
40 |
+
"branch-alias": {
|
41 |
+
"dev-trunk": "3.2.x-dev"
|
42 |
+
},
|
43 |
+
"mirror-repo": "Automattic/jetpack-changelogger",
|
44 |
+
"version-constants": {
|
45 |
+
"::VERSION": "src/Application.php"
|
46 |
+
},
|
47 |
+
"changelogger": {
|
48 |
+
"link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}"
|
49 |
+
}
|
50 |
+
},
|
51 |
+
"autoload": {
|
52 |
+
"psr-4": {
|
53 |
+
"Automattic\\Jetpack\\Changelog\\": "lib",
|
54 |
+
"Automattic\\Jetpack\\Changelogger\\": "src"
|
55 |
+
}
|
56 |
+
},
|
57 |
+
"notification-url": "https://packagist.org/downloads/",
|
58 |
+
"license": [
|
59 |
+
"GPL-2.0-or-later"
|
60 |
+
],
|
61 |
+
"description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.",
|
62 |
+
"support": {
|
63 |
+
"source": "https://github.com/Automattic/jetpack-changelogger/tree/v3.2.0"
|
64 |
+
},
|
65 |
+
"time": "2022-07-26T13:40:47+00:00"
|
66 |
+
},
|
67 |
+
{
|
68 |
+
"name": "doctrine/instantiator",
|
69 |
+
"version": "1.4.1",
|
70 |
+
"source": {
|
71 |
+
"type": "git",
|
72 |
+
"url": "https://github.com/doctrine/instantiator.git",
|
73 |
+
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
|
74 |
+
},
|
75 |
+
"dist": {
|
76 |
+
"type": "zip",
|
77 |
+
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
|
78 |
+
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
|
79 |
+
"shasum": ""
|
80 |
+
},
|
81 |
+
"require": {
|
82 |
+
"php": "^7.1 || ^8.0"
|
83 |
+
},
|
84 |
+
"require-dev": {
|
85 |
+
"doctrine/coding-standard": "^9",
|
86 |
+
"ext-pdo": "*",
|
87 |
+
"ext-phar": "*",
|
88 |
+
"phpbench/phpbench": "^0.16 || ^1",
|
89 |
+
"phpstan/phpstan": "^1.4",
|
90 |
+
"phpstan/phpstan-phpunit": "^1",
|
91 |
+
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
92 |
+
"vimeo/psalm": "^4.22"
|
93 |
+
},
|
94 |
+
"type": "library",
|
95 |
+
"autoload": {
|
96 |
+
"psr-4": {
|
97 |
+
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
|
98 |
+
}
|
99 |
+
},
|
100 |
+
"notification-url": "https://packagist.org/downloads/",
|
101 |
+
"license": [
|
102 |
+
"MIT"
|
103 |
+
],
|
104 |
+
"authors": [
|
105 |
+
{
|
106 |
+
"name": "Marco Pivetta",
|
107 |
+
"email": "ocramius@gmail.com",
|
108 |
+
"homepage": "https://ocramius.github.io/"
|
109 |
+
}
|
110 |
+
],
|
111 |
+
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
|
112 |
+
"homepage": "https://www.doctrine-project.org/projects/instantiator.html",
|
113 |
+
"keywords": [
|
114 |
+
"constructor",
|
115 |
+
"instantiate"
|
116 |
+
],
|
117 |
+
"support": {
|
118 |
+
"issues": "https://github.com/doctrine/instantiator/issues",
|
119 |
+
"source": "https://github.com/doctrine/instantiator/tree/1.4.1"
|
120 |
+
},
|
121 |
+
"funding": [
|
122 |
+
{
|
123 |
+
"url": "https://www.doctrine-project.org/sponsorship.html",
|
124 |
+
"type": "custom"
|
125 |
+
},
|
126 |
+
{
|
127 |
+
"url": "https://www.patreon.com/phpdoctrine",
|
128 |
+
"type": "patreon"
|
129 |
+
},
|
130 |
+
{
|
131 |
+
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
|
132 |
+
"type": "tidelift"
|
133 |
+
}
|
134 |
+
],
|
135 |
+
"time": "2022-03-03T08:28:38+00:00"
|
136 |
+
},
|
137 |
+
{
|
138 |
+
"name": "myclabs/deep-copy",
|
139 |
+
"version": "1.11.0",
|
140 |
+
"source": {
|
141 |
+
"type": "git",
|
142 |
+
"url": "https://github.com/myclabs/DeepCopy.git",
|
143 |
+
"reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
|
144 |
+
},
|
145 |
+
"dist": {
|
146 |
+
"type": "zip",
|
147 |
+
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
|
148 |
+
"reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
|
149 |
+
"shasum": ""
|
150 |
+
},
|
151 |
+
"require": {
|
152 |
+
"php": "^7.1 || ^8.0"
|
153 |
+
},
|
154 |
+
"conflict": {
|
155 |
+
"doctrine/collections": "<1.6.8",
|
156 |
+
"doctrine/common": "<2.13.3 || >=3,<3.2.2"
|
157 |
+
},
|
158 |
+
"require-dev": {
|
159 |
+
"doctrine/collections": "^1.6.8",
|
160 |
+
"doctrine/common": "^2.13.3 || ^3.2.2",
|
161 |
+
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
|
162 |
+
},
|
163 |
+
"type": "library",
|
164 |
+
"autoload": {
|
165 |
+
"files": [
|
166 |
+
"src/DeepCopy/deep_copy.php"
|
167 |
+
],
|
168 |
+
"psr-4": {
|
169 |
+
"DeepCopy\\": "src/DeepCopy/"
|
170 |
+
}
|
171 |
+
},
|
172 |
+
"notification-url": "https://packagist.org/downloads/",
|
173 |
+
"license": [
|
174 |
+
"MIT"
|
175 |
+
],
|
176 |
+
"description": "Create deep copies (clones) of your objects",
|
177 |
+
"keywords": [
|
178 |
+
"clone",
|
179 |
+
"copy",
|
180 |
+
"duplicate",
|
181 |
+
"object",
|
182 |
+
"object graph"
|
183 |
+
],
|
184 |
+
"support": {
|
185 |
+
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
186 |
+
"source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
|
187 |
+
},
|
188 |
+
"funding": [
|
189 |
+
{
|
190 |
+
"url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
|
191 |
+
"type": "tidelift"
|
192 |
+
}
|
193 |
+
],
|
194 |
+
"time": "2022-03-03T13:19:32+00:00"
|
195 |
+
},
|
196 |
+
{
|
197 |
+
"name": "nikic/php-parser",
|
198 |
+
"version": "v4.14.0",
|
199 |
+
"source": {
|
200 |
+
"type": "git",
|
201 |
+
"url": "https://github.com/nikic/PHP-Parser.git",
|
202 |
+
"reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1"
|
203 |
+
},
|
204 |
+
"dist": {
|
205 |
+
"type": "zip",
|
206 |
+
"url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1",
|
207 |
+
"reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1",
|
208 |
+
"shasum": ""
|
209 |
+
},
|
210 |
+
"require": {
|
211 |
+
"ext-tokenizer": "*",
|
212 |
+
"php": ">=7.0"
|
213 |
+
},
|
214 |
+
"require-dev": {
|
215 |
+
"ircmaxell/php-yacc": "^0.0.7",
|
216 |
+
"phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
|
217 |
+
},
|
218 |
+
"bin": [
|
219 |
+
"bin/php-parse"
|
220 |
+
],
|
221 |
+
"type": "library",
|
222 |
+
"extra": {
|
223 |
+
"branch-alias": {
|
224 |
+
"dev-master": "4.9-dev"
|
225 |
+
}
|
226 |
+
},
|
227 |
+
"autoload": {
|
228 |
+
"psr-4": {
|
229 |
+
"PhpParser\\": "lib/PhpParser"
|
230 |
+
}
|
231 |
+
},
|
232 |
+
"notification-url": "https://packagist.org/downloads/",
|
233 |
+
"license": [
|
234 |
+
"BSD-3-Clause"
|
235 |
+
],
|
236 |
+
"authors": [
|
237 |
+
{
|
238 |
+
"name": "Nikita Popov"
|
239 |
+
}
|
240 |
+
],
|
241 |
+
"description": "A PHP parser written in PHP",
|
242 |
+
"keywords": [
|
243 |
+
"parser",
|
244 |
+
"php"
|
245 |
+
],
|
246 |
+
"support": {
|
247 |
+
"issues": "https://github.com/nikic/PHP-Parser/issues",
|
248 |
+
"source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0"
|
249 |
+
},
|
250 |
+
"time": "2022-05-31T20:59:12+00:00"
|
251 |
+
},
|
252 |
+
{
|
253 |
+
"name": "phar-io/manifest",
|
254 |
+
"version": "2.0.3",
|
255 |
+
"source": {
|
256 |
+
"type": "git",
|
257 |
+
"url": "https://github.com/phar-io/manifest.git",
|
258 |
+
"reference": "97803eca37d319dfa7826cc2437fc020857acb53"
|
259 |
+
},
|
260 |
+
"dist": {
|
261 |
+
"type": "zip",
|
262 |
+
"url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
|
263 |
+
"reference": "97803eca37d319dfa7826cc2437fc020857acb53",
|
264 |
+
"shasum": ""
|
265 |
+
},
|
266 |
+
"require": {
|
267 |
+
"ext-dom": "*",
|
268 |
+
"ext-phar": "*",
|
269 |
+
"ext-xmlwriter": "*",
|
270 |
+
"phar-io/version": "^3.0.1",
|
271 |
+
"php": "^7.2 || ^8.0"
|
272 |
+
},
|
273 |
+
"type": "library",
|
274 |
+
"extra": {
|
275 |
+
"branch-alias": {
|
276 |
+
"dev-master": "2.0.x-dev"
|
277 |
+
}
|
278 |
+
},
|
279 |
+
"autoload": {
|
280 |
+
"classmap": [
|
281 |
+
"src/"
|
282 |
+
]
|
283 |
+
},
|
284 |
+
"notification-url": "https://packagist.org/downloads/",
|
285 |
+
"license": [
|
286 |
+
"BSD-3-Clause"
|
287 |
+
],
|
288 |
+
"authors": [
|
289 |
+
{
|
290 |
+
"name": "Arne Blankerts",
|
291 |
+
"email": "arne@blankerts.de",
|
292 |
+
"role": "Developer"
|
293 |
+
},
|
294 |
+
{
|
295 |
+
"name": "Sebastian Heuer",
|
296 |
+
"email": "sebastian@phpeople.de",
|
297 |
+
"role": "Developer"
|
298 |
+
},
|
299 |
+
{
|
300 |
+
"name": "Sebastian Bergmann",
|
301 |
+
"email": "sebastian@phpunit.de",
|
302 |
+
"role": "Developer"
|
303 |
+
}
|
304 |
+
],
|
305 |
+
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
|
306 |
+
"support": {
|
307 |
+
"issues": "https://github.com/phar-io/manifest/issues",
|
308 |
+
"source": "https://github.com/phar-io/manifest/tree/2.0.3"
|
309 |
+
},
|
310 |
+
"time": "2021-07-20T11:28:43+00:00"
|
311 |
+
},
|
312 |
+
{
|
313 |
+
"name": "phar-io/version",
|
314 |
+
"version": "3.2.1",
|
315 |
+
"source": {
|
316 |
+
"type": "git",
|
317 |
+
"url": "https://github.com/phar-io/version.git",
|
318 |
+
"reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
|
319 |
+
},
|
320 |
+
"dist": {
|
321 |
+
"type": "zip",
|
322 |
+
"url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
|
323 |
+
"reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
|
324 |
+
"shasum": ""
|
325 |
+
},
|
326 |
+
"require": {
|
327 |
+
"php": "^7.2 || ^8.0"
|
328 |
+
},
|
329 |
+
"type": "library",
|
330 |
+
"autoload": {
|
331 |
+
"classmap": [
|
332 |
+
"src/"
|
333 |
+
]
|
334 |
+
},
|
335 |
+
"notification-url": "https://packagist.org/downloads/",
|
336 |
+
"license": [
|
337 |
+
"BSD-3-Clause"
|
338 |
+
],
|
339 |
+
"authors": [
|
340 |
+
{
|
341 |
+
"name": "Arne Blankerts",
|
342 |
+
"email": "arne@blankerts.de",
|
343 |
+
"role": "Developer"
|
344 |
+
},
|
345 |
+
{
|
346 |
+
"name": "Sebastian Heuer",
|
347 |
+
"email": "sebastian@phpeople.de",
|
348 |
+
"role": "Developer"
|
349 |
+
},
|
350 |
+
{
|
351 |
+
"name": "Sebastian Bergmann",
|
352 |
+
"email": "sebastian@phpunit.de",
|
353 |
+
"role": "Developer"
|
354 |
+
}
|
355 |
+
],
|
356 |
+
"description": "Library for handling version information and constraints",
|
357 |
+
"support": {
|
358 |
+
"issues": "https://github.com/phar-io/version/issues",
|
359 |
+
"source": "https://github.com/phar-io/version/tree/3.2.1"
|
360 |
+
},
|
361 |
+
"time": "2022-02-21T01:04:05+00:00"
|
362 |
+
},
|
363 |
+
{
|
364 |
+
"name": "phpdocumentor/reflection-common",
|
365 |
+
"version": "2.2.0",
|
366 |
+
"source": {
|
367 |
+
"type": "git",
|
368 |
+
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
|
369 |
+
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
|
370 |
+
},
|
371 |
+
"dist": {
|
372 |
+
"type": "zip",
|
373 |
+
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
|
374 |
+
"reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
|
375 |
+
"shasum": ""
|
376 |
+
},
|
377 |
+
"require": {
|
378 |
+
"php": "^7.2 || ^8.0"
|
379 |
+
},
|
380 |
+
"type": "library",
|
381 |
+
"extra": {
|
382 |
+
"branch-alias": {
|
383 |
+
"dev-2.x": "2.x-dev"
|
384 |
+
}
|
385 |
+
},
|
386 |
+
"autoload": {
|
387 |
+
"psr-4": {
|
388 |
+
"phpDocumentor\\Reflection\\": "src/"
|
389 |
+
}
|
390 |
+
},
|
391 |
+
"notification-url": "https://packagist.org/downloads/",
|
392 |
+
"license": [
|
393 |
+
"MIT"
|
394 |
+
],
|
395 |
+
"authors": [
|
396 |
+
{
|
397 |
+
"name": "Jaap van Otterdijk",
|
398 |
+
"email": "opensource@ijaap.nl"
|
399 |
+
}
|
400 |
+
],
|
401 |
+
"description": "Common reflection classes used by phpdocumentor to reflect the code structure",
|
402 |
+
"homepage": "http://www.phpdoc.org",
|
403 |
+
"keywords": [
|
404 |
+
"FQSEN",
|
405 |
+
"phpDocumentor",
|
406 |
+
"phpdoc",
|
407 |
+
"reflection",
|
408 |
+
"static analysis"
|
409 |
+
],
|
410 |
+
"support": {
|
411 |
+
"issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
|
412 |
+
"source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
|
413 |
+
},
|
414 |
+
"time": "2020-06-27T09:03:43+00:00"
|
415 |
+
},
|
416 |
+
{
|
417 |
+
"name": "phpdocumentor/reflection-docblock",
|
418 |
+
"version": "5.3.0",
|
419 |
+
"source": {
|
420 |
+
"type": "git",
|
421 |
+
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
|
422 |
+
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
|
423 |
+
},
|
424 |
+
"dist": {
|
425 |
+
"type": "zip",
|
426 |
+
"url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
|
427 |
+
"reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
|
428 |
+
"shasum": ""
|
429 |
+
},
|
430 |
+
"require": {
|
431 |
+
"ext-filter": "*",
|
432 |
+
"php": "^7.2 || ^8.0",
|
433 |
+
"phpdocumentor/reflection-common": "^2.2",
|
434 |
+
"phpdocumentor/type-resolver": "^1.3",
|
435 |
+
"webmozart/assert": "^1.9.1"
|
436 |
+
},
|
437 |
+
"require-dev": {
|
438 |
+
"mockery/mockery": "~1.3.2",
|
439 |
+
"psalm/phar": "^4.8"
|
440 |
+
},
|
441 |
+
"type": "library",
|
442 |
+
"extra": {
|
443 |
+
"branch-alias": {
|
444 |
+
"dev-master": "5.x-dev"
|
445 |
+
}
|
446 |
+
},
|
447 |
+
"autoload": {
|
448 |
+
"psr-4": {
|
449 |
+
"phpDocumentor\\Reflection\\": "src"
|
450 |
+
}
|
451 |
+
},
|
452 |
+
"notification-url": "https://packagist.org/downloads/",
|
453 |
+
"license": [
|
454 |
+
"MIT"
|
455 |
+
],
|
456 |
+
"authors": [
|
457 |
+
{
|
458 |
+
"name": "Mike van Riel",
|
459 |
+
"email": "me@mikevanriel.com"
|
460 |
+
},
|
461 |
+
{
|
462 |
+
"name": "Jaap van Otterdijk",
|
463 |
+
"email": "account@ijaap.nl"
|
464 |
+
}
|
465 |
+
],
|
466 |
+
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
|
467 |
+
"support": {
|
468 |
+
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
|
469 |
+
"source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
|
470 |
+
},
|
471 |
+
"time": "2021-10-19T17:43:47+00:00"
|
472 |
+
},
|
473 |
+
{
|
474 |
+
"name": "phpdocumentor/type-resolver",
|
475 |
+
"version": "1.6.1",
|
476 |
+
"source": {
|
477 |
+
"type": "git",
|
478 |
+
"url": "https://github.com/phpDocumentor/TypeResolver.git",
|
479 |
+
"reference": "77a32518733312af16a44300404e945338981de3"
|
480 |
+
},
|
481 |
+
"dist": {
|
482 |
+
"type": "zip",
|
483 |
+
"url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
|
484 |
+
"reference": "77a32518733312af16a44300404e945338981de3",
|
485 |
+
"shasum": ""
|
486 |
+
},
|
487 |
+
"require": {
|
488 |
+
"php": "^7.2 || ^8.0",
|
489 |
+
"phpdocumentor/reflection-common": "^2.0"
|
490 |
+
},
|
491 |
+
"require-dev": {
|
492 |
+
"ext-tokenizer": "*",
|
493 |
+
"psalm/phar": "^4.8"
|
494 |
+
},
|
495 |
+
"type": "library",
|
496 |
+
"extra": {
|
497 |
+
"branch-alias": {
|
498 |
+
"dev-1.x": "1.x-dev"
|
499 |
+
}
|
500 |
+
},
|
501 |
+
"autoload": {
|
502 |
+
"psr-4": {
|
503 |
+
"phpDocumentor\\Reflection\\": "src"
|
504 |
+
}
|
505 |
+
},
|
506 |
+
"notification-url": "https://packagist.org/downloads/",
|
507 |
+
"license": [
|
508 |
+
"MIT"
|
509 |
+
],
|
510 |
+
"authors": [
|
511 |
+
{
|
512 |
+
"name": "Mike van Riel",
|
513 |
+
"email": "me@mikevanriel.com"
|
514 |
+
}
|
515 |
+
],
|
516 |
+
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
|
517 |
+
"support": {
|
518 |
+
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
|
519 |
+
"source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
|
520 |
+
},
|
521 |
+
"time": "2022-03-15T21:29:03+00:00"
|
522 |
+
},
|
523 |
+
{
|
524 |
+
"name": "phpspec/prophecy",
|
525 |
+
"version": "v1.15.0",
|
526 |
+
"source": {
|
527 |
+
"type": "git",
|
528 |
+
"url": "https://github.com/phpspec/prophecy.git",
|
529 |
+
"reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
|
530 |
+
},
|
531 |
+
"dist": {
|
532 |
+
"type": "zip",
|
533 |
+
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
|
534 |
+
"reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
|
535 |
+
"shasum": ""
|
536 |
+
},
|
537 |
+
"require": {
|
538 |
+
"doctrine/instantiator": "^1.2",
|
539 |
+
"php": "^7.2 || ~8.0, <8.2",
|
540 |
+
"phpdocumentor/reflection-docblock": "^5.2",
|
541 |
+
"sebastian/comparator": "^3.0 || ^4.0",
|
542 |
+
"sebastian/recursion-context": "^3.0 || ^4.0"
|
543 |
+
},
|
544 |
+
"require-dev": {
|
545 |
+
"phpspec/phpspec": "^6.0 || ^7.0",
|
546 |
+
"phpunit/phpunit": "^8.0 || ^9.0"
|
547 |
+
},
|
548 |
+
"type": "library",
|
549 |
+
"extra": {
|
550 |
+
"branch-alias": {
|
551 |
+
"dev-master": "1.x-dev"
|
552 |
+
}
|
553 |
+
},
|
554 |
+
"autoload": {
|
555 |
+
"psr-4": {
|
556 |
+
"Prophecy\\": "src/Prophecy"
|
557 |
+
}
|
558 |
+
},
|
559 |
+
"notification-url": "https://packagist.org/downloads/",
|
560 |
+
"license": [
|
561 |
+
"MIT"
|
562 |
+
],
|
563 |
+
"authors": [
|
564 |
+
{
|
565 |
+
"name": "Konstantin Kudryashov",
|
566 |
+
"email": "ever.zet@gmail.com",
|
567 |
+
"homepage": "http://everzet.com"
|
568 |
+
},
|
569 |
+
{
|
570 |
+
"name": "Marcello Duarte",
|
571 |
+
"email": "marcello.duarte@gmail.com"
|
572 |
+
}
|
573 |
+
],
|
574 |
+
"description": "Highly opinionated mocking framework for PHP 5.3+",
|
575 |
+
"homepage": "https://github.com/phpspec/prophecy",
|
576 |
+
"keywords": [
|
577 |
+
"Double",
|
578 |
+
"Dummy",
|
579 |
+
"fake",
|
580 |
+
"mock",
|
581 |
+
"spy",
|
582 |
+
"stub"
|
583 |
+
],
|
584 |
+
"support": {
|
585 |
+
"issues": "https://github.com/phpspec/prophecy/issues",
|
586 |
+
"source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
|
587 |
+
},
|
588 |
+
"time": "2021-12-08T12:19:24+00:00"
|
589 |
+
},
|
590 |
+
{
|
591 |
+
"name": "phpunit/php-code-coverage",
|
592 |
+
"version": "9.2.15",
|
593 |
+
"source": {
|
594 |
+
"type": "git",
|
595 |
+
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
596 |
+
"reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
|
597 |
+
},
|
598 |
+
"dist": {
|
599 |
+
"type": "zip",
|
600 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
|
601 |
+
"reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
|
602 |
+
"shasum": ""
|
603 |
+
},
|
604 |
+
"require": {
|
605 |
+
"ext-dom": "*",
|
606 |
+
"ext-libxml": "*",
|
607 |
+
"ext-xmlwriter": "*",
|
608 |
+
"nikic/php-parser": "^4.13.0",
|
609 |
+
"php": ">=7.3",
|
610 |
+
"phpunit/php-file-iterator": "^3.0.3",
|
611 |
+
"phpunit/php-text-template": "^2.0.2",
|
612 |
+
"sebastian/code-unit-reverse-lookup": "^2.0.2",
|
613 |
+
"sebastian/complexity": "^2.0",
|
614 |
+
"sebastian/environment": "^5.1.2",
|
615 |
+
"sebastian/lines-of-code": "^1.0.3",
|
616 |
+
"sebastian/version": "^3.0.1",
|
617 |
+
"theseer/tokenizer": "^1.2.0"
|
618 |
+
},
|
619 |
+
"require-dev": {
|
620 |
+
"phpunit/phpunit": "^9.3"
|
621 |
+
},
|
622 |
+
"suggest": {
|
623 |
+
"ext-pcov": "*",
|
624 |
+
"ext-xdebug": "*"
|
625 |
+
},
|
626 |
+
"type": "library",
|
627 |
+
"extra": {
|
628 |
+
"branch-alias": {
|
629 |
+
"dev-master": "9.2-dev"
|
630 |
+
}
|
631 |
+
},
|
632 |
+
"autoload": {
|
633 |
+
"classmap": [
|
634 |
+
"src/"
|
635 |
+
]
|
636 |
+
},
|
637 |
+
"notification-url": "https://packagist.org/downloads/",
|
638 |
+
"license": [
|
639 |
+
"BSD-3-Clause"
|
640 |
+
],
|
641 |
+
"authors": [
|
642 |
+
{
|
643 |
+
"name": "Sebastian Bergmann",
|
644 |
+
"email": "sebastian@phpunit.de",
|
645 |
+
"role": "lead"
|
646 |
+
}
|
647 |
+
],
|
648 |
+
"description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
|
649 |
+
"homepage": "https://github.com/sebastianbergmann/php-code-coverage",
|
650 |
+
"keywords": [
|
651 |
+
"coverage",
|
652 |
+
"testing",
|
653 |
+
"xunit"
|
654 |
+
],
|
655 |
+
"support": {
|
656 |
+
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
|
657 |
+
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
|
658 |
+
},
|
659 |
+
"funding": [
|
660 |
+
{
|
661 |
+
"url": "https://github.com/sebastianbergmann",
|
662 |
+
"type": "github"
|
663 |
+
}
|
664 |
+
],
|
665 |
+
"time": "2022-03-07T09:28:20+00:00"
|
666 |
+
},
|
667 |
+
{
|
668 |
+
"name": "phpunit/php-file-iterator",
|
669 |
+
"version": "3.0.6",
|
670 |
+
"source": {
|
671 |
+
"type": "git",
|
672 |
+
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
|
673 |
+
"reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
|
674 |
+
},
|
675 |
+
"dist": {
|
676 |
+
"type": "zip",
|
677 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
|
678 |
+
"reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
|
679 |
+
"shasum": ""
|
680 |
+
},
|
681 |
+
"require": {
|
682 |
+
"php": ">=7.3"
|
683 |
+
},
|
684 |
+
"require-dev": {
|
685 |
+
"phpunit/phpunit": "^9.3"
|
686 |
+
},
|
687 |
+
"type": "library",
|
688 |
+
"extra": {
|
689 |
+
"branch-alias": {
|
690 |
+
"dev-master": "3.0-dev"
|
691 |
+
}
|
692 |
+
},
|
693 |
+
"autoload": {
|
694 |
+
"classmap": [
|
695 |
+
"src/"
|
696 |
+
]
|
697 |
+
},
|
698 |
+
"notification-url": "https://packagist.org/downloads/",
|
699 |
+
"license": [
|
700 |
+
"BSD-3-Clause"
|
701 |
+
],
|
702 |
+
"authors": [
|
703 |
+
{
|
704 |
+
"name": "Sebastian Bergmann",
|
705 |
+
"email": "sebastian@phpunit.de",
|
706 |
+
"role": "lead"
|
707 |
+
}
|
708 |
+
],
|
709 |
+
"description": "FilterIterator implementation that filters files based on a list of suffixes.",
|
710 |
+
"homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
|
711 |
+
"keywords": [
|
712 |
+
"filesystem",
|
713 |
+
"iterator"
|
714 |
+
],
|
715 |
+
"support": {
|
716 |
+
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
|
717 |
+
"source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
|
718 |
+
},
|
719 |
+
"funding": [
|
720 |
+
{
|
721 |
+
"url": "https://github.com/sebastianbergmann",
|
722 |
+
"type": "github"
|
723 |
+
}
|
724 |
+
],
|
725 |
+
"time": "2021-12-02T12:48:52+00:00"
|
726 |
+
},
|
727 |
+
{
|
728 |
+
"name": "phpunit/php-invoker",
|
729 |
+
"version": "3.1.1",
|
730 |
+
"source": {
|
731 |
+
"type": "git",
|
732 |
+
"url": "https://github.com/sebastianbergmann/php-invoker.git",
|
733 |
+
"reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
|
734 |
+
},
|
735 |
+
"dist": {
|
736 |
+
"type": "zip",
|
737 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
|
738 |
+
"reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
|
739 |
+
"shasum": ""
|
740 |
+
},
|
741 |
+
"require": {
|
742 |
+
"php": ">=7.3"
|
743 |
+
},
|
744 |
+
"require-dev": {
|
745 |
+
"ext-pcntl": "*",
|
746 |
+
"phpunit/phpunit": "^9.3"
|
747 |
+
},
|
748 |
+
"suggest": {
|
749 |
+
"ext-pcntl": "*"
|
750 |
+
},
|
751 |
+
"type": "library",
|
752 |
+
"extra": {
|
753 |
+
"branch-alias": {
|
754 |
+
"dev-master": "3.1-dev"
|
755 |
+
}
|
756 |
+
},
|
757 |
+
"autoload": {
|
758 |
+
"classmap": [
|
759 |
+
"src/"
|
760 |
+
]
|
761 |
+
},
|
762 |
+
"notification-url": "https://packagist.org/downloads/",
|
763 |
+
"license": [
|
764 |
+
"BSD-3-Clause"
|
765 |
+
],
|
766 |
+
"authors": [
|
767 |
+
{
|
768 |
+
"name": "Sebastian Bergmann",
|
769 |
+
"email": "sebastian@phpunit.de",
|
770 |
+
"role": "lead"
|
771 |
+
}
|
772 |
+
],
|
773 |
+
"description": "Invoke callables with a timeout",
|
774 |
+
"homepage": "https://github.com/sebastianbergmann/php-invoker/",
|
775 |
+
"keywords": [
|
776 |
+
"process"
|
777 |
+
],
|
778 |
+
"support": {
|
779 |
+
"issues": "https://github.com/sebastianbergmann/php-invoker/issues",
|
780 |
+
"source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
|
781 |
+
},
|
782 |
+
"funding": [
|
783 |
+
{
|
784 |
+
"url": "https://github.com/sebastianbergmann",
|
785 |
+
"type": "github"
|
786 |
+
}
|
787 |
+
],
|
788 |
+
"time": "2020-09-28T05:58:55+00:00"
|
789 |
+
},
|
790 |
+
{
|
791 |
+
"name": "phpunit/php-text-template",
|
792 |
+
"version": "2.0.4",
|
793 |
+
"source": {
|
794 |
+
"type": "git",
|
795 |
+
"url": "https://github.com/sebastianbergmann/php-text-template.git",
|
796 |
+
"reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
|
797 |
+
},
|
798 |
+
"dist": {
|
799 |
+
"type": "zip",
|
800 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
|
801 |
+
"reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
|
802 |
+
"shasum": ""
|
803 |
+
},
|
804 |
+
"require": {
|
805 |
+
"php": ">=7.3"
|
806 |
+
},
|
807 |
+
"require-dev": {
|
808 |
+
"phpunit/phpunit": "^9.3"
|
809 |
+
},
|
810 |
+
"type": "library",
|
811 |
+
"extra": {
|
812 |
+
"branch-alias": {
|
813 |
+
"dev-master": "2.0-dev"
|
814 |
+
}
|
815 |
+
},
|
816 |
+
"autoload": {
|
817 |
+
"classmap": [
|
818 |
+
"src/"
|
819 |
+
]
|
820 |
+
},
|
821 |
+
"notification-url": "https://packagist.org/downloads/",
|
822 |
+
"license": [
|
823 |
+
"BSD-3-Clause"
|
824 |
+
],
|
825 |
+
"authors": [
|
826 |
+
{
|
827 |
+
"name": "Sebastian Bergmann",
|
828 |
+
"email": "sebastian@phpunit.de",
|
829 |
+
"role": "lead"
|
830 |
+
}
|
831 |
+
],
|
832 |
+
"description": "Simple template engine.",
|
833 |
+
"homepage": "https://github.com/sebastianbergmann/php-text-template/",
|
834 |
+
"keywords": [
|
835 |
+
"template"
|
836 |
+
],
|
837 |
+
"support": {
|
838 |
+
"issues": "https://github.com/sebastianbergmann/php-text-template/issues",
|
839 |
+
"source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
|
840 |
+
},
|
841 |
+
"funding": [
|
842 |
+
{
|
843 |
+
"url": "https://github.com/sebastianbergmann",
|
844 |
+
"type": "github"
|
845 |
+
}
|
846 |
+
],
|
847 |
+
"time": "2020-10-26T05:33:50+00:00"
|
848 |
+
},
|
849 |
+
{
|
850 |
+
"name": "phpunit/php-timer",
|
851 |
+
"version": "5.0.3",
|
852 |
+
"source": {
|
853 |
+
"type": "git",
|
854 |
+
"url": "https://github.com/sebastianbergmann/php-timer.git",
|
855 |
+
"reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
|
856 |
+
},
|
857 |
+
"dist": {
|
858 |
+
"type": "zip",
|
859 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
|
860 |
+
"reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
|
861 |
+
"shasum": ""
|
862 |
+
},
|
863 |
+
"require": {
|
864 |
+
"php": ">=7.3"
|
865 |
+
},
|
866 |
+
"require-dev": {
|
867 |
+
"phpunit/phpunit": "^9.3"
|
868 |
+
},
|
869 |
+
"type": "library",
|
870 |
+
"extra": {
|
871 |
+
"branch-alias": {
|
872 |
+
"dev-master": "5.0-dev"
|
873 |
+
}
|
874 |
+
},
|
875 |
+
"autoload": {
|
876 |
+
"classmap": [
|
877 |
+
"src/"
|
878 |
+
]
|
879 |
+
},
|
880 |
+
"notification-url": "https://packagist.org/downloads/",
|
881 |
+
"license": [
|
882 |
+
"BSD-3-Clause"
|
883 |
+
],
|
884 |
+
"authors": [
|
885 |
+
{
|
886 |
+
"name": "Sebastian Bergmann",
|
887 |
+
"email": "sebastian@phpunit.de",
|
888 |
+
"role": "lead"
|
889 |
+
}
|
890 |
+
],
|
891 |
+
"description": "Utility class for timing",
|
892 |
+
"homepage": "https://github.com/sebastianbergmann/php-timer/",
|
893 |
+
"keywords": [
|
894 |
+
"timer"
|
895 |
+
],
|
896 |
+
"support": {
|
897 |
+
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
|
898 |
+
"source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
|
899 |
+
},
|
900 |
+
"funding": [
|
901 |
+
{
|
902 |
+
"url": "https://github.com/sebastianbergmann",
|
903 |
+
"type": "github"
|
904 |
+
}
|
905 |
+
],
|
906 |
+
"time": "2020-10-26T13:16:10+00:00"
|
907 |
+
},
|
908 |
+
{
|
909 |
+
"name": "phpunit/phpunit",
|
910 |
+
"version": "9.5.21",
|
911 |
+
"source": {
|
912 |
+
"type": "git",
|
913 |
+
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
914 |
+
"reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1"
|
915 |
+
},
|
916 |
+
"dist": {
|
917 |
+
"type": "zip",
|
918 |
+
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1",
|
919 |
+
"reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1",
|
920 |
+
"shasum": ""
|
921 |
+
},
|
922 |
+
"require": {
|
923 |
+
"doctrine/instantiator": "^1.3.1",
|
924 |
+
"ext-dom": "*",
|
925 |
+
"ext-json": "*",
|
926 |
+
"ext-libxml": "*",
|
927 |
+
"ext-mbstring": "*",
|
928 |
+
"ext-xml": "*",
|
929 |
+
"ext-xmlwriter": "*",
|
930 |
+
"myclabs/deep-copy": "^1.10.1",
|
931 |
+
"phar-io/manifest": "^2.0.3",
|
932 |
+
"phar-io/version": "^3.0.2",
|
933 |
+
"php": ">=7.3",
|
934 |
+
"phpspec/prophecy": "^1.12.1",
|
935 |
+
"phpunit/php-code-coverage": "^9.2.13",
|
936 |
+
"phpunit/php-file-iterator": "^3.0.5",
|
937 |
+
"phpunit/php-invoker": "^3.1.1",
|
938 |
+
"phpunit/php-text-template": "^2.0.3",
|
939 |
+
"phpunit/php-timer": "^5.0.2",
|
940 |
+
"sebastian/cli-parser": "^1.0.1",
|
941 |
+
"sebastian/code-unit": "^1.0.6",
|
942 |
+
"sebastian/comparator": "^4.0.5",
|
943 |
+
"sebastian/diff": "^4.0.3",
|
944 |
+
"sebastian/environment": "^5.1.3",
|
945 |
+
"sebastian/exporter": "^4.0.3",
|
946 |
+
"sebastian/global-state": "^5.0.1",
|
947 |
+
"sebastian/object-enumerator": "^4.0.3",
|
948 |
+
"sebastian/resource-operations": "^3.0.3",
|
949 |
+
"sebastian/type": "^3.0",
|
950 |
+
"sebastian/version": "^3.0.2"
|
951 |
+
},
|
952 |
+
"require-dev": {
|
953 |
+
"phpspec/prophecy-phpunit": "^2.0.1"
|
954 |
+
},
|
955 |
+
"suggest": {
|
956 |
+
"ext-soap": "*",
|
957 |
+
"ext-xdebug": "*"
|
958 |
+
},
|
959 |
+
"bin": [
|
960 |
+
"phpunit"
|
961 |
+
],
|
962 |
+
"type": "library",
|
963 |
+
"extra": {
|
964 |
+
"branch-alias": {
|
965 |
+
"dev-master": "9.5-dev"
|
966 |
+
}
|
967 |
+
},
|
968 |
+
"autoload": {
|
969 |
+
"files": [
|
970 |
+
"src/Framework/Assert/Functions.php"
|
971 |
+
],
|
972 |
+
"classmap": [
|
973 |
+
"src/"
|
974 |
+
]
|
975 |
+
},
|
976 |
+
"notification-url": "https://packagist.org/downloads/",
|
977 |
+
"license": [
|
978 |
+
"BSD-3-Clause"
|
979 |
+
],
|
980 |
+
"authors": [
|
981 |
+
{
|
982 |
+
"name": "Sebastian Bergmann",
|
983 |
+
"email": "sebastian@phpunit.de",
|
984 |
+
"role": "lead"
|
985 |
+
}
|
986 |
+
],
|
987 |
+
"description": "The PHP Unit Testing framework.",
|
988 |
+
"homepage": "https://phpunit.de/",
|
989 |
+
"keywords": [
|
990 |
+
"phpunit",
|
991 |
+
"testing",
|
992 |
+
"xunit"
|
993 |
+
],
|
994 |
+
"support": {
|
995 |
+
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
996 |
+
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21"
|
997 |
+
},
|
998 |
+
"funding": [
|
999 |
+
{
|
1000 |
+
"url": "https://phpunit.de/sponsors.html",
|
1001 |
+
"type": "custom"
|
1002 |
+
},
|
1003 |
+
{
|
1004 |
+
"url": "https://github.com/sebastianbergmann",
|
1005 |
+
"type": "github"
|
1006 |
+
}
|
1007 |
+
],
|
1008 |
+
"time": "2022-06-19T12:14:25+00:00"
|
1009 |
+
},
|
1010 |
+
{
|
1011 |
+
"name": "psr/container",
|
1012 |
+
"version": "2.0.2",
|
1013 |
+
"source": {
|
1014 |
+
"type": "git",
|
1015 |
+
"url": "https://github.com/php-fig/container.git",
|
1016 |
+
"reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
|
1017 |
+
},
|
1018 |
+
"dist": {
|
1019 |
+
"type": "zip",
|
1020 |
+
"url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
|
1021 |
+
"reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
|
1022 |
+
"shasum": ""
|
1023 |
+
},
|
1024 |
+
"require": {
|
1025 |
+
"php": ">=7.4.0"
|
1026 |
+
},
|
1027 |
+
"type": "library",
|
1028 |
+
"extra": {
|
1029 |
+
"branch-alias": {
|
1030 |
+
"dev-master": "2.0.x-dev"
|
1031 |
+
}
|
1032 |
+
},
|
1033 |
+
"autoload": {
|
1034 |
+
"psr-4": {
|
1035 |
+
"Psr\\Container\\": "src/"
|
1036 |
+
}
|
1037 |
+
},
|
1038 |
+
"notification-url": "https://packagist.org/downloads/",
|
1039 |
+
"license": [
|
1040 |
+
"MIT"
|
1041 |
+
],
|
1042 |
+
"authors": [
|
1043 |
+
{
|
1044 |
+
"name": "PHP-FIG",
|
1045 |
+
"homepage": "https://www.php-fig.org/"
|
1046 |
+
}
|
1047 |
+
],
|
1048 |
+
"description": "Common Container Interface (PHP FIG PSR-11)",
|
1049 |
+
"homepage": "https://github.com/php-fig/container",
|
1050 |
+
"keywords": [
|
1051 |
+
"PSR-11",
|
1052 |
+
"container",
|
1053 |
+
"container-interface",
|
1054 |
+
"container-interop",
|
1055 |
+
"psr"
|
1056 |
+
],
|
1057 |
+
"support": {
|
1058 |
+
"issues": "https://github.com/php-fig/container/issues",
|
1059 |
+
"source": "https://github.com/php-fig/container/tree/2.0.2"
|
1060 |
+
},
|
1061 |
+
"time": "2021-11-05T16:47:00+00:00"
|
1062 |
+
},
|
1063 |
+
{
|
1064 |
+
"name": "sebastian/cli-parser",
|
1065 |
+
"version": "1.0.1",
|
1066 |
+
"source": {
|
1067 |
+
"type": "git",
|
1068 |
+
"url": "https://github.com/sebastianbergmann/cli-parser.git",
|
1069 |
+
"reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
|
1070 |
+
},
|
1071 |
+
"dist": {
|
1072 |
+
"type": "zip",
|
1073 |
+
"url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
|
1074 |
+
"reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
|
1075 |
+
"shasum": ""
|
1076 |
+
},
|
1077 |
+
"require": {
|
1078 |
+
"php": ">=7.3"
|
1079 |
+
},
|
1080 |
+
"require-dev": {
|
1081 |
+
"phpunit/phpunit": "^9.3"
|
1082 |
+
},
|
1083 |
+
"type": "library",
|
1084 |
+
"extra": {
|
1085 |
+
"branch-alias": {
|
1086 |
+
"dev-master": "1.0-dev"
|
1087 |
+
}
|
1088 |
+
},
|
1089 |
+
"autoload": {
|
1090 |
+
"classmap": [
|
1091 |
+
"src/"
|
1092 |
+
]
|
1093 |
+
},
|
1094 |
+
"notification-url": "https://packagist.org/downloads/",
|
1095 |
+
"license": [
|
1096 |
+
"BSD-3-Clause"
|
1097 |
+
],
|
1098 |
+
"authors": [
|
1099 |
+
{
|
1100 |
+
"name": "Sebastian Bergmann",
|
1101 |
+
"email": "sebastian@phpunit.de",
|
1102 |
+
"role": "lead"
|
1103 |
+
}
|
1104 |
+
],
|
1105 |
+
"description": "Library for parsing CLI options",
|
1106 |
+
"homepage": "https://github.com/sebastianbergmann/cli-parser",
|
1107 |
+
"support": {
|
1108 |
+
"issues": "https://github.com/sebastianbergmann/cli-parser/issues",
|
1109 |
+
"source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
|
1110 |
+
},
|
1111 |
+
"funding": [
|
1112 |
+
{
|
1113 |
+
"url": "https://github.com/sebastianbergmann",
|
1114 |
+
"type": "github"
|
1115 |
+
}
|
1116 |
+
],
|
1117 |
+
"time": "2020-09-28T06:08:49+00:00"
|
1118 |
+
},
|
1119 |
+
{
|
1120 |
+
"name": "sebastian/code-unit",
|
1121 |
+
"version": "1.0.8",
|
1122 |
+
"source": {
|
1123 |
+
"type": "git",
|
1124 |
+
"url": "https://github.com/sebastianbergmann/code-unit.git",
|
1125 |
+
"reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
|
1126 |
+
},
|
1127 |
+
"dist": {
|
1128 |
+
"type": "zip",
|
1129 |
+
"url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
|
1130 |
+
"reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
|
1131 |
+
"shasum": ""
|
1132 |
+
},
|
1133 |
+
"require": {
|
1134 |
+
"php": ">=7.3"
|
1135 |
+
},
|
1136 |
+
"require-dev": {
|
1137 |
+
"phpunit/phpunit": "^9.3"
|
1138 |
+
},
|
1139 |
+
"type": "library",
|
1140 |
+
"extra": {
|
1141 |
+
"branch-alias": {
|
1142 |
+
"dev-master": "1.0-dev"
|
1143 |
+
}
|
1144 |
+
},
|
1145 |
+
"autoload": {
|
1146 |
+
"classmap": [
|
1147 |
+
"src/"
|
1148 |
+
]
|
1149 |
+
},
|
1150 |
+
"notification-url": "https://packagist.org/downloads/",
|
1151 |
+
"license": [
|
1152 |
+
"BSD-3-Clause"
|
1153 |
+
],
|
1154 |
+
"authors": [
|
1155 |
+
{
|
1156 |
+
"name": "Sebastian Bergmann",
|
1157 |
+
"email": "sebastian@phpunit.de",
|
1158 |
+
"role": "lead"
|
1159 |
+
}
|
1160 |
+
],
|
1161 |
+
"description": "Collection of value objects that represent the PHP code units",
|
1162 |
+
"homepage": "https://github.com/sebastianbergmann/code-unit",
|
1163 |
+
"support": {
|
1164 |
+
"issues": "https://github.com/sebastianbergmann/code-unit/issues",
|
1165 |
+
"source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
|
1166 |
+
},
|
1167 |
+
"funding": [
|
1168 |
+
{
|
1169 |
+
"url": "https://github.com/sebastianbergmann",
|
1170 |
+
"type": "github"
|
1171 |
+
}
|
1172 |
+
],
|
1173 |
+
"time": "2020-10-26T13:08:54+00:00"
|
1174 |
+
},
|
1175 |
+
{
|
1176 |
+
"name": "sebastian/code-unit-reverse-lookup",
|
1177 |
+
"version": "2.0.3",
|
1178 |
+
"source": {
|
1179 |
+
"type": "git",
|
1180 |
+
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
|
1181 |
+
"reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
|
1182 |
+
},
|
1183 |
+
"dist": {
|
1184 |
+
"type": "zip",
|
1185 |
+
"url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
|
1186 |
+
"reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
|
1187 |
+
"shasum": ""
|
1188 |
+
},
|
1189 |
+
"require": {
|
1190 |
+
"php": ">=7.3"
|
1191 |
+
},
|
1192 |
+
"require-dev": {
|
1193 |
+
"phpunit/phpunit": "^9.3"
|
1194 |
+
},
|
1195 |
+
"type": "library",
|
1196 |
+
"extra": {
|
1197 |
+
"branch-alias": {
|
1198 |
+
"dev-master": "2.0-dev"
|
1199 |
+
}
|
1200 |
+
},
|
1201 |
+
"autoload": {
|
1202 |
+
"classmap": [
|
1203 |
+
"src/"
|
1204 |
+
]
|
1205 |
+
},
|
1206 |
+
"notification-url": "https://packagist.org/downloads/",
|
1207 |
+
"license": [
|
1208 |
+
"BSD-3-Clause"
|
1209 |
+
],
|
1210 |
+
"authors": [
|
1211 |
+
{
|
1212 |
+
"name": "Sebastian Bergmann",
|
1213 |
+
"email": "sebastian@phpunit.de"
|
1214 |
+
}
|
1215 |
+
],
|
1216 |
+
"description": "Looks up which function or method a line of code belongs to",
|
1217 |
+
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
|
1218 |
+
"support": {
|
1219 |
+
"issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
|
1220 |
+
"source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
|
1221 |
+
},
|
1222 |
+
"funding": [
|
1223 |
+
{
|
1224 |
+
"url": "https://github.com/sebastianbergmann",
|
1225 |
+
"type": "github"
|
1226 |
+
}
|
1227 |
+
],
|
1228 |
+
"time": "2020-09-28T05:30:19+00:00"
|
1229 |
+
},
|
1230 |
+
{
|
1231 |
+
"name": "sebastian/comparator",
|
1232 |
+
"version": "4.0.6",
|
1233 |
+
"source": {
|
1234 |
+
"type": "git",
|
1235 |
+
"url": "https://github.com/sebastianbergmann/comparator.git",
|
1236 |
+
"reference": "55f4261989e546dc112258c7a75935a81a7ce382"
|
1237 |
+
},
|
1238 |
+
"dist": {
|
1239 |
+
"type": "zip",
|
1240 |
+
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
|
1241 |
+
"reference": "55f4261989e546dc112258c7a75935a81a7ce382",
|
1242 |
+
"shasum": ""
|
1243 |
+
},
|
1244 |
+
"require": {
|
1245 |
+
"php": ">=7.3",
|
1246 |
+
"sebastian/diff": "^4.0",
|
1247 |
+
"sebastian/exporter": "^4.0"
|
1248 |
+
},
|
1249 |
+
"require-dev": {
|
1250 |
+
"phpunit/phpunit": "^9.3"
|
1251 |
+
},
|
1252 |
+
"type": "library",
|
1253 |
+
"extra": {
|
1254 |
+
"branch-alias": {
|
1255 |
+
"dev-master": "4.0-dev"
|
1256 |
+
}
|
1257 |
+
},
|
1258 |
+
"autoload": {
|
1259 |
+
"classmap": [
|
1260 |
+
"src/"
|
1261 |
+
]
|
1262 |
+
},
|
1263 |
+
"notification-url": "https://packagist.org/downloads/",
|
1264 |
+
"license": [
|
1265 |
+
"BSD-3-Clause"
|
1266 |
+
],
|
1267 |
+
"authors": [
|
1268 |
+
{
|
1269 |
+
"name": "Sebastian Bergmann",
|
1270 |
+
"email": "sebastian@phpunit.de"
|
1271 |
+
},
|
1272 |
+
{
|
1273 |
+
"name": "Jeff Welch",
|
1274 |
+
"email": "whatthejeff@gmail.com"
|
1275 |
+
},
|
1276 |
+
{
|
1277 |
+
"name": "Volker Dusch",
|
1278 |
+
"email": "github@wallbash.com"
|
1279 |
+
},
|
1280 |
+
{
|
1281 |
+
"name": "Bernhard Schussek",
|
1282 |
+
"email": "bschussek@2bepublished.at"
|
1283 |
+
}
|
1284 |
+
],
|
1285 |
+
"description": "Provides the functionality to compare PHP values for equality",
|
1286 |
+
"homepage": "https://github.com/sebastianbergmann/comparator",
|
1287 |
+
"keywords": [
|
1288 |
+
"comparator",
|
1289 |
+
"compare",
|
1290 |
+
"equality"
|
1291 |
+
],
|
1292 |
+
"support": {
|
1293 |
+
"issues": "https://github.com/sebastianbergmann/comparator/issues",
|
1294 |
+
"source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
|
1295 |
+
},
|
1296 |
+
"funding": [
|
1297 |
+
{
|
1298 |
+
"url": "https://github.com/sebastianbergmann",
|
1299 |
+
"type": "github"
|
1300 |
+
}
|
1301 |
+
],
|
1302 |
+
"time": "2020-10-26T15:49:45+00:00"
|
1303 |
+
},
|
1304 |
+
{
|
1305 |
+
"name": "sebastian/complexity",
|
1306 |
+
"version": "2.0.2",
|
1307 |
+
"source": {
|
1308 |
+
"type": "git",
|
1309 |
+
"url": "https://github.com/sebastianbergmann/complexity.git",
|
1310 |
+
"reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
|
1311 |
+
},
|
1312 |
+
"dist": {
|
1313 |
+
"type": "zip",
|
1314 |
+
"url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
|
1315 |
+
"reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
|
1316 |
+
"shasum": ""
|
1317 |
+
},
|
1318 |
+
"require": {
|
1319 |
+
"nikic/php-parser": "^4.7",
|
1320 |
+
"php": ">=7.3"
|
1321 |
+
},
|
1322 |
+
"require-dev": {
|
1323 |
+
"phpunit/phpunit": "^9.3"
|
1324 |
+
},
|
1325 |
+
"type": "library",
|
1326 |
+
"extra": {
|
1327 |
+
"branch-alias": {
|
1328 |
+
"dev-master": "2.0-dev"
|
1329 |
+
}
|
1330 |
+
},
|
1331 |
+
"autoload": {
|
1332 |
+
"classmap": [
|
1333 |
+
"src/"
|
1334 |
+
]
|
1335 |
+
},
|
1336 |
+
"notification-url": "https://packagist.org/downloads/",
|
1337 |
+
"license": [
|
1338 |
+
"BSD-3-Clause"
|
1339 |
+
],
|
1340 |
+
"authors": [
|
1341 |
+
{
|
1342 |
+
"name": "Sebastian Bergmann",
|
1343 |
+
"email": "sebastian@phpunit.de",
|
1344 |
+
"role": "lead"
|
1345 |
+
}
|
1346 |
+
],
|
1347 |
+
"description": "Library for calculating the complexity of PHP code units",
|
1348 |
+
"homepage": "https://github.com/sebastianbergmann/complexity",
|
1349 |
+
"support": {
|
1350 |
+
"issues": "https://github.com/sebastianbergmann/complexity/issues",
|
1351 |
+
"source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
|
1352 |
+
},
|
1353 |
+
"funding": [
|
1354 |
+
{
|
1355 |
+
"url": "https://github.com/sebastianbergmann",
|
1356 |
+
"type": "github"
|
1357 |
+
}
|
1358 |
+
],
|
1359 |
+
"time": "2020-10-26T15:52:27+00:00"
|
1360 |
+
},
|
1361 |
+
{
|
1362 |
+
"name": "sebastian/diff",
|
1363 |
+
"version": "4.0.4",
|
1364 |
+
"source": {
|
1365 |
+
"type": "git",
|
1366 |
+
"url": "https://github.com/sebastianbergmann/diff.git",
|
1367 |
+
"reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
|
1368 |
+
},
|
1369 |
+
"dist": {
|
1370 |
+
"type": "zip",
|
1371 |
+
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
|
1372 |
+
"reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
|
1373 |
+
"shasum": ""
|
1374 |
+
},
|
1375 |
+
"require": {
|
1376 |
+
"php": ">=7.3"
|
1377 |
+
},
|
1378 |
+
"require-dev": {
|
1379 |
+
"phpunit/phpunit": "^9.3",
|
1380 |
+
"symfony/process": "^4.2 || ^5"
|
1381 |
+
},
|
1382 |
+
"type": "library",
|
1383 |
+
"extra": {
|
1384 |
+
"branch-alias": {
|
1385 |
+
"dev-master": "4.0-dev"
|
1386 |
+
}
|
1387 |
+
},
|
1388 |
+
"autoload": {
|
1389 |
+
"classmap": [
|
1390 |
+
"src/"
|
1391 |
+
]
|
1392 |
+
},
|
1393 |
+
"notification-url": "https://packagist.org/downloads/",
|
1394 |
+
"license": [
|
1395 |
+
"BSD-3-Clause"
|
1396 |
+
],
|
1397 |
+
"authors": [
|
1398 |
+
{
|
1399 |
+
"name": "Sebastian Bergmann",
|
1400 |
+
"email": "sebastian@phpunit.de"
|
1401 |
+
},
|
1402 |
+
{
|
1403 |
+
"name": "Kore Nordmann",
|
1404 |
+
"email": "mail@kore-nordmann.de"
|
1405 |
+
}
|
1406 |
+
],
|
1407 |
+
"description": "Diff implementation",
|
1408 |
+
"homepage": "https://github.com/sebastianbergmann/diff",
|
1409 |
+
"keywords": [
|
1410 |
+
"diff",
|
1411 |
+
"udiff",
|
1412 |
+
"unidiff",
|
1413 |
+
"unified diff"
|
1414 |
+
],
|
1415 |
+
"support": {
|
1416 |
+
"issues": "https://github.com/sebastianbergmann/diff/issues",
|
1417 |
+
"source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
|
1418 |
+
},
|
1419 |
+
"funding": [
|
1420 |
+
{
|
1421 |
+
"url": "https://github.com/sebastianbergmann",
|
1422 |
+
"type": "github"
|
1423 |
+
}
|
1424 |
+
],
|
1425 |
+
"time": "2020-10-26T13:10:38+00:00"
|
1426 |
+
},
|
1427 |
+
{
|
1428 |
+
"name": "sebastian/environment",
|
1429 |
+
"version": "5.1.4",
|
1430 |
+
"source": {
|
1431 |
+
"type": "git",
|
1432 |
+
"url": "https://github.com/sebastianbergmann/environment.git",
|
1433 |
+
"reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7"
|
1434 |
+
},
|
1435 |
+
"dist": {
|
1436 |
+
"type": "zip",
|
1437 |
+
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7",
|
1438 |
+
"reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7",
|
1439 |
+
"shasum": ""
|
1440 |
+
},
|
1441 |
+
"require": {
|
1442 |
+
"php": ">=7.3"
|
1443 |
+
},
|
1444 |
+
"require-dev": {
|
1445 |
+
"phpunit/phpunit": "^9.3"
|
1446 |
+
},
|
1447 |
+
"suggest": {
|
1448 |
+
"ext-posix": "*"
|
1449 |
+
},
|
1450 |
+
"type": "library",
|
1451 |
+
"extra": {
|
1452 |
+
"branch-alias": {
|
1453 |
+
"dev-master": "5.1-dev"
|
1454 |
+
}
|
1455 |
+
},
|
1456 |
+
"autoload": {
|
1457 |
+
"classmap": [
|
1458 |
+
"src/"
|
1459 |
+
]
|
1460 |
+
},
|
1461 |
+
"notification-url": "https://packagist.org/downloads/",
|
1462 |
+
"license": [
|
1463 |
+
"BSD-3-Clause"
|
1464 |
+
],
|
1465 |
+
"authors": [
|
1466 |
+
{
|
1467 |
+
"name": "Sebastian Bergmann",
|
1468 |
+
"email": "sebastian@phpunit.de"
|
1469 |
+
}
|
1470 |
+
],
|
1471 |
+
"description": "Provides functionality to handle HHVM/PHP environments",
|
1472 |
+
"homepage": "http://www.github.com/sebastianbergmann/environment",
|
1473 |
+
"keywords": [
|
1474 |
+
"Xdebug",
|
1475 |
+
"environment",
|
1476 |
+
"hhvm"
|
1477 |
+
],
|
1478 |
+
"support": {
|
1479 |
+
"issues": "https://github.com/sebastianbergmann/environment/issues",
|
1480 |
+
"source": "https://github.com/sebastianbergmann/environment/tree/5.1.4"
|
1481 |
+
},
|
1482 |
+
"funding": [
|
1483 |
+
{
|
1484 |
+
"url": "https://github.com/sebastianbergmann",
|
1485 |
+
"type": "github"
|
1486 |
+
}
|
1487 |
+
],
|
1488 |
+
"time": "2022-04-03T09:37:03+00:00"
|
1489 |
+
},
|
1490 |
+
{
|
1491 |
+
"name": "sebastian/exporter",
|
1492 |
+
"version": "4.0.4",
|
1493 |
+
"source": {
|
1494 |
+
"type": "git",
|
1495 |
+
"url": "https://github.com/sebastianbergmann/exporter.git",
|
1496 |
+
"reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
|
1497 |
+
},
|
1498 |
+
"dist": {
|
1499 |
+
"type": "zip",
|
1500 |
+
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
|
1501 |
+
"reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
|
1502 |
+
"shasum": ""
|
1503 |
+
},
|
1504 |
+
"require": {
|
1505 |
+
"php": ">=7.3",
|
1506 |
+
"sebastian/recursion-context": "^4.0"
|
1507 |
+
},
|
1508 |
+
"require-dev": {
|
1509 |
+
"ext-mbstring": "*",
|
1510 |
+
"phpunit/phpunit": "^9.3"
|
1511 |
+
},
|
1512 |
+
"type": "library",
|
1513 |
+
"extra": {
|
1514 |
+
"branch-alias": {
|
1515 |
+
"dev-master": "4.0-dev"
|
1516 |
+
}
|
1517 |
+
},
|
1518 |
+
"autoload": {
|
1519 |
+
"classmap": [
|
1520 |
+
"src/"
|
1521 |
+
]
|
1522 |
+
},
|
1523 |
+
"notification-url": "https://packagist.org/downloads/",
|
1524 |
+
"license": [
|
1525 |
+
"BSD-3-Clause"
|
1526 |
+
],
|
1527 |
+
"authors": [
|
1528 |
+
{
|
1529 |
+
"name": "Sebastian Bergmann",
|
1530 |
+
"email": "sebastian@phpunit.de"
|
1531 |
+
},
|
1532 |
+
{
|
1533 |
+
"name": "Jeff Welch",
|
1534 |
+
"email": "whatthejeff@gmail.com"
|
1535 |
+
},
|
1536 |
+
{
|
1537 |
+
"name": "Volker Dusch",
|
1538 |
+
"email": "github@wallbash.com"
|
1539 |
+
},
|
1540 |
+
{
|
1541 |
+
"name": "Adam Harvey",
|
1542 |
+
"email": "aharvey@php.net"
|
1543 |
+
},
|
1544 |
+
{
|
1545 |
+
"name": "Bernhard Schussek",
|
1546 |
+
"email": "bschussek@gmail.com"
|
1547 |
+
}
|
1548 |
+
],
|
1549 |
+
"description": "Provides the functionality to export PHP variables for visualization",
|
1550 |
+
"homepage": "https://www.github.com/sebastianbergmann/exporter",
|
1551 |
+
"keywords": [
|
1552 |
+
"export",
|
1553 |
+
"exporter"
|
1554 |
+
],
|
1555 |
+
"support": {
|
1556 |
+
"issues": "https://github.com/sebastianbergmann/exporter/issues",
|
1557 |
+
"source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
|
1558 |
+
},
|
1559 |
+
"funding": [
|
1560 |
+
{
|
1561 |
+
"url": "https://github.com/sebastianbergmann",
|
1562 |
+
"type": "github"
|
1563 |
+
}
|
1564 |
+
],
|
1565 |
+
"time": "2021-11-11T14:18:36+00:00"
|
1566 |
+
},
|
1567 |
+
{
|
1568 |
+
"name": "sebastian/global-state",
|
1569 |
+
"version": "5.0.5",
|
1570 |
+
"source": {
|
1571 |
+
"type": "git",
|
1572 |
+
"url": "https://github.com/sebastianbergmann/global-state.git",
|
1573 |
+
"reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
|
1574 |
+
},
|
1575 |
+
"dist": {
|
1576 |
+
"type": "zip",
|
1577 |
+
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
|
1578 |
+
"reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
|
1579 |
+
"shasum": ""
|
1580 |
+
},
|
1581 |
+
"require": {
|
1582 |
+
"php": ">=7.3",
|
1583 |
+
"sebastian/object-reflector": "^2.0",
|
1584 |
+
"sebastian/recursion-context": "^4.0"
|
1585 |
+
},
|
1586 |
+
"require-dev": {
|
1587 |
+
"ext-dom": "*",
|
1588 |
+
"phpunit/phpunit": "^9.3"
|
1589 |
+
},
|
1590 |
+
"suggest": {
|
1591 |
+
"ext-uopz": "*"
|
1592 |
+
},
|
1593 |
+
"type": "library",
|
1594 |
+
"extra": {
|
1595 |
+
"branch-alias": {
|
1596 |
+
"dev-master": "5.0-dev"
|
1597 |
+
}
|
1598 |
+
},
|
1599 |
+
"autoload": {
|
1600 |
+
"classmap": [
|
1601 |
+
"src/"
|
1602 |
+
]
|
1603 |
+
},
|
1604 |
+
"notification-url": "https://packagist.org/downloads/",
|
1605 |
+
"license": [
|
1606 |
+
"BSD-3-Clause"
|
1607 |
+
],
|
1608 |
+
"authors": [
|
1609 |
+
{
|
1610 |
+
"name": "Sebastian Bergmann",
|
1611 |
+
"email": "sebastian@phpunit.de"
|
1612 |
+
}
|
1613 |
+
],
|
1614 |
+
"description": "Snapshotting of global state",
|
1615 |
+
"homepage": "http://www.github.com/sebastianbergmann/global-state",
|
1616 |
+
"keywords": [
|
1617 |
+
"global state"
|
1618 |
+
],
|
1619 |
+
"support": {
|
1620 |
+
"issues": "https://github.com/sebastianbergmann/global-state/issues",
|
1621 |
+
"source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
|
1622 |
+
},
|
1623 |
+
"funding": [
|
1624 |
+
{
|
1625 |
+
"url": "https://github.com/sebastianbergmann",
|
1626 |
+
"type": "github"
|
1627 |
+
}
|
1628 |
+
],
|
1629 |
+
"time": "2022-02-14T08:28:10+00:00"
|
1630 |
+
},
|
1631 |
+
{
|
1632 |
+
"name": "sebastian/lines-of-code",
|
1633 |
+
"version": "1.0.3",
|
1634 |
+
"source": {
|
1635 |
+
"type": "git",
|
1636 |
+
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
|
1637 |
+
"reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
|
1638 |
+
},
|
1639 |
+
"dist": {
|
1640 |
+
"type": "zip",
|
1641 |
+
"url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
|
1642 |
+
"reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
|
1643 |
+
"shasum": ""
|
1644 |
+
},
|
1645 |
+
"require": {
|
1646 |
+
"nikic/php-parser": "^4.6",
|
1647 |
+
"php": ">=7.3"
|
1648 |
+
},
|
1649 |
+
"require-dev": {
|
1650 |
+
"phpunit/phpunit": "^9.3"
|
1651 |
+
},
|
1652 |
+
"type": "library",
|
1653 |
+
"extra": {
|
1654 |
+
"branch-alias": {
|
1655 |
+
"dev-master": "1.0-dev"
|
1656 |
+
}
|
1657 |
+
},
|
1658 |
+
"autoload": {
|
1659 |
+
"classmap": [
|
1660 |
+
"src/"
|
1661 |
+
]
|
1662 |
+
},
|
1663 |
+
"notification-url": "https://packagist.org/downloads/",
|
1664 |
+
"license": [
|
1665 |
+
"BSD-3-Clause"
|
1666 |
+
],
|
1667 |
+
"authors": [
|
1668 |
+
{
|
1669 |
+
"name": "Sebastian Bergmann",
|
1670 |
+
"email": "sebastian@phpunit.de",
|
1671 |
+
"role": "lead"
|
1672 |
+
}
|
1673 |
+
],
|
1674 |
+
"description": "Library for counting the lines of code in PHP source code",
|
1675 |
+
"homepage": "https://github.com/sebastianbergmann/lines-of-code",
|
1676 |
+
"support": {
|
1677 |
+
"issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
|
1678 |
+
"source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
|
1679 |
+
},
|
1680 |
+
"funding": [
|
1681 |
+
{
|
1682 |
+
"url": "https://github.com/sebastianbergmann",
|
1683 |
+
"type": "github"
|
1684 |
+
}
|
1685 |
+
],
|
1686 |
+
"time": "2020-11-28T06:42:11+00:00"
|
1687 |
+
},
|
1688 |
+
{
|
1689 |
+
"name": "sebastian/object-enumerator",
|
1690 |
+
"version": "4.0.4",
|
1691 |
+
"source": {
|
1692 |
+
"type": "git",
|
1693 |
+
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
|
1694 |
+
"reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
|
1695 |
+
},
|
1696 |
+
"dist": {
|
1697 |
+
"type": "zip",
|
1698 |
+
"url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
|
1699 |
+
"reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
|
1700 |
+
"shasum": ""
|
1701 |
+
},
|
1702 |
+
"require": {
|
1703 |
+
"php": ">=7.3",
|
1704 |
+
"sebastian/object-reflector": "^2.0",
|
1705 |
+
"sebastian/recursion-context": "^4.0"
|
1706 |
+
},
|
1707 |
+
"require-dev": {
|
1708 |
+
"phpunit/phpunit": "^9.3"
|
1709 |
+
},
|
1710 |
+
"type": "library",
|
1711 |
+
"extra": {
|
1712 |
+
"branch-alias": {
|
1713 |
+
"dev-master": "4.0-dev"
|
1714 |
+
}
|
1715 |
+
},
|
1716 |
+
"autoload": {
|
1717 |
+
"classmap": [
|
1718 |
+
"src/"
|
1719 |
+
]
|
1720 |
+
},
|
1721 |
+
"notification-url": "https://packagist.org/downloads/",
|
1722 |
+
"license": [
|
1723 |
+
"BSD-3-Clause"
|
1724 |
+
],
|
1725 |
+
"authors": [
|
1726 |
+
{
|
1727 |
+
"name": "Sebastian Bergmann",
|
1728 |
+
"email": "sebastian@phpunit.de"
|
1729 |
+
}
|
1730 |
+
],
|
1731 |
+
"description": "Traverses array structures and object graphs to enumerate all referenced objects",
|
1732 |
+
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
|
1733 |
+
"support": {
|
1734 |
+
"issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
|
1735 |
+
"source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
|
1736 |
+
},
|
1737 |
+
"funding": [
|
1738 |
+
{
|
1739 |
+
"url": "https://github.com/sebastianbergmann",
|
1740 |
+
"type": "github"
|
1741 |
+
}
|
1742 |
+
],
|
1743 |
+
"time": "2020-10-26T13:12:34+00:00"
|
1744 |
+
},
|
1745 |
+
{
|
1746 |
+
"name": "sebastian/object-reflector",
|
1747 |
+
"version": "2.0.4",
|
1748 |
+
"source": {
|
1749 |
+
"type": "git",
|
1750 |
+
"url": "https://github.com/sebastianbergmann/object-reflector.git",
|
1751 |
+
"reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
|
1752 |
+
},
|
1753 |
+
"dist": {
|
1754 |
+
"type": "zip",
|
1755 |
+
"url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
|
1756 |
+
"reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
|
1757 |
+
"shasum": ""
|
1758 |
+
},
|
1759 |
+
"require": {
|
1760 |
+
"php": ">=7.3"
|
1761 |
+
},
|
1762 |
+
"require-dev": {
|
1763 |
+
"phpunit/phpunit": "^9.3"
|
1764 |
+
},
|
1765 |
+
"type": "library",
|
1766 |
+
"extra": {
|
1767 |
+
"branch-alias": {
|
1768 |
+
"dev-master": "2.0-dev"
|
1769 |
+
}
|
1770 |
+
},
|
1771 |
+
"autoload": {
|
1772 |
+
"classmap": [
|
1773 |
+
"src/"
|
1774 |
+
]
|
1775 |
+
},
|
1776 |
+
"notification-url": "https://packagist.org/downloads/",
|
1777 |
+
"license": [
|
1778 |
+
"BSD-3-Clause"
|
1779 |
+
],
|
1780 |
+
"authors": [
|
1781 |
+
{
|
1782 |
+
"name": "Sebastian Bergmann",
|
1783 |
+
"email": "sebastian@phpunit.de"
|
1784 |
+
}
|
1785 |
+
],
|
1786 |
+
"description": "Allows reflection of object attributes, including inherited and non-public ones",
|
1787 |
+
"homepage": "https://github.com/sebastianbergmann/object-reflector/",
|
1788 |
+
"support": {
|
1789 |
+
"issues": "https://github.com/sebastianbergmann/object-reflector/issues",
|
1790 |
+
"source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
|
1791 |
+
},
|
1792 |
+
"funding": [
|
1793 |
+
{
|
1794 |
+
"url": "https://github.com/sebastianbergmann",
|
1795 |
+
"type": "github"
|
1796 |
+
}
|
1797 |
+
],
|
1798 |
+
"time": "2020-10-26T13:14:26+00:00"
|
1799 |
+
},
|
1800 |
+
{
|
1801 |
+
"name": "sebastian/recursion-context",
|
1802 |
+
"version": "4.0.4",
|
1803 |
+
"source": {
|
1804 |
+
"type": "git",
|
1805 |
+
"url": "https://github.com/sebastianbergmann/recursion-context.git",
|
1806 |
+
"reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
|
1807 |
+
},
|
1808 |
+
"dist": {
|
1809 |
+
"type": "zip",
|
1810 |
+
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
|
1811 |
+
"reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
|
1812 |
+
"shasum": ""
|
1813 |
+
},
|
1814 |
+
"require": {
|
1815 |
+
"php": ">=7.3"
|
1816 |
+
},
|
1817 |
+
"require-dev": {
|
1818 |
+
"phpunit/phpunit": "^9.3"
|
1819 |
+
},
|
1820 |
+
"type": "library",
|
1821 |
+
"extra": {
|
1822 |
+
"branch-alias": {
|
1823 |
+
"dev-master": "4.0-dev"
|
1824 |
+
}
|
1825 |
+
},
|
1826 |
+
"autoload": {
|
1827 |
+
"classmap": [
|
1828 |
+
"src/"
|
1829 |
+
]
|
1830 |
+
},
|
1831 |
+
"notification-url": "https://packagist.org/downloads/",
|
1832 |
+
"license": [
|
1833 |
+
"BSD-3-Clause"
|
1834 |
+
],
|
1835 |
+
"authors": [
|
1836 |
+
{
|
1837 |
+
"name": "Sebastian Bergmann",
|
1838 |
+
"email": "sebastian@phpunit.de"
|
1839 |
+
},
|
1840 |
+
{
|
1841 |
+
"name": "Jeff Welch",
|
1842 |
+
"email": "whatthejeff@gmail.com"
|
1843 |
+
},
|
1844 |
+
{
|
1845 |
+
"name": "Adam Harvey",
|
1846 |
+
"email": "aharvey@php.net"
|
1847 |
+
}
|
1848 |
+
],
|
1849 |
+
"description": "Provides functionality to recursively process PHP variables",
|
1850 |
+
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
|
1851 |
+
"support": {
|
1852 |
+
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
|
1853 |
+
"source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
|
1854 |
+
},
|
1855 |
+
"funding": [
|
1856 |
+
{
|
1857 |
+
"url": "https://github.com/sebastianbergmann",
|
1858 |
+
"type": "github"
|
1859 |
+
}
|
1860 |
+
],
|
1861 |
+
"time": "2020-10-26T13:17:30+00:00"
|
1862 |
+
},
|
1863 |
+
{
|
1864 |
+
"name": "sebastian/resource-operations",
|
1865 |
+
"version": "3.0.3",
|
1866 |
+
"source": {
|
1867 |
+
"type": "git",
|
1868 |
+
"url": "https://github.com/sebastianbergmann/resource-operations.git",
|
1869 |
+
"reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
|
1870 |
+
},
|
1871 |
+
"dist": {
|
1872 |
+
"type": "zip",
|
1873 |
+
"url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
|
1874 |
+
"reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
|
1875 |
+
"shasum": ""
|
1876 |
+
},
|
1877 |
+
"require": {
|
1878 |
+
"php": ">=7.3"
|
1879 |
+
},
|
1880 |
+
"require-dev": {
|
1881 |
+
"phpunit/phpunit": "^9.0"
|
1882 |
+
},
|
1883 |
+
"type": "library",
|
1884 |
+
"extra": {
|
1885 |
+
"branch-alias": {
|
1886 |
+
"dev-master": "3.0-dev"
|
1887 |
+
}
|
1888 |
+
},
|
1889 |
+
"autoload": {
|
1890 |
+
"classmap": [
|
1891 |
+
"src/"
|
1892 |
+
]
|
1893 |
+
},
|
1894 |
+
"notification-url": "https://packagist.org/downloads/",
|
1895 |
+
"license": [
|
1896 |
+
"BSD-3-Clause"
|
1897 |
+
],
|
1898 |
+
"authors": [
|
1899 |
+
{
|
1900 |
+
"name": "Sebastian Bergmann",
|
1901 |
+
"email": "sebastian@phpunit.de"
|
1902 |
+
}
|
1903 |
+
],
|
1904 |
+
"description": "Provides a list of PHP built-in functions that operate on resources",
|
1905 |
+
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
|
1906 |
+
"support": {
|
1907 |
+
"issues": "https://github.com/sebastianbergmann/resource-operations/issues",
|
1908 |
+
"source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
|
1909 |
+
},
|
1910 |
+
"funding": [
|
1911 |
+
{
|
1912 |
+
"url": "https://github.com/sebastianbergmann",
|
1913 |
+
"type": "github"
|
1914 |
+
}
|
1915 |
+
],
|
1916 |
+
"time": "2020-09-28T06:45:17+00:00"
|
1917 |
+
},
|
1918 |
+
{
|
1919 |
+
"name": "sebastian/type",
|
1920 |
+
"version": "3.0.0",
|
1921 |
+
"source": {
|
1922 |
+
"type": "git",
|
1923 |
+
"url": "https://github.com/sebastianbergmann/type.git",
|
1924 |
+
"reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad"
|
1925 |
+
},
|
1926 |
+
"dist": {
|
1927 |
+
"type": "zip",
|
1928 |
+
"url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
|
1929 |
+
"reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
|
1930 |
+
"shasum": ""
|
1931 |
+
},
|
1932 |
+
"require": {
|
1933 |
+
"php": ">=7.3"
|
1934 |
+
},
|
1935 |
+
"require-dev": {
|
1936 |
+
"phpunit/phpunit": "^9.5"
|
1937 |
+
},
|
1938 |
+
"type": "library",
|
1939 |
+
"extra": {
|
1940 |
+
"branch-alias": {
|
1941 |
+
"dev-master": "3.0-dev"
|
1942 |
+
}
|
1943 |
+
},
|
1944 |
+
"autoload": {
|
1945 |
+
"classmap": [
|
1946 |
+
"src/"
|
1947 |
+
]
|
1948 |
+
},
|
1949 |
+
"notification-url": "https://packagist.org/downloads/",
|
1950 |
+
"license": [
|
1951 |
+
"BSD-3-Clause"
|
1952 |
+
],
|
1953 |
+
"authors": [
|
1954 |
+
{
|
1955 |
+
"name": "Sebastian Bergmann",
|
1956 |
+
"email": "sebastian@phpunit.de",
|
1957 |
+
"role": "lead"
|
1958 |
+
}
|
1959 |
+
],
|
1960 |
+
"description": "Collection of value objects that represent the types of the PHP type system",
|
1961 |
+
"homepage": "https://github.com/sebastianbergmann/type",
|
1962 |
+
"support": {
|
1963 |
+
"issues": "https://github.com/sebastianbergmann/type/issues",
|
1964 |
+
"source": "https://github.com/sebastianbergmann/type/tree/3.0.0"
|
1965 |
+
},
|
1966 |
+
"funding": [
|
1967 |
+
{
|
1968 |
+
"url": "https://github.com/sebastianbergmann",
|
1969 |
+
"type": "github"
|
1970 |
+
}
|
1971 |
+
],
|
1972 |
+
"time": "2022-03-15T09:54:48+00:00"
|
1973 |
+
},
|
1974 |
+
{
|
1975 |
+
"name": "sebastian/version",
|
1976 |
+
"version": "3.0.2",
|
1977 |
+
"source": {
|
1978 |
+
"type": "git",
|
1979 |
+
"url": "https://github.com/sebastianbergmann/version.git",
|
1980 |
+
"reference": "c6c1022351a901512170118436c764e473f6de8c"
|
1981 |
+
},
|
1982 |
+
"dist": {
|
1983 |
+
"type": "zip",
|
1984 |
+
"url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
|
1985 |
+
"reference": "c6c1022351a901512170118436c764e473f6de8c",
|
1986 |
+
"shasum": ""
|
1987 |
+
},
|
1988 |
+
"require": {
|
1989 |
+
"php": ">=7.3"
|
1990 |
+
},
|
1991 |
+
"type": "library",
|
1992 |
+
"extra": {
|
1993 |
+
"branch-alias": {
|
1994 |
+
"dev-master": "3.0-dev"
|
1995 |
+
}
|
1996 |
+
},
|
1997 |
+
"autoload": {
|
1998 |
+
"classmap": [
|
1999 |
+
"src/"
|
2000 |
+
]
|
2001 |
+
},
|
2002 |
+
"notification-url": "https://packagist.org/downloads/",
|
2003 |
+
"license": [
|
2004 |
+
"BSD-3-Clause"
|
2005 |
+
],
|
2006 |
+
"authors": [
|
2007 |
+
{
|
2008 |
+
"name": "Sebastian Bergmann",
|
2009 |
+
"email": "sebastian@phpunit.de",
|
2010 |
+
"role": "lead"
|
2011 |
+
}
|
2012 |
+
],
|
2013 |
+
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
|
2014 |
+
"homepage": "https://github.com/sebastianbergmann/version",
|
2015 |
+
"support": {
|
2016 |
+
"issues": "https://github.com/sebastianbergmann/version/issues",
|
2017 |
+
"source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
|
2018 |
+
},
|
2019 |
+
"funding": [
|
2020 |
+
{
|
2021 |
+
"url": "https://github.com/sebastianbergmann",
|
2022 |
+
"type": "github"
|
2023 |
+
}
|
2024 |
+
],
|
2025 |
+
"time": "2020-09-28T06:39:44+00:00"
|
2026 |
+
},
|
2027 |
+
{
|
2028 |
+
"name": "symfony/console",
|
2029 |
+
"version": "v6.0.11",
|
2030 |
+
"source": {
|
2031 |
+
"type": "git",
|
2032 |
+
"url": "https://github.com/symfony/console.git",
|
2033 |
+
"reference": "09b8e50f09bf0e5bbde9b61b19d7f53751114725"
|
2034 |
+
},
|
2035 |
+
"dist": {
|
2036 |
+
"type": "zip",
|
2037 |
+
"url": "https://api.github.com/repos/symfony/console/zipball/09b8e50f09bf0e5bbde9b61b19d7f53751114725",
|
2038 |
+
"reference": "09b8e50f09bf0e5bbde9b61b19d7f53751114725",
|
2039 |
+
"shasum": ""
|
2040 |
+
},
|
2041 |
+
"require": {
|
2042 |
+
"php": ">=8.0.2",
|
2043 |
+
"symfony/polyfill-mbstring": "~1.0",
|
2044 |
+
"symfony/service-contracts": "^1.1|^2|^3",
|
2045 |
+
"symfony/string": "^5.4|^6.0"
|
2046 |
+
},
|
2047 |
+
"conflict": {
|
2048 |
+
"symfony/dependency-injection": "<5.4",
|
2049 |
+
"symfony/dotenv": "<5.4",
|
2050 |
+
"symfony/event-dispatcher": "<5.4",
|
2051 |
+
"symfony/lock": "<5.4",
|
2052 |
+
"symfony/process": "<5.4"
|
2053 |
+
},
|
2054 |
+
"provide": {
|
2055 |
+
"psr/log-implementation": "1.0|2.0|3.0"
|
2056 |
+
},
|
2057 |
+
"require-dev": {
|
2058 |
+
"psr/log": "^1|^2|^3",
|
2059 |
+
"symfony/config": "^5.4|^6.0",
|
2060 |
+
"symfony/dependency-injection": "^5.4|^6.0",
|
2061 |
+
"symfony/event-dispatcher": "^5.4|^6.0",
|
2062 |
+
"symfony/lock": "^5.4|^6.0",
|
2063 |
+
"symfony/process": "^5.4|^6.0",
|
2064 |
+
"symfony/var-dumper": "^5.4|^6.0"
|
2065 |
+
},
|
2066 |
+
"suggest": {
|
2067 |
+
"psr/log": "For using the console logger",
|
2068 |
+
"symfony/event-dispatcher": "",
|
2069 |
+
"symfony/lock": "",
|
2070 |
+
"symfony/process": ""
|
2071 |
+
},
|
2072 |
+
"type": "library",
|
2073 |
+
"autoload": {
|
2074 |
+
"psr-4": {
|
2075 |
+
"Symfony\\Component\\Console\\": ""
|
2076 |
+
},
|
2077 |
+
"exclude-from-classmap": [
|
2078 |
+
"/Tests/"
|
2079 |
+
]
|
2080 |
+
},
|
2081 |
+
"notification-url": "https://packagist.org/downloads/",
|
2082 |
+
"license": [
|
2083 |
+
"MIT"
|
2084 |
+
],
|
2085 |
+
"authors": [
|
2086 |
+
{
|
2087 |
+
"name": "Fabien Potencier",
|
2088 |
+
"email": "fabien@symfony.com"
|
2089 |
+
},
|
2090 |
+
{
|
2091 |
+
"name": "Symfony Community",
|
2092 |
+
"homepage": "https://symfony.com/contributors"
|
2093 |
+
}
|
2094 |
+
],
|
2095 |
+
"description": "Eases the creation of beautiful and testable command line interfaces",
|
2096 |
+
"homepage": "https://symfony.com",
|
2097 |
+
"keywords": [
|
2098 |
+
"cli",
|
2099 |
+
"command line",
|
2100 |
+
"console",
|
2101 |
+
"terminal"
|
2102 |
+
],
|
2103 |
+
"support": {
|
2104 |
+
"source": "https://github.com/symfony/console/tree/v6.0.11"
|
2105 |
+
},
|
2106 |
+
"funding": [
|
2107 |
+
{
|
2108 |
+
"url": "https://symfony.com/sponsor",
|
2109 |
+
"type": "custom"
|
2110 |
+
},
|
2111 |
+
{
|
2112 |
+
"url": "https://github.com/fabpot",
|
2113 |
+
"type": "github"
|
2114 |
+
},
|
2115 |
+
{
|
2116 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
2117 |
+
"type": "tidelift"
|
2118 |
+
}
|
2119 |
+
],
|
2120 |
+
"time": "2022-07-22T14:17:38+00:00"
|
2121 |
+
},
|
2122 |
+
{
|
2123 |
+
"name": "symfony/polyfill-ctype",
|
2124 |
+
"version": "v1.26.0",
|
2125 |
+
"source": {
|
2126 |
+
"type": "git",
|
2127 |
+
"url": "https://github.com/symfony/polyfill-ctype.git",
|
2128 |
+
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
|
2129 |
+
},
|
2130 |
+
"dist": {
|
2131 |
+
"type": "zip",
|
2132 |
+
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
|
2133 |
+
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
|
2134 |
+
"shasum": ""
|
2135 |
+
},
|
2136 |
+
"require": {
|
2137 |
+
"php": ">=7.1"
|
2138 |
+
},
|
2139 |
+
"provide": {
|
2140 |
+
"ext-ctype": "*"
|
2141 |
+
},
|
2142 |
+
"suggest": {
|
2143 |
+
"ext-ctype": "For best performance"
|
2144 |
+
},
|
2145 |
+
"type": "library",
|
2146 |
+
"extra": {
|
2147 |
+
"branch-alias": {
|
2148 |
+
"dev-main": "1.26-dev"
|
2149 |
+
},
|
2150 |
+
"thanks": {
|
2151 |
+
"name": "symfony/polyfill",
|
2152 |
+
"url": "https://github.com/symfony/polyfill"
|
2153 |
+
}
|
2154 |
+
},
|
2155 |
+
"autoload": {
|
2156 |
+
"files": [
|
2157 |
+
"bootstrap.php"
|
2158 |
+
],
|
2159 |
+
"psr-4": {
|
2160 |
+
"Symfony\\Polyfill\\Ctype\\": ""
|
2161 |
+
}
|
2162 |
+
},
|
2163 |
+
"notification-url": "https://packagist.org/downloads/",
|
2164 |
+
"license": [
|
2165 |
+
"MIT"
|
2166 |
+
],
|
2167 |
+
"authors": [
|
2168 |
+
{
|
2169 |
+
"name": "Gert de Pagter",
|
2170 |
+
"email": "BackEndTea@gmail.com"
|
2171 |
+
},
|
2172 |
+
{
|
2173 |
+
"name": "Symfony Community",
|
2174 |
+
"homepage": "https://symfony.com/contributors"
|
2175 |
+
}
|
2176 |
+
],
|
2177 |
+
"description": "Symfony polyfill for ctype functions",
|
2178 |
+
"homepage": "https://symfony.com",
|
2179 |
+
"keywords": [
|
2180 |
+
"compatibility",
|
2181 |
+
"ctype",
|
2182 |
+
"polyfill",
|
2183 |
+
"portable"
|
2184 |
+
],
|
2185 |
+
"support": {
|
2186 |
+
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
|
2187 |
+
},
|
2188 |
+
"funding": [
|
2189 |
+
{
|
2190 |
+
"url": "https://symfony.com/sponsor",
|
2191 |
+
"type": "custom"
|
2192 |
+
},
|
2193 |
+
{
|
2194 |
+
"url": "https://github.com/fabpot",
|
2195 |
+
"type": "github"
|
2196 |
+
},
|
2197 |
+
{
|
2198 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
2199 |
+
"type": "tidelift"
|
2200 |
+
}
|
2201 |
+
],
|
2202 |
+
"time": "2022-05-24T11:49:31+00:00"
|
2203 |
+
},
|
2204 |
+
{
|
2205 |
+
"name": "symfony/polyfill-intl-grapheme",
|
2206 |
+
"version": "v1.26.0",
|
2207 |
+
"source": {
|
2208 |
+
"type": "git",
|
2209 |
+
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
|
2210 |
+
"reference": "433d05519ce6990bf3530fba6957499d327395c2"
|
2211 |
+
},
|
2212 |
+
"dist": {
|
2213 |
+
"type": "zip",
|
2214 |
+
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2",
|
2215 |
+
"reference": "433d05519ce6990bf3530fba6957499d327395c2",
|
2216 |
+
"shasum": ""
|
2217 |
+
},
|
2218 |
+
"require": {
|
2219 |
+
"php": ">=7.1"
|
2220 |
+
},
|
2221 |
+
"suggest": {
|
2222 |
+
"ext-intl": "For best performance"
|
2223 |
+
},
|
2224 |
+
"type": "library",
|
2225 |
+
"extra": {
|
2226 |
+
"branch-alias": {
|
2227 |
+
"dev-main": "1.26-dev"
|
2228 |
+
},
|
2229 |
+
"thanks": {
|
2230 |
+
"name": "symfony/polyfill",
|
2231 |
+
"url": "https://github.com/symfony/polyfill"
|
2232 |
+
}
|
2233 |
+
},
|
2234 |
+
"autoload": {
|
2235 |
+
"files": [
|
2236 |
+
"bootstrap.php"
|
2237 |
+
],
|
2238 |
+
"psr-4": {
|
2239 |
+
"Symfony\\Polyfill\\Intl\\Grapheme\\": ""
|
2240 |
+
}
|
2241 |
+
},
|
2242 |
+
"notification-url": "https://packagist.org/downloads/",
|
2243 |
+
"license": [
|
2244 |
+
"MIT"
|
2245 |
+
],
|
2246 |
+
"authors": [
|
2247 |
+
{
|
2248 |
+
"name": "Nicolas Grekas",
|
2249 |
+
"email": "p@tchwork.com"
|
2250 |
+
},
|
2251 |
+
{
|
2252 |
+
"name": "Symfony Community",
|
2253 |
+
"homepage": "https://symfony.com/contributors"
|
2254 |
+
}
|
2255 |
+
],
|
2256 |
+
"description": "Symfony polyfill for intl's grapheme_* functions",
|
2257 |
+
"homepage": "https://symfony.com",
|
2258 |
+
"keywords": [
|
2259 |
+
"compatibility",
|
2260 |
+
"grapheme",
|
2261 |
+
"intl",
|
2262 |
+
"polyfill",
|
2263 |
+
"portable",
|
2264 |
+
"shim"
|
2265 |
+
],
|
2266 |
+
"support": {
|
2267 |
+
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0"
|
2268 |
+
},
|
2269 |
+
"funding": [
|
2270 |
+
{
|
2271 |
+
"url": "https://symfony.com/sponsor",
|
2272 |
+
"type": "custom"
|
2273 |
+
},
|
2274 |
+
{
|
2275 |
+
"url": "https://github.com/fabpot",
|
2276 |
+
"type": "github"
|
2277 |
+
},
|
2278 |
+
{
|
2279 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
2280 |
+
"type": "tidelift"
|
2281 |
+
}
|
2282 |
+
],
|
2283 |
+
"time": "2022-05-24T11:49:31+00:00"
|
2284 |
+
},
|
2285 |
+
{
|
2286 |
+
"name": "symfony/polyfill-intl-normalizer",
|
2287 |
+
"version": "v1.26.0",
|
2288 |
+
"source": {
|
2289 |
+
"type": "git",
|
2290 |
+
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
2291 |
+
"reference": "219aa369ceff116e673852dce47c3a41794c14bd"
|
2292 |
+
},
|
2293 |
+
"dist": {
|
2294 |
+
"type": "zip",
|
2295 |
+
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
|
2296 |
+
"reference": "219aa369ceff116e673852dce47c3a41794c14bd",
|
2297 |
+
"shasum": ""
|
2298 |
+
},
|
2299 |
+
"require": {
|
2300 |
+
"php": ">=7.1"
|
2301 |
+
},
|
2302 |
+
"suggest": {
|
2303 |
+
"ext-intl": "For best performance"
|
2304 |
+
},
|
2305 |
+
"type": "library",
|
2306 |
+
"extra": {
|
2307 |
+
"branch-alias": {
|
2308 |
+
"dev-main": "1.26-dev"
|
2309 |
+
},
|
2310 |
+
"thanks": {
|
2311 |
+
"name": "symfony/polyfill",
|
2312 |
+
"url": "https://github.com/symfony/polyfill"
|
2313 |
+
}
|
2314 |
+
},
|
2315 |
+
"autoload": {
|
2316 |
+
"files": [
|
2317 |
+
"bootstrap.php"
|
2318 |
+
],
|
2319 |
+
"psr-4": {
|
2320 |
+
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
|
2321 |
+
},
|
2322 |
+
"classmap": [
|
2323 |
+
"Resources/stubs"
|
2324 |
+
]
|
2325 |
+
},
|
2326 |
+
"notification-url": "https://packagist.org/downloads/",
|
2327 |
+
"license": [
|
2328 |
+
"MIT"
|
2329 |
+
],
|
2330 |
+
"authors": [
|
2331 |
+
{
|
2332 |
+
"name": "Nicolas Grekas",
|
2333 |
+
"email": "p@tchwork.com"
|
2334 |
+
},
|
2335 |
+
{
|
2336 |
+
"name": "Symfony Community",
|
2337 |
+
"homepage": "https://symfony.com/contributors"
|
2338 |
+
}
|
2339 |
+
],
|
2340 |
+
"description": "Symfony polyfill for intl's Normalizer class and related functions",
|
2341 |
+
"homepage": "https://symfony.com",
|
2342 |
+
"keywords": [
|
2343 |
+
"compatibility",
|
2344 |
+
"intl",
|
2345 |
+
"normalizer",
|
2346 |
+
"polyfill",
|
2347 |
+
"portable",
|
2348 |
+
"shim"
|
2349 |
+
],
|
2350 |
+
"support": {
|
2351 |
+
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
|
2352 |
+
},
|
2353 |
+
"funding": [
|
2354 |
+
{
|
2355 |
+
"url": "https://symfony.com/sponsor",
|
2356 |
+
"type": "custom"
|
2357 |
+
},
|
2358 |
+
{
|
2359 |
+
"url": "https://github.com/fabpot",
|
2360 |
+
"type": "github"
|
2361 |
+
},
|
2362 |
+
{
|
2363 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
2364 |
+
"type": "tidelift"
|
2365 |
+
}
|
2366 |
+
],
|
2367 |
+
"time": "2022-05-24T11:49:31+00:00"
|
2368 |
+
},
|
2369 |
+
{
|
2370 |
+
"name": "symfony/polyfill-mbstring",
|
2371 |
+
"version": "v1.26.0",
|
2372 |
+
"source": {
|
2373 |
+
"type": "git",
|
2374 |
+
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
2375 |
+
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
|
2376 |
+
},
|
2377 |
+
"dist": {
|
2378 |
+
"type": "zip",
|
2379 |
+
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
|
2380 |
+
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
|
2381 |
+
"shasum": ""
|
2382 |
+
},
|
2383 |
+
"require": {
|
2384 |
+
"php": ">=7.1"
|
2385 |
+
},
|
2386 |
+
"provide": {
|
2387 |
+
"ext-mbstring": "*"
|
2388 |
+
},
|
2389 |
+
"suggest": {
|
2390 |
+
"ext-mbstring": "For best performance"
|
2391 |
+
},
|
2392 |
+
"type": "library",
|
2393 |
+
"extra": {
|
2394 |
+
"branch-alias": {
|
2395 |
+
"dev-main": "1.26-dev"
|
2396 |
+
},
|
2397 |
+
"thanks": {
|
2398 |
+
"name": "symfony/polyfill",
|
2399 |
+
"url": "https://github.com/symfony/polyfill"
|
2400 |
+
}
|
2401 |
+
},
|
2402 |
+
"autoload": {
|
2403 |
+
"files": [
|
2404 |
+
"bootstrap.php"
|
2405 |
+
],
|
2406 |
+
"psr-4": {
|
2407 |
+
"Symfony\\Polyfill\\Mbstring\\": ""
|
2408 |
+
}
|
2409 |
+
},
|
2410 |
+
"notification-url": "https://packagist.org/downloads/",
|
2411 |
+
"license": [
|
2412 |
+
"MIT"
|
2413 |
+
],
|
2414 |
+
"authors": [
|
2415 |
+
{
|
2416 |
+
"name": "Nicolas Grekas",
|
2417 |
+
"email": "p@tchwork.com"
|
2418 |
+
},
|
2419 |
+
{
|
2420 |
+
"name": "Symfony Community",
|
2421 |
+
"homepage": "https://symfony.com/contributors"
|
2422 |
+
}
|
2423 |
+
],
|
2424 |
+
"description": "Symfony polyfill for the Mbstring extension",
|
2425 |
+
"homepage": "https://symfony.com",
|
2426 |
+
"keywords": [
|
2427 |
+
"compatibility",
|
2428 |
+
"mbstring",
|
2429 |
+
"polyfill",
|
2430 |
+
"portable",
|
2431 |
+
"shim"
|
2432 |
+
],
|
2433 |
+
"support": {
|
2434 |
+
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
|
2435 |
+
},
|
2436 |
+
"funding": [
|
2437 |
+
{
|
2438 |
+
"url": "https://symfony.com/sponsor",
|
2439 |
+
"type": "custom"
|
2440 |
+
},
|
2441 |
+
{
|
2442 |
+
"url": "https://github.com/fabpot",
|
2443 |
+
"type": "github"
|
2444 |
+
},
|
2445 |
+
{
|
2446 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
2447 |
+
"type": "tidelift"
|
2448 |
+
}
|
2449 |
+
],
|
2450 |
+
"time": "2022-05-24T11:49:31+00:00"
|
2451 |
+
},
|
2452 |
+
{
|
2453 |
+
"name": "symfony/process",
|
2454 |
+
"version": "v6.0.11",
|
2455 |
+
"source": {
|
2456 |
+
"type": "git",
|
2457 |
+
"url": "https://github.com/symfony/process.git",
|
2458 |
+
"reference": "44270a08ccb664143dede554ff1c00aaa2247a43"
|
2459 |
+
},
|
2460 |
+
"dist": {
|
2461 |
+
"type": "zip",
|
2462 |
+
"url": "https://api.github.com/repos/symfony/process/zipball/44270a08ccb664143dede554ff1c00aaa2247a43",
|
2463 |
+
"reference": "44270a08ccb664143dede554ff1c00aaa2247a43",
|
2464 |
+
"shasum": ""
|
2465 |
+
},
|
2466 |
+
"require": {
|
2467 |
+
"php": ">=8.0.2"
|
2468 |
+
},
|
2469 |
+
"type": "library",
|
2470 |
+
"autoload": {
|
2471 |
+
"psr-4": {
|
2472 |
+
"Symfony\\Component\\Process\\": ""
|
2473 |
+
},
|
2474 |
+
"exclude-from-classmap": [
|
2475 |
+
"/Tests/"
|
2476 |
+
]
|
2477 |
+
},
|
2478 |
+
"notification-url": "https://packagist.org/downloads/",
|
2479 |
+
"license": [
|
2480 |
+
"MIT"
|
2481 |
+
],
|
2482 |
+
"authors": [
|
2483 |
+
{
|
2484 |
+
"name": "Fabien Potencier",
|
2485 |
+
"email": "fabien@symfony.com"
|
2486 |
+
},
|
2487 |
+
{
|
2488 |
+
"name": "Symfony Community",
|
2489 |
+
"homepage": "https://symfony.com/contributors"
|
2490 |
+
}
|
2491 |
+
],
|
2492 |
+
"description": "Executes commands in sub-processes",
|
2493 |
+
"homepage": "https://symfony.com",
|
2494 |
+
"support": {
|
2495 |
+
"source": "https://github.com/symfony/process/tree/v6.0.11"
|
2496 |
+
},
|
2497 |
+
"funding": [
|
2498 |
+
{
|
2499 |
+
"url": "https://symfony.com/sponsor",
|
2500 |
+
"type": "custom"
|
2501 |
+
},
|
2502 |
+
{
|
2503 |
+
"url": "https://github.com/fabpot",
|
2504 |
+
"type": "github"
|
2505 |
+
},
|
2506 |
+
{
|
2507 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
2508 |
+
"type": "tidelift"
|
2509 |
+
}
|
2510 |
+
],
|
2511 |
+
"time": "2022-06-27T17:10:44+00:00"
|
2512 |
+
},
|
2513 |
+
{
|
2514 |
+
"name": "symfony/service-contracts",
|
2515 |
+
"version": "v3.0.2",
|
2516 |
+
"source": {
|
2517 |
+
"type": "git",
|
2518 |
+
"url": "https://github.com/symfony/service-contracts.git",
|
2519 |
+
"reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66"
|
2520 |
+
},
|
2521 |
+
"dist": {
|
2522 |
+
"type": "zip",
|
2523 |
+
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/d78d39c1599bd1188b8e26bb341da52c3c6d8a66",
|
2524 |
+
"reference": "d78d39c1599bd1188b8e26bb341da52c3c6d8a66",
|
2525 |
+
"shasum": ""
|
2526 |
+
},
|
2527 |
+
"require": {
|
2528 |
+
"php": ">=8.0.2",
|
2529 |
+
"psr/container": "^2.0"
|
2530 |
+
},
|
2531 |
+
"conflict": {
|
2532 |
+
"ext-psr": "<1.1|>=2"
|
2533 |
+
},
|
2534 |
+
"suggest": {
|
2535 |
+
"symfony/service-implementation": ""
|
2536 |
+
},
|
2537 |
+
"type": "library",
|
2538 |
+
"extra": {
|
2539 |
+
"branch-alias": {
|
2540 |
+
"dev-main": "3.0-dev"
|
2541 |
+
},
|
2542 |
+
"thanks": {
|
2543 |
+
"name": "symfony/contracts",
|
2544 |
+
"url": "https://github.com/symfony/contracts"
|
2545 |
+
}
|
2546 |
+
},
|
2547 |
+
"autoload": {
|
2548 |
+
"psr-4": {
|
2549 |
+
"Symfony\\Contracts\\Service\\": ""
|
2550 |
+
}
|
2551 |
+
},
|
2552 |
+
"notification-url": "https://packagist.org/downloads/",
|
2553 |
+
"license": [
|
2554 |
+
"MIT"
|
2555 |
+
],
|
2556 |
+
"authors": [
|
2557 |
+
{
|
2558 |
+
"name": "Nicolas Grekas",
|
2559 |
+
"email": "p@tchwork.com"
|
2560 |
+
},
|
2561 |
+
{
|
2562 |
+
"name": "Symfony Community",
|
2563 |
+
"homepage": "https://symfony.com/contributors"
|
2564 |
+
}
|
2565 |
+
],
|
2566 |
+
"description": "Generic abstractions related to writing services",
|
2567 |
+
"homepage": "https://symfony.com",
|
2568 |
+
"keywords": [
|
2569 |
+
"abstractions",
|
2570 |
+
"contracts",
|
2571 |
+
"decoupling",
|
2572 |
+
"interfaces",
|
2573 |
+
"interoperability",
|
2574 |
+
"standards"
|
2575 |
+
],
|
2576 |
+
"support": {
|
2577 |
+
"source": "https://github.com/symfony/service-contracts/tree/v3.0.2"
|
2578 |
+
},
|
2579 |
+
"funding": [
|
2580 |
+
{
|
2581 |
+
"url": "https://symfony.com/sponsor",
|
2582 |
+
"type": "custom"
|
2583 |
+
},
|
2584 |
+
{
|
2585 |
+
"url": "https://github.com/fabpot",
|
2586 |
+
"type": "github"
|
2587 |
+
},
|
2588 |
+
{
|
2589 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
2590 |
+
"type": "tidelift"
|
2591 |
+
}
|
2592 |
+
],
|
2593 |
+
"time": "2022-05-30T19:17:58+00:00"
|
2594 |
+
},
|
2595 |
+
{
|
2596 |
+
"name": "symfony/string",
|
2597 |
+
"version": "v6.0.11",
|
2598 |
+
"source": {
|
2599 |
+
"type": "git",
|
2600 |
+
"url": "https://github.com/symfony/string.git",
|
2601 |
+
"reference": "042b6bf0f6ccca6d456a0572eb788cfb8b1ff809"
|
2602 |
+
},
|
2603 |
+
"dist": {
|
2604 |
+
"type": "zip",
|
2605 |
+
"url": "https://api.github.com/repos/symfony/string/zipball/042b6bf0f6ccca6d456a0572eb788cfb8b1ff809",
|
2606 |
+
"reference": "042b6bf0f6ccca6d456a0572eb788cfb8b1ff809",
|
2607 |
+
"shasum": ""
|
2608 |
+
},
|
2609 |
+
"require": {
|
2610 |
+
"php": ">=8.0.2",
|
2611 |
+
"symfony/polyfill-ctype": "~1.8",
|
2612 |
+
"symfony/polyfill-intl-grapheme": "~1.0",
|
2613 |
+
"symfony/polyfill-intl-normalizer": "~1.0",
|
2614 |
+
"symfony/polyfill-mbstring": "~1.0"
|
2615 |
+
},
|
2616 |
+
"conflict": {
|
2617 |
+
"symfony/translation-contracts": "<2.0"
|
2618 |
+
},
|
2619 |
+
"require-dev": {
|
2620 |
+
"symfony/error-handler": "^5.4|^6.0",
|
2621 |
+
"symfony/http-client": "^5.4|^6.0",
|
2622 |
+
"symfony/translation-contracts": "^2.0|^3.0",
|
2623 |
+
"symfony/var-exporter": "^5.4|^6.0"
|
2624 |
+
},
|
2625 |
+
"type": "library",
|
2626 |
+
"autoload": {
|
2627 |
+
"files": [
|
2628 |
+
"Resources/functions.php"
|
2629 |
+
],
|
2630 |
+
"psr-4": {
|
2631 |
+
"Symfony\\Component\\String\\": ""
|
2632 |
+
},
|
2633 |
+
"exclude-from-classmap": [
|
2634 |
+
"/Tests/"
|
2635 |
+
]
|
2636 |
+
},
|
2637 |
+
"notification-url": "https://packagist.org/downloads/",
|
2638 |
+
"license": [
|
2639 |
+
"MIT"
|
2640 |
+
],
|
2641 |
+
"authors": [
|
2642 |
+
{
|
2643 |
+
"name": "Nicolas Grekas",
|
2644 |
+
"email": "p@tchwork.com"
|
2645 |
+
},
|
2646 |
+
{
|
2647 |
+
"name": "Symfony Community",
|
2648 |
+
"homepage": "https://symfony.com/contributors"
|
2649 |
+
}
|
2650 |
+
],
|
2651 |
+
"description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
|
2652 |
+
"homepage": "https://symfony.com",
|
2653 |
+
"keywords": [
|
2654 |
+
"grapheme",
|
2655 |
+
"i18n",
|
2656 |
+
"string",
|
2657 |
+
"unicode",
|
2658 |
+
"utf-8",
|
2659 |
+
"utf8"
|
2660 |
+
],
|
2661 |
+
"support": {
|
2662 |
+
"source": "https://github.com/symfony/string/tree/v6.0.11"
|
2663 |
+
},
|
2664 |
+
"funding": [
|
2665 |
+
{
|
2666 |
+
"url": "https://symfony.com/sponsor",
|
2667 |
+
"type": "custom"
|
2668 |
+
},
|
2669 |
+
{
|
2670 |
+
"url": "https://github.com/fabpot",
|
2671 |
+
"type": "github"
|
2672 |
+
},
|
2673 |
+
{
|
2674 |
+
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
2675 |
+
"type": "tidelift"
|
2676 |
+
}
|
2677 |
+
],
|
2678 |
+
"time": "2022-07-27T15:50:26+00:00"
|
2679 |
+
},
|
2680 |
+
{
|
2681 |
+
"name": "theseer/tokenizer",
|
2682 |
+
"version": "1.2.1",
|
2683 |
+
"source": {
|
2684 |
+
"type": "git",
|
2685 |
+
"url": "https://github.com/theseer/tokenizer.git",
|
2686 |
+
"reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
|
2687 |
+
},
|
2688 |
+
"dist": {
|
2689 |
+
"type": "zip",
|
2690 |
+
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
|
2691 |
+
"reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
|
2692 |
+
"shasum": ""
|
2693 |
+
},
|
2694 |
+
"require": {
|
2695 |
+
"ext-dom": "*",
|
2696 |
+
"ext-tokenizer": "*",
|
2697 |
+
"ext-xmlwriter": "*",
|
2698 |
+
"php": "^7.2 || ^8.0"
|
2699 |
+
},
|
2700 |
+
"type": "library",
|
2701 |
+
"autoload": {
|
2702 |
+
"classmap": [
|
2703 |
+
"src/"
|
2704 |
+
]
|
2705 |
+
},
|
2706 |
+
"notification-url": "https://packagist.org/downloads/",
|
2707 |
+
"license": [
|
2708 |
+
"BSD-3-Clause"
|
2709 |
+
],
|
2710 |
+
"authors": [
|
2711 |
+
{
|
2712 |
+
"name": "Arne Blankerts",
|
2713 |
+
"email": "arne@blankerts.de",
|
2714 |
+
"role": "Developer"
|
2715 |
+
}
|
2716 |
+
],
|
2717 |
+
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
|
2718 |
+
"support": {
|
2719 |
+
"issues": "https://github.com/theseer/tokenizer/issues",
|
2720 |
+
"source": "https://github.com/theseer/tokenizer/tree/1.2.1"
|
2721 |
+
},
|
2722 |
+
"funding": [
|
2723 |
+
{
|
2724 |
+
"url": "https://github.com/theseer",
|
2725 |
+
"type": "github"
|
2726 |
+
}
|
2727 |
+
],
|
2728 |
+
"time": "2021-07-28T10:34:58+00:00"
|
2729 |
+
},
|
2730 |
+
{
|
2731 |
+
"name": "webmozart/assert",
|
2732 |
+
"version": "1.11.0",
|
2733 |
+
"source": {
|
2734 |
+
"type": "git",
|
2735 |
+
"url": "https://github.com/webmozarts/assert.git",
|
2736 |
+
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
|
2737 |
+
},
|
2738 |
+
"dist": {
|
2739 |
+
"type": "zip",
|
2740 |
+
"url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
|
2741 |
+
"reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
|
2742 |
+
"shasum": ""
|
2743 |
+
},
|
2744 |
+
"require": {
|
2745 |
+
"ext-ctype": "*",
|
2746 |
+
"php": "^7.2 || ^8.0"
|
2747 |
+
},
|
2748 |
+
"conflict": {
|
2749 |
+
"phpstan/phpstan": "<0.12.20",
|
2750 |
+
"vimeo/psalm": "<4.6.1 || 4.6.2"
|
2751 |
+
},
|
2752 |
+
"require-dev": {
|
2753 |
+
"phpunit/phpunit": "^8.5.13"
|
2754 |
+
},
|
2755 |
+
"type": "library",
|
2756 |
+
"extra": {
|
2757 |
+
"branch-alias": {
|
2758 |
+
"dev-master": "1.10-dev"
|
2759 |
+
}
|
2760 |
+
},
|
2761 |
+
"autoload": {
|
2762 |
+
"psr-4": {
|
2763 |
+
"Webmozart\\Assert\\": "src/"
|
2764 |
+
}
|
2765 |
+
},
|
2766 |
+
"notification-url": "https://packagist.org/downloads/",
|
2767 |
+
"license": [
|
2768 |
+
"MIT"
|
2769 |
+
],
|
2770 |
+
"authors": [
|
2771 |
+
{
|
2772 |
+
"name": "Bernhard Schussek",
|
2773 |
+
"email": "bschussek@gmail.com"
|
2774 |
+
}
|
2775 |
+
],
|
2776 |
+
"description": "Assertions to validate method input/output with nice error messages.",
|
2777 |
+
"keywords": [
|
2778 |
+
"assert",
|
2779 |
+
"check",
|
2780 |
+
"validate"
|
2781 |
+
],
|
2782 |
+
"support": {
|
2783 |
+
"issues": "https://github.com/webmozarts/assert/issues",
|
2784 |
+
"source": "https://github.com/webmozarts/assert/tree/1.11.0"
|
2785 |
+
},
|
2786 |
+
"time": "2022-06-03T18:03:27+00:00"
|
2787 |
+
},
|
2788 |
+
{
|
2789 |
+
"name": "wikimedia/at-ease",
|
2790 |
+
"version": "v2.1.0",
|
2791 |
+
"source": {
|
2792 |
+
"type": "git",
|
2793 |
+
"url": "https://github.com/wikimedia/at-ease.git",
|
2794 |
+
"reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33"
|
2795 |
+
},
|
2796 |
+
"dist": {
|
2797 |
+
"type": "zip",
|
2798 |
+
"url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33",
|
2799 |
+
"reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33",
|
2800 |
+
"shasum": ""
|
2801 |
+
},
|
2802 |
+
"require": {
|
2803 |
+
"php": ">=7.2.9"
|
2804 |
+
},
|
2805 |
+
"require-dev": {
|
2806 |
+
"mediawiki/mediawiki-codesniffer": "35.0.0",
|
2807 |
+
"mediawiki/minus-x": "1.1.1",
|
2808 |
+
"ockcyp/covers-validator": "1.3.3",
|
2809 |
+
"php-parallel-lint/php-console-highlighter": "0.5.0",
|
2810 |
+
"php-parallel-lint/php-parallel-lint": "1.2.0",
|
2811 |
+
"phpunit/phpunit": "^8.5"
|
2812 |
+
},
|
2813 |
+
"type": "library",
|
2814 |
+
"autoload": {
|
2815 |
+
"files": [
|
2816 |
+
"src/Wikimedia/Functions.php"
|
2817 |
+
],
|
2818 |
+
"psr-4": {
|
2819 |
+
"Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/"
|
2820 |
+
}
|
2821 |
+
},
|
2822 |
+
"notification-url": "https://packagist.org/downloads/",
|
2823 |
+
"license": [
|
2824 |
+
"GPL-2.0-or-later"
|
2825 |
+
],
|
2826 |
+
"authors": [
|
2827 |
+
{
|
2828 |
+
"name": "Tim Starling",
|
2829 |
+
"email": "tstarling@wikimedia.org"
|
2830 |
+
},
|
2831 |
+
{
|
2832 |
+
"name": "MediaWiki developers",
|
2833 |
+
"email": "wikitech-l@lists.wikimedia.org"
|
2834 |
+
}
|
2835 |
+
],
|
2836 |
+
"description": "Safe replacement to @ for suppressing warnings.",
|
2837 |
+
"homepage": "https://www.mediawiki.org/wiki/at-ease",
|
2838 |
+
"support": {
|
2839 |
+
"source": "https://github.com/wikimedia/at-ease/tree/v2.1.0"
|
2840 |
+
},
|
2841 |
+
"time": "2021-02-27T15:53:37+00:00"
|
2842 |
+
},
|
2843 |
+
{
|
2844 |
+
"name": "yoast/phpunit-polyfills",
|
2845 |
+
"version": "1.0.3",
|
2846 |
+
"source": {
|
2847 |
+
"type": "git",
|
2848 |
+
"url": "https://github.com/Yoast/PHPUnit-Polyfills.git",
|
2849 |
+
"reference": "5ea3536428944955f969bc764bbe09738e151ada"
|
2850 |
+
},
|
2851 |
+
"dist": {
|
2852 |
+
"type": "zip",
|
2853 |
+
"url": "https://api.github.com/repos/Yoast/PHPUnit-Polyfills/zipball/5ea3536428944955f969bc764bbe09738e151ada",
|
2854 |
+
"reference": "5ea3536428944955f969bc764bbe09738e151ada",
|
2855 |
+
"shasum": ""
|
2856 |
+
},
|
2857 |
+
"require": {
|
2858 |
+
"php": ">=5.4",
|
2859 |
+
"phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
|
2860 |
+
},
|
2861 |
+
"require-dev": {
|
2862 |
+
"yoast/yoastcs": "^2.2.0"
|
2863 |
+
},
|
2864 |
+
"type": "library",
|
2865 |
+
"extra": {
|
2866 |
+
"branch-alias": {
|
2867 |
+
"dev-main": "1.x-dev",
|
2868 |
+
"dev-develop": "1.x-dev"
|
2869 |
+
}
|
2870 |
+
},
|
2871 |
+
"autoload": {
|
2872 |
+
"files": [
|
2873 |
+
"phpunitpolyfills-autoload.php"
|
2874 |
+
]
|
2875 |
+
},
|
2876 |
+
"notification-url": "https://packagist.org/downloads/",
|
2877 |
+
"license": [
|
2878 |
+
"BSD-3-Clause"
|
2879 |
+
],
|
2880 |
+
"authors": [
|
2881 |
+
{
|
2882 |
+
"name": "Team Yoast",
|
2883 |
+
"email": "support@yoast.com",
|
2884 |
+
"homepage": "https://yoast.com"
|
2885 |
+
},
|
2886 |
+
{
|
2887 |
+
"name": "Contributors",
|
2888 |
+
"homepage": "https://github.com/Yoast/PHPUnit-Polyfills/graphs/contributors"
|
2889 |
+
}
|
2890 |
+
],
|
2891 |
+
"description": "Set of polyfills for changed PHPUnit functionality to allow for creating PHPUnit cross-version compatible tests",
|
2892 |
+
"homepage": "https://github.com/Yoast/PHPUnit-Polyfills",
|
2893 |
+
"keywords": [
|
2894 |
+
"phpunit",
|
2895 |
+
"polyfill",
|
2896 |
+
"testing"
|
2897 |
+
],
|
2898 |
+
"support": {
|
2899 |
+
"issues": "https://github.com/Yoast/PHPUnit-Polyfills/issues",
|
2900 |
+
"source": "https://github.com/Yoast/PHPUnit-Polyfills"
|
2901 |
+
},
|
2902 |
+
"time": "2021-11-23T01:37:03+00:00"
|
2903 |
+
}
|
2904 |
+
],
|
2905 |
+
"aliases": [],
|
2906 |
+
"minimum-stability": "dev",
|
2907 |
+
"stability-flags": [],
|
2908 |
+
"prefer-stable": true,
|
2909 |
+
"prefer-lowest": false,
|
2910 |
+
"platform": [],
|
2911 |
+
"platform-dev": [],
|
2912 |
+
"plugin-api-version": "2.3.0"
|
2913 |
+
}
|
inc/delete-cache-button.js
CHANGED
@@ -1,31 +1,31 @@
|
|
1 |
-
(function ($) {
|
2 |
-
$(document).ready(function () {
|
3 |
-
$('#wp-admin-bar-delete-cache').click
|
4 |
-
$('#wp-admin-bar-delete-cache').fadeOut('slow');
|
5 |
-
$.ajax({
|
6 |
-
type:
|
7 |
-
dataType:
|
8 |
url: wpsc_ajax.ajax_url,
|
9 |
data: {
|
10 |
// wp ajax action
|
11 |
action: 'ajax-delete-cache',
|
12 |
|
13 |
-
path:
|
14 |
admin: wpsc_ajax.admin,
|
15 |
|
16 |
// send the nonce along with the request
|
17 |
-
nonce: wpsc_ajax.nonce
|
18 |
},
|
19 |
-
success: function(msg) {
|
20 |
wpsc_ajax.admin == 1 && console.log( 'Deleted entire cache' );
|
21 |
-
wpsc_ajax.admin == 0 && console.log( 'Deleted cache for this page and reloading' );
|
|
|
22 |
},
|
23 |
-
complete: function(msg) {
|
24 |
-
$('#wp-admin-bar-delete-cache').fadeIn('slow');
|
25 |
},
|
26 |
-
});
|
27 |
return false;
|
28 |
-
});
|
29 |
-
|
30 |
-
|
31 |
-
})(jQuery);
|
1 |
+
( function ( $ ) {
|
2 |
+
$( document ).ready( function () {
|
3 |
+
$( '#wp-admin-bar-delete-cache' ).on( 'click', function () {
|
4 |
+
$( '#wp-admin-bar-delete-cache' ).fadeOut( 'slow' );
|
5 |
+
$.ajax( {
|
6 |
+
type: 'post',
|
7 |
+
dataType: 'json',
|
8 |
url: wpsc_ajax.ajax_url,
|
9 |
data: {
|
10 |
// wp ajax action
|
11 |
action: 'ajax-delete-cache',
|
12 |
|
13 |
+
path: wpsc_ajax.path,
|
14 |
admin: wpsc_ajax.admin,
|
15 |
|
16 |
// send the nonce along with the request
|
17 |
+
nonce: wpsc_ajax.nonce,
|
18 |
},
|
19 |
+
success: function ( msg ) {
|
20 |
wpsc_ajax.admin == 1 && console.log( 'Deleted entire cache' );
|
21 |
+
wpsc_ajax.admin == 0 && console.log( 'Deleted cache for this page and reloading' );
|
22 |
+
window.location.reload();
|
23 |
},
|
24 |
+
complete: function ( msg ) {
|
25 |
+
$( '#wp-admin-bar-delete-cache' ).fadeIn( 'slow' );
|
26 |
},
|
27 |
+
} );
|
28 |
return false;
|
29 |
+
} );
|
30 |
+
} );
|
31 |
+
} )( jQuery );
|
|
inc/preload-notification.js
CHANGED
@@ -1,18 +1,18 @@
|
|
1 |
-
jQuery(document).ready(function () {
|
2 |
load_preload_status();
|
3 |
-
setInterval(
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
1000
|
8 |
-
);
|
9 |
-
})
|
10 |
|
|
|
|
|
|
|
11 |
function load_preload_status() {
|
12 |
-
jQuery.get({
|
13 |
url: wpsc_preload_ajax.preload_permalink_url + '?' + Math.random(),
|
14 |
-
success: function( response ) {
|
15 |
jQuery( '#preload_status' ).text( response );
|
16 |
-
}
|
17 |
-
})
|
18 |
}
|
1 |
+
jQuery( document ).ready( function () {
|
2 |
load_preload_status();
|
3 |
+
setInterval( function () {
|
4 |
+
load_preload_status();
|
5 |
+
}, 1000 );
|
6 |
+
} );
|
|
|
|
|
|
|
7 |
|
8 |
+
/**
|
9 |
+
*
|
10 |
+
*/
|
11 |
function load_preload_status() {
|
12 |
+
jQuery.get( {
|
13 |
url: wpsc_preload_ajax.preload_permalink_url + '?' + Math.random(),
|
14 |
+
success: function ( response ) {
|
15 |
jQuery( '#preload_status' ).text( response );
|
16 |
+
},
|
17 |
+
} );
|
18 |
}
|
languages/wp-super-cache-de_DE.po
CHANGED
@@ -177,7 +177,7 @@ msgid "Additional CNAMES"
|
|
177 |
msgstr "Weitere CNAMES"
|
178 |
|
179 |
#: ossdl-cdn.php:184
|
180 |
-
msgid "These <a href=\"
|
181 |
msgstr "Diese <a href=\"http://de.wikipedia.org/wiki/CNAME\">CNAMES</a> werden anstatt der %1$s für Rewriting genutzt (als Ergänzung zu dem Off-Site URL weiter oben). Benutze ein Komma als Trennzeichen. Für Seiten mit einer großen Anzahl statischer Dateien kann sich dadurch die Leistung des Browsers verbessern. Es kann sein, das CNAMEs auch in deinem CDN konfiguriert werden müssen.<br />Als Beispiel: %2$s"
|
182 |
|
183 |
#: ossdl-cdn.php:188
|
177 |
msgstr "Weitere CNAMES"
|
178 |
|
179 |
#: ossdl-cdn.php:184
|
180 |
+
msgid "These <a href=\"https://www.wikipedia.org/wiki/CNAME_record\">CNAMES</a> will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.<br />Example: %2$s"
|
181 |
msgstr "Diese <a href=\"http://de.wikipedia.org/wiki/CNAME\">CNAMES</a> werden anstatt der %1$s für Rewriting genutzt (als Ergänzung zu dem Off-Site URL weiter oben). Benutze ein Komma als Trennzeichen. Für Seiten mit einer großen Anzahl statischer Dateien kann sich dadurch die Leistung des Browsers verbessern. Es kann sein, das CNAMEs auch in deinem CDN konfiguriert werden müssen.<br />Als Beispiel: %2$s"
|
182 |
|
183 |
#: ossdl-cdn.php:188
|
languages/wp-super-cache-ja.po
CHANGED
@@ -172,8 +172,8 @@ msgid "Additional CNAMES"
|
|
172 |
msgstr "追加 CNAME"
|
173 |
|
174 |
#: ossdl-cdn.php:184
|
175 |
-
msgid "These <a href=\"
|
176 |
-
msgstr "上記 <a href=\"
|
177 |
|
178 |
#: ossdl-cdn.php:188
|
179 |
msgid "Skip https URLs to avoid \"mixed content\" errors"
|
172 |
msgstr "追加 CNAME"
|
173 |
|
174 |
#: ossdl-cdn.php:184
|
175 |
+
msgid "These <a href=\"https://www.wikipedia.org/wiki/CNAME_record\">CNAMES</a> will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.<br />Example: %2$s"
|
176 |
+
msgstr "上記 <a href=\"https://www.wikipedia.org/wiki/CNAME_record\">CNAME</a> は %1$s の代わりに (さらに上のオフサイト URL に加えて) rewriteで使用されます。複数の場合はコンマで区切ってください。静的ファイルが多数あるページの場合にブラウザーのパフォーマンスを改善できます。CNAME は CDN で設定する必要があるかもしれません。<br />例: %2$s"
|
177 |
|
178 |
#: ossdl-cdn.php:188
|
179 |
msgid "Skip https URLs to avoid \"mixed content\" errors"
|
languages/wp-super-cache-ru_RU.po
CHANGED
@@ -67,8 +67,8 @@ msgid "Additional CNAMES"
|
|
67 |
msgstr "Дополнительные CNAME (канонические имена)"
|
68 |
|
69 |
#: ossdl-cdn.php:184
|
70 |
-
msgid "These <a href=\"
|
71 |
-
msgstr "Эти записи <a href=\"
|
72 |
|
73 |
#: ossdl-cdn.php:188
|
74 |
msgid "Skip https URLs to avoid \"mixed content\" errors"
|
67 |
msgstr "Дополнительные CNAME (канонические имена)"
|
68 |
|
69 |
#: ossdl-cdn.php:184
|
70 |
+
msgid "These <a href=\"https://www.wikipedia.org/wiki/CNAME_record\">CNAMES</a> will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.<br />Example: %2$s"
|
71 |
+
msgstr "Эти записи <a href=\"https://www.wikipedia.org/wiki/CNAME_record\">CNAME</a> будут использованы вместо %1$s (в дополнении к основному URL). Используйте запятую (,) для разделения записей. Для страниц с большим количеством статичных файлов данная опция может уменьшить время загрузки. Записи CNAME также могут быть использованы для конфигурации CDN.<br />Пример: %2$s"
|
72 |
|
73 |
#: ossdl-cdn.php:188
|
74 |
msgid "Skip https URLs to avoid \"mixed content\" errors"
|
languages/wp-super-cache-sr_RS.po
CHANGED
@@ -116,13 +116,13 @@ msgstr "Dodatni CNAME zapisi"
|
|
116 |
|
117 |
#: ossdl-cdn.php:189
|
118 |
msgid ""
|
119 |
-
"These <a href=\"
|
120 |
"be used in place of %1$s for rewriting (in addition to the off-site URL "
|
121 |
"above). Use a comma as the delimiter. For pages with a large number of "
|
122 |
"static files, this can improve browser performance. CNAMEs may also need to "
|
123 |
"be configured on your CDN.<br />Example: %2$s"
|
124 |
msgstr ""
|
125 |
-
"Ovi <a href=\"
|
126 |
"će se koristiti umesto %1$s, za ponovno upisivanje (uz gornji spoljašnji "
|
127 |
"URL). Koristite zapetu kao razdvajač. Za strane sa velikim brojem statičkih "
|
128 |
"fajlova, ovo može poboljšati performanse pregledača. Takođe, možda treba "
|
116 |
|
117 |
#: ossdl-cdn.php:189
|
118 |
msgid ""
|
119 |
+
"These <a href=\"https://www.wikipedia.org/wiki/CNAME_record\">CNAMES</a> will "
|
120 |
"be used in place of %1$s for rewriting (in addition to the off-site URL "
|
121 |
"above). Use a comma as the delimiter. For pages with a large number of "
|
122 |
"static files, this can improve browser performance. CNAMEs may also need to "
|
123 |
"be configured on your CDN.<br />Example: %2$s"
|
124 |
msgstr ""
|
125 |
+
"Ovi <a href=\"https://www.wikipedia.org/wiki/CNAME_record\">CNAME zapisi</a> "
|
126 |
"će se koristiti umesto %1$s, za ponovno upisivanje (uz gornji spoljašnji "
|
127 |
"URL). Koristite zapetu kao razdvajač. Za strane sa velikim brojem statičkih "
|
128 |
"fajlova, ovo može poboljšati performanse pregledača. Takođe, možda treba "
|
languages/wp-super-cache-tr_TR.po
CHANGED
@@ -63,8 +63,8 @@ msgid "Additional CNAMES"
|
|
63 |
msgstr "Ek CNAME'ler"
|
64 |
|
65 |
#: ossdl-cdn.php:171
|
66 |
-
msgid "These <a href=\"
|
67 |
-
msgstr "Bu <a href=\"
|
68 |
|
69 |
#: ossdl-cdn.php:176
|
70 |
msgid "Save Changes"
|
63 |
msgstr "Ek CNAME'ler"
|
64 |
|
65 |
#: ossdl-cdn.php:171
|
66 |
+
msgid "These <a href=\"https://www.wikipedia.org/wiki/CNAME_record\">CNAMES</a> will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.<br />Example: %2$s"
|
67 |
+
msgstr "Bu <a href=\"https://www.wikipedia.org/wiki/CNAME_record\">CNAME'ler</a>, yeniden yazım için %1$s yerine kullanılacaktır (yukarıda belirlediğiniz site dışı adrese ek olarak). Virgülle ayırın. Fazlaca statik dosyaya sahip sayfalar için bu seçenek tarayıcı performansını artırabilir. CNAME'lerin bazen CDN hizmetiniz için de ayarlanması gerekebilir.<br />Example: %2$s"
|
68 |
|
69 |
#: ossdl-cdn.php:176
|
70 |
msgid "Save Changes"
|
languages/wp-super-cache-zh_CN.po
CHANGED
@@ -64,7 +64,7 @@ msgid "Additional CNAMES"
|
|
64 |
msgstr "附加 CNAME 记录"
|
65 |
|
66 |
#: ossdl-cdn.php:189
|
67 |
-
msgid "These <a href=\"
|
68 |
msgstr ""
|
69 |
|
70 |
#: ossdl-cdn.php:193
|
64 |
msgstr "附加 CNAME 记录"
|
65 |
|
66 |
#: ossdl-cdn.php:189
|
67 |
+
msgid "These <a href=\"https://www.wikipedia.org/wiki/CNAME_record\">CNAMES</a> will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.<br />Example: %2$s"
|
68 |
msgstr ""
|
69 |
|
70 |
#: ossdl-cdn.php:193
|
languages/wp-super-cache-zh_TW.po
CHANGED
@@ -63,8 +63,8 @@ msgid "Additional CNAMES"
|
|
63 |
msgstr "額外的正規名稱(CNAMES)"
|
64 |
|
65 |
#: ossdl-cdn.php:189
|
66 |
-
msgid "These <a href=\"
|
67 |
-
msgstr "這些 <a href=\"
|
68 |
|
69 |
#: ossdl-cdn.php:193
|
70 |
msgid "Skip https URLs to avoid \"mixed content\" errors"
|
63 |
msgstr "額外的正規名稱(CNAMES)"
|
64 |
|
65 |
#: ossdl-cdn.php:189
|
66 |
+
msgid "These <a href=\"https://www.wikipedia.org/wiki/CNAME_record\">CNAMES</a> will be used in place of %1$s for rewriting (in addition to the off-site URL above). Use a comma as the delimiter. For pages with a large number of static files, this can improve browser performance. CNAMEs may also need to be configured on your CDN.<br />Example: %2$s"
|
67 |
+
msgstr "這些 <a href=\"https://www.wikipedia.org/wiki/CNAME_record\">正規名稱記錄(CNAMES)</a> 會在重寫時用來取代 %1$s (和上面的站外URL一起)。 使用逗號作為分隔符號。 在有大量靜態檔案的網頁中,這可以增進瀏覽器效能。 這些正規名稱可能也需要在你的 CDN 被設定。<br />例: %2$s"
|
68 |
|
69 |
#: ossdl-cdn.php:193
|
70 |
msgid "Skip https URLs to avoid \"mixed content\" errors"
|
package.json
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"private": true,
|
3 |
+
"name": "@automattic/jetpack-super-cache",
|
4 |
+
"version": "1.8.0",
|
5 |
+
"description": "A very fast caching engine for WordPress that produces static html files.",
|
6 |
+
"homepage": "https://jetpack.com",
|
7 |
+
"bugs": {
|
8 |
+
"url": "https://github.com/Automattic/jetpack/labels/[Plugin] Super Cache"
|
9 |
+
},
|
10 |
+
"repository": {
|
11 |
+
"type": "git",
|
12 |
+
"url": "https://github.com/Automattic/jetpack.git",
|
13 |
+
"directory": "projects/plugins/super-cache"
|
14 |
+
},
|
15 |
+
"license": "GPL-2.0-or-later",
|
16 |
+
"author": "Automattic",
|
17 |
+
"scripts": {
|
18 |
+
"build": "echo 'Not implemented.'",
|
19 |
+
"build-js": "echo 'Not implemented.'",
|
20 |
+
"build-production": "echo 'Not implemented.'",
|
21 |
+
"build-production-js": "echo 'Not implemented.'",
|
22 |
+
"clean": "true"
|
23 |
+
},
|
24 |
+
"devDependencies": {}
|
25 |
+
}
|
partials/advanced.php
CHANGED
@@ -206,13 +206,13 @@ if ( $wp_cache_preload_on )
|
|
206 |
|
207 |
echo "<script type='text/javascript'>";
|
208 |
echo "jQuery(function () {
|
209 |
-
jQuery('#cache_interval_time').click
|
210 |
jQuery('#schedule_interval').attr('checked', true);
|
211 |
});
|
212 |
-
jQuery('#cache_scheduled_time').click
|
213 |
jQuery('#schedule_time').attr('checked', true);
|
214 |
});
|
215 |
-
jQuery('#cache_scheduled_select').click
|
216 |
jQuery('#schedule_time').attr('checked', true);
|
217 |
});
|
218 |
});";
|
206 |
|
207 |
echo "<script type='text/javascript'>";
|
208 |
echo "jQuery(function () {
|
209 |
+
jQuery('#cache_interval_time').on('click',function () {
|
210 |
jQuery('#schedule_interval').attr('checked', true);
|
211 |
});
|
212 |
+
jQuery('#cache_scheduled_time').on('click',function () {
|
213 |
jQuery('#schedule_time').attr('checked', true);
|
214 |
});
|
215 |
+
jQuery('#cache_scheduled_select').on('click',function () {
|
216 |
jQuery('#schedule_time').attr('checked', true);
|
217 |
});
|
218 |
});";
|
partials/easy.php
CHANGED
@@ -125,6 +125,7 @@ if ( is_multisite() && wpsupercache_site_admin() ) {
|
|
125 |
<h4 class="clear"><?php esc_html_e( 'Recommended Links and Plugins', 'wp-super-cache' ); ?></h4>
|
126 |
<p><?php esc_html_e( 'Caching is only one part of making a website faster. Here are some other plugins that will help:', 'wp-super-cache' ); ?></p>
|
127 |
<ul style="list-style: square; margin-left: 2em;">
|
|
|
128 |
<li><?php printf( __( '<a href="%s">Jetpack</a> provides everything you need to build a successful WordPress website including an image/photo CDN (free) and a video hosting service (paid).', 'wp-super-cache' ), 'https://jetpack.com/redirect/?source=jitm-wpsc-recommended' ); ?></li>
|
129 |
<li><?php printf( __( '<a href="%s">Yahoo! Yslow</a> analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. Also try the performance tools online at <a href="%s">GTMetrix</a>.', 'wp-super-cache' ), 'http://yslow.org/', 'https://gtmetrix.com/' ); ?></li>
|
130 |
<li><?php printf( __( '<a href="%s">Use Google Libraries</a> allows you to load some commonly used Javascript libraries from Google webservers. Ironically, it may reduce your Yslow score.', 'wp-super-cache' ), 'https://wordpress.org/plugins/use-google-libraries/' ); ?></li>
|
125 |
<h4 class="clear"><?php esc_html_e( 'Recommended Links and Plugins', 'wp-super-cache' ); ?></h4>
|
126 |
<p><?php esc_html_e( 'Caching is only one part of making a website faster. Here are some other plugins that will help:', 'wp-super-cache' ); ?></p>
|
127 |
<ul style="list-style: square; margin-left: 2em;">
|
128 |
+
<li><?php printf( __( '<a href="%s">Jetpack Boost</a> helps speed up your website by generating critical CSS, defering Javascript and much more.', 'wp-super-cache' ), 'https://jetpack.com/redirect/?source=wp-super-cache-boost-rec' ); ?></li>
|
129 |
<li><?php printf( __( '<a href="%s">Jetpack</a> provides everything you need to build a successful WordPress website including an image/photo CDN (free) and a video hosting service (paid).', 'wp-super-cache' ), 'https://jetpack.com/redirect/?source=jitm-wpsc-recommended' ); ?></li>
|
130 |
<li><?php printf( __( '<a href="%s">Yahoo! Yslow</a> analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. Also try the performance tools online at <a href="%s">GTMetrix</a>.', 'wp-super-cache' ), 'http://yslow.org/', 'https://gtmetrix.com/' ); ?></li>
|
131 |
<li><?php printf( __( '<a href="%s">Use Google Libraries</a> allows you to load some commonly used Javascript libraries from Google webservers. Ironically, it may reduce your Yslow score.', 'wp-super-cache' ), 'https://wordpress.org/plugins/use-google-libraries/' ); ?></li>
|
readme.txt
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
|
11 |
A very fast caching engine for WordPress that produces static html files.
|
12 |
|
@@ -267,533 +267,14 @@ Your theme is probably responsive which means it resizes the page to suit whatev
|
|
267 |
* [WordPress Mobile Pack](https://wordpress.org/plugins/wordpress-mobile-pack/) (can't have "Don't cache pages for known users." enabled)
|
268 |
|
269 |
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
* Add commonWP and disclaimer to "recommended links" #812
|
282 |
-
* Hide warnings in case files deleted #814
|
283 |
-
* Remove the GET param when removing tracking params #818
|
284 |
-
* Check that post is private to unpublish it and clear cache 2249e58e6f585d936c0993e9d18e6382fa976a66
|
285 |
-
* Check $gc_flag was opened before closing it. #819
|
286 |
-
|
287 |
-
### 1.7.7 ###
|
288 |
-
* Fixes to settings page
|
289 |
-
|
290 |
-
### 1.7.6 ###
|
291 |
-
* Fix for PHP < 7.3
|
292 |
-
|
293 |
-
### 1.7.5 ###
|
294 |
-
* Move the text of the settings pages into separate files. #791
|
295 |
-
* Allow editors to delete all the cache files. #793
|
296 |
-
* Only clear the cache from the current site, not the whole network (admin bar link). #794
|
297 |
-
* Check $cache_path is somewhat sane. #797
|
298 |
-
* realpath returns false if directory not found. #798
|
299 |
-
* Don't reject bots for new installs. They "preload pages" too. #800
|
300 |
-
|
301 |
-
### 1.7.4 ###
|
302 |
-
* Make config file path configurable, props @sebastianpopp #755
|
303 |
-
* Stop a very rare/difficult attack when updating wp-config.php, props @guyasyou for reporting. #780
|
304 |
-
* Add textbox to add tracking parameters to ignore when caching. props @markfinst, @radex02 #777
|
305 |
-
* Add "Rejected Cookies" setting to the advanced settings page. #774
|
306 |
-
|
307 |
-
### 1.7.3 ###
|
308 |
-
* Sanitize the settings that are written to the config file #763
|
309 |
-
* Fix the display of "direct cached" example urls in some circumstance. #766
|
310 |
-
|
311 |
-
### 1.7.2 ###
|
312 |
-
* Fixed authenticated RCE in the settings page. Props @m0ze
|
313 |
-
* Small bug fixes.
|
314 |
-
|
315 |
-
### 1.7.1 ###
|
316 |
-
* Minor fixes to docs. #709 #645
|
317 |
-
* Fixed typo on cache contents page. #719
|
318 |
-
* Fixed array index warning. #724
|
319 |
-
* Updated yellow box links. #725
|
320 |
-
|
321 |
-
### 1.7.0 ###
|
322 |
-
* Added "wpsc_cdn_urls" filter to modify the URLs used to rewrite URLs. #697
|
323 |
-
* Fixed CDN functionality for logged in users. #698
|
324 |
-
* Disable settings that don't work in Expert mode. #699
|
325 |
-
* Don't enable mobile support by default, but it can still be enabled manually. #700
|
326 |
-
* Change "admin bar" to "Toolbar". Props @garrett-eclipse. #701
|
327 |
-
* Show settings enabled by "easy" settings page. #703
|
328 |
-
|
329 |
-
### 1.6.9 ###
|
330 |
-
* Improve the variables and messaging used by advanced-cache.php code. #687
|
331 |
-
* Add a warning message to the debug log viewer. #688
|
332 |
-
* Disable raw viewing of the debug log. #691
|
333 |
-
* Clean up the debug log. #692 #694
|
334 |
-
* Added wpsc_update_check() in 9659af156344a77ae247dc582d52053d95c79b93.
|
335 |
-
|
336 |
-
### 1.6.8 ###
|
337 |
-
* Added new constants, WPSC_SERVE_DISABLED (disable serving of cached files) and WPSC_SUPERCACHE_ONLY (only serve supercache cache files). #682 and #672
|
338 |
-
* Hide get_post() warning on some sites. #684
|
339 |
-
* Check if WPCACHEHOME is set correctly before maybe updating it. #683
|
340 |
-
* Remove object cache support as it never worked properly. #681
|
341 |
-
* Add "logged in users" to the "do not cache for users" setting and rename that setting to "Cache Restrictions" #657
|
342 |
-
|
343 |
-
### 1.6.7 ###
|
344 |
-
* wp_cache_setting() can now save boolean values since many of the settings are bools. #676
|
345 |
-
* Check if $super_cache_enabled is true in a less strict way because it might be '1' rather than true. #677
|
346 |
-
|
347 |
-
### 1.6.6 ###
|
348 |
-
* Fix problems with saving settings. Returns false ONLY when there's an issue with the config file, not when the setting isn't changed. Change other code to cope with that, including updating WPCACHEHOME (#670)
|
349 |
-
* When saving settings rename the temporary config file correctly, and delete wp-admin/.php if it exists. (#673)
|
350 |
-
* Fix adding WPCACHEHOME to wp-config.php when advanced-cache.php is not found and wp-config.php is RO. (#674)
|
351 |
-
|
352 |
-
### 1.6.5 ###
|
353 |
-
* Check advanced-cache.php was created by the plugin before modifying/deleting it. (#666)
|
354 |
-
* When saving settings, save blank lines. Fixes problems with WP_CACHE and WPCACHEHOME in wp-config.php. Related to #652. (#667)
|
355 |
-
* Update outdated code and use is_multisite() (#600)
|
356 |
-
* Fix the delete cache button in the Toolbar. (#603)
|
357 |
-
* Code cleanup in #602
|
358 |
-
* Use get_post_status instead of post_status (#623)
|
359 |
-
* Fixes button - Update Direct Pages (#622)
|
360 |
-
* Removes apache_response_headers and uses only headers_list (#618)
|
361 |
-
* Function is_site_admin has been deprecated (#611)
|
362 |
-
* Fixes action urls in wp_cache_manager (#610)
|
363 |
-
* Remove the link to the HibbsLupusTrust tweet. (#635)
|
364 |
-
* Don't load wp-cache-config.php if it's already loaded (#605)
|
365 |
-
* PHPCS fixes and optimization for plugins/domain-mapping.php (#615)
|
366 |
-
* Introduces PHP_VERSION_ID for faster checking (#604)
|
367 |
-
* Fixes regex and optimizes ossdl-cdn.php (#596)
|
368 |
-
* Only update new settings and use a temporary file to avoid corruption. (#652)
|
369 |
-
* Serve cached files to rejected user agents, don't cache them. (#658)
|
370 |
-
* Combine multiple headers with the same name (#641)
|
371 |
-
* Open ‘Delete Cache’ link in same window (#656)
|
372 |
-
* Promote the Jetpack Site Accelerator on the CDN page. (#636)
|
373 |
-
|
374 |
-
### 1.6.4 ###
|
375 |
-
* Changes between [1.6.3 and 1.6.4](https://github.com/Automattic/wp-super-cache/compare/1.6.3...1.6.4)
|
376 |
-
* Fixes for WP-CLI (#587) (#592)
|
377 |
-
* Bumped the minimum WordPress version to 3.1 to use functions introduced then. (#591)
|
378 |
-
* Fixes to wpsc_post_transition to avoid a fatal error using get_sample_permalink. (#595)
|
379 |
-
* Fixed the Toolbar "Delete Cache" link. (#589)
|
380 |
-
* Fixed the headings used in the settings page. (#597)
|
381 |
-
|
382 |
-
### 1.6.3 ###
|
383 |
-
* Changes between [1.6.2 and 1.6.3](https://github.com/Automattic/wp-super-cache/compare/1.6.2...1.6.3)
|
384 |
-
* Added cookie helper functions (#580)
|
385 |
-
* Added plugin helper functions (#574)
|
386 |
-
* Added actions to modify cookie and plugin lists. (#582)
|
387 |
-
* Really disable garbage collection when timeout = 0 (#571)
|
388 |
-
* Added warnings about DISABLE_WP_CRON (#575)
|
389 |
-
* Don't clean expired cache files after preload if garbage collection is disabled (#572)
|
390 |
-
* On preload, if deleting a post don't delete the sub directories if it's the homepage. (#573)
|
391 |
-
* Fix generation of semaphores when using WP CLI (#576)
|
392 |
-
* Fix deleting from the Toolbar (#578)
|
393 |
-
* Avoid a strpos() warning. (#579)
|
394 |
-
* Improve deleting of cache in edit/delete/publish actions (#577)
|
395 |
-
* Fixes to headers code (#496)
|
396 |
-
|
397 |
-
### 1.6.2 ###
|
398 |
-
* Fixed serving expired supercache files (#562)
|
399 |
-
* Write directly to the config file to avoid permission problems with wp-content. (#563)
|
400 |
-
* Correctly set the .htaccess rules on the main site of a multisite. (#557)
|
401 |
-
* Check if set_transient() exists before using it. (#565)
|
402 |
-
* Removed searchengine.php example plugin as it sets a cookie to track users. Still available [here](https://github.com/Automattic/wp-super-cache/blob/4cda5c0f2218e40e118232b5bf22d227fb3206b7/plugins/searchengine.php). (#567)
|
403 |
-
* For advanced users only. Change the vary and cache control headers. See https://github.com/Automattic/wp-super-cache/pull/555 (#555)
|
404 |
-
|
405 |
-
### 1.6.1 ###
|
406 |
-
* Fix the name of the WP Crontrol plugin. (#549)
|
407 |
-
* Handle errors during deactivation/uninstall by email rather than exiting. (#551)
|
408 |
-
* Add a notice when settings can't be updated. (#552 and #553)
|
409 |
-
|
410 |
-
### 1.6.0 ###
|
411 |
-
* Fix issues in multisite plugin (#501)
|
412 |
-
* Fixes wp-cli plugin deactivate/activate (#499)
|
413 |
-
* Cleanup - change quotes. (#495)
|
414 |
-
* $htaccess_path defines the path to the global .htacess file. (#507)
|
415 |
-
* Fix 'cannot redeclare gzip_accepted()' (#511)
|
416 |
-
* Correct the renaming of tmp_wpcache_filename (removed unnecessary slash in path) which caused renaming to fail. (#516)
|
417 |
-
* Add check for Jetpack mobile theme cookie (#515)
|
418 |
-
* Optimize wp_cache_phase2 and create wpsc_register_post_hooks (#508)
|
419 |
-
* WPCACHEHOME has a trailing slash (#513)
|
420 |
-
* Cleanup cache enable/disable and update_mod_rewrite_rules (#500)
|
421 |
-
* Post Update now clears category cache (#519)
|
422 |
-
* Various fixes for saving the debug page form (#542)
|
423 |
-
* Expert-caching and empty parameters, like ?amp, should not serve cached page (#533)
|
424 |
-
* Tiny Yslow description fix (#527)
|
425 |
-
* Add ipad to mobile list (#525)
|
426 |
-
* Hide opcache_invalidate() warnings since it's disabled some places. (#543)
|
427 |
-
* Check that HTTP_REFERER exists before checking it. (#544)
|
428 |
-
* Replace Cron View" with WP Crontrol because it's still updated. (#546)
|
429 |
-
* adding hook (wp_cache_cleared) for full cache purges (#537)
|
430 |
-
|
431 |
-
|
432 |
-
### 1.5.9 ###
|
433 |
-
* Fixed fatal error if the debug log was deleted while debugging was enabled and a visitor came to the site.
|
434 |
-
* Fixed the dynamic caching test plugin because of PHP7 changes. Dynamic cache mode must be enabled now.
|
435 |
-
* Lots of WordPress coding style formatting fixes to the code.
|
436 |
-
* All changes: https://github.com/Automattic/wp-super-cache/compare/1.5.8...1.5.9
|
437 |
-
|
438 |
-
### 1.5.8 ###
|
439 |
-
* PHP 7 fixes. (#429)
|
440 |
-
* Fix debug comments checkbox. (#433)
|
441 |
-
* Only register uninstall function in admin pages to save queries. (#430)
|
442 |
-
* Check that wp-cache-phase1.php is loaded before saving settings page. (#428)
|
443 |
-
* If a url has a "?" in it then don't delete the associated cache. It'll delete the whole cache after stripping out ?... part. (#427 & #420)
|
444 |
-
* Allow static functions in classes to be used in cacheactions. (#425)
|
445 |
-
* Don't make AJAX requests anonymous. (#423)
|
446 |
-
* Fixed link to chmod explanation. (#421)
|
447 |
-
* Add more escaping to the CDN settings page. (#416)
|
448 |
-
* Use SERVER_PROTOCOL to determine http protocol. (#412 & #413)
|
449 |
-
* If preload stalls only send one email per day, but do display an admin notice. (#432)
|
450 |
-
* Fixed more PHP warnings in #438 and #437
|
451 |
-
* Hide mod_rewrite warnings for Nginx users. #434
|
452 |
-
|
453 |
-
### 1.5.7.1 ###
|
454 |
-
* If the HTTP HOST is empty then don't use it in strpos to avoid a PHP warning. (#408)
|
455 |
-
* Don't preload posts with permalinks that contain rejected strings. (#407)
|
456 |
-
* Generate a list of archive feeds that can be deleted when the site is updated. Also fixes corrupted config file issue and fatal error with older versions of WordPress. (#403)
|
457 |
-
|
458 |
-
### 1.5.7 ###
|
459 |
-
* Fix fatal error in plugins/searchengine.php (#398)
|
460 |
-
|
461 |
-
### 1.5.6 ###
|
462 |
-
* REST API: Added /plugins endpoint to handle the plugins settings page. (#382)
|
463 |
-
* Minor changes to indentaion and spaces to tabs conversion (#371) (#395)
|
464 |
-
* Don't set $wp_super_cache_comments here as it's not saved. (#379)
|
465 |
-
* realpath() only works on directories. The cache_file wasn't set correctly. (#377)
|
466 |
-
* Fix problem deleting cache from Toolbar because of realpath() (#381)
|
467 |
-
* Use trigger_error() instead of echoing to the screen if a config file isn't writeable. (#394)
|
468 |
-
* Added the "wpsc_enable_wp_config_edit" filter to disable editing the wp-config.php (#392)
|
469 |
-
* Fix some PHP notices when comments are edited/published/maintained. (#386)
|
470 |
-
* Minor changes to description on plugins page. (#393)
|
471 |
-
|
472 |
-
### 1.5.5 ###
|
473 |
-
* Catch fatal errors so they're not cached, improve code that catches unknown page types. (#367)
|
474 |
-
* Fix caching on older WP installs, and if the plugin is inactive on a blog, but still caching, give feeds a short TTL to ensure they're fresh. (#366)
|
475 |
-
* When preloading don't delete sub-directories, or child pages, when caching pages. (#363)
|
476 |
-
* Avoid PHP warnings from the REST API for settings that are not yet defined. (#361)
|
477 |
-
* Added missing settings to the config file. (#360)
|
478 |
-
|
479 |
-
### 1.5.4 ###
|
480 |
-
* Fix messages related to creating advanced-cache.php (#355, #354)
|
481 |
-
* Deleting the plugin doesn't need to delete the cache directory as it's already done on deactivation. (#323)
|
482 |
-
* Disable Jetpack mobile detection if Jetpack Beta is detected. (#298)
|
483 |
-
* Add more checks on directories to make sure they exist before deleting them. (#324)
|
484 |
-
* Add siteurl setting to CDN page for users who have WordPress in it's own directory. (#332)
|
485 |
-
* Don't enable and then not save debug comments when toggling logging. (#334)
|
486 |
-
* Show plugin activity html comments to users who disable caching for logged in users. (#335)
|
487 |
-
* Better notifications on Preload page, and redo sql to fetch posts. Added "wpsc_preload_post_types_args" filter on post visibility, and wpsc_preload_post_types filter on post types used. (#336)
|
488 |
-
* Use a cached feed if it is newer than the last time a post was updated. (#337)
|
489 |
-
* Better define a sitemap (#340) but when the content type is unknown add more checks to find out what it is. (#346)
|
490 |
-
* Save cache location correctly on the advanced settings page. (#345)
|
491 |
-
* Make sure the debug log exists before toggling it on/off to ensure the http auth code is added to it.
|
492 |
-
* Return the correct cache type to the REST API. Ignore supercache enabled status. (#352)
|
493 |
-
* Fix cache contents in REST API showing double count of supercache files. (#353)
|
494 |
-
* Move the nonce in the CDN page back into a function. (#346)
|
495 |
-
* Use realpath to compare directories when loading the sample config file to account for symlinked directories. (#342)
|
496 |
-
* Other minor changes to html or typos
|
497 |
-
(Numbers are [pull requests](https://github.com/Automattic/wp-super-cache/pulls) on Github.)
|
498 |
-
|
499 |
-
### 1.5.3 ###
|
500 |
-
* Fix a critical bug that caused unlink to be run on null while deleting the plugin.
|
501 |
-
|
502 |
-
### 1.5.2 ###
|
503 |
-
* Add a trailing slash to home path. Fixes problems with finding the .htaccess file.
|
504 |
-
* Delete WPCACHEHOME and WP_CACHE from wp-config.php when plugin deactivated.
|
505 |
-
* Check that WPCACHEHOME is the right path on each load of the settings page.
|
506 |
-
* Load the REST API code without using WPCACHEHOME.
|
507 |
-
* Fixed mobile browser caching when using WP-Cache caching.
|
508 |
-
* Fixed directory checks on Windows machines.
|
509 |
-
* Reverted CDN changes in 1.5.0 as they caused problems in older "WordPress in a separate directory" installs.
|
510 |
-
* Added note to CDN page when site url != home url. Site owners can use a filter to adjust the URL used.
|
511 |
-
* Stop preload quicker when requested while preloading taxonomies.
|
512 |
-
* Added more information for when updating the .htaccess file fails.
|
513 |
-
* "Served by" header is now optional. Enable it by setting $wpsc_served_header to true in the config file.
|
514 |
-
|
515 |
-
### 1.5.1 ###
|
516 |
-
* Don't use anonymous functions in REST API
|
517 |
-
* Check that REST API Controller is available before loading the REST API.
|
518 |
-
* Don't use multibyte string functions because some sites don't have it enabled.
|
519 |
-
|
520 |
-
### 1.5.0 ###
|
521 |
-
* REST API settings endpoints.
|
522 |
-
* Simplified settings page.
|
523 |
-
* WP-Cache files reorganised.
|
524 |
-
* Caching of more http headers.
|
525 |
-
* Lots of bug fixes.
|
526 |
-
|
527 |
-
### 1.4.9 ###
|
528 |
-
* Fixed bug when not running sem_remove after sem_release. See https://github.com/Automattic/wp-super-cache/issues/85
|
529 |
-
* Fixed a PHP error impacting PHP 7.1.
|
530 |
-
* Fixed a bug where we cached PUT and DELETE requests. We're treating them like POST requests now.
|
531 |
-
* Delete supercache cache files, even when supercache is disabled, because mod_rewrite rules might still be active.
|
532 |
-
* Updated the settings page, moving things around. [#173](https://github.com/Automattic/wp-super-cache/pull/173)
|
533 |
-
* Make file locking less attractive on the settings page and fixed the WPSC_DISABLE_LOCKING constant so it really disables file locking even if the user has enabled it already.
|
534 |
-
* Added a WPSC_REMOVE_SEMAPHORE constant that must be defined if sem_remove() is to be used as it may cause problems. [#174](https://github.com/Automattic/wp-super-cache/pull/174)
|
535 |
-
* Added a "wpsc_delete_related_pages_on_edit" filter that on returning 0 will disable deletion of pages outside of page being edited. [#175](https://github.com/Automattic/wp-super-cache/pull/175)
|
536 |
-
* Fixed plugin deleting all cached pages when a site had a static homepage. [#175](https://github.com/Automattic/wp-super-cache/pull/175)
|
537 |
-
* Make sure $cache_path has a trailing slash [#177](https://github.com/Automattic/wp-super-cache/pull/77)
|
538 |
-
* Remove flush() [#127](https://github.com/Automattic/wp-super-cache/pull/127) but also check if headers are empty and flush and get headers again. [#179](https://github.com/Automattic/wp-super-cache/pull/179)
|
539 |
-
* Add fix for customizer [#161](https://github.com/Automattic/wp-super-cache/pull/161) and don't cache PUT AND DELETE requests [#178](https://github.com/Automattic/wp-super-cache/pull/178)
|
540 |
-
* Check for superglobals before using them. [#131](https://github.com/Automattic/wp-super-cache/pull/131)
|
541 |
-
|
542 |
-
### 1.4.8 ###
|
543 |
-
* Removed malware URL in a code comment. (harmless to operation of plugin but gets flagged by A/V software)
|
544 |
-
* Updated translation file.
|
545 |
-
|
546 |
-
### 1.4.7 ###
|
547 |
-
* Update the settings page for WordPress 4.4. layout changes.
|
548 |
-
|
549 |
-
### 1.4.6 ###
|
550 |
-
* Generate the file cache/.htaccess even when one exists so gzip rules are created and gzipped pages are served correctly. Props Tigertech. https://wordpress.org/support/topic/all-website-pages-downloading-gz-file-after-latest-update?replies=36#post-7494087
|
551 |
-
|
552 |
-
### 1.4.5 ###
|
553 |
-
* Enhancement: Only preload public post types. Props webaware.
|
554 |
-
* Added an uninstall function that deletes the config file. Deactivate function doesn't delete it any more.
|
555 |
-
* Possible to deactivate the plugin without visiting the settings page now.
|
556 |
-
* Fixed the cache rebuild system. Rebuild files now survive longer than the request that generate them.
|
557 |
-
* Minor optimisations: prune_super_cache() exits immediately if the file doesn't exist. The output of wp_cache_get_cookies_values() is now cached.
|
558 |
-
* Added PHP pid to the debug log to aid debugging.
|
559 |
-
* Various small bug fixes.
|
560 |
-
* Fixed reset of expiry time and GC settings when updating advanced settings.
|
561 |
-
* Removed CacheMeta class to avoid APC errors. It's not used any more.
|
562 |
-
* Fixed reset of advanced settings when using "easy" settings page.
|
563 |
-
* Fixed XSS in settings page.
|
564 |
-
* Hide cache files when servers display directory indexes.
|
565 |
-
* Prevent PHP object injection through use of serialize().
|
566 |
-
|
567 |
-
### 1.4.4 ###
|
568 |
-
* Fixed fatal error in output handler if GET parameters present in query. Props webaware.
|
569 |
-
* Fixed debug log. It wasn't logging the right message.
|
570 |
-
|
571 |
-
### 1.4.3 ###
|
572 |
-
* Security release fixing an XSS bug in the settings page. Props Marc Montpas from Sucuri.
|
573 |
-
* Added wp_debug_log(). Props Jen Heilemann.
|
574 |
-
* Minor fixes.
|
575 |
-
|
576 |
-
### 1.4.2 ###
|
577 |
-
* Fixed "acceptable file list".
|
578 |
-
* Fixed "Don't cache GET requests" feature.
|
579 |
-
* Maybe fixed "304 not modified" problem for some users.
|
580 |
-
* Fixed some PHP warnings.
|
581 |
-
|
582 |
-
### 1.4.1 ###
|
583 |
-
* Fixed XSS in settings page. Props Simon Waters, Surevine Limited.
|
584 |
-
* Fix to object cache so entries may now be deleted when posts updated. (object cache still experimental)
|
585 |
-
* Documentation updates and cleanup of settings page.
|
586 |
-
|
587 |
-
### 1.4 ###
|
588 |
-
* Replace legacy mfunc/mnclude/dynamic-cached-content functionality with a "wpsc_cachedata" cacheaction filter.
|
589 |
-
* Added dynamic-cache-test.php plugin example wpsc_cachedata filter plugin.
|
590 |
-
* Delete post, tag and category cache when a post changes from draft to publish or vice versa. Props @Biranit.
|
591 |
-
* Update advanced-cache.php and wp-config.php if wp-cache-phase1.php doesn't load, usually happening after migrating to a new hosting service.
|
592 |
-
* Misc bugfixes.
|
593 |
-
|
594 |
-
### 1.3.2 ###
|
595 |
-
* Any mfunc/mclude/dynamic-cached-content tags in comments are now removed.
|
596 |
-
* Dynamic cached content feature disabled by default and must be enabled on the Advanced Settings page.
|
597 |
-
* Support for the mobile theme in Jetpack via helper plugin on script's Plugins tab.
|
598 |
-
|
599 |
-
### 1.3.1 ###
|
600 |
-
* Minor updates to documentation
|
601 |
-
* Fixed XSS in settings page.
|
602 |
-
|
603 |
-
### 1.3 ###
|
604 |
-
* mfunc tags could be executed in comments. Fixed.
|
605 |
-
* More support for sites that use the LOGGED_IN_COOKIE constant and custom cookies.
|
606 |
-
|
607 |
-
### 1.2 ###
|
608 |
-
* Garbage collection of old cache files is significantly improved. I added a scheduled job that keeps an eye on things and restarts the job if necessary. Also, if you enable caching from the Easy page garbage collection will be enabled too.
|
609 |
-
* Editors can delete single cached files from the Toolbar now.
|
610 |
-
* Fixed the cached page counter on the settings page.
|
611 |
-
* Some sites that updated to 1.0 experienced too much garbage collection. There are still stragglers out there who haven't upgraded but that's fixed now!
|
612 |
-
* Supercached mobile files are now used as there was a tiny little typo that needed fixing.
|
613 |
-
* If your site is in a directory and you saw problems updating a page then that should be fixed now.
|
614 |
-
* The deactivate hook has been changed so your configuration isn.t hosed when you upgrade. Unfortunately this will only happen after you do this upgrade.
|
615 |
-
* Some sites use custom cookies with the LOGGED_IN_COOKIE constant. Added support for that.
|
616 |
-
* Added support for WPTouch Pro, but it appears to be flaky still. Anyone have time to work on that? I don.t.
|
617 |
-
* Some sites had problems with scheduled posts. For some reason the plugin thought the post was in draft mode and then because it only checked the same post once, when the post magically became published the cache wasn.t cleared. That.s fixed, thanks to the debug logging of several patient users.
|
618 |
-
* And more bug fixes and translation updates.
|
619 |
-
|
620 |
-
### 1.1 ###
|
621 |
-
* Use $_SERVER[ 'SERVER_NAME' ] to create cache directories.
|
622 |
-
* Only create blogs cached directories if valid requests and blogs exist.
|
623 |
-
* Only clear current blog's cache files if navigation menu is modified
|
624 |
-
* Added clean_post_cache action to clear cache on post actions
|
625 |
-
* Removed garbage collection details on Contents tab
|
626 |
-
* Added wp_cache_check_mobile cacheaction filter to shortcircuit mobile device check.
|
627 |
-
* Don't delete cache files for draft posts
|
628 |
-
* Added action on wp_trash_post to clear the cache when trashed posts are deleted
|
629 |
-
* Show a warning when 304 browser caching is disabled (because mod_rewrite caching is on)
|
630 |
-
* New check for safe mode if using less that PHP 5.3.0
|
631 |
-
* Added wp_supercache_remove_cookies filter to disable anonymous browsing mode.
|
632 |
-
* Fixed garbage collection schedule dropdown
|
633 |
-
* Fixed preload problem clearing site's cache on "page on front" sites.
|
634 |
-
* Fix for PHP variable not defined warnings
|
635 |
-
* Fixed problem refreshing cache when comments made as siteurl() sometimes didn't work
|
636 |
-
* Preloading of taxonomies is now optional
|
637 |
-
* Domain mapping fixes.
|
638 |
-
* Better support for https sites. Remove https:// to get cache paths.
|
639 |
-
* Added AddDefaultCharset .htaccess rule back in and added an option to remove it if required.
|
640 |
-
* Added multisite plugin that adds a "Cached" column to Network->Sites to disable caching on a per site basis.
|
641 |
-
* Added WPTouch plugin to modify browser and prefix list in mobile detection code. Added support for that plugin's exclude list.
|
642 |
-
* Fixed cache tester
|
643 |
-
* Filter the tags that are used to detect end-of-page using the wp_cache_eof_tags filter.
|
644 |
-
* Removed debug level from logging as it wasn't helpful.
|
645 |
-
* Removed mention of wp-minify.
|
646 |
-
|
647 |
-
### 1.0 ###
|
648 |
-
* Removed AddDefaultCharset .htaccess rule
|
649 |
-
* Fixed problem with blogs in a folder and don't have a trailing slash
|
650 |
-
* New scheduling of garbage collection
|
651 |
-
* Added a "Delete cache" link to Toolbar to delete cache of current page.
|
652 |
-
* Updated documentation
|
653 |
-
* Sorry Digg, Stephen Fry power now!
|
654 |
-
* Updated translations
|
655 |
-
* Preload taxonomies and all post types except revisionsand nav menu items
|
656 |
-
* Fixed previews by logged in users.
|
657 |
-
* Added option to make logged in users anonymous
|
658 |
-
* Use WP 3.0 variables to detect multisite installs
|
659 |
-
* Hash filenames so files are served from the same CDNs
|
660 |
-
|
661 |
-
### 0.9.9.9 ###
|
662 |
-
* Fixed typo, is_front_page.
|
663 |
-
* Serve repeated static files from the same CDN hostname.
|
664 |
-
* Updated translations.
|
665 |
-
* Make supercache dir lowercase to avoid problems with unicode URLs.
|
666 |
-
* Add option to skip https loaded static content.
|
667 |
-
* Remove 5 second check on age of existing cache files. Should help with posts that get lots of comments and traffic.
|
668 |
-
* Lots of bugs fixed.
|
669 |
-
|
670 |
-
### 0.9.9.8 ###
|
671 |
-
* CDN updates: can be switched off, multiple CNAMEs.
|
672 |
-
* Uninstall process improved. It removes generated files and fixes edited files.
|
673 |
-
* Cached dynamic pages can now be stored in Supercache files and compressed.
|
674 |
-
* 1and1 Webhosting fix (/kunden/)
|
675 |
-
* Remove log by email functionality as it caused problems for users who were inundated by email
|
676 |
-
* Many more minor fixes and changes.
|
677 |
-
|
678 |
-
### 0.9.9.6 ###
|
679 |
-
* Fixed problem serving cached files with PHP
|
680 |
-
* Added support for 304 "file not modified" header to help browser caching. (PHP caching only)
|
681 |
-
* Added French & German translations, updated Italian translation and fixed translation strings.
|
682 |
-
* Sleep 4 seconds between preload urls to reduce load on the server
|
683 |
-
* Updated docs and FAQs.
|
684 |
-
|
685 |
-
### 0.9.9.5 ###
|
686 |
-
* Disable compression on on easy setup page. Still causes problems on some hosts.
|
687 |
-
* Remove footerlink on easy setup page.
|
688 |
-
* Don't delete mod_rewrite rules when caching is disabled.
|
689 |
-
* Don't stop users using settings page when in safe mode.
|
690 |
-
|
691 |
-
### 0.9.9.4 ###
|
692 |
-
* Settings page split into tabbed pages.
|
693 |
-
* Added new "Easy" settings page for new users.
|
694 |
-
* New PHP caching mode to serve supercached files.
|
695 |
-
* Mobile support fixes.
|
696 |
-
* Added Domain mapping support plugin.
|
697 |
-
* Added "awaiting moderation" plugin that removes that text from posts.
|
698 |
-
* Terminology change. Changed "half on" to "legacy caching".
|
699 |
-
* Fixed cache tester on some installs of WordPress.
|
700 |
-
* Updated documentation
|
701 |
-
* Added $wp_super_cache_lock_down config variable to hide lockdown and directly cached pages admin items.
|
702 |
-
* Preloaded checks if it has stalled and reschedules the job to continue.
|
703 |
-
* Serve the gzipped page when first cached if the client supports compression.
|
704 |
-
* Lots more bug fixes..
|
705 |
-
|
706 |
-
### 0.9.9.3 ###
|
707 |
-
* Fixed division by zero error in half on mode.
|
708 |
-
* Always show "delete cache" button.
|
709 |
-
* Fixed "Update mod_rewrite rules" button.
|
710 |
-
* Minor text changes to admin page.
|
711 |
-
|
712 |
-
### 0.9.9.2 ###
|
713 |
-
* Forgot to change version number in wp-cache.php
|
714 |
-
|
715 |
-
### 0.9.9.1 ###
|
716 |
-
* Added preloading of static cache.
|
717 |
-
* Better mobile plugin support
|
718 |
-
* .htaccess rules can be updated now. Added wpsc_update_htaccess().
|
719 |
-
* Fixed "page on front" cache clearing bug.
|
720 |
-
* Check for wordpress_logged_in cookie so test cookie isn't detected.
|
721 |
-
* Added clear_post_supercache() to clear supercache for a single post.
|
722 |
-
* Put quotes around rewrite rules in case paths have spaces.
|
723 |
-
|
724 |
-
### 0.9.9 ###
|
725 |
-
* Added experimental object cache support.
|
726 |
-
* Added Chinese(Traditional) translation by Pseric.
|
727 |
-
* Added FAQ on WP-Cache vs Supercache files.
|
728 |
-
* Use Supercache file if WP-Cache file not found. Useful if mod_rewrite rules are broken or not working.
|
729 |
-
* Get mobile browser list from WP Mobile Edition if found. Warn user if .htaccess out of date.
|
730 |
-
* Make sure writer lock is unlocked after writing cache files.
|
731 |
-
* Added link to developer docs in readme.
|
732 |
-
* Added Ukranian translation by Vitaly Mylo.
|
733 |
-
* Added Upgrade Notice section to readme.
|
734 |
-
* Warn if zlib compression in PHP is enabled.
|
735 |
-
* Added compression troubleshooting answer. Props Vladimir (http://blog.sjinks.pro/)
|
736 |
-
* Added Japanese translation by Tai (http://tekapo.com/)
|
737 |
-
* Updated Italian translation.
|
738 |
-
* Link to WP Mobile Edition from admin page for mobile support.
|
739 |
-
|
740 |
-
### 0.9.8 ###
|
741 |
-
* Added Spanish translation by Omi.
|
742 |
-
* Added Italian translation by Gianni Diurno.
|
743 |
-
* Addded advanced debug code to check front page for category problem. Enable by setting $wp_super_cache_advanced_debug to 1 in the config file.
|
744 |
-
* Fixed wordpress vs wordpress_logged_in cookie mismatch in cookie checking function.
|
745 |
-
* Correctly check if WP_CACHE is set or not. PHP is weird.
|
746 |
-
* Added wp_cache_clear_cache() to clear out cache directory.
|
747 |
-
* Only show logged in message when debugging enabled.
|
748 |
-
* Added troubleshooting point 20. PHP vs Apache user.
|
749 |
-
* Fixed problem deleting cache file.
|
750 |
-
* Don't delete cache files when moderated comments are deleted.
|
751 |
-
|
752 |
-
### 0.9.7 ###
|
753 |
-
* Fixed problem with blogs in folders.
|
754 |
-
* Added cache file listing and delete links to admin page.
|
755 |
-
* Added "Newest Cached Pages" listing in sidebox.
|
756 |
-
* Made admin page translatable.
|
757 |
-
* Added "How do I make certain parts of the page stay dynamic?" to FAQ.
|
758 |
-
* Advanced: added "late init" feature so that plugin activates on "init". Set $wp_super_cache_late_init to true in config file to use.
|
759 |
-
* Disable supercaching when GET parameters present instead of disabling all caching. Disable on POST (as normal) and preview.
|
760 |
-
* Fixed problem with cron job and mutex filename.
|
761 |
-
* Warn users they must enable mobile device support if rewrite rules detected. Better detection of when to warn that .htaccess rules must be updated (no need when rewrite rules not present)
|
762 |
-
* Advanced: Added "wpsupercache_404" filter. Return true to cache 404 error pages.
|
763 |
-
* Use the wordpress_test_cookie in the cache key.
|
764 |
-
* Show correct number of cache files when compression off.
|
765 |
-
* Fixed problem with PHP safe_mode detection.
|
766 |
-
* Various bugfixes and documentation updates. See Changelog.txt
|
767 |
-
|
768 |
-
### 0.9.6.1 ###
|
769 |
-
* Move "not logged in" message init below check for POST.
|
770 |
-
* Add is_admin() check so plugin definitely can't cache the backend.
|
771 |
-
* Add "do not cache" page type to admin page.
|
772 |
-
|
773 |
-
### 0.9.6 ###
|
774 |
-
* Add uninstall.php uninstall script.
|
775 |
-
* Updated cache/.htaccess rules (option to upgrade that)
|
776 |
-
* Added FAQ about category and static homepage problem.
|
777 |
-
* Add wp_cache_user_agent_is_rejected() back to wp-cache-phase2.php
|
778 |
-
* Show message for logged in users when caching disable for them.
|
779 |
-
* Check filemtime on correct supercache file
|
780 |
-
|
781 |
-
### 0.9.5 ###
|
782 |
-
* Show next and last GC times in minutes, not local time.
|
783 |
-
* Don't serve wp_cache cache files to rejected user agents. Supercache files are still served to them.
|
784 |
-
* If enabled, mobile support now serves php cached files to mobile clients and static cached files to everyone else.
|
785 |
-
* Added checks for "WPSC_DISABLE_COMPRESSION" and "WPSC_DISABLE_LOCKING" constants to disable compression and file locking. For hosting companies primarily.
|
786 |
-
* Added check for DONOTCACHEPAGE constant to avoid caching a page.
|
787 |
-
* Use PHP_DOCUMENT_ROOT when creating .htaccess if necessary.
|
788 |
-
|
789 |
-
### 0.9.4.3 ###
|
790 |
-
1. Added "Don't cache for logged in users" option.
|
791 |
-
2. Display file size stats on admin page.
|
792 |
-
3. Clear the cache when profile page is updated.
|
793 |
-
4. Don't cache post previews.
|
794 |
-
5. Added backslashes to rejected URI regex list.
|
795 |
-
6. Fixed problems with posts and comments not refreshing.
|
796 |
-
|
797 |
-
|
798 |
-
## Upgrade Notice ##
|
799 |
-
Misc fixes
|
1 |
+
=== WP Super Cache ===
|
2 |
+
Contributors: donncha, automattic
|
3 |
+
Tags: performance, caching, wp-cache, wp-super-cache, cache
|
4 |
+
Requires at least: 5.9
|
5 |
+
Requires PHP: 5.6
|
6 |
+
Tested up to: 6.0
|
7 |
+
Stable tag: 1.8
|
8 |
+
License: GPLv2 or later
|
9 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
A very fast caching engine for WordPress that produces static html files.
|
12 |
|
267 |
* [WordPress Mobile Pack](https://wordpress.org/plugins/wordpress-mobile-pack/) (can't have "Don't cache pages for known users." enabled)
|
268 |
|
269 |
|
270 |
+
== Changelog ==
|
271 |
+
### 1.8 - 2022-08-16
|
272 |
+
- Added PHP 8 Support
|
273 |
+
- Added a link to give feedback on WP Super Cache
|
274 |
+
- Added information on Jetpack Boost
|
275 |
+
- Fixed jQuery deprecated notice
|
276 |
+
- Fixed replacing dirname(__FILE__) with __DIR__
|
277 |
+
|
278 |
+
--------
|
279 |
+
|
280 |
+
[See the previous changelogs here](https://github.com/Automattic/jetpack/blob/trunk/projects/plugins/super-cache/CHANGELOG.md#changelog)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rest/load.php
CHANGED
@@ -1,15 +1,15 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
require_once(
|
4 |
-
require_once(
|
5 |
-
require_once(
|
6 |
-
require_once(
|
7 |
-
require_once(
|
8 |
-
require_once(
|
9 |
-
require_once(
|
10 |
-
require_once(
|
11 |
-
require_once(
|
12 |
-
require_once(
|
13 |
|
14 |
class WP_Super_Cache_Router {
|
15 |
|
1 |
<?php
|
2 |
|
3 |
+
require_once( __DIR__ . '/class.wp-super-cache-rest-get-settings.php' );
|
4 |
+
require_once( __DIR__ . '/class.wp-super-cache-rest-update-settings.php' );
|
5 |
+
require_once( __DIR__ . '/class.wp-super-cache-rest-get-stats.php' );
|
6 |
+
require_once( __DIR__ . '/class.wp-super-cache-rest-get-cache.php' );
|
7 |
+
require_once( __DIR__ . '/class.wp-super-cache-rest-get-status.php' );
|
8 |
+
require_once( __DIR__ . '/class.wp-super-cache-rest-test-cache.php' );
|
9 |
+
require_once( __DIR__ . '/class.wp-super-cache-rest-delete-cache.php' );
|
10 |
+
require_once( __DIR__ . '/class.wp-super-cache-rest-preload.php' );
|
11 |
+
require_once( __DIR__ . '/class.wp-super-cache-rest-get-plugins.php' );
|
12 |
+
require_once( __DIR__. '/class.wp-super-cache-rest-update-plugins.php' );
|
13 |
|
14 |
class WP_Super_Cache_Router {
|
15 |
|
src/example.php
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Put your classes in this `src` folder!
|
4 |
+
*
|
5 |
+
* @package automattic/PACKAGE-NAME
|
6 |
+
*/
|
7 |
+
|
8 |
+
// Start your code here!
|
wp-cache-base.php
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<?php
|
2 |
global $WPSC_HTTP_HOST, $cache_enabled, $cache_path, $blogcacheid, $blog_cache_dir;
|
3 |
|
|
|
4 |
if ( ! empty( $_SERVER['HTTP_HOST'] ) ) {
|
5 |
$WPSC_HTTP_HOST = function_exists( 'mb_strtolower' ) ? mb_strtolower( $_SERVER['HTTP_HOST'] ) : strtolower( $_SERVER['HTTP_HOST'] );
|
6 |
$WPSC_HTTP_HOST = htmlentities( $WPSC_HTTP_HOST );
|
@@ -15,6 +16,8 @@ if ( ! empty( $_SERVER['HTTP_HOST'] ) ) {
|
|
15 |
$blogcacheid = '';
|
16 |
$blog_cache_dir = $cache_path;
|
17 |
|
|
|
|
|
18 |
if ( is_multisite() ) {
|
19 |
global $current_blog;
|
20 |
|
1 |
<?php
|
2 |
global $WPSC_HTTP_HOST, $cache_enabled, $cache_path, $blogcacheid, $blog_cache_dir;
|
3 |
|
4 |
+
// we need to backup HTTP_HOST early in the PHP process, and if running in command line set it to something useful.
|
5 |
if ( ! empty( $_SERVER['HTTP_HOST'] ) ) {
|
6 |
$WPSC_HTTP_HOST = function_exists( 'mb_strtolower' ) ? mb_strtolower( $_SERVER['HTTP_HOST'] ) : strtolower( $_SERVER['HTTP_HOST'] );
|
7 |
$WPSC_HTTP_HOST = htmlentities( $WPSC_HTTP_HOST );
|
16 |
$blogcacheid = '';
|
17 |
$blog_cache_dir = $cache_path;
|
18 |
|
19 |
+
// we might be able to simplify this. I run a multisite and the blogs directory isn't used any more.
|
20 |
+
// $blogcacheid is set to the domain or prefix path of your site, and all files are put in $cache_path/supercache/$blogcacheid/[REQUEST_URI path]/
|
21 |
if ( is_multisite() ) {
|
22 |
global $current_blog;
|
23 |
|
wp-cache-phase1.php
CHANGED
@@ -1,10 +1,11 @@
|
|
1 |
<?php
|
2 |
|
3 |
if ( ! function_exists( 'wp_cache_phase2' ) ) {
|
4 |
-
require_once
|
5 |
}
|
6 |
|
7 |
// error_reporting(E_ERROR | E_PARSE); // uncomment to debug this file!
|
|
|
8 |
if ( !defined( 'WPCACHECONFIGPATH' ) ) {
|
9 |
define( 'WPCACHECONFIGPATH', WP_CONTENT_DIR );
|
10 |
}
|
@@ -13,8 +14,9 @@ if ( ! @include WPCACHECONFIGPATH . '/wp-cache-config.php' ) {
|
|
13 |
return false;
|
14 |
}
|
15 |
|
|
|
16 |
if ( ! defined( 'WPCACHEHOME' ) ) {
|
17 |
-
define( 'WPCACHEHOME',
|
18 |
}
|
19 |
|
20 |
if ( defined( 'DISABLE_SUPERCACHE' ) ) {
|
@@ -31,6 +33,8 @@ if ( '/' === $cache_path || empty( $cache_path ) ) {
|
|
31 |
return;
|
32 |
}
|
33 |
|
|
|
|
|
34 |
if ( $blogcacheid != '' ) {
|
35 |
$blog_cache_dir = str_replace( '//', '/', $cache_path . 'blogs/' . $blogcacheid . '/' );
|
36 |
} else {
|
@@ -39,18 +43,22 @@ if ( $blogcacheid != '' ) {
|
|
39 |
|
40 |
$wp_cache_phase1_loaded = true;
|
41 |
|
|
|
42 |
$mutex_filename = 'wp_cache_mutex.lock';
|
43 |
$new_cache = false;
|
44 |
|
|
|
45 |
if ( ! isset( $wp_cache_plugins_dir ) ) {
|
46 |
$wp_cache_plugins_dir = WPCACHEHOME . 'plugins';
|
47 |
}
|
48 |
|
|
|
49 |
if ( isset( $_GET['donotcachepage'] ) && isset( $cache_page_secret ) && $_GET['donotcachepage'] == $cache_page_secret ) {
|
50 |
$cache_enabled = false;
|
51 |
define( 'DONOTCACHEPAGE', 1 );
|
52 |
}
|
53 |
|
|
|
54 |
$plugins = glob( $wp_cache_plugins_dir . '/*.php' );
|
55 |
if ( is_array( $plugins ) ) {
|
56 |
foreach ( $plugins as $plugin ) {
|
@@ -60,6 +68,7 @@ if ( is_array( $plugins ) ) {
|
|
60 |
}
|
61 |
}
|
62 |
|
|
|
63 |
if ( isset( $wpsc_plugins ) && is_array( $wpsc_plugins ) ) {
|
64 |
foreach( $wpsc_plugins as $plugin_file ) {
|
65 |
if ( file_exists( ABSPATH . $plugin_file ) ) {
|
@@ -68,6 +77,7 @@ if ( isset( $wpsc_plugins ) && is_array( $wpsc_plugins ) ) {
|
|
68 |
}
|
69 |
}
|
70 |
|
|
|
71 |
if (
|
72 |
file_exists( WPCACHEHOME . '../wp-super-cache-plugins/' ) &&
|
73 |
is_dir( WPCACHEHOME . '../wp-super-cache-plugins/' )
|
@@ -82,12 +92,15 @@ if (
|
|
82 |
}
|
83 |
}
|
84 |
|
|
|
85 |
$wp_start_time = microtime();
|
86 |
|
|
|
87 |
if ( wpsc_is_backend() ) {
|
88 |
return true;
|
89 |
}
|
90 |
|
|
|
91 |
if ( wpsc_is_rejected_cookie() ) {
|
92 |
define( 'DONOTCACHEPAGE', 1 );
|
93 |
$cache_enabled = false;
|
@@ -100,12 +113,15 @@ if ( wpsc_is_caching_user_disabled() ) {
|
|
100 |
return true;
|
101 |
}
|
102 |
|
|
|
103 |
if ( isset( $wp_cache_make_known_anon ) && $wp_cache_make_known_anon ) {
|
104 |
wp_supercache_cache_for_admins();
|
105 |
}
|
106 |
|
|
|
107 |
do_cacheaction( 'cache_init' );
|
108 |
|
|
|
109 |
if ( ! $cache_enabled || ( isset( $_SERVER['REQUEST_METHOD'] ) && in_array( $_SERVER['REQUEST_METHOD'], array( 'POST', 'PUT', 'DELETE' ) ) ) || isset( $_GET['customize_changeset_uuid'] ) ) {
|
110 |
return true;
|
111 |
}
|
@@ -119,9 +135,10 @@ $gzipped = 0;
|
|
119 |
$gzsize = 0;
|
120 |
|
121 |
if ( $cache_compression ) {
|
122 |
-
$wp_cache_gzip_encoding = gzip_accepted();
|
123 |
}
|
124 |
|
|
|
125 |
add_cacheaction( 'supercache_filename_str', 'wp_cache_check_mobile' );
|
126 |
if ( function_exists( 'add_filter' ) ) { // loaded since WordPress 4.6
|
127 |
add_filter( 'supercache_filename_str', 'wp_cache_check_mobile' );
|
@@ -130,10 +147,13 @@ if ( function_exists( 'add_filter' ) ) { // loaded since WordPress 4.6
|
|
130 |
$wp_cache_request_uri = wpsc_remove_tracking_params_from_uri( $_SERVER['REQUEST_URI'] ); // Cache this in case any plugin modifies it and filter out tracking parameters.
|
131 |
|
132 |
if ( defined( 'DOING_CRON' ) ) {
|
|
|
133 |
extract( wp_super_cache_init() ); // $key, $cache_filename, $meta_file, $cache_file, $meta_pathname
|
134 |
return true;
|
135 |
}
|
136 |
|
|
|
|
|
137 |
if ( ! isset( $wp_super_cache_late_init ) || ( isset( $wp_super_cache_late_init ) && false == $wp_super_cache_late_init ) ) {
|
138 |
wp_cache_serve_cache_file();
|
139 |
}
|
1 |
<?php
|
2 |
|
3 |
if ( ! function_exists( 'wp_cache_phase2' ) ) {
|
4 |
+
require_once __DIR__. '/wp-cache-phase2.php';
|
5 |
}
|
6 |
|
7 |
// error_reporting(E_ERROR | E_PARSE); // uncomment to debug this file!
|
8 |
+
// directory where the configuration file lives.
|
9 |
if ( !defined( 'WPCACHECONFIGPATH' ) ) {
|
10 |
define( 'WPCACHECONFIGPATH', WP_CONTENT_DIR );
|
11 |
}
|
14 |
return false;
|
15 |
}
|
16 |
|
17 |
+
// points at the wp-super-cache plugin directory because sometimes file paths are weird. Edge cases,
|
18 |
if ( ! defined( 'WPCACHEHOME' ) ) {
|
19 |
+
define( 'WPCACHEHOME', __DIR__ . '/' );
|
20 |
}
|
21 |
|
22 |
if ( defined( 'DISABLE_SUPERCACHE' ) ) {
|
33 |
return;
|
34 |
}
|
35 |
|
36 |
+
// $blog_cache_dir is used all over the code alongside the supercache directory but at least with multisite installs it appears to do nothing.
|
37 |
+
// I started putting everything in cache/supercache/blogname/path/ a long time ago but never got around to removing the code that used the blogs directory.
|
38 |
if ( $blogcacheid != '' ) {
|
39 |
$blog_cache_dir = str_replace( '//', '/', $cache_path . 'blogs/' . $blogcacheid . '/' );
|
40 |
} else {
|
43 |
|
44 |
$wp_cache_phase1_loaded = true;
|
45 |
|
46 |
+
// part of the coarse file locking which should really be removed, but there are edge cases where semaphores didn't work in the past.
|
47 |
$mutex_filename = 'wp_cache_mutex.lock';
|
48 |
$new_cache = false;
|
49 |
|
50 |
+
// write a plugin to extend wp-super-cache!
|
51 |
if ( ! isset( $wp_cache_plugins_dir ) ) {
|
52 |
$wp_cache_plugins_dir = WPCACHEHOME . 'plugins';
|
53 |
}
|
54 |
|
55 |
+
// from the secret shown on the Advanced settings page.
|
56 |
if ( isset( $_GET['donotcachepage'] ) && isset( $cache_page_secret ) && $_GET['donotcachepage'] == $cache_page_secret ) {
|
57 |
$cache_enabled = false;
|
58 |
define( 'DONOTCACHEPAGE', 1 );
|
59 |
}
|
60 |
|
61 |
+
// Load wp-super-cache plugins
|
62 |
$plugins = glob( $wp_cache_plugins_dir . '/*.php' );
|
63 |
if ( is_array( $plugins ) ) {
|
64 |
foreach ( $plugins as $plugin ) {
|
68 |
}
|
69 |
}
|
70 |
|
71 |
+
// Load plugins from an array of php scripts. This needs to be documented.
|
72 |
if ( isset( $wpsc_plugins ) && is_array( $wpsc_plugins ) ) {
|
73 |
foreach( $wpsc_plugins as $plugin_file ) {
|
74 |
if ( file_exists( ABSPATH . $plugin_file ) ) {
|
77 |
}
|
78 |
}
|
79 |
|
80 |
+
// also look for plugins in wp-content/wp-super-cache-plugins/
|
81 |
if (
|
82 |
file_exists( WPCACHEHOME . '../wp-super-cache-plugins/' ) &&
|
83 |
is_dir( WPCACHEHOME . '../wp-super-cache-plugins/' )
|
92 |
}
|
93 |
}
|
94 |
|
95 |
+
// for timing purposes for the html comments
|
96 |
$wp_start_time = microtime();
|
97 |
|
98 |
+
// don't cache in wp-admin
|
99 |
if ( wpsc_is_backend() ) {
|
100 |
return true;
|
101 |
}
|
102 |
|
103 |
+
// if a cookie is found that we don't like then don't serve/cache the page
|
104 |
if ( wpsc_is_rejected_cookie() ) {
|
105 |
define( 'DONOTCACHEPAGE', 1 );
|
106 |
$cache_enabled = false;
|
113 |
return true;
|
114 |
}
|
115 |
|
116 |
+
// make logged in users anonymous so they are shown logged out pages.
|
117 |
if ( isset( $wp_cache_make_known_anon ) && $wp_cache_make_known_anon ) {
|
118 |
wp_supercache_cache_for_admins();
|
119 |
}
|
120 |
|
121 |
+
// an init action wpsc plugins can hook on to.
|
122 |
do_cacheaction( 'cache_init' );
|
123 |
|
124 |
+
// don't cache or serve cached files for various URLs, including the Customizer.
|
125 |
if ( ! $cache_enabled || ( isset( $_SERVER['REQUEST_METHOD'] ) && in_array( $_SERVER['REQUEST_METHOD'], array( 'POST', 'PUT', 'DELETE' ) ) ) || isset( $_GET['customize_changeset_uuid'] ) ) {
|
126 |
return true;
|
127 |
}
|
135 |
$gzsize = 0;
|
136 |
|
137 |
if ( $cache_compression ) {
|
138 |
+
$wp_cache_gzip_encoding = gzip_accepted(); // false or 'gzip'
|
139 |
}
|
140 |
|
141 |
+
// The wp_cache_check_mobile function appends "-mobile" to the cache filename if it detects a mobile visitor.
|
142 |
add_cacheaction( 'supercache_filename_str', 'wp_cache_check_mobile' );
|
143 |
if ( function_exists( 'add_filter' ) ) { // loaded since WordPress 4.6
|
144 |
add_filter( 'supercache_filename_str', 'wp_cache_check_mobile' );
|
147 |
$wp_cache_request_uri = wpsc_remove_tracking_params_from_uri( $_SERVER['REQUEST_URI'] ); // Cache this in case any plugin modifies it and filter out tracking parameters.
|
148 |
|
149 |
if ( defined( 'DOING_CRON' ) ) {
|
150 |
+
// this is required for scheduled CRON jobs.
|
151 |
extract( wp_super_cache_init() ); // $key, $cache_filename, $meta_file, $cache_file, $meta_pathname
|
152 |
return true;
|
153 |
}
|
154 |
|
155 |
+
// late init delays serving a cache file until after the WordPress init actin has fired and (most of?) WordPress has loaded.
|
156 |
+
// If it's not enabled then serve a cache file now if possible.
|
157 |
if ( ! isset( $wp_super_cache_late_init ) || ( isset( $wp_super_cache_late_init ) && false == $wp_super_cache_late_init ) ) {
|
158 |
wp_cache_serve_cache_file();
|
159 |
}
|
wp-cache-phase2.php
CHANGED
@@ -1,22 +1,26 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
function gzip_accepted(){
|
4 |
-
if ( 1 == ini_get( 'zlib.output_compression' ) ||
|
5 |
return false;
|
|
|
6 |
|
7 |
-
if ( !isset( $_SERVER[
|
|
|
|
|
8 |
return 'gzip';
|
9 |
}
|
10 |
|
11 |
function setup_blog_cache_dir() {
|
12 |
global $blog_cache_dir, $cache_path;
|
13 |
-
if( false == @is_dir( $blog_cache_dir ) ) {
|
14 |
-
@mkdir( $cache_path .
|
15 |
@mkdir( $blog_cache_dir );
|
16 |
}
|
17 |
|
18 |
-
if( false == @is_dir( $blog_cache_dir . 'meta' ) )
|
19 |
@mkdir( $blog_cache_dir . 'meta' );
|
|
|
20 |
}
|
21 |
|
22 |
function get_wp_cache_key( $url = false ) {
|
@@ -24,8 +28,8 @@ function get_wp_cache_key( $url = false ) {
|
|
24 |
if ( ! $url ) {
|
25 |
$url = $wp_cache_request_uri;
|
26 |
}
|
27 |
-
$server_port = isset( $_SERVER[
|
28 |
-
return do_cacheaction( 'wp_cache_key', wp_cache_check_mobile( $WPSC_HTTP_HOST . $server_port . preg_replace('/#.*$/', '', str_replace( '/index.php', '/', $url ) ) . $wp_cache_gzip_encoding . wp_cache_get_cookies_values() ) );
|
29 |
}
|
30 |
|
31 |
function wpsc_remove_tracking_params_from_uri( $uri ) {
|
@@ -44,12 +48,12 @@ function wpsc_remove_tracking_params_from_uri( $uri ) {
|
|
44 |
|
45 |
if ( isset( $parsed_url['query'] ) ) {
|
46 |
parse_str( $parsed_url['query'], $query );
|
47 |
-
foreach( $wpsc_tracking_parameters as $param_name ) {
|
48 |
-
unset( $query[$param_name] );
|
49 |
unset( $_GET[ $param_name ] );
|
50 |
}
|
51 |
}
|
52 |
-
$path
|
53 |
$query = ! empty( $query ) ? '?' . http_build_query( $query ) : '';
|
54 |
|
55 |
if ( empty( $_GET ) ) {
|
@@ -67,11 +71,11 @@ function wp_super_cache_init() {
|
|
67 |
global $wp_cache_key, $key, $blogcacheid, $file_prefix, $blog_cache_dir, $meta_file, $cache_file, $cache_filename, $meta_pathname;
|
68 |
|
69 |
$wp_cache_key = get_wp_cache_key();
|
70 |
-
$key
|
71 |
$wp_cache_key = $blogcacheid . $wp_cache_key;
|
72 |
|
73 |
$cache_filename = $file_prefix . $key . '.php';
|
74 |
-
$meta_file
|
75 |
|
76 |
$cache_file = wpsc_get_realpath( $blog_cache_dir );
|
77 |
|
@@ -118,9 +122,9 @@ function wp_cache_serve_cache_file() {
|
|
118 |
)
|
119 |
) {
|
120 |
if ( file_exists( get_current_url_supercache_dir() . 'meta-' . $cache_filename ) ) {
|
121 |
-
$cache_file
|
122 |
$meta_pathname = get_current_url_supercache_dir() . 'meta-' . $cache_filename;
|
123 |
-
} elseif ( !file_exists( $cache_file ) ) {
|
124 |
wp_cache_debug( 'wp_cache_serve_cache_file: found cache file but then it disappeared!' );
|
125 |
return false;
|
126 |
}
|
@@ -131,7 +135,7 @@ function wp_cache_serve_cache_file() {
|
|
131 |
}
|
132 |
|
133 |
wp_cache_debug( "wp-cache file exists: $cache_file", 5 );
|
134 |
-
if ( !( $meta = json_decode( wp_cache_get_legacy_cache( $meta_pathname ), true ) ) ) {
|
135 |
wp_cache_debug( "couldn't load wp-cache meta file", 5 );
|
136 |
return true;
|
137 |
}
|
@@ -146,7 +150,7 @@ function wp_cache_serve_cache_file() {
|
|
146 |
global $cache_max_time;
|
147 |
// last chance, check if a supercache file exists. Just in case .htaccess rules don't work on this host
|
148 |
$filename = supercache_filename();
|
149 |
-
$file
|
150 |
if ( false == file_exists( $file ) ) {
|
151 |
wp_cache_debug( "No Super Cache file found for current URL: $file" );
|
152 |
return false;
|
@@ -160,15 +164,17 @@ function wp_cache_serve_cache_file() {
|
|
160 |
wp_cache_debug( 'Saving headers. Cannot serve a supercache file.' );
|
161 |
return false;
|
162 |
} elseif ( $cache_max_time > 0 && ( filemtime( $file ) + $cache_max_time ) < time() ) {
|
163 |
-
wp_cache_debug( sprintf(
|
164 |
return false;
|
165 |
}
|
166 |
|
167 |
-
if ( isset( $wp_cache_mfunc_enabled ) == false )
|
168 |
$wp_cache_mfunc_enabled = 0;
|
|
|
169 |
|
170 |
-
if ( false == isset( $wp_cache_home_path ) )
|
171 |
$wp_cache_home_path = '/';
|
|
|
172 |
|
173 |
// make sure ending slashes are ok
|
174 |
if ( $wp_cache_request_uri == $wp_cache_home_path || ( $wp_cache_slash_check && substr( $wp_cache_request_uri, -1 ) == '/' ) || ( $wp_cache_slash_check == 0 && substr( $wp_cache_request_uri, -1 ) != '/' ) ) {
|
@@ -198,38 +204,39 @@ function wp_cache_serve_cache_file() {
|
|
198 |
}
|
199 |
}
|
200 |
|
201 |
-
if ( isset( $wp_cache_disable_utf8 ) == false || $wp_cache_disable_utf8 == 0 )
|
202 |
-
header(
|
|
|
203 |
|
204 |
if ( defined( 'WPSC_VARY_HEADER' ) ) {
|
205 |
if ( WPSC_VARY_HEADER != '' ) {
|
206 |
-
header(
|
207 |
}
|
208 |
} else {
|
209 |
-
header(
|
210 |
}
|
211 |
if ( defined( 'WPSC_CACHE_CONTROL_HEADER' ) ) {
|
212 |
if ( WPSC_CACHE_CONTROL_HEADER != '' ) {
|
213 |
-
header(
|
214 |
}
|
215 |
} else {
|
216 |
-
header(
|
217 |
}
|
218 |
$size = function_exists( 'mb_strlen' ) ? mb_strlen( $cachefiledata, '8bit' ) : strlen( $cachefiledata );
|
219 |
if ( $wp_cache_gzip_encoding ) {
|
220 |
if ( isset( $wpsc_served_header ) && $wpsc_served_header ) {
|
221 |
-
header(
|
222 |
}
|
223 |
header( 'Content-Encoding: ' . $wp_cache_gzip_encoding );
|
224 |
header( 'Content-Length: ' . $size );
|
225 |
} elseif ( $wp_supercache_304 ) {
|
226 |
if ( isset( $wpsc_served_header ) && $wpsc_served_header ) {
|
227 |
-
header(
|
228 |
}
|
229 |
header( 'Content-Length: ' . $size );
|
230 |
} else {
|
231 |
if ( isset( $wpsc_served_header ) && $wpsc_served_header ) {
|
232 |
-
header(
|
233 |
}
|
234 |
}
|
235 |
|
@@ -237,16 +244,16 @@ function wp_cache_serve_cache_file() {
|
|
237 |
if ( $wp_cache_mfunc_enabled == 0 && $wp_supercache_304 ) {
|
238 |
wp_cache_debug( 'wp_cache_serve_cache_file: checking age of cached vs served files.' );
|
239 |
$headers = apache_request_headers();
|
240 |
-
$remote_mod_time = isset
|
241 |
|
242 |
-
if (
|
243 |
$remote_mod_time = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
|
244 |
}
|
245 |
|
246 |
-
$local_mod_time = gmdate(
|
247 |
-
if (
|
248 |
wp_cache_debug( 'wp_cache_serve_cache_file: Send 304 Not Modified header.' );
|
249 |
-
header( $_SERVER[
|
250 |
exit();
|
251 |
} else {
|
252 |
wp_cache_debug( 'wp_cache_serve_cache_file: 304 browser caching not possible as timestamps differ.' );
|
@@ -263,13 +270,13 @@ function wp_cache_serve_cache_file() {
|
|
263 |
|
264 |
$cache_file = do_cacheaction( 'wp_cache_served_cache_file', $cache_file );
|
265 |
// Sometimes the gzip headers are lost. Make sure html returned isn't compressed!
|
266 |
-
if ( $cache_compression && $wp_cache_gzip_encoding && !in_array( 'Content-Encoding: ' . $wp_cache_gzip_encoding, $meta[
|
267 |
$ungzip = true;
|
268 |
wp_cache_debug( 'GZIP headers not found. Force uncompressed output.', 1 );
|
269 |
} else {
|
270 |
$ungzip = false;
|
271 |
}
|
272 |
-
foreach ( $meta[
|
273 |
// godaddy fix, via http://blog.gneu.org/2008/05/wp-supercache-on-godaddy/ and http://www.littleredrails.com/blog/2007/09/08/using-wp-cache-on-godaddy-500-error/
|
274 |
if ( strpos( $header, 'Last-Modified:' ) === false ) {
|
275 |
header( $header );
|
@@ -278,11 +285,11 @@ function wp_cache_serve_cache_file() {
|
|
278 |
if ( isset( $wpsc_served_header ) && $wpsc_served_header ) {
|
279 |
header( 'X-WP-Super-Cache: Served WPCache cache file' );
|
280 |
}
|
281 |
-
if ( isset( $meta[
|
282 |
wp_cache_debug( 'Serving wp-cache dynamic file', 5 );
|
283 |
if ( $ungzip ) {
|
284 |
// attempt to uncompress the cached file just in case it's gzipped
|
285 |
-
$cache
|
286 |
$uncompressed = @gzuncompress( $cache );
|
287 |
if ( $uncompressed ) {
|
288 |
wp_cache_debug( 'Uncompressed gzipped cache file from wp-cache', 1 );
|
@@ -297,7 +304,7 @@ function wp_cache_serve_cache_file() {
|
|
297 |
} else {
|
298 |
wp_cache_debug( 'Serving wp-cache static file', 5 );
|
299 |
if ( $ungzip ) {
|
300 |
-
$cache
|
301 |
$uncompressed = gzuncompress( $cache );
|
302 |
if ( $uncompressed ) {
|
303 |
wp_cache_debug( 'Uncompressed gzipped cache file from wp-cache', 1 );
|
@@ -322,8 +329,9 @@ function wp_cache_get_legacy_cache( $cache_file ) {
|
|
322 |
function wp_cache_postload() {
|
323 |
global $cache_enabled, $wp_super_cache_late_init;
|
324 |
|
325 |
-
if (
|
326 |
return true;
|
|
|
327 |
|
328 |
if ( isset( $wp_super_cache_late_init ) && true == $wp_super_cache_late_init ) {
|
329 |
wp_cache_debug( 'Supercache Late Init: add wp_cache_serve_cache_file to init', 3 );
|
@@ -434,24 +442,26 @@ function wp_cache_get_cookies_values() {
|
|
434 |
return $string;
|
435 |
}
|
436 |
|
437 |
-
if ( defined( 'COOKIEHASH' ) )
|
438 |
$cookiehash = preg_quote( constant( 'COOKIEHASH' ) );
|
439 |
-
else
|
440 |
$cookiehash = '';
|
|
|
441 |
$regex = "/^wp-postpass_$cookiehash|^comment_author_$cookiehash";
|
442 |
-
if ( defined( 'LOGGED_IN_COOKIE' ) )
|
443 |
-
$regex .=
|
444 |
-
else
|
445 |
$regex .= "|^wordpress_logged_in_$cookiehash";
|
446 |
-
|
447 |
-
|
|
|
448 |
if ( preg_match( $regex, $key ) ) {
|
449 |
-
wp_cache_debug(
|
450 |
-
$string .= $_COOKIE[ $key ] .
|
451 |
}
|
452 |
-
next($_COOKIE);
|
453 |
}
|
454 |
-
reset($_COOKIE);
|
455 |
|
456 |
// If you use this hook, make sure you update your .htaccess rules with the same conditions
|
457 |
$string = do_cacheaction( 'wp_cache_get_cookies_values', $string );
|
@@ -461,16 +471,17 @@ function wp_cache_get_cookies_values() {
|
|
461 |
is_array( $wpsc_cookies ) &&
|
462 |
! empty( $wpsc_cookies )
|
463 |
) {
|
464 |
-
foreach( $wpsc_cookies as $name ) {
|
465 |
if ( isset( $_COOKIE[ $name ] ) ) {
|
466 |
wp_cache_debug( "wp_cache_get_cookies_values - found extra cookie: $name" );
|
467 |
-
$string .= $name .
|
468 |
}
|
469 |
}
|
470 |
}
|
471 |
|
472 |
-
if ( $string != '' )
|
473 |
$string = md5( $string );
|
|
|
474 |
|
475 |
wp_cache_debug( "wp_cache_get_cookies_values: return: $string", 5 );
|
476 |
return $string;
|
@@ -484,12 +495,13 @@ function add_cacheaction( $action, $func ) {
|
|
484 |
function do_cacheaction( $action, $value = '' ) {
|
485 |
global $wp_supercache_actions;
|
486 |
|
487 |
-
if ( !isset( $wp_supercache_actions ) || !is_array( $wp_supercache_actions ) )
|
488 |
return $value;
|
|
|
489 |
|
490 |
-
if( array_key_exists($action, $wp_supercache_actions) && is_array( $wp_supercache_actions[ $action ] ) ) {
|
491 |
$actions = $wp_supercache_actions[ $action ];
|
492 |
-
foreach( $actions as $func ) {
|
493 |
$value = call_user_func_array( $func, array( $value ) );
|
494 |
}
|
495 |
}
|
@@ -499,38 +511,42 @@ function do_cacheaction( $action, $value = '' ) {
|
|
499 |
|
500 |
function wp_cache_mobile_group( $user_agent ) {
|
501 |
global $wp_cache_mobile_groups;
|
502 |
-
foreach( (array)$wp_cache_mobile_groups as $name => $group ) {
|
503 |
-
foreach( (array)$group as $browser ) {
|
504 |
$browser = trim( strtolower( $browser ) );
|
505 |
if ( $browser != '' && strstr( $user_agent, $browser ) ) {
|
506 |
return $browser;
|
507 |
}
|
508 |
}
|
509 |
}
|
510 |
-
return
|
511 |
}
|
512 |
|
513 |
// From https://wordpress.org/plugins/wordpress-mobile-edition/ by Alex King
|
514 |
function wp_cache_check_mobile( $cache_key ) {
|
515 |
global $wp_cache_mobile_enabled, $wp_cache_mobile_browsers, $wp_cache_mobile_prefixes;
|
516 |
-
if ( !isset( $wp_cache_mobile_enabled ) || false == $wp_cache_mobile_enabled )
|
517 |
return $cache_key;
|
|
|
|
|
|
|
|
|
518 |
|
519 |
wp_cache_debug( "wp_cache_check_mobile: $cache_key" );
|
520 |
|
521 |
// allow plugins to short circuit mobile check. Cookie, extra UA checks?
|
522 |
-
switch( do_cacheaction( 'wp_cache_check_mobile', $cache_key ) ) {
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
break;
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
break;
|
531 |
}
|
532 |
|
533 |
-
if ( !isset( $_SERVER[
|
534 |
return $cache_key;
|
535 |
}
|
536 |
|
@@ -539,34 +555,36 @@ function wp_cache_check_mobile( $cache_key ) {
|
|
539 |
return $cache_key;
|
540 |
}
|
541 |
|
542 |
-
$browsers
|
543 |
$user_agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
|
544 |
-
foreach ($browsers as $browser) {
|
545 |
if ( strstr( $user_agent, trim( strtolower( $browser ) ) ) ) {
|
546 |
wp_cache_debug( 'mobile browser detected: ' . $browser );
|
547 |
return $cache_key . '-' . wp_cache_mobile_group( $user_agent );
|
548 |
}
|
549 |
}
|
550 |
-
if (isset($_SERVER['HTTP_X_WAP_PROFILE']) )
|
551 |
return $cache_key . '-' . $_SERVER['HTTP_X_WAP_PROFILE'];
|
552 |
-
|
|
|
553 |
return $cache_key . '-' . $_SERVER['HTTP_PROFILE'];
|
|
|
554 |
|
555 |
if ( isset( $wp_cache_mobile_prefixes ) ) {
|
556 |
$browsers = explode( ',', $wp_cache_mobile_prefixes );
|
557 |
-
foreach ($browsers as $browser_prefix) {
|
558 |
-
if ( substr($user_agent, 0, 4) == $browser_prefix ) {
|
559 |
wp_cache_debug( 'mobile browser (prefix) detected: ' . $browser_prefix );
|
560 |
return $cache_key . '-' . $browser_prefix;
|
561 |
}
|
562 |
}
|
563 |
}
|
564 |
-
$accept = isset( $_SERVER[
|
565 |
-
if (strpos($accept, 'wap') !== false) {
|
566 |
return $cache_key . '-' . 'wap';
|
567 |
}
|
568 |
|
569 |
-
if (isset($_SERVER['ALL_HTTP']) && strpos(strtolower($_SERVER['ALL_HTTP']), 'operamini') !== false) {
|
570 |
return $cache_key . '-' . 'operamini';
|
571 |
}
|
572 |
|
@@ -589,26 +607,29 @@ function wp_cache_debug( $message, $level = 1 ) {
|
|
589 |
$last_message = $message;
|
590 |
|
591 |
// If either of the debug or log globals aren't set, then we can stop
|
592 |
-
if ( !isset($wp_super_cache_debug)
|
593 |
-
|| !isset($wp_cache_debug_log) )
|
594 |
return false;
|
|
|
595 |
|
596 |
// If either the debug or log globals are false or empty, we can stop
|
597 |
if ( $wp_super_cache_debug == false
|
598 |
-
|| $wp_cache_debug_log == '' )
|
599 |
return false;
|
|
|
600 |
|
601 |
// If the debug_ip has been set, but it doesn't match the ip of the requester
|
602 |
// then we can stop.
|
603 |
-
if ( isset($wp_cache_debug_ip)
|
604 |
&& $wp_cache_debug_ip != ''
|
605 |
-
&& $wp_cache_debug_ip != $_SERVER[
|
606 |
return false;
|
|
|
607 |
|
608 |
// Log message: Date URI Message
|
609 |
-
$log_message = date('H:i:s') .
|
610 |
// path to the log file in the cache folder
|
611 |
-
$log_file = $cache_path . str_replace('/', '', str_replace('..', '', $wp_cache_debug_log));
|
612 |
|
613 |
if ( ! file_exists( $log_file ) && function_exists( 'wpsc_create_debug_log' ) ) {
|
614 |
global $wp_cache_debug_username;
|
@@ -625,7 +646,7 @@ function wp_cache_debug( $message, $level = 1 ) {
|
|
625 |
function wpsc_dump_get_request() {
|
626 |
static $string;
|
627 |
|
628 |
-
if ( isset( $string) ) {
|
629 |
return $string;
|
630 |
}
|
631 |
|
@@ -683,7 +704,7 @@ function get_current_url_supercache_dir( $post_id = 0 ) {
|
|
683 |
|
684 |
$DONOTREMEMBER = 0;
|
685 |
if ( $post_id != 0 ) {
|
686 |
-
$site_url
|
687 |
$permalink = get_permalink( $post_id );
|
688 |
if ( false === strpos( $permalink, $site_url ) ) {
|
689 |
/*
|
@@ -706,39 +727,41 @@ function get_current_url_supercache_dir( $post_id = 0 ) {
|
|
706 |
}
|
707 |
} else {
|
708 |
$uri = str_replace( $site_url, '', $permalink );
|
709 |
-
if ( strpos( $uri, $wp_cache_home_path ) !== 0 )
|
710 |
$uri = rtrim( $wp_cache_home_path, '/' ) . $uri;
|
|
|
711 |
}
|
712 |
} else {
|
713 |
$uri = strtolower( $wp_cache_request_uri );
|
714 |
$uri = preg_replace_callback(
|
715 |
-
|
716 |
function ( $matches ) {
|
717 |
return strtoupper( $matches[0] );
|
718 |
},
|
719 |
$uri
|
720 |
);
|
721 |
}
|
722 |
-
$uri
|
723 |
$hostname = $WPSC_HTTP_HOST;
|
724 |
// Get hostname from wp options for wp-cron, wp-cli and similar requests.
|
725 |
if ( empty( $hostname ) && function_exists( 'get_option' ) ) {
|
726 |
$hostname = (string) parse_url( get_option( 'home' ), PHP_URL_HOST );
|
727 |
}
|
728 |
$dir = preg_replace( '/:.*$/', '', $hostname ) . $uri; // To avoid XSS attacks
|
729 |
-
if ( function_exists(
|
730 |
$dir = apply_filters( 'supercache_dir', $dir );
|
731 |
} else {
|
732 |
$dir = do_cacheaction( 'supercache_dir', $dir );
|
733 |
}
|
734 |
$dir = $cache_path . 'supercache/' . $dir . '/';
|
735 |
-
if( is_array( $cached_direct_pages ) && in_array( $_SERVER[
|
736 |
$dir = ABSPATH . $uri . '/';
|
737 |
}
|
738 |
$dir = str_replace( '..', '', str_replace( '//', '/', $dir ) );
|
739 |
wp_cache_debug( "supercache dir: $dir", 5 );
|
740 |
-
if ( $DONOTREMEMBER == 0 )
|
741 |
$saved_supercache_dir[ $post_id ] = $dir;
|
|
|
742 |
return $dir;
|
743 |
}
|
744 |
|
@@ -762,7 +785,7 @@ function wpsc_get_realpath( $directory ) {
|
|
762 |
}
|
763 |
|
764 |
$original_dir = $directory;
|
765 |
-
$directory
|
766 |
|
767 |
if ( ! $directory ) {
|
768 |
wp_cache_debug( "wpsc_get_realpath: directory does not exist - $original_dir" );
|
@@ -826,14 +849,14 @@ function wpsc_delete_files( $dir, $delete = true ) {
|
|
826 |
|
827 |
// only do this once, this function will be called many times
|
828 |
if ( $protected == '' ) {
|
829 |
-
$protected = array( $cache_path, $cache_path .
|
830 |
-
foreach( $protected as $id => $directory ) {
|
831 |
$protected[ $id ] = trailingslashit( wpsc_get_realpath( $directory ) );
|
832 |
}
|
833 |
}
|
834 |
|
835 |
$orig_dir = $dir;
|
836 |
-
$dir
|
837 |
if ( ! $dir ) {
|
838 |
wp_cache_debug( 'wpsc_delete_files: directory does not exist: ' . $orig_dir );
|
839 |
return false;
|
@@ -854,7 +877,7 @@ function wpsc_delete_files( $dir, $delete = true ) {
|
|
854 |
if ( is_dir( $dir ) && $dh = @opendir( $dir ) ) {
|
855 |
while ( ( $file = readdir( $dh ) ) !== false ) {
|
856 |
wp_cache_debug( 'wpsc_delete_files: reading files: ' . $file );
|
857 |
-
if ( $file != '.' && $file != '..' && $file != '.htaccess' && is_file( $dir . $file ) )
|
858 |
if ( $delete ) {
|
859 |
wp_cache_debug( 'wpsc_delete_files: deleting ' . $dir . $file );
|
860 |
@unlink( $dir . $file );
|
@@ -862,6 +885,7 @@ function wpsc_delete_files( $dir, $delete = true ) {
|
|
862 |
wp_cache_debug( 'wpsc_delete_files: rebuild or delete ' . $dir . $file );
|
863 |
@wp_cache_rebuild_or_delete( $dir . $file );
|
864 |
}
|
|
|
865 |
}
|
866 |
closedir( $dh );
|
867 |
|
@@ -894,20 +918,21 @@ function get_all_supercache_filenames( $dir = '' ) {
|
|
894 |
// open directory and look for index-*.html files
|
895 |
if ( is_dir( $dir ) && $dh = @opendir( $dir ) ) {
|
896 |
while ( ( $file = readdir( $dh ) ) !== false ) {
|
897 |
-
if ( substr( $file, 0, 6 ) == 'index-' && strpos( $file, '.html' ) )
|
898 |
$filenames[] = $file;
|
|
|
899 |
}
|
900 |
closedir( $dh );
|
901 |
}
|
902 |
}
|
903 |
|
904 |
-
if ( function_exists(
|
905 |
$filenames = apply_filters( 'all_supercache_filenames', $filenames );
|
906 |
} else {
|
907 |
$filenames = do_cacheaction( 'all_supercache_filenames', $filenames );
|
908 |
}
|
909 |
|
910 |
-
foreach( $filenames as $file ) {
|
911 |
$out[] = $file;
|
912 |
$out[] = $file . '.gz';
|
913 |
}
|
@@ -918,17 +943,17 @@ function get_all_supercache_filenames( $dir = '' ) {
|
|
918 |
function supercache_filename() {
|
919 |
global $cached_direct_pages;
|
920 |
|
921 |
-
//Add support for https and http caching
|
922 |
-
$is_https
|
923 |
$extra_str = $is_https ? '-https' : '';
|
924 |
|
925 |
-
if ( function_exists(
|
926 |
$extra_str = apply_filters( 'supercache_filename_str', $extra_str );
|
927 |
} else {
|
928 |
$extra_str = do_cacheaction( 'supercache_filename_str', $extra_str );
|
929 |
}
|
930 |
|
931 |
-
if ( is_array( $cached_direct_pages ) && in_array( $_SERVER[
|
932 |
$extra_str = '';
|
933 |
}
|
934 |
$filename = 'index' . $extra_str . '.html';
|
@@ -937,18 +962,32 @@ function supercache_filename() {
|
|
937 |
}
|
938 |
|
939 |
function get_oc_version() {
|
940 |
-
$wp_cache_oc_key = wp_cache_get(
|
941 |
if ( ! $wp_cache_oc_key ) {
|
942 |
-
$wp_cache_oc_key[
|
943 |
-
} elseif ( $wp_cache_oc_key[
|
944 |
-
wp_cache_set(
|
945 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
946 |
}
|
947 |
|
948 |
function reset_oc_version( $version = 1 ) {
|
949 |
-
if ( $version == 1 )
|
950 |
$version = mt_rand();
|
951 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
952 |
|
953 |
return $version;
|
954 |
}
|
@@ -957,7 +996,7 @@ function get_oc_key( $url = false ) {
|
|
957 |
global $wp_cache_gzip_encoding, $WPSC_HTTP_HOST;
|
958 |
|
959 |
if ( $url ) {
|
960 |
-
$key = intval( $_SERVER[
|
961 |
} else {
|
962 |
$key = get_current_url_supercache_dir();
|
963 |
}
|
@@ -1039,8 +1078,8 @@ function wp_cache_confirm_delete( $dir ) {
|
|
1039 |
$dir == '' ||
|
1040 |
$dir == $rp_cache_path ||
|
1041 |
$dir == wpsc_get_realpath( $blog_cache_dir ) ||
|
1042 |
-
$dir == wpsc_get_realpath( $blog_cache_dir .
|
1043 |
-
$dir == wpsc_get_realpath( $cache_path .
|
1044 |
) {
|
1045 |
return false;
|
1046 |
} else {
|
@@ -1062,16 +1101,19 @@ function wpsc_deep_replace( $search, $subject ) {
|
|
1062 |
|
1063 |
function wpsc_get_protected_directories() {
|
1064 |
global $cache_path, $blog_cache_dir;
|
1065 |
-
return apply_filters(
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
|
|
|
|
|
|
1075 |
}
|
1076 |
|
1077 |
function wpsc_debug_username() {
|
@@ -1087,7 +1129,7 @@ function wpsc_create_debug_log( $filename = '', $username = '' ) {
|
|
1087 |
if ( $filename != '' ) {
|
1088 |
$wp_cache_debug_log = $filename;
|
1089 |
} else {
|
1090 |
-
$wp_cache_debug_log = md5( time() + mt_rand() ) .
|
1091 |
}
|
1092 |
if ( $username != '' ) {
|
1093 |
$wp_cache_debug_username = $username;
|
@@ -1096,11 +1138,11 @@ function wpsc_create_debug_log( $filename = '', $username = '' ) {
|
|
1096 |
}
|
1097 |
|
1098 |
$msg = 'die( "Please use the viewer" );' . PHP_EOL;
|
1099 |
-
$fp
|
1100 |
if ( $fp ) {
|
1101 |
fwrite( $fp, '<' . "?php\n" );
|
1102 |
fwrite( $fp, $msg );
|
1103 |
-
fwrite( $fp, '?' .
|
1104 |
fwrite( $fp, '<' . '?php // END HEADER ?' . '>' . PHP_EOL );
|
1105 |
fclose( $fp );
|
1106 |
wp_cache_setting( 'wp_cache_debug_log', $wp_cache_debug_log );
|
@@ -1117,7 +1159,7 @@ if ( !isset( $_SERVER[ "PHP_AUTH_USER" ] ) || ( $_SERVER[ "PHP_AUTH_USER" ] != "
|
|
1117 |
|
1118 |
$fp = fopen( $cache_path . 'view_' . $wp_cache_debug_log, 'w' );
|
1119 |
if ( $fp ) {
|
1120 |
-
fwrite( $fp, '<' .
|
1121 |
$msg .= '$debug_log = file( "./' . $wp_cache_debug_log . '" );
|
1122 |
$start_log = 1 + array_search( "<" . "?php // END HEADER ?" . ">" . PHP_EOL, $debug_log );
|
1123 |
if ( $start_log > 1 ) {
|
@@ -1182,7 +1224,10 @@ foreach( $debug_log as $line ) {
|
|
1182 |
fclose( $fp );
|
1183 |
}
|
1184 |
|
1185 |
-
return array(
|
|
|
|
|
|
|
1186 |
}
|
1187 |
|
1188 |
function wpsc_delete_url_cache( $url ) {
|
@@ -1222,9 +1267,10 @@ function is_writeable_ACLSafe( $path ) {
|
|
1222 |
|
1223 |
// check tmp file for read/write capabilities
|
1224 |
$rm = file_exists( $path );
|
1225 |
-
$f
|
1226 |
-
if ( $f === false )
|
1227 |
return false;
|
|
|
1228 |
fclose( $f );
|
1229 |
if ( ! $rm ) {
|
1230 |
unlink( $path );
|
@@ -1258,7 +1304,7 @@ function wp_cache_replace_line( $old, $new, $my_file ) {
|
|
1258 |
}
|
1259 |
return false;
|
1260 |
}
|
1261 |
-
if (!is_writeable_ACLSafe($my_file)) {
|
1262 |
if ( function_exists( 'set_transient' ) ) {
|
1263 |
set_transient( 'wpsc_config_error', 'config_file_ro', 10 );
|
1264 |
}
|
@@ -1266,11 +1312,11 @@ function wp_cache_replace_line( $old, $new, $my_file ) {
|
|
1266 |
return false;
|
1267 |
}
|
1268 |
|
1269 |
-
$found
|
1270 |
$loaded = false;
|
1271 |
-
$c
|
1272 |
-
$lines
|
1273 |
-
while( ! $loaded ) {
|
1274 |
$lines = file( $my_file );
|
1275 |
if ( ! empty( $lines ) && is_array( $lines ) ) {
|
1276 |
$loaded = true;
|
@@ -1285,7 +1331,7 @@ function wp_cache_replace_line( $old, $new, $my_file ) {
|
|
1285 |
}
|
1286 |
}
|
1287 |
}
|
1288 |
-
foreach( (array) $lines as $line ) {
|
1289 |
if (
|
1290 |
trim( $new ) != '' &&
|
1291 |
trim( $new ) == trim( $line )
|
@@ -1293,7 +1339,7 @@ function wp_cache_replace_line( $old, $new, $my_file ) {
|
|
1293 |
wp_cache_debug( "wp_cache_replace_line: setting not changed - $new" );
|
1294 |
return true;
|
1295 |
} elseif ( preg_match( "/$old/", $line ) ) {
|
1296 |
-
wp_cache_debug(
|
1297 |
$found = true;
|
1298 |
}
|
1299 |
}
|
@@ -1305,8 +1351,8 @@ function wp_cache_replace_line( $old, $new, $my_file ) {
|
|
1305 |
die( __( 'WARNING: attempt to intercept updating of config file.', 'wp-super-cache' ) );
|
1306 |
}
|
1307 |
}
|
1308 |
-
rename( $tmp_config_filename, $tmp_config_filename .
|
1309 |
-
$tmp_config_filename .=
|
1310 |
wp_cache_debug( 'wp_cache_replace_line: writing to ' . $tmp_config_filename );
|
1311 |
$fd = fopen( $tmp_config_filename, 'w' );
|
1312 |
if ( ! $fd ) {
|
@@ -1317,7 +1363,7 @@ function wp_cache_replace_line( $old, $new, $my_file ) {
|
|
1317 |
return false;
|
1318 |
}
|
1319 |
if ( $found ) {
|
1320 |
-
foreach( (array) $lines as $line ) {
|
1321 |
if ( ! preg_match( "/$old/", $line ) ) {
|
1322 |
fputs( $fd, $line );
|
1323 |
} elseif ( $new != '' ) {
|
@@ -1326,12 +1372,12 @@ function wp_cache_replace_line( $old, $new, $my_file ) {
|
|
1326 |
}
|
1327 |
} else {
|
1328 |
$done = false;
|
1329 |
-
foreach( (array) $lines as $line ) {
|
1330 |
if ( $done || ! preg_match( '/^(if\ \(\ \!\ )?define|\$|\?>/', $line ) ) {
|
1331 |
-
fputs($fd, $line);
|
1332 |
} else {
|
1333 |
-
fputs($fd, "$new\n");
|
1334 |
-
fputs($fd, $line);
|
1335 |
$done = true;
|
1336 |
}
|
1337 |
}
|
@@ -1340,7 +1386,7 @@ function wp_cache_replace_line( $old, $new, $my_file ) {
|
|
1340 |
rename( $tmp_config_filename, $my_file );
|
1341 |
wp_cache_debug( 'wp_cache_replace_line: moved ' . $tmp_config_filename . ' to ' . $my_file );
|
1342 |
|
1343 |
-
if ( function_exists(
|
1344 |
@opcache_invalidate( $my_file );
|
1345 |
}
|
1346 |
|
@@ -1351,7 +1397,7 @@ function wpsc_shutdown_message() {
|
|
1351 |
static $did_wp_footer = false;
|
1352 |
global $wp_super_cache_comments;
|
1353 |
|
1354 |
-
if ( ! defined( 'WPSCSHUTDOWNMESSAGE' ) || ( isset( $wp_super_cache_comments) && ! $wp_super_cache_comments ) ) {
|
1355 |
return;
|
1356 |
}
|
1357 |
|
@@ -1380,7 +1426,7 @@ function wp_cache_phase2() {
|
|
1380 |
|
1381 |
wp_cache_debug( 'In WP Cache Phase 2', 5 );
|
1382 |
|
1383 |
-
$wp_cache_gmt_offset
|
1384 |
$wp_cache_blog_charset = get_option( 'blog_charset' );
|
1385 |
|
1386 |
wp_cache_mutex_init();
|
@@ -1422,7 +1468,7 @@ function wp_cache_phase2() {
|
|
1422 |
if ( ( $_SERVER['REQUEST_METHOD'] !== 'POST' && empty( $_POST ) ) && $super_cache_enabled && $cache_rebuild_files ) {
|
1423 |
$user_info = wp_cache_get_cookies_values();
|
1424 |
|
1425 |
-
if( empty( $user_info )
|
1426 |
|| true === apply_filters( 'do_createsupercache', $user_info )
|
1427 |
) {
|
1428 |
wpcache_do_rebuild( get_current_url_supercache_dir() );
|
@@ -1468,7 +1514,7 @@ function wpsc_register_post_hooks() {
|
|
1468 |
add_action( 'transition_post_status', 'wpsc_post_transition', 10, 3 );
|
1469 |
|
1470 |
// Cron hooks
|
1471 |
-
add_action( 'wp_cache_gc','wp_cache_gc_cron' );
|
1472 |
add_action( 'wp_cache_gc_watcher', 'wp_cache_gc_watcher' );
|
1473 |
|
1474 |
$done = true;
|
@@ -1478,7 +1524,7 @@ function wpcache_do_rebuild( $dir ) {
|
|
1478 |
global $do_rebuild_list, $cache_path, $wpsc_file_mtimes;
|
1479 |
wp_cache_debug( "wpcache_do_rebuild: doing rebuild for $dir" );
|
1480 |
|
1481 |
-
if ( !is_dir( $dir ) ) {
|
1482 |
wp_cache_debug( "wpcache_do_rebuild: exiting as directory is not a directory: $dir" );
|
1483 |
return false;
|
1484 |
}
|
@@ -1495,7 +1541,7 @@ function wpcache_do_rebuild( $dir ) {
|
|
1495 |
}
|
1496 |
|
1497 |
$protected = wpsc_get_protected_directories();
|
1498 |
-
foreach( $protected as $id => $directory ) {
|
1499 |
$protected[ $id ] = wpsc_get_realpath( $directory );
|
1500 |
}
|
1501 |
|
@@ -1509,7 +1555,7 @@ function wpcache_do_rebuild( $dir ) {
|
|
1509 |
return false;
|
1510 |
}
|
1511 |
|
1512 |
-
if ( !is_dir( $dir ) ) {
|
1513 |
wp_cache_debug( "wpcache_do_rebuild: exiting as directory is not a directory: $dir" );
|
1514 |
return false;
|
1515 |
}
|
@@ -1520,7 +1566,7 @@ function wpcache_do_rebuild( $dir ) {
|
|
1520 |
return false;
|
1521 |
}
|
1522 |
|
1523 |
-
$dir
|
1524 |
$wpsc_file_mtimes = array();
|
1525 |
while ( ( $file = readdir( $dh ) ) !== false ) {
|
1526 |
if ( $file == '.' || $file == '..' || false == is_file( $dir . $file ) ) {
|
@@ -1554,7 +1600,7 @@ function wpcache_do_rebuild( $dir ) {
|
|
1554 |
@unlink( $cache_file );
|
1555 |
wp_cache_debug( "wpcache_do_rebuild: rebuild file rename failed. Deleted rebuild file: $cache_file" );
|
1556 |
} else {
|
1557 |
-
$do_rebuild_list[ $dir ]
|
1558 |
$wpsc_file_mtimes[ $base_file ] = $mtime;
|
1559 |
wp_cache_debug( "wpcache_do_rebuild: rebuild file renamed: $base_file" );
|
1560 |
}
|
@@ -1690,19 +1736,22 @@ function wpsc_is_rejected_cookie() {
|
|
1690 |
return false;
|
1691 |
}
|
1692 |
|
1693 |
-
function wp_cache_is_rejected($uri) {
|
1694 |
global $cache_rejected_uri;
|
1695 |
|
1696 |
$auto_rejected = array( '/wp-admin/', 'xmlrpc.php', 'wp-app.php' );
|
1697 |
-
foreach( $auto_rejected as $u ) {
|
1698 |
-
if( strstr( $uri, $u ) )
|
1699 |
return true; // we don't allow caching of wp-admin for security reasons
|
|
|
1700 |
}
|
1701 |
-
if ( false == is_array( $cache_rejected_uri ) )
|
1702 |
return false;
|
|
|
1703 |
foreach ( $cache_rejected_uri as $expr ) {
|
1704 |
-
if( $expr != '' && @preg_match( "~$expr~", $uri ) )
|
1705 |
return true;
|
|
|
1706 |
}
|
1707 |
return false;
|
1708 |
}
|
@@ -1710,44 +1759,49 @@ function wp_cache_is_rejected($uri) {
|
|
1710 |
function wp_cache_mutex_init() {
|
1711 |
global $mutex, $wp_cache_mutex_disabled, $use_flock, $blog_cache_dir, $mutex_filename, $sem_id;
|
1712 |
|
1713 |
-
if ( defined( 'WPSC_DISABLE_LOCKING' ) || ( isset( $wp_cache_mutex_disabled ) && $wp_cache_mutex_disabled ) )
|
1714 |
return true;
|
|
|
1715 |
|
1716 |
-
if( !is_bool( $use_flock ) ) {
|
1717 |
-
if(function_exists('sem_get'))
|
1718 |
$use_flock = false;
|
1719 |
-
else
|
1720 |
$use_flock = true;
|
|
|
1721 |
}
|
1722 |
|
1723 |
$mutex = false;
|
1724 |
-
if ($use_flock )
|
1725 |
setup_blog_cache_dir();
|
1726 |
wp_cache_debug( "Created mutex lock on filename: {$blog_cache_dir}{$mutex_filename}", 5 );
|
1727 |
$mutex = @fopen( $blog_cache_dir . $mutex_filename, 'w' );
|
1728 |
} else {
|
1729 |
wp_cache_debug( "Created mutex lock on semaphore: {$sem_id}", 5 );
|
1730 |
-
|
|
|
|
|
1731 |
}
|
1732 |
}
|
1733 |
|
1734 |
function wp_cache_writers_entry() {
|
1735 |
global $mutex, $wp_cache_mutex_disabled, $use_flock;
|
1736 |
|
1737 |
-
if ( defined( 'WPSC_DISABLE_LOCKING' ) || ( isset( $wp_cache_mutex_disabled ) && $wp_cache_mutex_disabled ) )
|
1738 |
return true;
|
|
|
1739 |
|
1740 |
-
if(
|
1741 |
wp_cache_debug( '(writers entry) mutex lock not created. not caching.', 2 );
|
1742 |
return false;
|
1743 |
}
|
1744 |
|
1745 |
if ( $use_flock ) {
|
1746 |
wp_cache_debug( 'grabbing lock using flock()', 5 );
|
1747 |
-
flock($mutex,
|
1748 |
} else {
|
1749 |
wp_cache_debug( 'grabbing lock using sem_acquire()', 5 );
|
1750 |
-
@sem_acquire($mutex);
|
1751 |
}
|
1752 |
|
1753 |
return true;
|
@@ -1756,79 +1810,92 @@ function wp_cache_writers_entry() {
|
|
1756 |
function wp_cache_writers_exit() {
|
1757 |
global $mutex, $wp_cache_mutex_disabled, $use_flock;
|
1758 |
|
1759 |
-
if ( defined( 'WPSC_DISABLE_LOCKING' ) || ( isset( $wp_cache_mutex_disabled ) && $wp_cache_mutex_disabled ) )
|
1760 |
return true;
|
|
|
1761 |
|
1762 |
-
if(
|
1763 |
wp_cache_debug( '(writers exit) mutex lock not created. not caching.', 2 );
|
1764 |
return false;
|
1765 |
}
|
1766 |
|
1767 |
if ( $use_flock ) {
|
1768 |
wp_cache_debug( 'releasing lock using flock()', 5 );
|
1769 |
-
flock( $mutex,
|
1770 |
} else {
|
1771 |
wp_cache_debug( 'releasing lock using sem_release() and sem_remove()', 5 );
|
1772 |
@sem_release( $mutex );
|
1773 |
-
if ( defined(
|
1774 |
@sem_remove( $mutex );
|
|
|
1775 |
}
|
1776 |
}
|
1777 |
|
1778 |
function wp_super_cache_query_vars() {
|
1779 |
global $wp_super_cache_query;
|
1780 |
|
1781 |
-
if ( is_search() )
|
1782 |
-
$wp_super_cache_query[
|
1783 |
-
|
1784 |
-
|
1785 |
-
|
1786 |
-
|
1787 |
-
if (
|
1788 |
-
$wp_super_cache_query[
|
1789 |
-
|
1790 |
-
|
1791 |
-
|
1792 |
-
|
1793 |
-
if (
|
1794 |
-
$wp_super_cache_query[
|
1795 |
-
|
1796 |
-
|
1797 |
-
|
1798 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1799 |
|
1800 |
// REST API
|
1801 |
-
if ( ( defined( 'REST_REQUEST' )
|
1802 |
-
|
1803 |
-
|
1804 |
) {
|
1805 |
-
$wp_super_cache_query[
|
1806 |
}
|
1807 |
|
1808 |
// Feeds, sitemaps and robots.txt
|
1809 |
if ( is_feed() ) {
|
1810 |
-
$wp_super_cache_query[
|
1811 |
if ( get_query_var( 'feed' ) == 'sitemap' ) {
|
1812 |
-
$wp_super_cache_query[
|
1813 |
}
|
1814 |
} elseif ( get_query_var( 'sitemap' ) || get_query_var( 'xsl' ) || get_query_var( 'xml_sitemap' ) ) {
|
1815 |
-
$wp_super_cache_query[
|
1816 |
-
$wp_super_cache_query[
|
1817 |
} elseif ( is_robots() ) {
|
1818 |
-
$wp_super_cache_query[
|
1819 |
}
|
1820 |
|
1821 |
// Reset everything if it's 404
|
1822 |
-
if ( is_404() )
|
1823 |
$wp_super_cache_query = array( 'is_404' => 1 );
|
|
|
1824 |
|
1825 |
return $wp_super_cache_query;
|
1826 |
}
|
1827 |
|
1828 |
function wpsc_catch_status_header( $status_header, $code ) {
|
1829 |
|
1830 |
-
if ( $code != 200 )
|
1831 |
wpsc_catch_http_status_code( $code );
|
|
|
1832 |
|
1833 |
return $status_header;
|
1834 |
}
|
@@ -1837,11 +1904,11 @@ function wpsc_catch_http_status_code( $status ) {
|
|
1837 |
global $wp_super_cache_query;
|
1838 |
|
1839 |
if ( in_array( intval( $status ), array( 301, 302, 303, 307 ) ) ) {
|
1840 |
-
$wp_super_cache_query[
|
1841 |
} elseif ( $status == 304 ) {
|
1842 |
-
$wp_super_cache_query[
|
1843 |
} elseif ( $status == 404 ) {
|
1844 |
-
$wp_super_cache_query[
|
1845 |
}
|
1846 |
|
1847 |
return $status;
|
@@ -1855,7 +1922,7 @@ function wpsc_is_fatal_error() {
|
|
1855 |
}
|
1856 |
|
1857 |
if ( $error['type'] & ( E_ERROR | E_CORE_ERROR | E_PARSE | E_COMPILE_ERROR | E_USER_ERROR ) ) {
|
1858 |
-
$wp_super_cache_query[
|
1859 |
return true;
|
1860 |
}
|
1861 |
|
@@ -1864,7 +1931,7 @@ function wpsc_is_fatal_error() {
|
|
1864 |
|
1865 |
function wp_cache_ob_callback( $buffer ) {
|
1866 |
global $wp_cache_pages, $wp_query, $wp_super_cache_query, $cache_acceptable_files, $wp_cache_no_cache_for_get, $wp_cache_request_uri, $do_rebuild_list, $wpsc_file_mtimes, $wpsc_save_headers, $super_cache_enabled;
|
1867 |
-
$script = basename( $_SERVER[
|
1868 |
|
1869 |
// All the things that can stop a page being cached
|
1870 |
$cache_this_page = true;
|
@@ -1872,7 +1939,7 @@ function wp_cache_ob_callback( $buffer ) {
|
|
1872 |
if ( wpsc_is_fatal_error() ) {
|
1873 |
wp_cache_debug( 'wp_cache_ob_callback: PHP Fatal error occurred. Not caching incomplete page.' );
|
1874 |
$cache_this_page = false;
|
1875 |
-
} elseif ( empty( $wp_super_cache_query ) && !empty( $buffer ) && is_object( $wp_query ) && method_exists( $wp_query, 'get' ) ) {
|
1876 |
$wp_super_cache_query = wp_super_cache_query_vars();
|
1877 |
} elseif ( empty( $wp_super_cache_query ) && function_exists( 'http_response_code' ) ) {
|
1878 |
wpsc_catch_http_status_code( http_response_code() );
|
@@ -1886,67 +1953,67 @@ function wp_cache_ob_callback( $buffer ) {
|
|
1886 |
} elseif ( $wp_cache_no_cache_for_get && wpsc_is_get_query() ) {
|
1887 |
wp_cache_debug( 'Non empty GET request. Caching disabled on settings page. ' . wpsc_dump_get_request(), 1 );
|
1888 |
$cache_this_page = false;
|
1889 |
-
} elseif ( $_SERVER[
|
1890 |
wp_cache_debug( 'Not caching POST request.', 5 );
|
1891 |
$cache_this_page = false;
|
1892 |
-
} elseif ( $_SERVER[
|
1893 |
wp_cache_debug( 'Not caching PUT request.', 5 );
|
1894 |
$cache_this_page = false;
|
1895 |
-
} elseif ( $_SERVER[
|
1896 |
wp_cache_debug( 'Not caching DELETE request.', 5 );
|
1897 |
$cache_this_page = false;
|
1898 |
-
} elseif ( isset( $_GET[
|
1899 |
wp_cache_debug( 'Not caching preview post.', 2 );
|
1900 |
$cache_this_page = false;
|
1901 |
-
} elseif ( !in_array( $script, (array) $cache_acceptable_files ) && wp_cache_is_rejected( $wp_cache_request_uri ) ) {
|
1902 |
wp_cache_debug( 'URI rejected. Not Caching', 2 );
|
1903 |
$cache_this_page = false;
|
1904 |
} elseif ( wp_cache_user_agent_is_rejected() ) {
|
1905 |
wp_cache_debug( "USER AGENT ({$_SERVER[ 'HTTP_USER_AGENT' ]}) rejected. Not Caching", 4 );
|
1906 |
$cache_this_page = false;
|
1907 |
-
} elseif ( isset( $wp_cache_pages[
|
1908 |
wp_cache_debug( 'Not caching single post.', 2 );
|
1909 |
$cache_this_page = false;
|
1910 |
-
} elseif ( isset( $wp_cache_pages[
|
1911 |
wp_cache_debug( 'Not caching single page.', 2 );
|
1912 |
$cache_this_page = false;
|
1913 |
-
} elseif ( isset( $wp_cache_pages[
|
1914 |
wp_cache_debug( 'Not caching archive page.', 2 );
|
1915 |
$cache_this_page = false;
|
1916 |
-
} elseif ( isset( $wp_cache_pages[
|
1917 |
wp_cache_debug( 'Not caching tag page.', 2 );
|
1918 |
$cache_this_page = false;
|
1919 |
-
} elseif ( isset( $wp_cache_pages[
|
1920 |
wp_cache_debug( 'Not caching category page.', 2 );
|
1921 |
$cache_this_page = false;
|
1922 |
-
} elseif ( isset( $wp_cache_pages[
|
1923 |
wp_cache_debug( 'Not caching front page.', 2 );
|
1924 |
$cache_this_page = false;
|
1925 |
-
} elseif ( isset( $wp_cache_pages[
|
1926 |
wp_cache_debug( 'Not caching home page.', 2 );
|
1927 |
$cache_this_page = false;
|
1928 |
-
} elseif ( isset( $wp_cache_pages[
|
1929 |
wp_cache_debug( 'Not caching search page.', 2 );
|
1930 |
$cache_this_page = false;
|
1931 |
-
} elseif ( isset( $wp_cache_pages[
|
1932 |
wp_cache_debug( 'Not caching author page.', 2 );
|
1933 |
$cache_this_page = false;
|
1934 |
-
} elseif ( isset( $wp_cache_pages[
|
1935 |
wp_cache_debug( 'Not caching feed.', 2 );
|
1936 |
$cache_this_page = false;
|
1937 |
-
} elseif ( isset( $wp_super_cache_query[
|
1938 |
wp_cache_debug( 'REST API detected. Caching disabled.' );
|
1939 |
$cache_this_page = false;
|
1940 |
-
} elseif ( isset( $wp_super_cache_query[
|
1941 |
wp_cache_debug( 'robots.txt detected. Caching disabled.' );
|
1942 |
$cache_this_page = false;
|
1943 |
-
} elseif ( isset( $wp_super_cache_query[
|
1944 |
wp_cache_debug( 'Redirect detected. Caching disabled.' );
|
1945 |
$cache_this_page = false;
|
1946 |
-
} elseif ( isset( $wp_super_cache_query[
|
1947 |
wp_cache_debug( 'HTTP 304 (Not Modified) sent. Caching disabled.' );
|
1948 |
$cache_this_page = false;
|
1949 |
-
} elseif ( empty( $wp_super_cache_query ) && !empty( $buffer ) && apply_filters( 'wpsc_only_cache_known_pages', 1 ) ) {
|
1950 |
wp_cache_debug( 'wp_cache_ob_callback: wp_super_cache_query is empty. Not caching unknown page type. Return 0 to the wpsc_only_cache_known_pages filter to cache this page.' );
|
1951 |
$cache_this_page = false;
|
1952 |
} elseif ( wpsc_is_caching_user_disabled() ) {
|
@@ -1957,8 +2024,9 @@ function wp_cache_ob_callback( $buffer ) {
|
|
1957 |
$cache_this_page = false;
|
1958 |
}
|
1959 |
|
1960 |
-
if ( isset( $wpsc_save_headers ) && $wpsc_save_headers )
|
1961 |
$super_cache_enabled = false; // use standard caching to record headers
|
|
|
1962 |
|
1963 |
if ( $cache_this_page ) {
|
1964 |
|
@@ -1967,8 +2035,8 @@ function wp_cache_ob_callback( $buffer ) {
|
|
1967 |
$buffer = wp_cache_get_ob( $buffer );
|
1968 |
wp_cache_shutdown_callback();
|
1969 |
|
1970 |
-
if ( !empty( $wpsc_file_mtimes ) && is_array( $wpsc_file_mtimes ) ) {
|
1971 |
-
foreach( $wpsc_file_mtimes as $cache_file => $old_mtime ) {
|
1972 |
if ( $old_mtime == @filemtime( $cache_file ) ) {
|
1973 |
wp_cache_debug( "wp_cache_ob_callback deleting unmodified rebuilt cache file: $cache_file" );
|
1974 |
if ( wp_cache_confirm_delete( $cache_file ) ) {
|
@@ -1979,8 +2047,8 @@ function wp_cache_ob_callback( $buffer ) {
|
|
1979 |
}
|
1980 |
return $buffer;
|
1981 |
} else {
|
1982 |
-
if ( !empty( $do_rebuild_list ) && is_array( $do_rebuild_list ) ) {
|
1983 |
-
foreach( $do_rebuild_list as $dir => $n ) {
|
1984 |
if ( wp_cache_confirm_delete( $dir ) ) {
|
1985 |
wp_cache_debug( 'wp_cache_ob_callback clearing rebuilt files in ' . $dir );
|
1986 |
wpsc_delete_files( $dir );
|
@@ -1995,13 +2063,15 @@ function wp_cache_append_tag( &$buffer ) {
|
|
1995 |
global $wp_cache_gmt_offset, $wp_super_cache_comments;
|
1996 |
global $cache_enabled, $super_cache_enabled;
|
1997 |
|
1998 |
-
if ( false == isset( $wp_super_cache_comments ) )
|
1999 |
$wp_super_cache_comments = 1;
|
|
|
2000 |
|
2001 |
-
if ( $wp_super_cache_comments == 0 )
|
2002 |
return false;
|
|
|
2003 |
|
2004 |
-
$timestamp = gmdate('Y-m-d H:i:s', (time() + ( $wp_cache_gmt_offset * 3600)));
|
2005 |
if ( $cache_enabled || $super_cache_enabled ) {
|
2006 |
$msg = "Cached page generated by WP-Super-Cache on $timestamp";
|
2007 |
} else {
|
@@ -2009,7 +2079,7 @@ function wp_cache_append_tag( &$buffer ) {
|
|
2009 |
}
|
2010 |
|
2011 |
if ( strpos( $buffer, '<html' ) === false ) {
|
2012 |
-
wp_cache_debug( site_url( $_SERVER[
|
2013 |
return false;
|
2014 |
}
|
2015 |
|
@@ -2019,21 +2089,22 @@ function wp_cache_append_tag( &$buffer ) {
|
|
2019 |
function wp_cache_add_to_buffer( &$buffer, $text ) {
|
2020 |
global $wp_super_cache_comments;
|
2021 |
|
2022 |
-
if ( false == isset( $wp_super_cache_comments ) )
|
2023 |
$wp_super_cache_comments = 1;
|
|
|
2024 |
|
2025 |
-
if ( $wp_super_cache_comments == 0 )
|
2026 |
return false;
|
|
|
2027 |
|
2028 |
if ( strpos( $buffer, '<html' ) === false ) {
|
2029 |
-
wp_cache_debug( site_url( $_SERVER[
|
2030 |
return false;
|
2031 |
}
|
2032 |
|
2033 |
$buffer .= "\n<!-- $text -->";
|
2034 |
}
|
2035 |
|
2036 |
-
|
2037 |
/*
|
2038 |
* If dynamic caching is enabled then run buffer through wpsc_cachedata filter before returning it.
|
2039 |
* or we'll return template tags to visitors.
|
@@ -2049,7 +2120,7 @@ function wp_cache_maybe_dynamic( &$buffer ) {
|
|
2049 |
}
|
2050 |
}
|
2051 |
|
2052 |
-
function wp_cache_get_ob(&$buffer) {
|
2053 |
global $cache_enabled, $cache_path, $cache_filename, $wp_start_time, $supercachedir;
|
2054 |
global $new_cache, $wp_cache_meta, $cache_compression, $wp_super_cache_query;
|
2055 |
global $wp_cache_gzip_encoding, $super_cache_enabled;
|
@@ -2058,61 +2129,64 @@ function wp_cache_get_ob(&$buffer) {
|
|
2058 |
global $wp_cache_not_logged_in, $cache_max_time;
|
2059 |
global $wp_cache_is_home, $wp_cache_front_page_checks, $wp_cache_mfunc_enabled;
|
2060 |
|
2061 |
-
if ( isset( $wp_cache_mfunc_enabled ) == false )
|
2062 |
$wp_cache_mfunc_enabled = 0;
|
|
|
2063 |
|
2064 |
-
$new_cache
|
2065 |
$wp_cache_meta = array();
|
2066 |
|
2067 |
-
/*
|
|
|
2068 |
* we avoid caching incomplete files */
|
2069 |
if ( $buffer == '' ) {
|
2070 |
$new_cache = false;
|
2071 |
-
if ( isset( $GLOBALS[
|
2072 |
wp_cache_debug( "Buffer is blank. Output buffer may have been corrupted by another plugin or this is a redirected URL. Look for text 'ob_start' in the files of your plugins directory.", 2 );
|
2073 |
-
wp_cache_add_to_buffer( $buffer,
|
2074 |
}
|
2075 |
}
|
2076 |
|
2077 |
-
if ( isset( $wp_super_cache_query[
|
2078 |
$new_cache = false;
|
2079 |
-
if ( isset( $GLOBALS[
|
2080 |
wp_cache_debug( '404 file not found not cached', 2 );
|
2081 |
-
wp_cache_add_to_buffer( $buffer,
|
2082 |
}
|
2083 |
}
|
2084 |
|
2085 |
-
if ( !preg_match( apply_filters( 'wp_cache_eof_tags', '/(<\/html>|<\/rss>|<\/feed>|<\/urlset|<\?xml)/i' ), $buffer ) ) {
|
2086 |
$new_cache = false;
|
2087 |
-
if ( isset( $GLOBALS[
|
2088 |
wp_cache_debug( 'No closing html tag. Not caching.', 2 );
|
2089 |
-
wp_cache_add_to_buffer( $buffer,
|
2090 |
}
|
2091 |
}
|
2092 |
|
2093 |
-
if(
|
2094 |
return wp_cache_maybe_dynamic( $buffer );
|
|
|
2095 |
|
2096 |
-
$duration = wp_cache_microtime_diff($wp_start_time, microtime());
|
2097 |
-
$duration = sprintf(
|
2098 |
wp_cache_add_to_buffer( $buffer, "Dynamic page generated in $duration seconds." );
|
2099 |
|
2100 |
-
if( !wp_cache_writers_entry() ) {
|
2101 |
-
wp_cache_add_to_buffer( $buffer,
|
2102 |
wp_cache_debug( 'Could not get mutex lock. Not caching.', 1 );
|
2103 |
return wp_cache_maybe_dynamic( $buffer );
|
2104 |
}
|
2105 |
|
2106 |
-
if ( $wp_cache_not_logged_in && isset( $wp_super_cache_query[
|
2107 |
wp_cache_debug( 'Feed detected. Writing wpcache cache files.', 5 );
|
2108 |
$wp_cache_not_logged_in = false;
|
2109 |
}
|
2110 |
|
2111 |
$home_url = parse_url( trailingslashit( get_bloginfo( 'url' ) ) );
|
2112 |
|
2113 |
-
$dir
|
2114 |
-
$supercachedir = $cache_path . 'supercache/' . preg_replace('/:.*$/', '',
|
2115 |
-
if ( wpsc_is_get_query() || isset( $wp_super_cache_query[
|
2116 |
wp_cache_debug( 'Supercache disabled: GET or feed detected or disabled by config.', 2 );
|
2117 |
$super_cache_enabled = false;
|
2118 |
}
|
@@ -2126,7 +2200,7 @@ function wp_cache_get_ob(&$buffer) {
|
|
2126 |
$supercacheonly = false;
|
2127 |
}
|
2128 |
|
2129 |
-
if( $super_cache_enabled ) {
|
2130 |
if ( wp_cache_get_cookies_values() == '' && ! wpsc_is_get_query() ) {
|
2131 |
wp_cache_debug( 'Anonymous user detected. Only creating Supercache file.', 3 );
|
2132 |
$supercacheonly = true;
|
@@ -2136,26 +2210,28 @@ function wp_cache_get_ob(&$buffer) {
|
|
2136 |
$cache_error = '';
|
2137 |
if ( wpsc_is_caching_user_disabled() ) {
|
2138 |
$super_cache_enabled = false;
|
2139 |
-
$cache_enabled
|
2140 |
-
$cache_error
|
2141 |
wp_cache_debug( 'Not caching for known user.', 5 );
|
2142 |
}
|
2143 |
|
2144 |
-
if (
|
2145 |
wp_cache_debug( 'Cache is not enabled. Sending buffer to browser.', 5 );
|
2146 |
wp_cache_writers_exit();
|
2147 |
wp_cache_add_to_buffer( $buffer, "Page not cached by WP Super Cache. Check your settings page. $cache_error" );
|
2148 |
if ( $wp_cache_mfunc_enabled == 1 ) {
|
2149 |
global $wp_super_cache_late_init;
|
2150 |
-
if ( false == isset( $wp_super_cache_late_init ) || ( isset( $wp_super_cache_late_init ) && $wp_super_cache_late_init == 0 ) )
|
2151 |
wp_cache_add_to_buffer( $buffer, 'Super Cache dynamic page detected but $wp_super_cache_late_init not set. See the readme.txt for further details.' );
|
|
|
2152 |
}
|
2153 |
|
2154 |
return wp_cache_maybe_dynamic( $buffer );
|
2155 |
}
|
2156 |
|
2157 |
-
if( @is_dir( $dir ) == false )
|
2158 |
@wp_mkdir_p( $dir );
|
|
|
2159 |
$dir = wpsc_get_realpath( $dir );
|
2160 |
|
2161 |
if ( ! $dir ) {
|
@@ -2182,7 +2258,7 @@ function wp_cache_get_ob(&$buffer) {
|
|
2182 |
}
|
2183 |
} else {
|
2184 |
$user_info = wp_cache_get_cookies_values();
|
2185 |
-
$do_cache
|
2186 |
if (
|
2187 |
$super_cache_enabled &&
|
2188 |
(
|
@@ -2190,10 +2266,10 @@ function wp_cache_get_ob(&$buffer) {
|
|
2190 |
$do_cache === true
|
2191 |
)
|
2192 |
) {
|
2193 |
-
$cache_fname
|
2194 |
$tmp_cache_filename = $dir . uniqid( mt_rand(), true ) . '.tmp';
|
2195 |
-
$fr2
|
2196 |
-
if (
|
2197 |
wp_cache_debug( 'Error. Supercache could not write to ' . str_replace( ABSPATH, '', $tmp_cache_filename ), 1 );
|
2198 |
wp_cache_add_to_buffer( $buffer, "File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $tmp_cache_filename ) );
|
2199 |
@fclose( $fr );
|
@@ -2207,10 +2283,10 @@ function wp_cache_get_ob(&$buffer) {
|
|
2207 |
$wp_cache_mfunc_enabled == 0
|
2208 |
)
|
2209 |
) { // don't want to store compressed files if using dynamic content
|
2210 |
-
$gz = @fopen( $tmp_cache_filename .
|
2211 |
-
if (
|
2212 |
-
wp_cache_debug( 'Error. Supercache could not write to ' . str_replace( ABSPATH, '', $tmp_cache_filename ) .
|
2213 |
-
wp_cache_add_to_buffer( $buffer, "File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $tmp_cache_filename ) .
|
2214 |
@fclose( $fr );
|
2215 |
@unlink( $tmp_wpcache_filename );
|
2216 |
@fclose( $fr2 );
|
@@ -2223,8 +2299,8 @@ function wp_cache_get_ob(&$buffer) {
|
|
2223 |
}
|
2224 |
|
2225 |
$added_cache = 0;
|
2226 |
-
$oc_key
|
2227 |
-
$buffer
|
2228 |
wp_cache_append_tag( $buffer );
|
2229 |
|
2230 |
/*
|
@@ -2232,32 +2308,33 @@ function wp_cache_get_ob(&$buffer) {
|
|
2232 |
* the wpsc_cachedata filter. Buffer is then returned to the visitor.
|
2233 |
*/
|
2234 |
if ( $wp_cache_mfunc_enabled == 1 ) {
|
2235 |
-
if ( preg_match( '/<!--mclude|<!--mfunc|<!--dynamic-cached-content-->/', $buffer ) ) { //Dynamic content
|
2236 |
wp_cache_debug( 'mfunc/mclude/dynamic-cached-content tags have been retired. Please update your theme. See docs for updates.' );
|
2237 |
-
wp_cache_add_to_buffer( $buffer,
|
2238 |
}
|
2239 |
|
2240 |
global $wp_super_cache_late_init;
|
2241 |
-
if ( false == isset( $wp_super_cache_late_init ) || ( isset( $wp_super_cache_late_init ) && $wp_super_cache_late_init == 0 ) )
|
2242 |
wp_cache_add_to_buffer( $buffer, 'Super Cache dynamic page detected but late init not set. See the readme.txt for further details.' );
|
|
|
2243 |
|
2244 |
if ( $fr ) { // wpcache caching
|
2245 |
wp_cache_debug( 'Writing dynamic buffer to wpcache file.' );
|
2246 |
-
wp_cache_add_to_buffer( $buffer,
|
2247 |
fputs( $fr, '<?php die(); ?>' . $buffer );
|
2248 |
} elseif ( isset( $fr2 ) ) { // supercache active
|
2249 |
wp_cache_debug( 'Writing dynamic buffer to supercache file.' );
|
2250 |
-
wp_cache_add_to_buffer( $buffer,
|
2251 |
fputs( $fr2, $buffer );
|
2252 |
}
|
2253 |
-
$wp_cache_meta[
|
2254 |
if ( $wp_cache_mfunc_enabled == 1 && do_cacheaction( 'wpsc_cachedata_safety', 0 ) === 1 ) {
|
2255 |
$buffer = do_cacheaction( 'wpsc_cachedata', $buffer ); // dynamic content for display
|
2256 |
}
|
2257 |
|
2258 |
if ( $cache_compression && $wp_cache_gzip_encoding ) {
|
2259 |
wp_cache_debug( 'Gzipping dynamic buffer for display.', 5 );
|
2260 |
-
wp_cache_add_to_buffer( $buffer,
|
2261 |
$gzdata = gzencode( $buffer, 6, FORCE_GZIP );
|
2262 |
$gzsize = function_exists( 'mb_strlen' ) ? mb_strlen( $gzdata, '8bit' ) : strlen( $gzdata );
|
2263 |
}
|
@@ -2272,34 +2349,34 @@ function wp_cache_get_ob(&$buffer) {
|
|
2272 |
$vary_header = 'Accept-Encoding, Cookie';
|
2273 |
}
|
2274 |
if ( $vary_header ) {
|
2275 |
-
$wp_cache_meta[
|
2276 |
}
|
2277 |
if ( $gz || $wp_cache_gzip_encoding ) {
|
2278 |
wp_cache_debug( 'Gzipping buffer.', 5 );
|
2279 |
-
wp_cache_add_to_buffer( $buffer,
|
2280 |
$gzdata = gzencode( $buffer, 6, FORCE_GZIP );
|
2281 |
$gzsize = function_exists( 'mb_strlen' ) ? mb_strlen( $gzdata, '8bit' ) : strlen( $gzdata );
|
2282 |
|
2283 |
-
$wp_cache_meta[
|
2284 |
// Return uncompressed data & store compressed for later use
|
2285 |
if ( $fr ) {
|
2286 |
wp_cache_debug( 'Writing gzipped buffer to wp-cache cache file.', 5 );
|
2287 |
-
fputs($fr, '<?php die(); ?>' . $gzdata);
|
2288 |
}
|
2289 |
} else { // no compression
|
2290 |
if ( $fr ) {
|
2291 |
wp_cache_debug( 'Writing non-gzipped buffer to wp-cache cache file.' );
|
2292 |
-
fputs($fr, '<?php die(); ?>' . $buffer);
|
2293 |
}
|
2294 |
}
|
2295 |
if ( $fr2 ) {
|
2296 |
wp_cache_debug( 'Writing non-gzipped buffer to supercache file.' );
|
2297 |
-
wp_cache_add_to_buffer( $buffer,
|
2298 |
-
fputs($fr2, $buffer );
|
2299 |
}
|
2300 |
if ( isset( $gzdata ) && $gz ) {
|
2301 |
wp_cache_debug( 'Writing gzipped buffer to supercache file.' );
|
2302 |
-
fwrite($gz, $gzdata );
|
2303 |
}
|
2304 |
}
|
2305 |
|
@@ -2329,7 +2406,7 @@ function wp_cache_get_ob(&$buffer) {
|
|
2329 |
|
2330 |
if ( $fr2 ) {
|
2331 |
fclose( $fr2 );
|
2332 |
-
if ( $wp_cache_front_page_checks && $cache_fname == $supercachedir . $home_url[
|
2333 |
wp_cache_writers_exit();
|
2334 |
wp_cache_debug( 'Warning! Not writing another page to front page cache.', 1 );
|
2335 |
return $buffer;
|
@@ -2362,14 +2439,18 @@ function wp_cache_get_ob(&$buffer) {
|
|
2362 |
|
2363 |
if ( $added_cache && isset( $wp_supercache_cache_list ) && $wp_supercache_cache_list ) {
|
2364 |
update_option( 'wpsupercache_count', ( get_option( 'wpsupercache_count' ) + 1 ) );
|
2365 |
-
$last_urls = (array)get_option( 'supercache_last_cached' );
|
2366 |
-
if ( count( $last_urls ) >= 10 )
|
2367 |
$last_urls = array_slice( $last_urls, 1, 9 );
|
2368 |
-
|
|
|
|
|
|
|
|
|
2369 |
update_option( 'supercache_last_cached', $last_urls );
|
2370 |
}
|
2371 |
wp_cache_writers_exit();
|
2372 |
-
if ( !headers_sent() && $wp_cache_gzip_encoding && $gzdata) {
|
2373 |
wp_cache_debug( 'Writing gzip content headers. Sending buffer to browser', 5 );
|
2374 |
header( 'Content-Encoding: ' . $wp_cache_gzip_encoding );
|
2375 |
if ( defined( 'WPSC_VARY_HEADER' ) ) {
|
@@ -2392,30 +2473,31 @@ function wp_cache_get_ob(&$buffer) {
|
|
2392 |
}
|
2393 |
}
|
2394 |
|
2395 |
-
function wp_cache_phase2_clean_cache($file_prefix) {
|
2396 |
global $wpdb, $blog_cache_dir;
|
2397 |
|
2398 |
-
if( !wp_cache_writers_entry() )
|
2399 |
return false;
|
|
|
2400 |
wp_cache_debug( "wp_cache_phase2_clean_cache: Cleaning cache in $blog_cache_dir" );
|
2401 |
if ( $handle = @opendir( $blog_cache_dir ) ) {
|
2402 |
-
while ( false !== ($file = @readdir($handle))) {
|
2403 |
if ( strpos( $file, $file_prefix ) !== false ) {
|
2404 |
if ( strpos( $file, '.html' ) ) {
|
2405 |
// delete old wpcache files immediately
|
2406 |
wp_cache_debug( "wp_cache_phase2_clean_cache: Deleting obsolete wpcache cache+meta files: $file" );
|
2407 |
-
@unlink( $blog_cache_dir . $file);
|
2408 |
@unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) );
|
2409 |
} else {
|
2410 |
$meta = json_decode( wp_cache_get_legacy_cache( $blog_cache_dir . 'meta/' . $file ), true );
|
2411 |
-
if ( $meta[
|
2412 |
@unlink( $blog_cache_dir . $file );
|
2413 |
@unlink( $blog_cache_dir . 'meta/' . $file );
|
2414 |
}
|
2415 |
}
|
2416 |
}
|
2417 |
}
|
2418 |
-
closedir($handle);
|
2419 |
do_action( 'wp_cache_cleared' );
|
2420 |
}
|
2421 |
wp_cache_writers_exit();
|
@@ -2430,10 +2512,10 @@ function prune_super_cache( $directory, $force = false, $rename = false ) {
|
|
2430 |
}
|
2431 |
|
2432 |
global $cache_max_time, $cache_path, $blog_cache_dir;
|
2433 |
-
static $log
|
2434 |
static $protected_directories = '';
|
2435 |
|
2436 |
-
$dir
|
2437 |
$directory = wpsc_get_realpath( $directory );
|
2438 |
if ( $directory == '' ) {
|
2439 |
wp_cache_debug( "prune_super_cache: exiting as file/directory does not exist : $dir" );
|
@@ -2448,8 +2530,9 @@ function prune_super_cache( $directory, $force = false, $rename = false ) {
|
|
2448 |
wp_cache_debug( "prune_super_cache: exiting as file/dir does not exist: $directory" );
|
2449 |
return $log;
|
2450 |
}
|
2451 |
-
if( !isset( $cache_max_time ) )
|
2452 |
$cache_max_time = 3600;
|
|
|
2453 |
|
2454 |
$now = time();
|
2455 |
|
@@ -2457,30 +2540,33 @@ function prune_super_cache( $directory, $force = false, $rename = false ) {
|
|
2457 |
$protected_directories = wpsc_get_protected_directories();
|
2458 |
}
|
2459 |
|
2460 |
-
if (is_dir($directory)) {
|
2461 |
-
if( $dh = @opendir( $directory ) ) {
|
2462 |
$directory = trailingslashit( $directory );
|
2463 |
-
while( ( $entry = @readdir( $dh ) ) !== false ) {
|
2464 |
-
if ($entry == '.' || $entry == '..')
|
2465 |
continue;
|
|
|
2466 |
$entry = $directory . $entry;
|
2467 |
prune_super_cache( $entry, $force, $rename );
|
2468 |
// If entry is a directory, AND it's not a protected one, AND we're either forcing the delete, OR the file is out of date,
|
2469 |
-
if( is_dir( $entry ) && !in_array( $entry, $protected_directories ) && ( $force || @filemtime( $entry ) + $cache_max_time <= $now ) ) {
|
2470 |
// if the directory isn't empty can't delete it
|
2471 |
-
if( $handle = @opendir( $entry ) ) {
|
2472 |
$donotdelete = false;
|
2473 |
-
while(
|
2474 |
-
if ($file == '.' || $file == '..')
|
2475 |
continue;
|
|
|
2476 |
$donotdelete = true;
|
2477 |
wp_cache_debug( "gc: could not delete $entry as it's not empty: $file", 2 );
|
2478 |
}
|
2479 |
-
closedir($handle);
|
2480 |
}
|
2481 |
-
if( $donotdelete )
|
2482 |
continue;
|
2483 |
-
|
|
|
2484 |
@rmdir( $entry );
|
2485 |
$log++;
|
2486 |
if ( $force ) {
|
@@ -2493,19 +2579,19 @@ function prune_super_cache( $directory, $force = false, $rename = false ) {
|
|
2493 |
wp_cache_debug( "gc: could not delete $entry as it's protected.", 2 );
|
2494 |
}
|
2495 |
}
|
2496 |
-
closedir($dh);
|
2497 |
}
|
2498 |
-
} elseif( is_file($directory) && ($force || @filemtime( $directory ) + $cache_max_time <= $now ) ) {
|
2499 |
$oktodelete = true;
|
2500 |
if ( in_array( $directory, $protected_directories ) ) {
|
2501 |
wp_cache_debug( "gc: could not delete $directory as it's protected.", 2 );
|
2502 |
$oktodelete = false;
|
2503 |
}
|
2504 |
-
if( $oktodelete &&
|
2505 |
wp_cache_debug( "prune_super_cache: deleted $directory", 5 );
|
2506 |
@unlink( $directory );
|
2507 |
$log++;
|
2508 |
-
} elseif( $oktodelete && $rename ) {
|
2509 |
wp_cache_debug( "prune_super_cache: wp_cache_rebuild_or_delete( $directory )", 5 );
|
2510 |
wp_cache_rebuild_or_delete( $directory );
|
2511 |
$log++;
|
@@ -2521,9 +2607,9 @@ function prune_super_cache( $directory, $force = false, $rename = false ) {
|
|
2521 |
function wp_cache_rebuild_or_delete( $file ) {
|
2522 |
global $cache_rebuild_files, $cache_path, $file_prefix;
|
2523 |
|
2524 |
-
|
2525 |
-
if ( strpos( $file, '?' ) !== false )
|
2526 |
$file = substr( $file, 0, strpos( $file, '?' ) );
|
|
|
2527 |
|
2528 |
$file = wpsc_get_realpath( $file );
|
2529 |
|
@@ -2538,7 +2624,7 @@ function wp_cache_rebuild_or_delete( $file ) {
|
|
2538 |
}
|
2539 |
|
2540 |
$protected = wpsc_get_protected_directories();
|
2541 |
-
foreach( $protected as $id => $directory ) {
|
2542 |
$protected[ $id ] = wpsc_get_realpath( $directory );
|
2543 |
}
|
2544 |
|
@@ -2563,8 +2649,8 @@ function wp_cache_rebuild_or_delete( $file ) {
|
|
2563 |
wp_cache_debug( "rebuild_or_gc: file has disappeared: $file" );
|
2564 |
return false;
|
2565 |
}
|
2566 |
-
if( $cache_rebuild_files && substr( $file, -14 ) != '.needs-rebuild' ) {
|
2567 |
-
if( @rename($file, $file . '.needs-rebuild') ) {
|
2568 |
@touch( $file . '.needs-rebuild' );
|
2569 |
wp_cache_debug( "rebuild_or_gc: rename file to {$file}.needs-rebuild", 2 );
|
2570 |
} else {
|
@@ -2584,35 +2670,36 @@ function wp_cache_phase2_clean_expired( $file_prefix, $force = false ) {
|
|
2584 |
global $cache_path, $cache_max_time, $blog_cache_dir, $wp_cache_preload_on;
|
2585 |
|
2586 |
if ( $cache_max_time == 0 ) {
|
2587 |
-
wp_cache_debug(
|
2588 |
return false;
|
2589 |
}
|
2590 |
|
2591 |
clearstatcache();
|
2592 |
-
if( !wp_cache_writers_entry() )
|
2593 |
return false;
|
|
|
2594 |
$now = time();
|
2595 |
wp_cache_debug( "Cleaning expired cache files in $blog_cache_dir", 2 );
|
2596 |
$deleted = 0;
|
2597 |
if ( ( $handle = @opendir( $blog_cache_dir ) ) ) {
|
2598 |
-
while ( false !== ($file = readdir($handle))) {
|
2599 |
-
if ( preg_match("/^$file_prefix/", $file) &&
|
2600 |
-
(@filemtime( $blog_cache_dir . $file) + $cache_max_time) <= $now
|
2601 |
@unlink( $blog_cache_dir . $file );
|
2602 |
@unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) );
|
2603 |
wp_cache_debug( "wp_cache_phase2_clean_expired: Deleting obsolete wpcache cache+meta files: $file" );
|
2604 |
continue;
|
2605 |
}
|
2606 |
-
if($file != '.' && $file != '..') {
|
2607 |
-
if( is_dir( $blog_cache_dir . $file ) == false && (@filemtime($blog_cache_dir . $file) + $cache_max_time) <= $now
|
2608 |
if ( substr( $file, -9 ) != '.htaccess' && $file != 'index.html' ) {
|
2609 |
-
@unlink($blog_cache_dir . $file);
|
2610 |
wp_cache_debug( "Deleting $blog_cache_dir{$file}, older than $cache_max_time seconds", 5 );
|
2611 |
}
|
2612 |
}
|
2613 |
}
|
2614 |
}
|
2615 |
-
closedir($handle);
|
2616 |
if ( false == $wp_cache_preload_on || true == $force ) {
|
2617 |
wp_cache_debug( "Doing GC on supercache dir: {$cache_path}supercache", 2 );
|
2618 |
$deleted = prune_super_cache( $cache_path . 'supercache', false, false );
|
@@ -2638,45 +2725,45 @@ function wp_cache_shutdown_callback() {
|
|
2638 |
wp_cache_debug( 'wp_cache_shutdown_callback: Plugin not loaded. Setting feed ttl to 60 seconds.' );
|
2639 |
}
|
2640 |
|
2641 |
-
|
2642 |
if ( false == $new_cache ) {
|
2643 |
wp_cache_debug( 'wp_cache_shutdown_callback: No cache file created. Returning.' );
|
2644 |
return false;
|
2645 |
}
|
2646 |
|
2647 |
-
$wp_cache_meta[
|
2648 |
-
$wp_cache_meta[
|
2649 |
-
$wp_cache_meta[
|
2650 |
-
$wp_cache_meta[
|
2651 |
-
$wp_cache_meta
|
2652 |
|
2653 |
$response = wp_cache_get_response_headers();
|
2654 |
-
foreach( $response as $key => $value ) {
|
2655 |
-
$wp_cache_meta[
|
2656 |
}
|
2657 |
|
2658 |
wp_cache_debug( 'wp_cache_shutdown_callback: collecting meta data.', 2 );
|
2659 |
|
2660 |
-
if (!isset( $response['Last-Modified'] )) {
|
2661 |
-
$value = gmdate('D, d M Y H:i:s') . ' GMT';
|
2662 |
-
/*
|
|
|
2663 |
/* @header('Last-Modified: ' . $value); */
|
2664 |
-
$wp_cache_meta[
|
2665 |
}
|
2666 |
$is_feed = false;
|
2667 |
-
if ( !isset( $response[
|
2668 |
// On some systems, headers set by PHP can't be fetched from
|
2669 |
// the output buffer. This is a last ditch effort to set the
|
2670 |
// correct Content-Type header for feeds, if we didn't see
|
2671 |
// it in the response headers already. -- dougal
|
2672 |
-
if ( isset( $wp_super_cache_query[
|
2673 |
-
if ( isset( $wp_super_cache_query[
|
2674 |
$type = 'sitemap';
|
2675 |
$value = 'text/xml';
|
2676 |
} else {
|
2677 |
$type = get_query_var( 'feed' );
|
2678 |
-
$type = str_replace('/',''
|
2679 |
-
switch ($type) {
|
2680 |
case 'atom':
|
2681 |
$value = 'application/atom+xml';
|
2682 |
break;
|
@@ -2692,29 +2779,30 @@ function wp_cache_shutdown_callback() {
|
|
2692 |
$is_feed = true;
|
2693 |
|
2694 |
if ( isset( $wpsc_feed_ttl ) && $wpsc_feed_ttl == 1 ) {
|
2695 |
-
$wp_cache_meta[
|
2696 |
}
|
2697 |
$is_feed = true;
|
2698 |
|
2699 |
wp_cache_debug( "wp_cache_shutdown_callback: feed is type: $type - $value" );
|
2700 |
-
} elseif ( isset( $wp_super_cache_query[
|
2701 |
$value = 'application/json';
|
2702 |
} else { // not a feed
|
2703 |
$value = get_option( 'html_type' );
|
2704 |
-
if( $value == '' )
|
2705 |
$value = 'text/html';
|
|
|
2706 |
}
|
2707 |
-
$value .=
|
2708 |
|
2709 |
wp_cache_debug( "Sending 'Content-Type: $value' header.", 2 );
|
2710 |
-
@header("Content-Type: $value");
|
2711 |
-
$wp_cache_meta[
|
2712 |
}
|
2713 |
|
2714 |
-
if ( $cache_enabled &&
|
2715 |
-
if( !isset( $wp_cache_meta[
|
2716 |
wp_cache_debug( 'Sending gzip headers.', 2 );
|
2717 |
-
$wp_cache_meta[
|
2718 |
if ( defined( 'WPSC_VARY_HEADER' ) ) {
|
2719 |
if ( WPSC_VARY_HEADER != '' ) {
|
2720 |
$vary_header = WPSC_VARY_HEADER;
|
@@ -2725,26 +2813,27 @@ function wp_cache_shutdown_callback() {
|
|
2725 |
$vary_header = 'Accept-Encoding, Cookie';
|
2726 |
}
|
2727 |
if ( $vary_header ) {
|
2728 |
-
$wp_cache_meta[
|
2729 |
}
|
2730 |
}
|
2731 |
|
2732 |
$serial = '<?php die(); ?>' . json_encode( $wp_cache_meta );
|
2733 |
-
$dir
|
2734 |
-
if( @is_dir( $dir ) == false )
|
2735 |
@wp_mkdir_p( $dir );
|
|
|
2736 |
|
2737 |
-
if( wp_cache_writers_entry() ) {
|
2738 |
wp_cache_debug( "Writing meta file: {$dir}meta-{$meta_file}", 2 );
|
2739 |
|
2740 |
-
$tmp_meta_filename
|
2741 |
-
$final_meta_filename = $dir .
|
2742 |
-
$fr
|
2743 |
if ( $fr ) {
|
2744 |
-
fputs($fr, $serial);
|
2745 |
-
fclose($fr);
|
2746 |
-
@chmod( $tmp_meta_filename, 0666 & ~umask());
|
2747 |
-
if(
|
2748 |
@unlink( $dir . $final_meta_filename );
|
2749 |
@rename( $tmp_meta_filename, $final_meta_filename );
|
2750 |
}
|
@@ -2755,7 +2844,7 @@ function wp_cache_shutdown_callback() {
|
|
2755 |
|
2756 |
// record locations of archive feeds to be updated when the site is updated.
|
2757 |
// Only record a maximum of 50 feeds to avoid bloating database.
|
2758 |
-
if ( ( isset( $wp_super_cache_query[
|
2759 |
$wpsc_feed_list = (array) get_option( 'wpsc_feed_list' );
|
2760 |
if ( count( $wpsc_feed_list ) <= 50 ) {
|
2761 |
$wpsc_feed_list[] = $dir . $meta_file;
|
@@ -2767,14 +2856,14 @@ function wp_cache_shutdown_callback() {
|
|
2767 |
wp_cache_debug( "Did not write meta file: meta-{$meta_file}\nsupercacheonly: $supercacheonly\nwp_cache_not_logged_in: $wp_cache_not_logged_in\nnew_cache:$new_cache" );
|
2768 |
}
|
2769 |
global $time_to_gc_cache;
|
2770 |
-
if( isset( $time_to_gc_cache ) && $time_to_gc_cache == 1 ) {
|
2771 |
wp_cache_debug( 'Executing wp_cache_gc action.', 3 );
|
2772 |
do_action( 'wp_cache_gc' );
|
2773 |
}
|
2774 |
}
|
2775 |
|
2776 |
-
function wp_cache_no_postid($id) {
|
2777 |
-
return wp_cache_post_change(wp_cache_post_id());
|
2778 |
}
|
2779 |
|
2780 |
function wp_cache_get_postid_from_comment( $comment_id, $status = 'NA' ) {
|
@@ -2785,7 +2874,7 @@ function wp_cache_get_postid_from_comment( $comment_id, $status = 'NA' ) {
|
|
2785 |
}
|
2786 |
|
2787 |
// Check is it "Empty Spam" or "Empty Trash"
|
2788 |
-
if ( isset( $GLOBALS[
|
2789 |
( isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) )
|
2790 |
) {
|
2791 |
wp_cache_debug( "Delete all SPAM or Trash comments. Don't delete any cache files.", 4 );
|
@@ -2793,23 +2882,23 @@ function wp_cache_get_postid_from_comment( $comment_id, $status = 'NA' ) {
|
|
2793 |
return;
|
2794 |
}
|
2795 |
|
2796 |
-
$comment = get_comment($comment_id, ARRAY_A);
|
2797 |
if ( $status != 'NA' ) {
|
2798 |
-
$comment[
|
2799 |
-
$comment[
|
2800 |
}
|
2801 |
|
2802 |
-
if ( ( $status == 'trash' || $status == 'spam' ) && $comment[
|
2803 |
// don't modify cache if moderated comments are trashed or spammed
|
2804 |
wp_cache_debug( "Moderated comment deleted or spammed. Don't delete any cache files.", 4 );
|
2805 |
define( 'DONOTDELETECACHE', 1 );
|
2806 |
return wp_cache_post_id();
|
2807 |
}
|
2808 |
-
$postid = isset( $comment[
|
2809 |
// Do nothing if comment is not moderated
|
2810 |
// http://ocaoimh.ie/2006/12/05/caching-wordpress-with-wp-cache-in-a-spam-filled-world
|
2811 |
-
if ( !preg_match('/wp-admin\//', $wp_cache_request_uri) ) {
|
2812 |
-
if ( $comment['comment_approved'] == 'delete' && ( isset( $comment[
|
2813 |
wp_cache_debug( "Moderated comment deleted. Don't delete any cache files.", 4 );
|
2814 |
define( 'DONOTDELETECACHE', 1 );
|
2815 |
return $postid;
|
@@ -2817,8 +2906,8 @@ function wp_cache_get_postid_from_comment( $comment_id, $status = 'NA' ) {
|
|
2817 |
wp_cache_debug( "Spam comment. Don't delete any cache files.", 4 );
|
2818 |
define( 'DONOTDELETECACHE', 1 );
|
2819 |
return $postid;
|
2820 |
-
} elseif( $comment['comment_approved'] == '0' ) {
|
2821 |
-
if ( $comment[
|
2822 |
wp_cache_debug( "Moderated comment. Don't delete supercache file until comment approved.", 4 );
|
2823 |
$super_cache_enabled = 0; // don't remove the super cache static file until comment is approved
|
2824 |
define( 'DONOTDELETECACHE', 1 );
|
@@ -2832,7 +2921,7 @@ function wp_cache_get_postid_from_comment( $comment_id, $status = 'NA' ) {
|
|
2832 |
// We must check it up again due to WP bugs calling two different actions
|
2833 |
// for delete, for example both wp_set_comment_status and delete_comment
|
2834 |
// are called when deleting a comment
|
2835 |
-
if ($postid > 0)
|
2836 |
wp_cache_debug( "Post $postid changed. Update cache.", 4 );
|
2837 |
return wp_cache_post_change( $postid );
|
2838 |
} else {
|
@@ -2871,7 +2960,7 @@ function wpsc_delete_post_archives( $post ) {
|
|
2871 |
}
|
2872 |
|
2873 |
// Taxonomies - categories, tags, custom taxonomies
|
2874 |
-
foreach( get_object_taxonomies( $post, 'objects' ) as $taxonomy ) {
|
2875 |
|
2876 |
if ( ! $taxonomy->public || ! $taxonomy->rewrite ) {
|
2877 |
continue;
|
@@ -2882,7 +2971,7 @@ function wpsc_delete_post_archives( $post ) {
|
|
2882 |
continue;
|
2883 |
}
|
2884 |
|
2885 |
-
foreach( $terms as $term ) {
|
2886 |
|
2887 |
$term_url = get_term_link( $term, $taxonomy->name );
|
2888 |
if ( is_wp_error( $term_url ) ) {
|
@@ -2921,25 +3010,27 @@ function wpsc_delete_cats_tags( $post ) {
|
|
2921 |
_deprecated_function( __FUNCTION__, 'WP Super Cache 1.6.3', 'wpsc_delete_post_archives' );
|
2922 |
}
|
2923 |
|
2924 |
-
$post
|
2925 |
-
$categories = get_the_category($post->ID);
|
2926 |
if ( $categories ) {
|
2927 |
-
$category_base = get_option( 'category_base');
|
2928 |
-
if ( $category_base == '' )
|
2929 |
$category_base = '/category/';
|
|
|
2930 |
$category_base = trailingslashit( $category_base ); // paranoid much?
|
2931 |
-
foreach ($categories as $cat) {
|
2932 |
-
prune_super_cache
|
2933 |
wp_cache_debug( 'wpsc_post_transition: deleting category: ' . get_supercache_dir() . $category_base . $cat->slug . '/' );
|
2934 |
}
|
2935 |
}
|
2936 |
-
$posttags = get_the_tags($post->ID);
|
2937 |
if ( $posttags ) {
|
2938 |
$tag_base = get_option( 'tag_base' );
|
2939 |
-
if ( $tag_base == '' )
|
2940 |
$tag_base = '/tag/';
|
|
|
2941 |
$tag_base = trailingslashit( str_replace( '..', '', $tag_base ) ); // maybe!
|
2942 |
-
foreach ($posttags as $tag) {
|
2943 |
prune_super_cache( get_supercache_dir() . $tag_base . $tag->slug . '/', true );
|
2944 |
wp_cache_debug( 'wpsc_post_transition: deleting tag: ' . get_supercache_dir() . $tag_base . $tag->slug . '/' );
|
2945 |
}
|
@@ -2953,12 +3044,12 @@ function wpsc_post_transition( $new_status, $old_status, $post ) {
|
|
2953 |
return;
|
2954 |
}
|
2955 |
|
2956 |
-
if ( ( $old_status === 'private' || $old_status === 'publish') && $new_status !== 'publish' ) { // post unpublished
|
2957 |
if ( ! function_exists( 'get_sample_permalink' ) ) {
|
2958 |
-
require_once
|
2959 |
}
|
2960 |
list( $permalink, $post_name ) = get_sample_permalink( $post );
|
2961 |
-
$post_url
|
2962 |
} elseif ( $old_status !== 'publish' && $new_status === 'publish' ) { // post published
|
2963 |
wp_cache_post_edit( $post->ID );
|
2964 |
return;
|
@@ -2996,7 +3087,7 @@ function wp_cache_post_edit( $post_id ) {
|
|
2996 |
|
2997 |
// we want to process the post again just in case it becomes published before the second time this function is called.
|
2998 |
$last_post_edited = $post_id;
|
2999 |
-
if( $wp_cache_clear_on_post_edit ) {
|
3000 |
wp_cache_debug( "wp_cache_post_edit: Clearing cache $blog_cache_dir and {$cache_path}supercache/ on post edit per config.", 2 );
|
3001 |
prune_super_cache( $blog_cache_dir, true );
|
3002 |
prune_super_cache( get_supercache_dir(), true );
|
@@ -3011,8 +3102,9 @@ function wp_cache_post_edit( $post_id ) {
|
|
3011 |
function wp_cache_post_id_gc( $post_id, $all = 'all' ) {
|
3012 |
|
3013 |
$post_id = intval( $post_id );
|
3014 |
-
if( $post_id == 0 )
|
3015 |
return true;
|
|
|
3016 |
|
3017 |
$permalink = trailingslashit( str_replace( get_option( 'home' ), '', get_permalink( $post_id ) ) );
|
3018 |
if ( false !== strpos( $permalink, '?' ) ) {
|
@@ -3086,9 +3178,10 @@ function wp_cache_post_change( $post_id ) {
|
|
3086 |
}
|
3087 |
|
3088 |
$all_backup = $all;
|
3089 |
-
$all
|
3090 |
-
if ( $all != $all_backup )
|
3091 |
wp_cache_debug( 'wp_cache_post_change: $all changed by wpsc_delete_related_pages_on_edit filter: ' . intval( $all ) );
|
|
|
3092 |
|
3093 |
// Delete supercache files whenever a post change event occurs, even if supercache is currently disabled.
|
3094 |
$dir = get_supercache_dir();
|
@@ -3124,17 +3217,17 @@ function wp_cache_post_change( $post_id ) {
|
|
3124 |
wp_cache_debug( "wp_cache_post_change: checking {$blog_cache_dir}meta/", 4 );
|
3125 |
$supercache_files_deleted = false;
|
3126 |
if ( $handle = @opendir( $blog_cache_dir ) ) {
|
3127 |
-
while ( false !== ($file = readdir($handle))) {
|
3128 |
if ( strpos( $file, $file_prefix ) !== false ) {
|
3129 |
if ( strpos( $file, '.html' ) ) {
|
3130 |
// delete old wpcache files immediately
|
3131 |
wp_cache_debug( "wp_cache_post_change: Deleting obsolete wpcache cache+meta files: $file" );
|
3132 |
-
@unlink( $blog_cache_dir . $file);
|
3133 |
@unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) );
|
3134 |
continue;
|
3135 |
} else {
|
3136 |
$meta = json_decode( wp_cache_get_legacy_cache( $blog_cache_dir . 'meta/' . $file ), true );
|
3137 |
-
if( false == is_array( $meta ) ) {
|
3138 |
wp_cache_debug( "Post change cleaning up stray file: $file", 4 );
|
3139 |
@unlink( $blog_cache_dir . 'meta/' . $file );
|
3140 |
@unlink( $blog_cache_dir . $file );
|
@@ -3142,7 +3235,7 @@ function wp_cache_post_change( $post_id ) {
|
|
3142 |
}
|
3143 |
if ( $post_id > 0 && $meta ) {
|
3144 |
$permalink = trailingslashit( str_replace( get_option( 'home' ), '', get_permalink( $post_id ) ) );
|
3145 |
-
if ( $meta[
|
3146 |
wp_cache_debug( "Post change: deleting post wp-cache files for {$meta[ 'uri' ]}: $file", 4 );
|
3147 |
@unlink( $blog_cache_dir . 'meta/' . $file );
|
3148 |
@unlink( $blog_cache_dir . $file );
|
@@ -3153,39 +3246,49 @@ function wp_cache_post_change( $post_id ) {
|
|
3153 |
do_action( 'gc_cache', 'rebuild', $permalink );
|
3154 |
}
|
3155 |
}
|
3156 |
-
} elseif ( $meta[
|
3157 |
wp_cache_debug( "Post change: deleting wp-cache files for {$meta[ 'uri' ]}: $file", 4 );
|
3158 |
@unlink( $blog_cache_dir . 'meta/' . $file );
|
3159 |
@unlink( $blog_cache_dir . $file );
|
3160 |
if ( $super_cache_enabled == true ) {
|
3161 |
wp_cache_debug( "Post change: deleting supercache files for {$meta[ 'uri' ]}" );
|
3162 |
-
wpsc_rebuild_files( $dir . $meta[
|
3163 |
-
do_action( 'gc_cache', 'rebuild', trailingslashit( $meta[
|
3164 |
}
|
3165 |
}
|
3166 |
}
|
3167 |
}
|
3168 |
}
|
3169 |
-
closedir($handle);
|
3170 |
}
|
3171 |
wp_cache_writers_exit();
|
3172 |
return $post_id;
|
3173 |
}
|
3174 |
|
3175 |
-
function wp_cache_microtime_diff($a, $b) {
|
3176 |
-
list($a_dec, $a_sec) = explode(' ', $a);
|
3177 |
-
list($b_dec, $b_sec) = explode(' ', $b);
|
3178 |
-
return (float)$b_sec - (float)$a_sec + (float)$b_dec - (float)$a_dec;
|
3179 |
}
|
3180 |
|
3181 |
function wp_cache_post_id() {
|
3182 |
global $posts, $comment_post_ID, $post_ID;
|
3183 |
// We try hard all options. More frequent first.
|
3184 |
-
if ($post_ID > 0 )
|
3185 |
-
|
3186 |
-
|
3187 |
-
if (
|
3188 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3189 |
return 0;
|
3190 |
}
|
3191 |
|
@@ -3207,7 +3310,7 @@ function maybe_stop_gc( $flag ) {
|
|
3207 |
}
|
3208 |
function get_gc_flag() {
|
3209 |
global $cache_path;
|
3210 |
-
return $cache_path . strtolower( preg_replace( '!/:.*$!', '', str_replace( 'http://', '', str_replace( 'https://', '', get_option( 'home' ) ) ) ) ) .
|
3211 |
}
|
3212 |
|
3213 |
function wp_cache_gc_cron() {
|
@@ -3234,26 +3337,28 @@ function wp_cache_gc_cron() {
|
|
3234 |
|
3235 |
wp_cache_debug( 'Cache garbage collection.', 5 );
|
3236 |
|
3237 |
-
if( !isset( $cache_max_time ) )
|
3238 |
$cache_max_time = 600;
|
|
|
3239 |
|
3240 |
$start = time();
|
3241 |
-
$num
|
3242 |
-
if( false === ( $num = wp_cache_phase2_clean_expired( $file_prefix ) ) ) {
|
3243 |
wp_cache_debug( 'Cache Expiry cron job failed. Probably mutex locked.', 1 );
|
3244 |
update_option( 'wpsupercache_gc_time', time() - ( $cache_time_interval - 10 ) ); // if GC failed then run it again in one minute
|
3245 |
$msg .= __( 'Cache expiry cron job failed. Job will run again in 10 seconds.', 'wp-super-cache' ) . "\n";
|
3246 |
}
|
3247 |
-
if( time() - $start > 30 ) {
|
3248 |
wp_cache_debug( "Cache Expiry cron job took more than 30 seconds to execute.\nYou should reduce the Expiry Time in the WP Super Cache admin page\nas you probably have more cache files than your server can handle efficiently.", 1 );
|
3249 |
$msg .= __( 'Cache expiry cron job took more than 30 seconds. You should probably run the garbage collector more often.', 'wp-super-cache' ) . "\n";
|
3250 |
}
|
3251 |
|
3252 |
if ( $cache_gc_email_me ) {
|
3253 |
-
if ( $msg != '' )
|
3254 |
$msg = "The following warnings were generated by the WP Super Cache Garbage Collector:\n" . $msg;
|
|
|
3255 |
|
3256 |
-
$msg = "Hi,\n\nThe WP Super Cache Garbage Collector has now run, deleting " . (int)$num . " files and directories.\nIf you want to switch off these emails please see the WP Super Cache Advanced Settings\npage on your blog.\n\n{$msg}\nRegards,\nThe Garbage Collector.";
|
3257 |
|
3258 |
wp_mail( get_option( 'admin_email' ), sprintf( __( '[%1$s] WP Super Cache GC Report', 'wp-super-cache' ), home_url() ), $msg );
|
3259 |
}
|
@@ -3265,28 +3370,31 @@ function wp_cache_gc_cron() {
|
|
3265 |
function schedule_wp_gc( $forced = 0 ) {
|
3266 |
global $cache_schedule_type, $cache_max_time, $cache_time_interval, $cache_scheduled_time, $cache_schedule_interval;
|
3267 |
|
3268 |
-
if ( false == isset( $cache_time_interval ) )
|
3269 |
$cache_time_interval = 3600;
|
|
|
3270 |
|
3271 |
if ( false == isset( $cache_schedule_type ) ) {
|
3272 |
-
$cache_schedule_type
|
3273 |
$cache_schedule_interval = $cache_max_time;
|
3274 |
}
|
3275 |
if ( $cache_schedule_type == 'interval' ) {
|
3276 |
-
if ( !isset( $cache_max_time ) )
|
3277 |
$cache_max_time = 600;
|
3278 |
-
|
|
|
3279 |
return false;
|
3280 |
-
|
|
|
3281 |
|
3282 |
-
if (
|
3283 |
update_option( 'wpsupercache_gc_time', time() );
|
3284 |
-
$last_gc = get_option(
|
3285 |
}
|
3286 |
if ( $forced || ( $last_gc < ( time() - 60 ) ) ) { // Allow up to 60 seconds for the previous job to run
|
3287 |
global $wp_cache_shutdown_gc;
|
3288 |
-
if ( !isset( $wp_cache_shutdown_gc ) || $wp_cache_shutdown_gc == 0 ) {
|
3289 |
-
if ( !($t = wp_next_scheduled( 'wp_cache_gc' ) ) ) {
|
3290 |
wp_clear_scheduled_hook( 'wp_cache_gc' );
|
3291 |
wp_schedule_single_event( time() + $cache_time_interval, 'wp_cache_gc' );
|
3292 |
wp_cache_debug( 'scheduled wp_cache_gc for 10 seconds time.', 5 );
|
@@ -3296,7 +3404,7 @@ function schedule_wp_gc( $forced = 0 ) {
|
|
3296 |
$time_to_gc_cache = 1; // tell the "shutdown gc" to run!
|
3297 |
}
|
3298 |
}
|
3299 |
-
} elseif ( $cache_schedule_type == 'time' && !wp_next_scheduled( 'wp_cache_gc' ) ) {
|
3300 |
wp_schedule_event( strtotime( $cache_scheduled_time ), $cache_schedule_interval, 'wp_cache_gc' );
|
3301 |
}
|
3302 |
return true;
|
@@ -3313,7 +3421,7 @@ function wpsc_is_get_query() {
|
|
3313 |
static $is_get_query = null;
|
3314 |
|
3315 |
if ( null === $is_get_query ) {
|
3316 |
-
$request_uri
|
3317 |
$is_get_query = $request_uri && ! empty( $request_uri['query'] );
|
3318 |
}
|
3319 |
|
@@ -3332,7 +3440,7 @@ if ( ! function_exists( 'apache_request_headers' ) ) {
|
|
3332 |
|
3333 |
foreach ( array_keys( $_SERVER ) as $skey ) {
|
3334 |
if ( 0 === strpos( $skey, 'HTTP_' ) ) {
|
3335 |
-
$header
|
3336 |
$headers[ $header ] = $_SERVER[ $skey ];
|
3337 |
}
|
3338 |
}
|
1 |
<?php
|
2 |
|
3 |
+
function gzip_accepted() {
|
4 |
+
if ( 1 == ini_get( 'zlib.output_compression' ) || 'on' == strtolower( ini_get( 'zlib.output_compression' ) ) ) { // don't compress WP-Cache data files when PHP is already doing it
|
5 |
return false;
|
6 |
+
}
|
7 |
|
8 |
+
if ( ! isset( $_SERVER['HTTP_ACCEPT_ENCODING'] ) || ( isset( $_SERVER['HTTP_ACCEPT_ENCODING'] ) && strpos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) === false ) ) {
|
9 |
+
return false;
|
10 |
+
}
|
11 |
return 'gzip';
|
12 |
}
|
13 |
|
14 |
function setup_blog_cache_dir() {
|
15 |
global $blog_cache_dir, $cache_path;
|
16 |
+
if ( false == @is_dir( $blog_cache_dir ) ) {
|
17 |
+
@mkdir( $cache_path . 'blogs' );
|
18 |
@mkdir( $blog_cache_dir );
|
19 |
}
|
20 |
|
21 |
+
if ( false == @is_dir( $blog_cache_dir . 'meta' ) ) {
|
22 |
@mkdir( $blog_cache_dir . 'meta' );
|
23 |
+
}
|
24 |
}
|
25 |
|
26 |
function get_wp_cache_key( $url = false ) {
|
28 |
if ( ! $url ) {
|
29 |
$url = $wp_cache_request_uri;
|
30 |
}
|
31 |
+
$server_port = isset( $_SERVER['SERVER_PORT'] ) ? intval( $_SERVER['SERVER_PORT'] ) : 0;
|
32 |
+
return do_cacheaction( 'wp_cache_key', wp_cache_check_mobile( $WPSC_HTTP_HOST . $server_port . preg_replace( '/#.*$/', '', str_replace( '/index.php', '/', $url ) ) . $wp_cache_gzip_encoding . wp_cache_get_cookies_values() ) );
|
33 |
}
|
34 |
|
35 |
function wpsc_remove_tracking_params_from_uri( $uri ) {
|
48 |
|
49 |
if ( isset( $parsed_url['query'] ) ) {
|
50 |
parse_str( $parsed_url['query'], $query );
|
51 |
+
foreach ( $wpsc_tracking_parameters as $param_name ) {
|
52 |
+
unset( $query[ $param_name ] );
|
53 |
unset( $_GET[ $param_name ] );
|
54 |
}
|
55 |
}
|
56 |
+
$path = isset( $parsed_url['path'] ) ? $parsed_url['path'] : '';
|
57 |
$query = ! empty( $query ) ? '?' . http_build_query( $query ) : '';
|
58 |
|
59 |
if ( empty( $_GET ) ) {
|
71 |
global $wp_cache_key, $key, $blogcacheid, $file_prefix, $blog_cache_dir, $meta_file, $cache_file, $cache_filename, $meta_pathname;
|
72 |
|
73 |
$wp_cache_key = get_wp_cache_key();
|
74 |
+
$key = $blogcacheid . md5( $wp_cache_key );
|
75 |
$wp_cache_key = $blogcacheid . $wp_cache_key;
|
76 |
|
77 |
$cache_filename = $file_prefix . $key . '.php';
|
78 |
+
$meta_file = $file_prefix . $key . '.php';
|
79 |
|
80 |
$cache_file = wpsc_get_realpath( $blog_cache_dir );
|
81 |
|
122 |
)
|
123 |
) {
|
124 |
if ( file_exists( get_current_url_supercache_dir() . 'meta-' . $cache_filename ) ) {
|
125 |
+
$cache_file = get_current_url_supercache_dir() . $cache_filename;
|
126 |
$meta_pathname = get_current_url_supercache_dir() . 'meta-' . $cache_filename;
|
127 |
+
} elseif ( ! file_exists( $cache_file ) ) {
|
128 |
wp_cache_debug( 'wp_cache_serve_cache_file: found cache file but then it disappeared!' );
|
129 |
return false;
|
130 |
}
|
135 |
}
|
136 |
|
137 |
wp_cache_debug( "wp-cache file exists: $cache_file", 5 );
|
138 |
+
if ( ! ( $meta = json_decode( wp_cache_get_legacy_cache( $meta_pathname ), true ) ) ) {
|
139 |
wp_cache_debug( "couldn't load wp-cache meta file", 5 );
|
140 |
return true;
|
141 |
}
|
150 |
global $cache_max_time;
|
151 |
// last chance, check if a supercache file exists. Just in case .htaccess rules don't work on this host
|
152 |
$filename = supercache_filename();
|
153 |
+
$file = get_current_url_supercache_dir() . $filename;
|
154 |
if ( false == file_exists( $file ) ) {
|
155 |
wp_cache_debug( "No Super Cache file found for current URL: $file" );
|
156 |
return false;
|
164 |
wp_cache_debug( 'Saving headers. Cannot serve a supercache file.' );
|
165 |
return false;
|
166 |
} elseif ( $cache_max_time > 0 && ( filemtime( $file ) + $cache_max_time ) < time() ) {
|
167 |
+
wp_cache_debug( sprintf( 'Cache has expired and is older than %d seconds old.', $cache_max_time ) );
|
168 |
return false;
|
169 |
}
|
170 |
|
171 |
+
if ( isset( $wp_cache_mfunc_enabled ) == false ) {
|
172 |
$wp_cache_mfunc_enabled = 0;
|
173 |
+
}
|
174 |
|
175 |
+
if ( false == isset( $wp_cache_home_path ) ) {
|
176 |
$wp_cache_home_path = '/';
|
177 |
+
}
|
178 |
|
179 |
// make sure ending slashes are ok
|
180 |
if ( $wp_cache_request_uri == $wp_cache_home_path || ( $wp_cache_slash_check && substr( $wp_cache_request_uri, -1 ) == '/' ) || ( $wp_cache_slash_check == 0 && substr( $wp_cache_request_uri, -1 ) != '/' ) ) {
|
204 |
}
|
205 |
}
|
206 |
|
207 |
+
if ( isset( $wp_cache_disable_utf8 ) == false || $wp_cache_disable_utf8 == 0 ) {
|
208 |
+
header( 'Content-type: text/html; charset=UTF-8' );
|
209 |
+
}
|
210 |
|
211 |
if ( defined( 'WPSC_VARY_HEADER' ) ) {
|
212 |
if ( WPSC_VARY_HEADER != '' ) {
|
213 |
+
header( 'Vary: ' . WPSC_VARY_HEADER );
|
214 |
}
|
215 |
} else {
|
216 |
+
header( 'Vary: Accept-Encoding, Cookie' );
|
217 |
}
|
218 |
if ( defined( 'WPSC_CACHE_CONTROL_HEADER' ) ) {
|
219 |
if ( WPSC_CACHE_CONTROL_HEADER != '' ) {
|
220 |
+
header( 'Cache-Control: ' . WPSC_CACHE_CONTROL_HEADER );
|
221 |
}
|
222 |
} else {
|
223 |
+
header( 'Cache-Control: max-age=3, must-revalidate' );
|
224 |
}
|
225 |
$size = function_exists( 'mb_strlen' ) ? mb_strlen( $cachefiledata, '8bit' ) : strlen( $cachefiledata );
|
226 |
if ( $wp_cache_gzip_encoding ) {
|
227 |
if ( isset( $wpsc_served_header ) && $wpsc_served_header ) {
|
228 |
+
header( 'X-WP-Super-Cache: Served supercache gzip file from PHP' );
|
229 |
}
|
230 |
header( 'Content-Encoding: ' . $wp_cache_gzip_encoding );
|
231 |
header( 'Content-Length: ' . $size );
|
232 |
} elseif ( $wp_supercache_304 ) {
|
233 |
if ( isset( $wpsc_served_header ) && $wpsc_served_header ) {
|
234 |
+
header( 'X-WP-Super-Cache: Served supercache 304 file from PHP' );
|
235 |
}
|
236 |
header( 'Content-Length: ' . $size );
|
237 |
} else {
|
238 |
if ( isset( $wpsc_served_header ) && $wpsc_served_header ) {
|
239 |
+
header( 'X-WP-Super-Cache: Served supercache file from PHP' );
|
240 |
}
|
241 |
}
|
242 |
|
244 |
if ( $wp_cache_mfunc_enabled == 0 && $wp_supercache_304 ) {
|
245 |
wp_cache_debug( 'wp_cache_serve_cache_file: checking age of cached vs served files.' );
|
246 |
$headers = apache_request_headers();
|
247 |
+
$remote_mod_time = isset( $headers['If-Modified-Since'] ) ? $headers['If-Modified-Since'] : null;
|
248 |
|
249 |
+
if ( $remote_mod_time === null && isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) ) {
|
250 |
$remote_mod_time = $_SERVER['HTTP_IF_MODIFIED_SINCE'];
|
251 |
}
|
252 |
|
253 |
+
$local_mod_time = gmdate( 'D, d M Y H:i:s', filemtime( $file ) ) . ' GMT';
|
254 |
+
if ( $remote_mod_time !== null && $remote_mod_time == $local_mod_time ) {
|
255 |
wp_cache_debug( 'wp_cache_serve_cache_file: Send 304 Not Modified header.' );
|
256 |
+
header( $_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified' );
|
257 |
exit();
|
258 |
} else {
|
259 |
wp_cache_debug( 'wp_cache_serve_cache_file: 304 browser caching not possible as timestamps differ.' );
|
270 |
|
271 |
$cache_file = do_cacheaction( 'wp_cache_served_cache_file', $cache_file );
|
272 |
// Sometimes the gzip headers are lost. Make sure html returned isn't compressed!
|
273 |
+
if ( $cache_compression && $wp_cache_gzip_encoding && ! in_array( 'Content-Encoding: ' . $wp_cache_gzip_encoding, $meta['headers'] ) ) {
|
274 |
$ungzip = true;
|
275 |
wp_cache_debug( 'GZIP headers not found. Force uncompressed output.', 1 );
|
276 |
} else {
|
277 |
$ungzip = false;
|
278 |
}
|
279 |
+
foreach ( $meta['headers'] as $t => $header ) {
|
280 |
// godaddy fix, via http://blog.gneu.org/2008/05/wp-supercache-on-godaddy/ and http://www.littleredrails.com/blog/2007/09/08/using-wp-cache-on-godaddy-500-error/
|
281 |
if ( strpos( $header, 'Last-Modified:' ) === false ) {
|
282 |
header( $header );
|
285 |
if ( isset( $wpsc_served_header ) && $wpsc_served_header ) {
|
286 |
header( 'X-WP-Super-Cache: Served WPCache cache file' );
|
287 |
}
|
288 |
+
if ( isset( $meta['dynamic'] ) ) {
|
289 |
wp_cache_debug( 'Serving wp-cache dynamic file', 5 );
|
290 |
if ( $ungzip ) {
|
291 |
// attempt to uncompress the cached file just in case it's gzipped
|
292 |
+
$cache = wp_cache_get_legacy_cache( $cache_file );
|
293 |
$uncompressed = @gzuncompress( $cache );
|
294 |
if ( $uncompressed ) {
|
295 |
wp_cache_debug( 'Uncompressed gzipped cache file from wp-cache', 1 );
|
304 |
} else {
|
305 |
wp_cache_debug( 'Serving wp-cache static file', 5 );
|
306 |
if ( $ungzip ) {
|
307 |
+
$cache = wp_cache_get_legacy_cache( $cache_file );
|
308 |
$uncompressed = gzuncompress( $cache );
|
309 |
if ( $uncompressed ) {
|
310 |
wp_cache_debug( 'Uncompressed gzipped cache file from wp-cache', 1 );
|
329 |
function wp_cache_postload() {
|
330 |
global $cache_enabled, $wp_super_cache_late_init;
|
331 |
|
332 |
+
if ( ! $cache_enabled ) {
|
333 |
return true;
|
334 |
+
}
|
335 |
|
336 |
if ( isset( $wp_super_cache_late_init ) && true == $wp_super_cache_late_init ) {
|
337 |
wp_cache_debug( 'Supercache Late Init: add wp_cache_serve_cache_file to init', 3 );
|
442 |
return $string;
|
443 |
}
|
444 |
|
445 |
+
if ( defined( 'COOKIEHASH' ) ) {
|
446 |
$cookiehash = preg_quote( constant( 'COOKIEHASH' ) );
|
447 |
+
} else {
|
448 |
$cookiehash = '';
|
449 |
+
}
|
450 |
$regex = "/^wp-postpass_$cookiehash|^comment_author_$cookiehash";
|
451 |
+
if ( defined( 'LOGGED_IN_COOKIE' ) ) {
|
452 |
+
$regex .= '|^' . preg_quote( constant( 'LOGGED_IN_COOKIE' ) );
|
453 |
+
} else {
|
454 |
$regex .= "|^wordpress_logged_in_$cookiehash";
|
455 |
+
}
|
456 |
+
$regex .= '/';
|
457 |
+
while ( $key = key( $_COOKIE ) ) {
|
458 |
if ( preg_match( $regex, $key ) ) {
|
459 |
+
wp_cache_debug( 'wp_cache_get_cookies_values: Login/postpass cookie detected' );
|
460 |
+
$string .= $_COOKIE[ $key ] . ',';
|
461 |
}
|
462 |
+
next( $_COOKIE );
|
463 |
}
|
464 |
+
reset( $_COOKIE );
|
465 |
|
466 |
// If you use this hook, make sure you update your .htaccess rules with the same conditions
|
467 |
$string = do_cacheaction( 'wp_cache_get_cookies_values', $string );
|
471 |
is_array( $wpsc_cookies ) &&
|
472 |
! empty( $wpsc_cookies )
|
473 |
) {
|
474 |
+
foreach ( $wpsc_cookies as $name ) {
|
475 |
if ( isset( $_COOKIE[ $name ] ) ) {
|
476 |
wp_cache_debug( "wp_cache_get_cookies_values - found extra cookie: $name" );
|
477 |
+
$string .= $name . '=' . $_COOKIE[ $name ] . ',';
|
478 |
}
|
479 |
}
|
480 |
}
|
481 |
|
482 |
+
if ( $string != '' ) {
|
483 |
$string = md5( $string );
|
484 |
+
}
|
485 |
|
486 |
wp_cache_debug( "wp_cache_get_cookies_values: return: $string", 5 );
|
487 |
return $string;
|
495 |
function do_cacheaction( $action, $value = '' ) {
|
496 |
global $wp_supercache_actions;
|
497 |
|
498 |
+
if ( ! isset( $wp_supercache_actions ) || ! is_array( $wp_supercache_actions ) ) {
|
499 |
return $value;
|
500 |
+
}
|
501 |
|
502 |
+
if ( array_key_exists( $action, $wp_supercache_actions ) && is_array( $wp_supercache_actions[ $action ] ) ) {
|
503 |
$actions = $wp_supercache_actions[ $action ];
|
504 |
+
foreach ( $actions as $func ) {
|
505 |
$value = call_user_func_array( $func, array( $value ) );
|
506 |
}
|
507 |
}
|
511 |
|
512 |
function wp_cache_mobile_group( $user_agent ) {
|
513 |
global $wp_cache_mobile_groups;
|
514 |
+
foreach ( (array) $wp_cache_mobile_groups as $name => $group ) {
|
515 |
+
foreach ( (array) $group as $browser ) {
|
516 |
$browser = trim( strtolower( $browser ) );
|
517 |
if ( $browser != '' && strstr( $user_agent, $browser ) ) {
|
518 |
return $browser;
|
519 |
}
|
520 |
}
|
521 |
}
|
522 |
+
return 'mobile';
|
523 |
}
|
524 |
|
525 |
// From https://wordpress.org/plugins/wordpress-mobile-edition/ by Alex King
|
526 |
function wp_cache_check_mobile( $cache_key ) {
|
527 |
global $wp_cache_mobile_enabled, $wp_cache_mobile_browsers, $wp_cache_mobile_prefixes;
|
528 |
+
if ( ! isset( $wp_cache_mobile_enabled ) || false == $wp_cache_mobile_enabled ) {
|
529 |
return $cache_key;
|
530 |
+
}
|
531 |
+
|
532 |
+
// a check of wp_is_mobile() should be added here, but if the Jetpack WPSC plugin
|
533 |
+
// is enabled, jetpack_is_mobile() is used through the wp_cache_check_mobile action.
|
534 |
|
535 |
wp_cache_debug( "wp_cache_check_mobile: $cache_key" );
|
536 |
|
537 |
// allow plugins to short circuit mobile check. Cookie, extra UA checks?
|
538 |
+
switch ( do_cacheaction( 'wp_cache_check_mobile', $cache_key ) ) {
|
539 |
+
case 'normal':
|
540 |
+
wp_cache_debug( 'wp_cache_check_mobile: desktop user agent detected by wp_cache_check_mobile action' );
|
541 |
+
return $cache_key;
|
542 |
break;
|
543 |
+
case 'mobile':
|
544 |
+
wp_cache_debug( 'wp_cache_check_mobile: mobile user agent detected by wp_cache_check_mobile action' );
|
545 |
+
return $cache_key . '-mobile';
|
546 |
break;
|
547 |
}
|
548 |
|
549 |
+
if ( ! isset( $_SERVER['HTTP_USER_AGENT'] ) ) {
|
550 |
return $cache_key;
|
551 |
}
|
552 |
|
555 |
return $cache_key;
|
556 |
}
|
557 |
|
558 |
+
$browsers = explode( ',', $wp_cache_mobile_browsers );
|
559 |
$user_agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
|
560 |
+
foreach ( $browsers as $browser ) {
|
561 |
if ( strstr( $user_agent, trim( strtolower( $browser ) ) ) ) {
|
562 |
wp_cache_debug( 'mobile browser detected: ' . $browser );
|
563 |
return $cache_key . '-' . wp_cache_mobile_group( $user_agent );
|
564 |
}
|
565 |
}
|
566 |
+
if ( isset( $_SERVER['HTTP_X_WAP_PROFILE'] ) ) {
|
567 |
return $cache_key . '-' . $_SERVER['HTTP_X_WAP_PROFILE'];
|
568 |
+
}
|
569 |
+
if ( isset( $_SERVER['HTTP_PROFILE'] ) ) {
|
570 |
return $cache_key . '-' . $_SERVER['HTTP_PROFILE'];
|
571 |
+
}
|
572 |
|
573 |
if ( isset( $wp_cache_mobile_prefixes ) ) {
|
574 |
$browsers = explode( ',', $wp_cache_mobile_prefixes );
|
575 |
+
foreach ( $browsers as $browser_prefix ) {
|
576 |
+
if ( substr( $user_agent, 0, 4 ) == $browser_prefix ) {
|
577 |
wp_cache_debug( 'mobile browser (prefix) detected: ' . $browser_prefix );
|
578 |
return $cache_key . '-' . $browser_prefix;
|
579 |
}
|
580 |
}
|
581 |
}
|
582 |
+
$accept = isset( $_SERVER['HTTP_ACCEPT'] ) ? strtolower( $_SERVER['HTTP_ACCEPT'] ) : '';
|
583 |
+
if ( strpos( $accept, 'wap' ) !== false ) {
|
584 |
return $cache_key . '-' . 'wap';
|
585 |
}
|
586 |
|
587 |
+
if ( isset( $_SERVER['ALL_HTTP'] ) && strpos( strtolower( $_SERVER['ALL_HTTP'] ), 'operamini' ) !== false ) {
|
588 |
return $cache_key . '-' . 'operamini';
|
589 |
}
|
590 |
|
607 |
$last_message = $message;
|
608 |
|
609 |
// If either of the debug or log globals aren't set, then we can stop
|
610 |
+
if ( ! isset( $wp_super_cache_debug )
|
611 |
+
|| ! isset( $wp_cache_debug_log ) ) {
|
612 |
return false;
|
613 |
+
}
|
614 |
|
615 |
// If either the debug or log globals are false or empty, we can stop
|
616 |
if ( $wp_super_cache_debug == false
|
617 |
+
|| $wp_cache_debug_log == '' ) {
|
618 |
return false;
|
619 |
+
}
|
620 |
|
621 |
// If the debug_ip has been set, but it doesn't match the ip of the requester
|
622 |
// then we can stop.
|
623 |
+
if ( isset( $wp_cache_debug_ip )
|
624 |
&& $wp_cache_debug_ip != ''
|
625 |
+
&& $wp_cache_debug_ip != $_SERVER['REMOTE_ADDR'] ) {
|
626 |
return false;
|
627 |
+
}
|
628 |
|
629 |
// Log message: Date URI Message
|
630 |
+
$log_message = date( 'H:i:s' ) . ' ' . getmypid() . " {$_SERVER['REQUEST_URI']} {$message}" . PHP_EOL;
|
631 |
// path to the log file in the cache folder
|
632 |
+
$log_file = $cache_path . str_replace( '/', '', str_replace( '..', '', $wp_cache_debug_log ) );
|
633 |
|
634 |
if ( ! file_exists( $log_file ) && function_exists( 'wpsc_create_debug_log' ) ) {
|
635 |
global $wp_cache_debug_username;
|
646 |
function wpsc_dump_get_request() {
|
647 |
static $string;
|
648 |
|
649 |
+
if ( isset( $string ) ) {
|
650 |
return $string;
|
651 |
}
|
652 |
|
704 |
|
705 |
$DONOTREMEMBER = 0;
|
706 |
if ( $post_id != 0 ) {
|
707 |
+
$site_url = site_url();
|
708 |
$permalink = get_permalink( $post_id );
|
709 |
if ( false === strpos( $permalink, $site_url ) ) {
|
710 |
/*
|
727 |
}
|
728 |
} else {
|
729 |
$uri = str_replace( $site_url, '', $permalink );
|
730 |
+
if ( strpos( $uri, $wp_cache_home_path ) !== 0 ) {
|
731 |
$uri = rtrim( $wp_cache_home_path, '/' ) . $uri;
|
732 |
+
}
|
733 |
}
|
734 |
} else {
|
735 |
$uri = strtolower( $wp_cache_request_uri );
|
736 |
$uri = preg_replace_callback(
|
737 |
+
'/%[a-f0-9]{2}/',
|
738 |
function ( $matches ) {
|
739 |
return strtoupper( $matches[0] );
|
740 |
},
|
741 |
$uri
|
742 |
);
|
743 |
}
|
744 |
+
$uri = wpsc_deep_replace( array( '..', '\\', 'index.php' ), preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', preg_replace( '/(\?.*)?(#.*)?$/', '', $uri ) ) );
|
745 |
$hostname = $WPSC_HTTP_HOST;
|
746 |
// Get hostname from wp options for wp-cron, wp-cli and similar requests.
|
747 |
if ( empty( $hostname ) && function_exists( 'get_option' ) ) {
|
748 |
$hostname = (string) parse_url( get_option( 'home' ), PHP_URL_HOST );
|
749 |
}
|
750 |
$dir = preg_replace( '/:.*$/', '', $hostname ) . $uri; // To avoid XSS attacks
|
751 |
+
if ( function_exists( 'apply_filters' ) ) {
|
752 |
$dir = apply_filters( 'supercache_dir', $dir );
|
753 |
} else {
|
754 |
$dir = do_cacheaction( 'supercache_dir', $dir );
|
755 |
}
|
756 |
$dir = $cache_path . 'supercache/' . $dir . '/';
|
757 |
+
if ( is_array( $cached_direct_pages ) && in_array( $_SERVER['REQUEST_URI'], $cached_direct_pages ) ) {
|
758 |
$dir = ABSPATH . $uri . '/';
|
759 |
}
|
760 |
$dir = str_replace( '..', '', str_replace( '//', '/', $dir ) );
|
761 |
wp_cache_debug( "supercache dir: $dir", 5 );
|
762 |
+
if ( $DONOTREMEMBER == 0 ) {
|
763 |
$saved_supercache_dir[ $post_id ] = $dir;
|
764 |
+
}
|
765 |
return $dir;
|
766 |
}
|
767 |
|
785 |
}
|
786 |
|
787 |
$original_dir = $directory;
|
788 |
+
$directory = realpath( $directory );
|
789 |
|
790 |
if ( ! $directory ) {
|
791 |
wp_cache_debug( "wpsc_get_realpath: directory does not exist - $original_dir" );
|
849 |
|
850 |
// only do this once, this function will be called many times
|
851 |
if ( $protected == '' ) {
|
852 |
+
$protected = array( $cache_path, $cache_path . 'blogs/', $cache_path . 'supercache' );
|
853 |
+
foreach ( $protected as $id => $directory ) {
|
854 |
$protected[ $id ] = trailingslashit( wpsc_get_realpath( $directory ) );
|
855 |
}
|
856 |
}
|
857 |
|
858 |
$orig_dir = $dir;
|
859 |
+
$dir = wpsc_get_realpath( $dir );
|
860 |
if ( ! $dir ) {
|
861 |
wp_cache_debug( 'wpsc_delete_files: directory does not exist: ' . $orig_dir );
|
862 |
return false;
|
877 |
if ( is_dir( $dir ) && $dh = @opendir( $dir ) ) {
|
878 |
while ( ( $file = readdir( $dh ) ) !== false ) {
|
879 |
wp_cache_debug( 'wpsc_delete_files: reading files: ' . $file );
|
880 |
+
if ( $file != '.' && $file != '..' && $file != '.htaccess' && is_file( $dir . $file ) ) {
|
881 |
if ( $delete ) {
|
882 |
wp_cache_debug( 'wpsc_delete_files: deleting ' . $dir . $file );
|
883 |
@unlink( $dir . $file );
|
885 |
wp_cache_debug( 'wpsc_delete_files: rebuild or delete ' . $dir . $file );
|
886 |
@wp_cache_rebuild_or_delete( $dir . $file );
|
887 |
}
|
888 |
+
}
|
889 |
}
|
890 |
closedir( $dh );
|
891 |
|
918 |
// open directory and look for index-*.html files
|
919 |
if ( is_dir( $dir ) && $dh = @opendir( $dir ) ) {
|
920 |
while ( ( $file = readdir( $dh ) ) !== false ) {
|
921 |
+
if ( substr( $file, 0, 6 ) == 'index-' && strpos( $file, '.html' ) ) {
|
922 |
$filenames[] = $file;
|
923 |
+
}
|
924 |
}
|
925 |
closedir( $dh );
|
926 |
}
|
927 |
}
|
928 |
|
929 |
+
if ( function_exists( 'apply_filters' ) ) {
|
930 |
$filenames = apply_filters( 'all_supercache_filenames', $filenames );
|
931 |
} else {
|
932 |
$filenames = do_cacheaction( 'all_supercache_filenames', $filenames );
|
933 |
}
|
934 |
|
935 |
+
foreach ( $filenames as $file ) {
|
936 |
$out[] = $file;
|
937 |
$out[] = $file . '.gz';
|
938 |
}
|
943 |
function supercache_filename() {
|
944 |
global $cached_direct_pages;
|
945 |
|
946 |
+
// Add support for https and http caching
|
947 |
+
$is_https = ( ( isset( $_SERVER['HTTPS'] ) && 'on' == strtolower( $_SERVER['HTTPS'] ) ) || ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && 'https' == strtolower( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) ); // Also supports https requests coming from an nginx reverse proxy
|
948 |
$extra_str = $is_https ? '-https' : '';
|
949 |
|
950 |
+
if ( function_exists( 'apply_filters' ) ) {
|
951 |
$extra_str = apply_filters( 'supercache_filename_str', $extra_str );
|
952 |
} else {
|
953 |
$extra_str = do_cacheaction( 'supercache_filename_str', $extra_str );
|
954 |
}
|
955 |
|
956 |
+
if ( is_array( $cached_direct_pages ) && in_array( $_SERVER['REQUEST_URI'], $cached_direct_pages ) ) {
|
957 |
$extra_str = '';
|
958 |
}
|
959 |
$filename = 'index' . $extra_str . '.html';
|
962 |
}
|
963 |
|
964 |
function get_oc_version() {
|
965 |
+
$wp_cache_oc_key = wp_cache_get( 'wp_cache_oc_key' );
|
966 |
if ( ! $wp_cache_oc_key ) {
|
967 |
+
$wp_cache_oc_key['key'] = reset_oc_version();
|
968 |
+
} elseif ( $wp_cache_oc_key['ts'] < time() - 600 ) {
|
969 |
+
wp_cache_set(
|
970 |
+
'wp_cache_oc_key',
|
971 |
+
array(
|
972 |
+
'ts' => time(),
|
973 |
+
'key' => $wp_cache_oc_key['key'],
|
974 |
+
)
|
975 |
+
);
|
976 |
+
}
|
977 |
+
return $wp_cache_oc_key['key'];
|
978 |
}
|
979 |
|
980 |
function reset_oc_version( $version = 1 ) {
|
981 |
+
if ( $version == 1 ) {
|
982 |
$version = mt_rand();
|
983 |
+
}
|
984 |
+
wp_cache_set(
|
985 |
+
'wp_cache_oc_key',
|
986 |
+
array(
|
987 |
+
'ts' => time(),
|
988 |
+
'key' => $version,
|
989 |
+
)
|
990 |
+
);
|
991 |
|
992 |
return $version;
|
993 |
}
|
996 |
global $wp_cache_gzip_encoding, $WPSC_HTTP_HOST;
|
997 |
|
998 |
if ( $url ) {
|
999 |
+
$key = intval( $_SERVER['SERVER_PORT'] ) . preg_replace( '/:.*$/', '', $WPSC_HTTP_HOST ) . $url;
|
1000 |
} else {
|
1001 |
$key = get_current_url_supercache_dir();
|
1002 |
}
|
1078 |
$dir == '' ||
|
1079 |
$dir == $rp_cache_path ||
|
1080 |
$dir == wpsc_get_realpath( $blog_cache_dir ) ||
|
1081 |
+
$dir == wpsc_get_realpath( $blog_cache_dir . 'meta/' ) ||
|
1082 |
+
$dir == wpsc_get_realpath( $cache_path . 'supercache' )
|
1083 |
) {
|
1084 |
return false;
|
1085 |
} else {
|
1101 |
|
1102 |
function wpsc_get_protected_directories() {
|
1103 |
global $cache_path, $blog_cache_dir;
|
1104 |
+
return apply_filters(
|
1105 |
+
'wpsc_protected_directories',
|
1106 |
+
array(
|
1107 |
+
$cache_path . '.htaccess',
|
1108 |
+
$cache_path . 'index.html',
|
1109 |
+
$blog_cache_dir,
|
1110 |
+
$blog_cache_dir . 'index.html',
|
1111 |
+
$blog_cache_dir . 'meta',
|
1112 |
+
$blog_cache_dir . 'meta/index.html',
|
1113 |
+
$cache_path . 'supercache/index.html',
|
1114 |
+
$cache_path . 'supercache',
|
1115 |
+
)
|
1116 |
+
);
|
1117 |
}
|
1118 |
|
1119 |
function wpsc_debug_username() {
|
1129 |
if ( $filename != '' ) {
|
1130 |
$wp_cache_debug_log = $filename;
|
1131 |
} else {
|
1132 |
+
$wp_cache_debug_log = md5( time() + mt_rand() ) . '.php';
|
1133 |
}
|
1134 |
if ( $username != '' ) {
|
1135 |
$wp_cache_debug_username = $username;
|
1138 |
}
|
1139 |
|
1140 |
$msg = 'die( "Please use the viewer" );' . PHP_EOL;
|
1141 |
+
$fp = fopen( $cache_path . $wp_cache_debug_log, 'w' );
|
1142 |
if ( $fp ) {
|
1143 |
fwrite( $fp, '<' . "?php\n" );
|
1144 |
fwrite( $fp, $msg );
|
1145 |
+
fwrite( $fp, '?' . '><pre>' . PHP_EOL );
|
1146 |
fwrite( $fp, '<' . '?php // END HEADER ?' . '>' . PHP_EOL );
|
1147 |
fclose( $fp );
|
1148 |
wp_cache_setting( 'wp_cache_debug_log', $wp_cache_debug_log );
|
1159 |
|
1160 |
$fp = fopen( $cache_path . 'view_' . $wp_cache_debug_log, 'w' );
|
1161 |
if ( $fp ) {
|
1162 |
+
fwrite( $fp, '<' . '?php' . PHP_EOL );
|
1163 |
$msg .= '$debug_log = file( "./' . $wp_cache_debug_log . '" );
|
1164 |
$start_log = 1 + array_search( "<" . "?php // END HEADER ?" . ">" . PHP_EOL, $debug_log );
|
1165 |
if ( $start_log > 1 ) {
|
1224 |
fclose( $fp );
|
1225 |
}
|
1226 |
|
1227 |
+
return array(
|
1228 |
+
'wp_cache_debug_log' => $wp_cache_debug_log,
|
1229 |
+
'wp_cache_debug_username' => $wp_cache_debug_username,
|
1230 |
+
);
|
1231 |
}
|
1232 |
|
1233 |
function wpsc_delete_url_cache( $url ) {
|
1267 |
|
1268 |
// check tmp file for read/write capabilities
|
1269 |
$rm = file_exists( $path );
|
1270 |
+
$f = @fopen( $path, 'a' );
|
1271 |
+
if ( $f === false ) {
|
1272 |
return false;
|
1273 |
+
}
|
1274 |
fclose( $f );
|
1275 |
if ( ! $rm ) {
|
1276 |
unlink( $path );
|
1304 |
}
|
1305 |
return false;
|
1306 |
}
|
1307 |
+
if ( ! is_writeable_ACLSafe( $my_file ) ) {
|
1308 |
if ( function_exists( 'set_transient' ) ) {
|
1309 |
set_transient( 'wpsc_config_error', 'config_file_ro', 10 );
|
1310 |
}
|
1312 |
return false;
|
1313 |
}
|
1314 |
|
1315 |
+
$found = false;
|
1316 |
$loaded = false;
|
1317 |
+
$c = 0;
|
1318 |
+
$lines = array();
|
1319 |
+
while ( ! $loaded ) {
|
1320 |
$lines = file( $my_file );
|
1321 |
if ( ! empty( $lines ) && is_array( $lines ) ) {
|
1322 |
$loaded = true;
|
1331 |
}
|
1332 |
}
|
1333 |
}
|
1334 |
+
foreach ( (array) $lines as $line ) {
|
1335 |
if (
|
1336 |
trim( $new ) != '' &&
|
1337 |
trim( $new ) == trim( $line )
|
1339 |
wp_cache_debug( "wp_cache_replace_line: setting not changed - $new" );
|
1340 |
return true;
|
1341 |
} elseif ( preg_match( "/$old/", $line ) ) {
|
1342 |
+
wp_cache_debug( 'wp_cache_replace_line: changing line ' . trim( $line ) . " to *$new*" );
|
1343 |
$found = true;
|
1344 |
}
|
1345 |
}
|
1351 |
die( __( 'WARNING: attempt to intercept updating of config file.', 'wp-super-cache' ) );
|
1352 |
}
|
1353 |
}
|
1354 |
+
rename( $tmp_config_filename, $tmp_config_filename . '.php' );
|
1355 |
+
$tmp_config_filename .= '.php';
|
1356 |
wp_cache_debug( 'wp_cache_replace_line: writing to ' . $tmp_config_filename );
|
1357 |
$fd = fopen( $tmp_config_filename, 'w' );
|
1358 |
if ( ! $fd ) {
|
1363 |
return false;
|
1364 |
}
|
1365 |
if ( $found ) {
|
1366 |
+
foreach ( (array) $lines as $line ) {
|
1367 |
if ( ! preg_match( "/$old/", $line ) ) {
|
1368 |
fputs( $fd, $line );
|
1369 |
} elseif ( $new != '' ) {
|
1372 |
}
|
1373 |
} else {
|
1374 |
$done = false;
|
1375 |
+
foreach ( (array) $lines as $line ) {
|
1376 |
if ( $done || ! preg_match( '/^(if\ \(\ \!\ )?define|\$|\?>/', $line ) ) {
|
1377 |
+
fputs( $fd, $line );
|
1378 |
} else {
|
1379 |
+
fputs( $fd, "$new\n" );
|
1380 |
+
fputs( $fd, $line );
|
1381 |
$done = true;
|
1382 |
}
|
1383 |
}
|
1386 |
rename( $tmp_config_filename, $my_file );
|
1387 |
wp_cache_debug( 'wp_cache_replace_line: moved ' . $tmp_config_filename . ' to ' . $my_file );
|
1388 |
|
1389 |
+
if ( function_exists( 'opcache_invalidate' ) ) {
|
1390 |
@opcache_invalidate( $my_file );
|
1391 |
}
|
1392 |
|
1397 |
static $did_wp_footer = false;
|
1398 |
global $wp_super_cache_comments;
|
1399 |
|
1400 |
+
if ( ! defined( 'WPSCSHUTDOWNMESSAGE' ) || ( isset( $wp_super_cache_comments ) && ! $wp_super_cache_comments ) ) {
|
1401 |
return;
|
1402 |
}
|
1403 |
|
1426 |
|
1427 |
wp_cache_debug( 'In WP Cache Phase 2', 5 );
|
1428 |
|
1429 |
+
$wp_cache_gmt_offset = get_option( 'gmt_offset' ); // caching for later use when wpdb is gone. https://wordpress.org/support/topic/224349
|
1430 |
$wp_cache_blog_charset = get_option( 'blog_charset' );
|
1431 |
|
1432 |
wp_cache_mutex_init();
|
1468 |
if ( ( $_SERVER['REQUEST_METHOD'] !== 'POST' && empty( $_POST ) ) && $super_cache_enabled && $cache_rebuild_files ) {
|
1469 |
$user_info = wp_cache_get_cookies_values();
|
1470 |
|
1471 |
+
if ( empty( $user_info )
|
1472 |
|| true === apply_filters( 'do_createsupercache', $user_info )
|
1473 |
) {
|
1474 |
wpcache_do_rebuild( get_current_url_supercache_dir() );
|
1514 |
add_action( 'transition_post_status', 'wpsc_post_transition', 10, 3 );
|
1515 |
|
1516 |
// Cron hooks
|
1517 |
+
add_action( 'wp_cache_gc', 'wp_cache_gc_cron' );
|
1518 |
add_action( 'wp_cache_gc_watcher', 'wp_cache_gc_watcher' );
|
1519 |
|
1520 |
$done = true;
|
1524 |
global $do_rebuild_list, $cache_path, $wpsc_file_mtimes;
|
1525 |
wp_cache_debug( "wpcache_do_rebuild: doing rebuild for $dir" );
|
1526 |
|
1527 |
+
if ( ! is_dir( $dir ) ) {
|
1528 |
wp_cache_debug( "wpcache_do_rebuild: exiting as directory is not a directory: $dir" );
|
1529 |
return false;
|
1530 |
}
|
1541 |
}
|
1542 |
|
1543 |
$protected = wpsc_get_protected_directories();
|
1544 |
+
foreach ( $protected as $id => $directory ) {
|
1545 |
$protected[ $id ] = wpsc_get_realpath( $directory );
|
1546 |
}
|
1547 |
|
1555 |
return false;
|
1556 |
}
|
1557 |
|
1558 |
+
if ( ! is_dir( $dir ) ) {
|
1559 |
wp_cache_debug( "wpcache_do_rebuild: exiting as directory is not a directory: $dir" );
|
1560 |
return false;
|
1561 |
}
|
1566 |
return false;
|
1567 |
}
|
1568 |
|
1569 |
+
$dir = trailingslashit( $dir );
|
1570 |
$wpsc_file_mtimes = array();
|
1571 |
while ( ( $file = readdir( $dh ) ) !== false ) {
|
1572 |
if ( $file == '.' || $file == '..' || false == is_file( $dir . $file ) ) {
|
1600 |
@unlink( $cache_file );
|
1601 |
wp_cache_debug( "wpcache_do_rebuild: rebuild file rename failed. Deleted rebuild file: $cache_file" );
|
1602 |
} else {
|
1603 |
+
$do_rebuild_list[ $dir ] = 1;
|
1604 |
$wpsc_file_mtimes[ $base_file ] = $mtime;
|
1605 |
wp_cache_debug( "wpcache_do_rebuild: rebuild file renamed: $base_file" );
|
1606 |
}
|
1736 |
return false;
|
1737 |
}
|
1738 |
|
1739 |
+
function wp_cache_is_rejected( $uri ) {
|
1740 |
global $cache_rejected_uri;
|
1741 |
|
1742 |
$auto_rejected = array( '/wp-admin/', 'xmlrpc.php', 'wp-app.php' );
|
1743 |
+
foreach ( $auto_rejected as $u ) {
|
1744 |
+
if ( strstr( $uri, $u ) ) {
|
1745 |
return true; // we don't allow caching of wp-admin for security reasons
|
1746 |
+
}
|
1747 |
}
|
1748 |
+
if ( false == is_array( $cache_rejected_uri ) ) {
|
1749 |
return false;
|
1750 |
+
}
|
1751 |
foreach ( $cache_rejected_uri as $expr ) {
|
1752 |
+
if ( $expr != '' && @preg_match( "~$expr~", $uri ) ) {
|
1753 |
return true;
|
1754 |
+
}
|
1755 |
}
|
1756 |
return false;
|
1757 |
}
|
1759 |
function wp_cache_mutex_init() {
|
1760 |
global $mutex, $wp_cache_mutex_disabled, $use_flock, $blog_cache_dir, $mutex_filename, $sem_id;
|
1761 |
|
1762 |
+
if ( defined( 'WPSC_DISABLE_LOCKING' ) || ( isset( $wp_cache_mutex_disabled ) && $wp_cache_mutex_disabled ) ) {
|
1763 |
return true;
|
1764 |
+
}
|
1765 |
|
1766 |
+
if ( ! is_bool( $use_flock ) ) {
|
1767 |
+
if ( function_exists( 'sem_get' ) ) {
|
1768 |
$use_flock = false;
|
1769 |
+
} else {
|
1770 |
$use_flock = true;
|
1771 |
+
}
|
1772 |
}
|
1773 |
|
1774 |
$mutex = false;
|
1775 |
+
if ( $use_flock ) {
|
1776 |
setup_blog_cache_dir();
|
1777 |
wp_cache_debug( "Created mutex lock on filename: {$blog_cache_dir}{$mutex_filename}", 5 );
|
1778 |
$mutex = @fopen( $blog_cache_dir . $mutex_filename, 'w' );
|
1779 |
} else {
|
1780 |
wp_cache_debug( "Created mutex lock on semaphore: {$sem_id}", 5 );
|
1781 |
+
// PHP 8.0 expects a bool. Prior expects an int.
|
1782 |
+
$auto_release = ( version_compare( phpversion(), '8.0.0', '<=' ) ) ? 1 : true;
|
1783 |
+
$mutex = @sem_get( $sem_id, 1, 0666, $auto_release );
|
1784 |
}
|
1785 |
}
|
1786 |
|
1787 |
function wp_cache_writers_entry() {
|
1788 |
global $mutex, $wp_cache_mutex_disabled, $use_flock;
|
1789 |
|
1790 |
+
if ( defined( 'WPSC_DISABLE_LOCKING' ) || ( isset( $wp_cache_mutex_disabled ) && $wp_cache_mutex_disabled ) ) {
|
1791 |
return true;
|
1792 |
+
}
|
1793 |
|
1794 |
+
if ( ! $mutex ) {
|
1795 |
wp_cache_debug( '(writers entry) mutex lock not created. not caching.', 2 );
|
1796 |
return false;
|
1797 |
}
|
1798 |
|
1799 |
if ( $use_flock ) {
|
1800 |
wp_cache_debug( 'grabbing lock using flock()', 5 );
|
1801 |
+
flock( $mutex, LOCK_EX );
|
1802 |
} else {
|
1803 |
wp_cache_debug( 'grabbing lock using sem_acquire()', 5 );
|
1804 |
+
@sem_acquire( $mutex );
|
1805 |
}
|
1806 |
|
1807 |
return true;
|
1810 |
function wp_cache_writers_exit() {
|
1811 |
global $mutex, $wp_cache_mutex_disabled, $use_flock;
|
1812 |
|
1813 |
+
if ( defined( 'WPSC_DISABLE_LOCKING' ) || ( isset( $wp_cache_mutex_disabled ) && $wp_cache_mutex_disabled ) ) {
|
1814 |
return true;
|
1815 |
+
}
|
1816 |
|
1817 |
+
if ( ! $mutex ) {
|
1818 |
wp_cache_debug( '(writers exit) mutex lock not created. not caching.', 2 );
|
1819 |
return false;
|
1820 |
}
|
1821 |
|
1822 |
if ( $use_flock ) {
|
1823 |
wp_cache_debug( 'releasing lock using flock()', 5 );
|
1824 |
+
flock( $mutex, LOCK_UN );
|
1825 |
} else {
|
1826 |
wp_cache_debug( 'releasing lock using sem_release() and sem_remove()', 5 );
|
1827 |
@sem_release( $mutex );
|
1828 |
+
if ( defined( 'WPSC_REMOVE_SEMAPHORE' ) ) {
|
1829 |
@sem_remove( $mutex );
|
1830 |
+
}
|
1831 |
}
|
1832 |
}
|
1833 |
|
1834 |
function wp_super_cache_query_vars() {
|
1835 |
global $wp_super_cache_query;
|
1836 |
|
1837 |
+
if ( is_search() ) {
|
1838 |
+
$wp_super_cache_query['is_search'] = 1;
|
1839 |
+
}
|
1840 |
+
if ( is_page() ) {
|
1841 |
+
$wp_super_cache_query['is_page'] = 1;
|
1842 |
+
}
|
1843 |
+
if ( is_archive() ) {
|
1844 |
+
$wp_super_cache_query['is_archive'] = 1;
|
1845 |
+
}
|
1846 |
+
if ( is_tag() ) {
|
1847 |
+
$wp_super_cache_query['is_tag'] = 1;
|
1848 |
+
}
|
1849 |
+
if ( is_single() ) {
|
1850 |
+
$wp_super_cache_query['is_single'] = 1;
|
1851 |
+
}
|
1852 |
+
if ( is_category() ) {
|
1853 |
+
$wp_super_cache_query['is_category'] = 1;
|
1854 |
+
}
|
1855 |
+
if ( is_front_page() ) {
|
1856 |
+
$wp_super_cache_query['is_front_page'] = 1;
|
1857 |
+
}
|
1858 |
+
if ( is_home() ) {
|
1859 |
+
$wp_super_cache_query['is_home'] = 1;
|
1860 |
+
}
|
1861 |
+
if ( is_author() ) {
|
1862 |
+
$wp_super_cache_query['is_author'] = 1;
|
1863 |
+
}
|
1864 |
|
1865 |
// REST API
|
1866 |
+
if ( ( defined( 'REST_REQUEST' ) && REST_REQUEST ) ||
|
1867 |
+
( defined( 'JSON_REQUEST' ) && JSON_REQUEST ) ||
|
1868 |
+
( defined( 'WC_API_REQUEST' ) && WC_API_REQUEST )
|
1869 |
) {
|
1870 |
+
$wp_super_cache_query['is_rest'] = 1;
|
1871 |
}
|
1872 |
|
1873 |
// Feeds, sitemaps and robots.txt
|
1874 |
if ( is_feed() ) {
|
1875 |
+
$wp_super_cache_query['is_feed'] = 1;
|
1876 |
if ( get_query_var( 'feed' ) == 'sitemap' ) {
|
1877 |
+
$wp_super_cache_query['is_sitemap'] = 1;
|
1878 |
}
|
1879 |
} elseif ( get_query_var( 'sitemap' ) || get_query_var( 'xsl' ) || get_query_var( 'xml_sitemap' ) ) {
|
1880 |
+
$wp_super_cache_query['is_feed'] = 1;
|
1881 |
+
$wp_super_cache_query['is_sitemap'] = 1;
|
1882 |
} elseif ( is_robots() ) {
|
1883 |
+
$wp_super_cache_query['is_robots'] = 1;
|
1884 |
}
|
1885 |
|
1886 |
// Reset everything if it's 404
|
1887 |
+
if ( is_404() ) {
|
1888 |
$wp_super_cache_query = array( 'is_404' => 1 );
|
1889 |
+
}
|
1890 |
|
1891 |
return $wp_super_cache_query;
|
1892 |
}
|
1893 |
|
1894 |
function wpsc_catch_status_header( $status_header, $code ) {
|
1895 |
|
1896 |
+
if ( $code != 200 ) {
|
1897 |
wpsc_catch_http_status_code( $code );
|
1898 |
+
}
|
1899 |
|
1900 |
return $status_header;
|
1901 |
}
|
1904 |
global $wp_super_cache_query;
|
1905 |
|
1906 |
if ( in_array( intval( $status ), array( 301, 302, 303, 307 ) ) ) {
|
1907 |
+
$wp_super_cache_query['is_redirect'] = 1;
|
1908 |
} elseif ( $status == 304 ) {
|
1909 |
+
$wp_super_cache_query['is_304'] = 1;
|
1910 |
} elseif ( $status == 404 ) {
|
1911 |
+
$wp_super_cache_query['is_404'] = 1;
|
1912 |
}
|
1913 |
|
1914 |
return $status;
|
1922 |
}
|
1923 |
|
1924 |
if ( $error['type'] & ( E_ERROR | E_CORE_ERROR | E_PARSE | E_COMPILE_ERROR | E_USER_ERROR ) ) {
|
1925 |
+
$wp_super_cache_query['is_fatal_error'] = 1;
|
1926 |
return true;
|
1927 |
}
|
1928 |
|
1931 |
|
1932 |
function wp_cache_ob_callback( $buffer ) {
|
1933 |
global $wp_cache_pages, $wp_query, $wp_super_cache_query, $cache_acceptable_files, $wp_cache_no_cache_for_get, $wp_cache_request_uri, $do_rebuild_list, $wpsc_file_mtimes, $wpsc_save_headers, $super_cache_enabled;
|
1934 |
+
$script = basename( $_SERVER['PHP_SELF'] );
|
1935 |
|
1936 |
// All the things that can stop a page being cached
|
1937 |
$cache_this_page = true;
|
1939 |
if ( wpsc_is_fatal_error() ) {
|
1940 |
wp_cache_debug( 'wp_cache_ob_callback: PHP Fatal error occurred. Not caching incomplete page.' );
|
1941 |
$cache_this_page = false;
|
1942 |
+
} elseif ( empty( $wp_super_cache_query ) && ! empty( $buffer ) && is_object( $wp_query ) && method_exists( $wp_query, 'get' ) ) {
|
1943 |
$wp_super_cache_query = wp_super_cache_query_vars();
|
1944 |
} elseif ( empty( $wp_super_cache_query ) && function_exists( 'http_response_code' ) ) {
|
1945 |
wpsc_catch_http_status_code( http_response_code() );
|
1953 |
} elseif ( $wp_cache_no_cache_for_get && wpsc_is_get_query() ) {
|
1954 |
wp_cache_debug( 'Non empty GET request. Caching disabled on settings page. ' . wpsc_dump_get_request(), 1 );
|
1955 |
$cache_this_page = false;
|
1956 |
+
} elseif ( $_SERVER['REQUEST_METHOD'] == 'POST' || ! empty( $_POST ) || get_option( 'gzipcompression' ) ) {
|
1957 |
wp_cache_debug( 'Not caching POST request.', 5 );
|
1958 |
$cache_this_page = false;
|
1959 |
+
} elseif ( $_SERVER['REQUEST_METHOD'] == 'PUT' ) {
|
1960 |
wp_cache_debug( 'Not caching PUT request.', 5 );
|
1961 |
$cache_this_page = false;
|
1962 |
+
} elseif ( $_SERVER['REQUEST_METHOD'] == 'DELETE' ) {
|
1963 |
wp_cache_debug( 'Not caching DELETE request.', 5 );
|
1964 |
$cache_this_page = false;
|
1965 |
+
} elseif ( isset( $_GET['preview'] ) ) {
|
1966 |
wp_cache_debug( 'Not caching preview post.', 2 );
|
1967 |
$cache_this_page = false;
|
1968 |
+
} elseif ( ! in_array( $script, (array) $cache_acceptable_files ) && wp_cache_is_rejected( $wp_cache_request_uri ) ) {
|
1969 |
wp_cache_debug( 'URI rejected. Not Caching', 2 );
|
1970 |
$cache_this_page = false;
|
1971 |
} elseif ( wp_cache_user_agent_is_rejected() ) {
|
1972 |
wp_cache_debug( "USER AGENT ({$_SERVER[ 'HTTP_USER_AGENT' ]}) rejected. Not Caching", 4 );
|
1973 |
$cache_this_page = false;
|
1974 |
+
} elseif ( isset( $wp_cache_pages['single'] ) && $wp_cache_pages['single'] == 1 && isset( $wp_super_cache_query['is_single'] ) ) {
|
1975 |
wp_cache_debug( 'Not caching single post.', 2 );
|
1976 |
$cache_this_page = false;
|
1977 |
+
} elseif ( isset( $wp_cache_pages['pages'] ) && $wp_cache_pages['pages'] == 1 && isset( $wp_super_cache_query['is_page'] ) ) {
|
1978 |
wp_cache_debug( 'Not caching single page.', 2 );
|
1979 |
$cache_this_page = false;
|
1980 |
+
} elseif ( isset( $wp_cache_pages['archives'] ) && $wp_cache_pages['archives'] == 1 && isset( $wp_super_cache_query['is_archive'] ) ) {
|
1981 |
wp_cache_debug( 'Not caching archive page.', 2 );
|
1982 |
$cache_this_page = false;
|
1983 |
+
} elseif ( isset( $wp_cache_pages['tag'] ) && $wp_cache_pages['tag'] == 1 && isset( $wp_super_cache_query['is_tag'] ) ) {
|
1984 |
wp_cache_debug( 'Not caching tag page.', 2 );
|
1985 |
$cache_this_page = false;
|
1986 |
+
} elseif ( isset( $wp_cache_pages['category'] ) && $wp_cache_pages['category'] == 1 && isset( $wp_super_cache_query['is_category'] ) ) {
|
1987 |
wp_cache_debug( 'Not caching category page.', 2 );
|
1988 |
$cache_this_page = false;
|
1989 |
+
} elseif ( isset( $wp_cache_pages['frontpage'] ) && $wp_cache_pages['frontpage'] == 1 && isset( $wp_super_cache_query['is_front_page'] ) ) {
|
1990 |
wp_cache_debug( 'Not caching front page.', 2 );
|
1991 |
$cache_this_page = false;
|
1992 |
+
} elseif ( isset( $wp_cache_pages['home'] ) && $wp_cache_pages['home'] == 1 && isset( $wp_super_cache_query['is_home'] ) ) {
|
1993 |
wp_cache_debug( 'Not caching home page.', 2 );
|
1994 |
$cache_this_page = false;
|
1995 |
+
} elseif ( isset( $wp_cache_pages['search'] ) && $wp_cache_pages['search'] == 1 && isset( $wp_super_cache_query['is_search'] ) ) {
|
1996 |
wp_cache_debug( 'Not caching search page.', 2 );
|
1997 |
$cache_this_page = false;
|
1998 |
+
} elseif ( isset( $wp_cache_pages['author'] ) && $wp_cache_pages['author'] == 1 && isset( $wp_super_cache_query['is_author'] ) ) {
|
1999 |
wp_cache_debug( 'Not caching author page.', 2 );
|
2000 |
$cache_this_page = false;
|
2001 |
+
} elseif ( isset( $wp_cache_pages['feed'] ) && $wp_cache_pages['feed'] == 1 && isset( $wp_super_cache_query['is_feed'] ) ) {
|
2002 |
wp_cache_debug( 'Not caching feed.', 2 );
|
2003 |
$cache_this_page = false;
|
2004 |
+
} elseif ( isset( $wp_super_cache_query['is_rest'] ) ) {
|
2005 |
wp_cache_debug( 'REST API detected. Caching disabled.' );
|
2006 |
$cache_this_page = false;
|
2007 |
+
} elseif ( isset( $wp_super_cache_query['is_robots'] ) ) {
|
2008 |
wp_cache_debug( 'robots.txt detected. Caching disabled.' );
|
2009 |
$cache_this_page = false;
|
2010 |
+
} elseif ( isset( $wp_super_cache_query['is_redirect'] ) ) {
|
2011 |
wp_cache_debug( 'Redirect detected. Caching disabled.' );
|
2012 |
$cache_this_page = false;
|
2013 |
+
} elseif ( isset( $wp_super_cache_query['is_304'] ) ) {
|
2014 |
wp_cache_debug( 'HTTP 304 (Not Modified) sent. Caching disabled.' );
|
2015 |
$cache_this_page = false;
|
2016 |
+
} elseif ( empty( $wp_super_cache_query ) && ! empty( $buffer ) && apply_filters( 'wpsc_only_cache_known_pages', 1 ) ) {
|
2017 |
wp_cache_debug( 'wp_cache_ob_callback: wp_super_cache_query is empty. Not caching unknown page type. Return 0 to the wpsc_only_cache_known_pages filter to cache this page.' );
|
2018 |
$cache_this_page = false;
|
2019 |
} elseif ( wpsc_is_caching_user_disabled() ) {
|
2024 |
$cache_this_page = false;
|
2025 |
}
|
2026 |
|
2027 |
+
if ( isset( $wpsc_save_headers ) && $wpsc_save_headers ) {
|
2028 |
$super_cache_enabled = false; // use standard caching to record headers
|
2029 |
+
}
|
2030 |
|
2031 |
if ( $cache_this_page ) {
|
2032 |
|
2035 |
$buffer = wp_cache_get_ob( $buffer );
|
2036 |
wp_cache_shutdown_callback();
|
2037 |
|
2038 |
+
if ( ! empty( $wpsc_file_mtimes ) && is_array( $wpsc_file_mtimes ) ) {
|
2039 |
+
foreach ( $wpsc_file_mtimes as $cache_file => $old_mtime ) {
|
2040 |
if ( $old_mtime == @filemtime( $cache_file ) ) {
|
2041 |
wp_cache_debug( "wp_cache_ob_callback deleting unmodified rebuilt cache file: $cache_file" );
|
2042 |
if ( wp_cache_confirm_delete( $cache_file ) ) {
|
2047 |
}
|
2048 |
return $buffer;
|
2049 |
} else {
|
2050 |
+
if ( ! empty( $do_rebuild_list ) && is_array( $do_rebuild_list ) ) {
|
2051 |
+
foreach ( $do_rebuild_list as $dir => $n ) {
|
2052 |
if ( wp_cache_confirm_delete( $dir ) ) {
|
2053 |
wp_cache_debug( 'wp_cache_ob_callback clearing rebuilt files in ' . $dir );
|
2054 |
wpsc_delete_files( $dir );
|
2063 |
global $wp_cache_gmt_offset, $wp_super_cache_comments;
|
2064 |
global $cache_enabled, $super_cache_enabled;
|
2065 |
|
2066 |
+
if ( false == isset( $wp_super_cache_comments ) ) {
|
2067 |
$wp_super_cache_comments = 1;
|
2068 |
+
}
|
2069 |
|
2070 |
+
if ( $wp_super_cache_comments == 0 ) {
|
2071 |
return false;
|
2072 |
+
}
|
2073 |
|
2074 |
+
$timestamp = gmdate( 'Y-m-d H:i:s', ( time() + ( $wp_cache_gmt_offset * 3600 ) ) );
|
2075 |
if ( $cache_enabled || $super_cache_enabled ) {
|
2076 |
$msg = "Cached page generated by WP-Super-Cache on $timestamp";
|
2077 |
} else {
|
2079 |
}
|
2080 |
|
2081 |
if ( strpos( $buffer, '<html' ) === false ) {
|
2082 |
+
wp_cache_debug( site_url( $_SERVER['REQUEST_URI'] ) . ' - ' . $msg );
|
2083 |
return false;
|
2084 |
}
|
2085 |
|
2089 |
function wp_cache_add_to_buffer( &$buffer, $text ) {
|
2090 |
global $wp_super_cache_comments;
|
2091 |
|
2092 |
+
if ( false == isset( $wp_super_cache_comments ) ) {
|
2093 |
$wp_super_cache_comments = 1;
|
2094 |
+
}
|
2095 |
|
2096 |
+
if ( $wp_super_cache_comments == 0 ) {
|
2097 |
return false;
|
2098 |
+
}
|
2099 |
|
2100 |
if ( strpos( $buffer, '<html' ) === false ) {
|
2101 |
+
wp_cache_debug( site_url( $_SERVER['REQUEST_URI'] ) . ' - ' . $text );
|
2102 |
return false;
|
2103 |
}
|
2104 |
|
2105 |
$buffer .= "\n<!-- $text -->";
|
2106 |
}
|
2107 |
|
|
|
2108 |
/*
|
2109 |
* If dynamic caching is enabled then run buffer through wpsc_cachedata filter before returning it.
|
2110 |
* or we'll return template tags to visitors.
|
2120 |
}
|
2121 |
}
|
2122 |
|
2123 |
+
function wp_cache_get_ob( &$buffer ) {
|
2124 |
global $cache_enabled, $cache_path, $cache_filename, $wp_start_time, $supercachedir;
|
2125 |
global $new_cache, $wp_cache_meta, $cache_compression, $wp_super_cache_query;
|
2126 |
global $wp_cache_gzip_encoding, $super_cache_enabled;
|
2129 |
global $wp_cache_not_logged_in, $cache_max_time;
|
2130 |
global $wp_cache_is_home, $wp_cache_front_page_checks, $wp_cache_mfunc_enabled;
|
2131 |
|
2132 |
+
if ( isset( $wp_cache_mfunc_enabled ) == false ) {
|
2133 |
$wp_cache_mfunc_enabled = 0;
|
2134 |
+
}
|
2135 |
|
2136 |
+
$new_cache = true;
|
2137 |
$wp_cache_meta = array();
|
2138 |
|
2139 |
+
/*
|
2140 |
+
Mode paranoic, check for closing tags
|
2141 |
* we avoid caching incomplete files */
|
2142 |
if ( $buffer == '' ) {
|
2143 |
$new_cache = false;
|
2144 |
+
if ( isset( $GLOBALS['wp_super_cache_debug'] ) && $GLOBALS['wp_super_cache_debug'] ) {
|
2145 |
wp_cache_debug( "Buffer is blank. Output buffer may have been corrupted by another plugin or this is a redirected URL. Look for text 'ob_start' in the files of your plugins directory.", 2 );
|
2146 |
+
wp_cache_add_to_buffer( $buffer, 'Page not cached by WP Super Cache. Blank Page. Check output buffer usage by plugins.' );
|
2147 |
}
|
2148 |
}
|
2149 |
|
2150 |
+
if ( isset( $wp_super_cache_query['is_404'] ) && false == apply_filters( 'wpsupercache_404', false ) ) {
|
2151 |
$new_cache = false;
|
2152 |
+
if ( isset( $GLOBALS['wp_super_cache_debug'] ) && $GLOBALS['wp_super_cache_debug'] ) {
|
2153 |
wp_cache_debug( '404 file not found not cached', 2 );
|
2154 |
+
wp_cache_add_to_buffer( $buffer, 'Page not cached by WP Super Cache. 404.' );
|
2155 |
}
|
2156 |
}
|
2157 |
|
2158 |
+
if ( ! preg_match( apply_filters( 'wp_cache_eof_tags', '/(<\/html>|<\/rss>|<\/feed>|<\/urlset|<\?xml)/i' ), $buffer ) ) {
|
2159 |
$new_cache = false;
|
2160 |
+
if ( isset( $GLOBALS['wp_super_cache_debug'] ) && $GLOBALS['wp_super_cache_debug'] ) {
|
2161 |
wp_cache_debug( 'No closing html tag. Not caching.', 2 );
|
2162 |
+
wp_cache_add_to_buffer( $buffer, 'Page not cached by WP Super Cache. No closing HTML tag. Check your theme.' );
|
2163 |
}
|
2164 |
}
|
2165 |
|
2166 |
+
if ( ! $new_cache ) {
|
2167 |
return wp_cache_maybe_dynamic( $buffer );
|
2168 |
+
}
|
2169 |
|
2170 |
+
$duration = wp_cache_microtime_diff( $wp_start_time, microtime() );
|
2171 |
+
$duration = sprintf( '%0.3f', $duration );
|
2172 |
wp_cache_add_to_buffer( $buffer, "Dynamic page generated in $duration seconds." );
|
2173 |
|
2174 |
+
if ( ! wp_cache_writers_entry() ) {
|
2175 |
+
wp_cache_add_to_buffer( $buffer, 'Page not cached by WP Super Cache. Could not get mutex lock.' );
|
2176 |
wp_cache_debug( 'Could not get mutex lock. Not caching.', 1 );
|
2177 |
return wp_cache_maybe_dynamic( $buffer );
|
2178 |
}
|
2179 |
|
2180 |
+
if ( $wp_cache_not_logged_in && isset( $wp_super_cache_query['is_feed'] ) ) {
|
2181 |
wp_cache_debug( 'Feed detected. Writing wpcache cache files.', 5 );
|
2182 |
$wp_cache_not_logged_in = false;
|
2183 |
}
|
2184 |
|
2185 |
$home_url = parse_url( trailingslashit( get_bloginfo( 'url' ) ) );
|
2186 |
|
2187 |
+
$dir = get_current_url_supercache_dir();
|
2188 |
+
$supercachedir = $cache_path . 'supercache/' . preg_replace( '/:.*$/', '', $home_url['host'] );
|
2189 |
+
if ( wpsc_is_get_query() || isset( $wp_super_cache_query['is_feed'] ) || ( $super_cache_enabled == true && is_dir( substr( $supercachedir, 0, -1 ) . '.disabled' ) ) ) {
|
2190 |
wp_cache_debug( 'Supercache disabled: GET or feed detected or disabled by config.', 2 );
|
2191 |
$super_cache_enabled = false;
|
2192 |
}
|
2200 |
$supercacheonly = false;
|
2201 |
}
|
2202 |
|
2203 |
+
if ( $super_cache_enabled ) {
|
2204 |
if ( wp_cache_get_cookies_values() == '' && ! wpsc_is_get_query() ) {
|
2205 |
wp_cache_debug( 'Anonymous user detected. Only creating Supercache file.', 3 );
|
2206 |
$supercacheonly = true;
|
2210 |
$cache_error = '';
|
2211 |
if ( wpsc_is_caching_user_disabled() ) {
|
2212 |
$super_cache_enabled = false;
|
2213 |
+
$cache_enabled = false;
|
2214 |
+
$cache_error = 'Not caching requests by known users. (See Advanced Settings page)';
|
2215 |
wp_cache_debug( 'Not caching for known user.', 5 );
|
2216 |
}
|
2217 |
|
2218 |
+
if ( ! $cache_enabled ) {
|
2219 |
wp_cache_debug( 'Cache is not enabled. Sending buffer to browser.', 5 );
|
2220 |
wp_cache_writers_exit();
|
2221 |
wp_cache_add_to_buffer( $buffer, "Page not cached by WP Super Cache. Check your settings page. $cache_error" );
|
2222 |
if ( $wp_cache_mfunc_enabled == 1 ) {
|
2223 |
global $wp_super_cache_late_init;
|
2224 |
+
if ( false == isset( $wp_super_cache_late_init ) || ( isset( $wp_super_cache_late_init ) && $wp_super_cache_late_init == 0 ) ) {
|
2225 |
wp_cache_add_to_buffer( $buffer, 'Super Cache dynamic page detected but $wp_super_cache_late_init not set. See the readme.txt for further details.' );
|
2226 |
+
}
|
2227 |
}
|
2228 |
|
2229 |
return wp_cache_maybe_dynamic( $buffer );
|
2230 |
}
|
2231 |
|
2232 |
+
if ( @is_dir( $dir ) == false ) {
|
2233 |
@wp_mkdir_p( $dir );
|
2234 |
+
}
|
2235 |
$dir = wpsc_get_realpath( $dir );
|
2236 |
|
2237 |
if ( ! $dir ) {
|
2258 |
}
|
2259 |
} else {
|
2260 |
$user_info = wp_cache_get_cookies_values();
|
2261 |
+
$do_cache = apply_filters( 'do_createsupercache', $user_info );
|
2262 |
if (
|
2263 |
$super_cache_enabled &&
|
2264 |
(
|
2266 |
$do_cache === true
|
2267 |
)
|
2268 |
) {
|
2269 |
+
$cache_fname = $dir . supercache_filename();
|
2270 |
$tmp_cache_filename = $dir . uniqid( mt_rand(), true ) . '.tmp';
|
2271 |
+
$fr2 = @fopen( $tmp_cache_filename, 'w' );
|
2272 |
+
if ( ! $fr2 ) {
|
2273 |
wp_cache_debug( 'Error. Supercache could not write to ' . str_replace( ABSPATH, '', $tmp_cache_filename ), 1 );
|
2274 |
wp_cache_add_to_buffer( $buffer, "File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $tmp_cache_filename ) );
|
2275 |
@fclose( $fr );
|
2283 |
$wp_cache_mfunc_enabled == 0
|
2284 |
)
|
2285 |
) { // don't want to store compressed files if using dynamic content
|
2286 |
+
$gz = @fopen( $tmp_cache_filename . '.gz', 'w' );
|
2287 |
+
if ( ! $gz ) {
|
2288 |
+
wp_cache_debug( 'Error. Supercache could not write to ' . str_replace( ABSPATH, '', $tmp_cache_filename ) . '.gz', 1 );
|
2289 |
+
wp_cache_add_to_buffer( $buffer, "File not cached! Super Cache Couldn't write to: " . str_replace( ABSPATH, '', $tmp_cache_filename ) . '.gz' );
|
2290 |
@fclose( $fr );
|
2291 |
@unlink( $tmp_wpcache_filename );
|
2292 |
@fclose( $fr2 );
|
2299 |
}
|
2300 |
|
2301 |
$added_cache = 0;
|
2302 |
+
$oc_key = get_oc_key();
|
2303 |
+
$buffer = apply_filters( 'wpsupercache_buffer', $buffer );
|
2304 |
wp_cache_append_tag( $buffer );
|
2305 |
|
2306 |
/*
|
2308 |
* the wpsc_cachedata filter. Buffer is then returned to the visitor.
|
2309 |
*/
|
2310 |
if ( $wp_cache_mfunc_enabled == 1 ) {
|
2311 |
+
if ( preg_match( '/<!--mclude|<!--mfunc|<!--dynamic-cached-content-->/', $buffer ) ) { // Dynamic content
|
2312 |
wp_cache_debug( 'mfunc/mclude/dynamic-cached-content tags have been retired. Please update your theme. See docs for updates.' );
|
2313 |
+
wp_cache_add_to_buffer( $buffer, 'Warning! Obsolete mfunc/mclude/dynamic-cached-content tags found. Please update your theme. See http://ocaoimh.ie/y/5b for more information.' );
|
2314 |
}
|
2315 |
|
2316 |
global $wp_super_cache_late_init;
|
2317 |
+
if ( false == isset( $wp_super_cache_late_init ) || ( isset( $wp_super_cache_late_init ) && $wp_super_cache_late_init == 0 ) ) {
|
2318 |
wp_cache_add_to_buffer( $buffer, 'Super Cache dynamic page detected but late init not set. See the readme.txt for further details.' );
|
2319 |
+
}
|
2320 |
|
2321 |
if ( $fr ) { // wpcache caching
|
2322 |
wp_cache_debug( 'Writing dynamic buffer to wpcache file.' );
|
2323 |
+
wp_cache_add_to_buffer( $buffer, 'Dynamic WPCache Super Cache' );
|
2324 |
fputs( $fr, '<?php die(); ?>' . $buffer );
|
2325 |
} elseif ( isset( $fr2 ) ) { // supercache active
|
2326 |
wp_cache_debug( 'Writing dynamic buffer to supercache file.' );
|
2327 |
+
wp_cache_add_to_buffer( $buffer, 'Dynamic Super Cache' );
|
2328 |
fputs( $fr2, $buffer );
|
2329 |
}
|
2330 |
+
$wp_cache_meta['dynamic'] = true;
|
2331 |
if ( $wp_cache_mfunc_enabled == 1 && do_cacheaction( 'wpsc_cachedata_safety', 0 ) === 1 ) {
|
2332 |
$buffer = do_cacheaction( 'wpsc_cachedata', $buffer ); // dynamic content for display
|
2333 |
}
|
2334 |
|
2335 |
if ( $cache_compression && $wp_cache_gzip_encoding ) {
|
2336 |
wp_cache_debug( 'Gzipping dynamic buffer for display.', 5 );
|
2337 |
+
wp_cache_add_to_buffer( $buffer, 'Compression = gzip' );
|
2338 |
$gzdata = gzencode( $buffer, 6, FORCE_GZIP );
|
2339 |
$gzsize = function_exists( 'mb_strlen' ) ? mb_strlen( $gzdata, '8bit' ) : strlen( $gzdata );
|
2340 |
}
|
2349 |
$vary_header = 'Accept-Encoding, Cookie';
|
2350 |
}
|
2351 |
if ( $vary_header ) {
|
2352 |
+
$wp_cache_meta['headers']['Vary'] = 'Vary: ' . $vary_header;
|
2353 |
}
|
2354 |
if ( $gz || $wp_cache_gzip_encoding ) {
|
2355 |
wp_cache_debug( 'Gzipping buffer.', 5 );
|
2356 |
+
wp_cache_add_to_buffer( $buffer, 'Compression = gzip' );
|
2357 |
$gzdata = gzencode( $buffer, 6, FORCE_GZIP );
|
2358 |
$gzsize = function_exists( 'mb_strlen' ) ? mb_strlen( $gzdata, '8bit' ) : strlen( $gzdata );
|
2359 |
|
2360 |
+
$wp_cache_meta['headers']['Content-Encoding'] = 'Content-Encoding: ' . $wp_cache_gzip_encoding;
|
2361 |
// Return uncompressed data & store compressed for later use
|
2362 |
if ( $fr ) {
|
2363 |
wp_cache_debug( 'Writing gzipped buffer to wp-cache cache file.', 5 );
|
2364 |
+
fputs( $fr, '<?php die(); ?>' . $gzdata );
|
2365 |
}
|
2366 |
} else { // no compression
|
2367 |
if ( $fr ) {
|
2368 |
wp_cache_debug( 'Writing non-gzipped buffer to wp-cache cache file.' );
|
2369 |
+
fputs( $fr, '<?php die(); ?>' . $buffer );
|
2370 |
}
|
2371 |
}
|
2372 |
if ( $fr2 ) {
|
2373 |
wp_cache_debug( 'Writing non-gzipped buffer to supercache file.' );
|
2374 |
+
wp_cache_add_to_buffer( $buffer, 'super cache' );
|
2375 |
+
fputs( $fr2, $buffer );
|
2376 |
}
|
2377 |
if ( isset( $gzdata ) && $gz ) {
|
2378 |
wp_cache_debug( 'Writing gzipped buffer to supercache file.' );
|
2379 |
+
fwrite( $gz, $gzdata );
|
2380 |
}
|
2381 |
}
|
2382 |
|
2406 |
|
2407 |
if ( $fr2 ) {
|
2408 |
fclose( $fr2 );
|
2409 |
+
if ( $wp_cache_front_page_checks && $cache_fname == $supercachedir . $home_url['path'] . supercache_filename() && ! ( $wp_cache_is_home ) ) {
|
2410 |
wp_cache_writers_exit();
|
2411 |
wp_cache_debug( 'Warning! Not writing another page to front page cache.', 1 );
|
2412 |
return $buffer;
|
2439 |
|
2440 |
if ( $added_cache && isset( $wp_supercache_cache_list ) && $wp_supercache_cache_list ) {
|
2441 |
update_option( 'wpsupercache_count', ( get_option( 'wpsupercache_count' ) + 1 ) );
|
2442 |
+
$last_urls = (array) get_option( 'supercache_last_cached' );
|
2443 |
+
if ( count( $last_urls ) >= 10 ) {
|
2444 |
$last_urls = array_slice( $last_urls, 1, 9 );
|
2445 |
+
}
|
2446 |
+
$last_urls[] = array(
|
2447 |
+
'url' => preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', $_SERVER['REQUEST_URI'] ),
|
2448 |
+
'date' => date( 'Y-m-d H:i:s' ),
|
2449 |
+
);
|
2450 |
update_option( 'supercache_last_cached', $last_urls );
|
2451 |
}
|
2452 |
wp_cache_writers_exit();
|
2453 |
+
if ( ! headers_sent() && $wp_cache_gzip_encoding && $gzdata ) {
|
2454 |
wp_cache_debug( 'Writing gzip content headers. Sending buffer to browser', 5 );
|
2455 |
header( 'Content-Encoding: ' . $wp_cache_gzip_encoding );
|
2456 |
if ( defined( 'WPSC_VARY_HEADER' ) ) {
|
2473 |
}
|
2474 |
}
|
2475 |
|
2476 |
+
function wp_cache_phase2_clean_cache( $file_prefix ) {
|
2477 |
global $wpdb, $blog_cache_dir;
|
2478 |
|
2479 |
+
if ( ! wp_cache_writers_entry() ) {
|
2480 |
return false;
|
2481 |
+
}
|
2482 |
wp_cache_debug( "wp_cache_phase2_clean_cache: Cleaning cache in $blog_cache_dir" );
|
2483 |
if ( $handle = @opendir( $blog_cache_dir ) ) {
|
2484 |
+
while ( false !== ( $file = @readdir( $handle ) ) ) {
|
2485 |
if ( strpos( $file, $file_prefix ) !== false ) {
|
2486 |
if ( strpos( $file, '.html' ) ) {
|
2487 |
// delete old wpcache files immediately
|
2488 |
wp_cache_debug( "wp_cache_phase2_clean_cache: Deleting obsolete wpcache cache+meta files: $file" );
|
2489 |
+
@unlink( $blog_cache_dir . $file );
|
2490 |
@unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) );
|
2491 |
} else {
|
2492 |
$meta = json_decode( wp_cache_get_legacy_cache( $blog_cache_dir . 'meta/' . $file ), true );
|
2493 |
+
if ( $meta['blog_id'] == $wpdb->blogid ) {
|
2494 |
@unlink( $blog_cache_dir . $file );
|
2495 |
@unlink( $blog_cache_dir . 'meta/' . $file );
|
2496 |
}
|
2497 |
}
|
2498 |
}
|
2499 |
}
|
2500 |
+
closedir( $handle );
|
2501 |
do_action( 'wp_cache_cleared' );
|
2502 |
}
|
2503 |
wp_cache_writers_exit();
|
2512 |
}
|
2513 |
|
2514 |
global $cache_max_time, $cache_path, $blog_cache_dir;
|
2515 |
+
static $log = 0;
|
2516 |
static $protected_directories = '';
|
2517 |
|
2518 |
+
$dir = $directory;
|
2519 |
$directory = wpsc_get_realpath( $directory );
|
2520 |
if ( $directory == '' ) {
|
2521 |
wp_cache_debug( "prune_super_cache: exiting as file/directory does not exist : $dir" );
|
2530 |
wp_cache_debug( "prune_super_cache: exiting as file/dir does not exist: $directory" );
|
2531 |
return $log;
|
2532 |
}
|
2533 |
+
if ( ! isset( $cache_max_time ) ) {
|
2534 |
$cache_max_time = 3600;
|
2535 |
+
}
|
2536 |
|
2537 |
$now = time();
|
2538 |
|
2540 |
$protected_directories = wpsc_get_protected_directories();
|
2541 |
}
|
2542 |
|
2543 |
+
if ( is_dir( $directory ) ) {
|
2544 |
+
if ( $dh = @opendir( $directory ) ) {
|
2545 |
$directory = trailingslashit( $directory );
|
2546 |
+
while ( ( $entry = @readdir( $dh ) ) !== false ) {
|
2547 |
+
if ( $entry == '.' || $entry == '..' ) {
|
2548 |
continue;
|
2549 |
+
}
|
2550 |
$entry = $directory . $entry;
|
2551 |
prune_super_cache( $entry, $force, $rename );
|
2552 |
// If entry is a directory, AND it's not a protected one, AND we're either forcing the delete, OR the file is out of date,
|
2553 |
+
if ( is_dir( $entry ) && ! in_array( $entry, $protected_directories ) && ( $force || @filemtime( $entry ) + $cache_max_time <= $now ) ) {
|
2554 |
// if the directory isn't empty can't delete it
|
2555 |
+
if ( $handle = @opendir( $entry ) ) {
|
2556 |
$donotdelete = false;
|
2557 |
+
while ( ! $donotdelete && ( $file = @readdir( $handle ) ) !== false ) {
|
2558 |
+
if ( $file == '.' || $file == '..' ) {
|
2559 |
continue;
|
2560 |
+
}
|
2561 |
$donotdelete = true;
|
2562 |
wp_cache_debug( "gc: could not delete $entry as it's not empty: $file", 2 );
|
2563 |
}
|
2564 |
+
closedir( $handle );
|
2565 |
}
|
2566 |
+
if ( $donotdelete ) {
|
2567 |
continue;
|
2568 |
+
}
|
2569 |
+
if ( ! $rename ) {
|
2570 |
@rmdir( $entry );
|
2571 |
$log++;
|
2572 |
if ( $force ) {
|
2579 |
wp_cache_debug( "gc: could not delete $entry as it's protected.", 2 );
|
2580 |
}
|
2581 |
}
|
2582 |
+
closedir( $dh );
|
2583 |
}
|
2584 |
+
} elseif ( is_file( $directory ) && ( $force || @filemtime( $directory ) + $cache_max_time <= $now ) ) {
|
2585 |
$oktodelete = true;
|
2586 |
if ( in_array( $directory, $protected_directories ) ) {
|
2587 |
wp_cache_debug( "gc: could not delete $directory as it's protected.", 2 );
|
2588 |
$oktodelete = false;
|
2589 |
}
|
2590 |
+
if ( $oktodelete && ! $rename ) {
|
2591 |
wp_cache_debug( "prune_super_cache: deleted $directory", 5 );
|
2592 |
@unlink( $directory );
|
2593 |
$log++;
|
2594 |
+
} elseif ( $oktodelete && $rename ) {
|
2595 |
wp_cache_debug( "prune_super_cache: wp_cache_rebuild_or_delete( $directory )", 5 );
|
2596 |
wp_cache_rebuild_or_delete( $directory );
|
2597 |
$log++;
|
2607 |
function wp_cache_rebuild_or_delete( $file ) {
|
2608 |
global $cache_rebuild_files, $cache_path, $file_prefix;
|
2609 |
|
2610 |
+
if ( strpos( $file, '?' ) !== false ) {
|
|
|
2611 |
$file = substr( $file, 0, strpos( $file, '?' ) );
|
2612 |
+
}
|
2613 |
|
2614 |
$file = wpsc_get_realpath( $file );
|
2615 |
|
2624 |
}
|
2625 |
|
2626 |
$protected = wpsc_get_protected_directories();
|
2627 |
+
foreach ( $protected as $id => $directory ) {
|
2628 |
$protected[ $id ] = wpsc_get_realpath( $directory );
|
2629 |
}
|
2630 |
|
2649 |
wp_cache_debug( "rebuild_or_gc: file has disappeared: $file" );
|
2650 |
return false;
|
2651 |
}
|
2652 |
+
if ( $cache_rebuild_files && substr( $file, -14 ) != '.needs-rebuild' ) {
|
2653 |
+
if ( @rename( $file, $file . '.needs-rebuild' ) ) {
|
2654 |
@touch( $file . '.needs-rebuild' );
|
2655 |
wp_cache_debug( "rebuild_or_gc: rename file to {$file}.needs-rebuild", 2 );
|
2656 |
} else {
|
2670 |
global $cache_path, $cache_max_time, $blog_cache_dir, $wp_cache_preload_on;
|
2671 |
|
2672 |
if ( $cache_max_time == 0 ) {
|
2673 |
+
wp_cache_debug( 'wp_cache_phase2_clean_expired: disabled because GC disabled.', 2 );
|
2674 |
return false;
|
2675 |
}
|
2676 |
|
2677 |
clearstatcache();
|
2678 |
+
if ( ! wp_cache_writers_entry() ) {
|
2679 |
return false;
|
2680 |
+
}
|
2681 |
$now = time();
|
2682 |
wp_cache_debug( "Cleaning expired cache files in $blog_cache_dir", 2 );
|
2683 |
$deleted = 0;
|
2684 |
if ( ( $handle = @opendir( $blog_cache_dir ) ) ) {
|
2685 |
+
while ( false !== ( $file = readdir( $handle ) ) ) {
|
2686 |
+
if ( preg_match( "/^$file_prefix/", $file ) &&
|
2687 |
+
( @filemtime( $blog_cache_dir . $file ) + $cache_max_time ) <= $now ) {
|
2688 |
@unlink( $blog_cache_dir . $file );
|
2689 |
@unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) );
|
2690 |
wp_cache_debug( "wp_cache_phase2_clean_expired: Deleting obsolete wpcache cache+meta files: $file" );
|
2691 |
continue;
|
2692 |
}
|
2693 |
+
if ( $file != '.' && $file != '..' ) {
|
2694 |
+
if ( is_dir( $blog_cache_dir . $file ) == false && ( @filemtime( $blog_cache_dir . $file ) + $cache_max_time ) <= $now ) {
|
2695 |
if ( substr( $file, -9 ) != '.htaccess' && $file != 'index.html' ) {
|
2696 |
+
@unlink( $blog_cache_dir . $file );
|
2697 |
wp_cache_debug( "Deleting $blog_cache_dir{$file}, older than $cache_max_time seconds", 5 );
|
2698 |
}
|
2699 |
}
|
2700 |
}
|
2701 |
}
|
2702 |
+
closedir( $handle );
|
2703 |
if ( false == $wp_cache_preload_on || true == $force ) {
|
2704 |
wp_cache_debug( "Doing GC on supercache dir: {$cache_path}supercache", 2 );
|
2705 |
$deleted = prune_super_cache( $cache_path . 'supercache', false, false );
|
2725 |
wp_cache_debug( 'wp_cache_shutdown_callback: Plugin not loaded. Setting feed ttl to 60 seconds.' );
|
2726 |
}
|
2727 |
|
|
|
2728 |
if ( false == $new_cache ) {
|
2729 |
wp_cache_debug( 'wp_cache_shutdown_callback: No cache file created. Returning.' );
|
2730 |
return false;
|
2731 |
}
|
2732 |
|
2733 |
+
$wp_cache_meta['uri'] = $WPSC_HTTP_HOST . preg_replace( '/[ <>\'\"\r\n\t\(\)]/', '', $wp_cache_request_uri ); // To avoid XSS attacks
|
2734 |
+
$wp_cache_meta['blog_id'] = $blog_id;
|
2735 |
+
$wp_cache_meta['post'] = wp_cache_post_id();
|
2736 |
+
$wp_cache_meta['key'] = $wp_cache_key;
|
2737 |
+
$wp_cache_meta = apply_filters( 'wp_cache_meta', $wp_cache_meta );
|
2738 |
|
2739 |
$response = wp_cache_get_response_headers();
|
2740 |
+
foreach ( $response as $key => $value ) {
|
2741 |
+
$wp_cache_meta['headers'][ $key ] = "$key: $value";
|
2742 |
}
|
2743 |
|
2744 |
wp_cache_debug( 'wp_cache_shutdown_callback: collecting meta data.', 2 );
|
2745 |
|
2746 |
+
if ( ! isset( $response['Last-Modified'] ) ) {
|
2747 |
+
$value = gmdate( 'D, d M Y H:i:s' ) . ' GMT';
|
2748 |
+
/*
|
2749 |
+
Dont send this the first time */
|
2750 |
/* @header('Last-Modified: ' . $value); */
|
2751 |
+
$wp_cache_meta['headers']['Last-Modified'] = "Last-Modified: $value";
|
2752 |
}
|
2753 |
$is_feed = false;
|
2754 |
+
if ( ! isset( $response['Content-Type'] ) && ! isset( $response['Content-type'] ) ) {
|
2755 |
// On some systems, headers set by PHP can't be fetched from
|
2756 |
// the output buffer. This is a last ditch effort to set the
|
2757 |
// correct Content-Type header for feeds, if we didn't see
|
2758 |
// it in the response headers already. -- dougal
|
2759 |
+
if ( isset( $wp_super_cache_query['is_feed'] ) ) {
|
2760 |
+
if ( isset( $wp_super_cache_query['is_sitemap'] ) ) {
|
2761 |
$type = 'sitemap';
|
2762 |
$value = 'text/xml';
|
2763 |
} else {
|
2764 |
$type = get_query_var( 'feed' );
|
2765 |
+
$type = str_replace( '/', '', $type );
|
2766 |
+
switch ( $type ) {
|
2767 |
case 'atom':
|
2768 |
$value = 'application/atom+xml';
|
2769 |
break;
|
2779 |
$is_feed = true;
|
2780 |
|
2781 |
if ( isset( $wpsc_feed_ttl ) && $wpsc_feed_ttl == 1 ) {
|
2782 |
+
$wp_cache_meta['ttl'] = 60;
|
2783 |
}
|
2784 |
$is_feed = true;
|
2785 |
|
2786 |
wp_cache_debug( "wp_cache_shutdown_callback: feed is type: $type - $value" );
|
2787 |
+
} elseif ( isset( $wp_super_cache_query['is_rest'] ) ) { // json
|
2788 |
$value = 'application/json';
|
2789 |
} else { // not a feed
|
2790 |
$value = get_option( 'html_type' );
|
2791 |
+
if ( $value == '' ) {
|
2792 |
$value = 'text/html';
|
2793 |
+
}
|
2794 |
}
|
2795 |
+
$value .= '; charset="' . $wp_cache_blog_charset . '"';
|
2796 |
|
2797 |
wp_cache_debug( "Sending 'Content-Type: $value' header.", 2 );
|
2798 |
+
@header( "Content-Type: $value" );
|
2799 |
+
$wp_cache_meta['headers']['Content-Type'] = "Content-Type: $value";
|
2800 |
}
|
2801 |
|
2802 |
+
if ( $cache_enabled && ! $supercacheonly && $new_cache ) {
|
2803 |
+
if ( ! isset( $wp_cache_meta['dynamic'] ) && $wp_cache_gzip_encoding && ! in_array( 'Content-Encoding: ' . $wp_cache_gzip_encoding, $wp_cache_meta['headers'] ) ) {
|
2804 |
wp_cache_debug( 'Sending gzip headers.', 2 );
|
2805 |
+
$wp_cache_meta['headers']['Content-Encoding'] = 'Content-Encoding: ' . $wp_cache_gzip_encoding;
|
2806 |
if ( defined( 'WPSC_VARY_HEADER' ) ) {
|
2807 |
if ( WPSC_VARY_HEADER != '' ) {
|
2808 |
$vary_header = WPSC_VARY_HEADER;
|
2813 |
$vary_header = 'Accept-Encoding, Cookie';
|
2814 |
}
|
2815 |
if ( $vary_header ) {
|
2816 |
+
$wp_cache_meta['headers']['Vary'] = 'Vary: ' . $vary_header;
|
2817 |
}
|
2818 |
}
|
2819 |
|
2820 |
$serial = '<?php die(); ?>' . json_encode( $wp_cache_meta );
|
2821 |
+
$dir = get_current_url_supercache_dir();
|
2822 |
+
if ( @is_dir( $dir ) == false ) {
|
2823 |
@wp_mkdir_p( $dir );
|
2824 |
+
}
|
2825 |
|
2826 |
+
if ( wp_cache_writers_entry() ) {
|
2827 |
wp_cache_debug( "Writing meta file: {$dir}meta-{$meta_file}", 2 );
|
2828 |
|
2829 |
+
$tmp_meta_filename = $dir . uniqid( mt_rand(), true ) . '.tmp';
|
2830 |
+
$final_meta_filename = $dir . 'meta-' . $meta_file;
|
2831 |
+
$fr = @fopen( $tmp_meta_filename, 'w' );
|
2832 |
if ( $fr ) {
|
2833 |
+
fputs( $fr, $serial );
|
2834 |
+
fclose( $fr );
|
2835 |
+
@chmod( $tmp_meta_filename, 0666 & ~umask() );
|
2836 |
+
if ( ! @rename( $tmp_meta_filename, $final_meta_filename ) ) {
|
2837 |
@unlink( $dir . $final_meta_filename );
|
2838 |
@rename( $tmp_meta_filename, $final_meta_filename );
|
2839 |
}
|
2844 |
|
2845 |
// record locations of archive feeds to be updated when the site is updated.
|
2846 |
// Only record a maximum of 50 feeds to avoid bloating database.
|
2847 |
+
if ( ( isset( $wp_super_cache_query['is_feed'] ) || $is_feed ) && ! isset( $wp_super_cache_query['is_single'] ) ) {
|
2848 |
$wpsc_feed_list = (array) get_option( 'wpsc_feed_list' );
|
2849 |
if ( count( $wpsc_feed_list ) <= 50 ) {
|
2850 |
$wpsc_feed_list[] = $dir . $meta_file;
|
2856 |
wp_cache_debug( "Did not write meta file: meta-{$meta_file}\nsupercacheonly: $supercacheonly\nwp_cache_not_logged_in: $wp_cache_not_logged_in\nnew_cache:$new_cache" );
|
2857 |
}
|
2858 |
global $time_to_gc_cache;
|
2859 |
+
if ( isset( $time_to_gc_cache ) && $time_to_gc_cache == 1 ) {
|
2860 |
wp_cache_debug( 'Executing wp_cache_gc action.', 3 );
|
2861 |
do_action( 'wp_cache_gc' );
|
2862 |
}
|
2863 |
}
|
2864 |
|
2865 |
+
function wp_cache_no_postid( $id ) {
|
2866 |
+
return wp_cache_post_change( wp_cache_post_id() );
|
2867 |
}
|
2868 |
|
2869 |
function wp_cache_get_postid_from_comment( $comment_id, $status = 'NA' ) {
|
2874 |
}
|
2875 |
|
2876 |
// Check is it "Empty Spam" or "Empty Trash"
|
2877 |
+
if ( isset( $GLOBALS['pagenow'] ) && $GLOBALS['pagenow'] === 'edit-comments.php' &&
|
2878 |
( isset( $_REQUEST['delete_all'] ) || isset( $_REQUEST['delete_all2'] ) )
|
2879 |
) {
|
2880 |
wp_cache_debug( "Delete all SPAM or Trash comments. Don't delete any cache files.", 4 );
|
2882 |
return;
|
2883 |
}
|
2884 |
|
2885 |
+
$comment = get_comment( $comment_id, ARRAY_A );
|
2886 |
if ( $status != 'NA' ) {
|
2887 |
+
$comment['old_comment_approved'] = $comment['comment_approved'];
|
2888 |
+
$comment['comment_approved'] = $status;
|
2889 |
}
|
2890 |
|
2891 |
+
if ( ( $status == 'trash' || $status == 'spam' ) && $comment['old_comment_approved'] != 1 ) {
|
2892 |
// don't modify cache if moderated comments are trashed or spammed
|
2893 |
wp_cache_debug( "Moderated comment deleted or spammed. Don't delete any cache files.", 4 );
|
2894 |
define( 'DONOTDELETECACHE', 1 );
|
2895 |
return wp_cache_post_id();
|
2896 |
}
|
2897 |
+
$postid = isset( $comment['comment_post_ID'] ) ? (int) $comment['comment_post_ID'] : 0;
|
2898 |
// Do nothing if comment is not moderated
|
2899 |
// http://ocaoimh.ie/2006/12/05/caching-wordpress-with-wp-cache-in-a-spam-filled-world
|
2900 |
+
if ( ! preg_match( '/wp-admin\//', $wp_cache_request_uri ) ) {
|
2901 |
+
if ( $comment['comment_approved'] == 'delete' && ( isset( $comment['old_comment_approved'] ) && $comment['old_comment_approved'] == 0 ) ) { // do nothing if moderated comments are deleted
|
2902 |
wp_cache_debug( "Moderated comment deleted. Don't delete any cache files.", 4 );
|
2903 |
define( 'DONOTDELETECACHE', 1 );
|
2904 |
return $postid;
|
2906 |
wp_cache_debug( "Spam comment. Don't delete any cache files.", 4 );
|
2907 |
define( 'DONOTDELETECACHE', 1 );
|
2908 |
return $postid;
|
2909 |
+
} elseif ( $comment['comment_approved'] == '0' ) {
|
2910 |
+
if ( $comment['comment_type'] == '' ) {
|
2911 |
wp_cache_debug( "Moderated comment. Don't delete supercache file until comment approved.", 4 );
|
2912 |
$super_cache_enabled = 0; // don't remove the super cache static file until comment is approved
|
2913 |
define( 'DONOTDELETECACHE', 1 );
|
2921 |
// We must check it up again due to WP bugs calling two different actions
|
2922 |
// for delete, for example both wp_set_comment_status and delete_comment
|
2923 |
// are called when deleting a comment
|
2924 |
+
if ( $postid > 0 ) {
|
2925 |
wp_cache_debug( "Post $postid changed. Update cache.", 4 );
|
2926 |
return wp_cache_post_change( $postid );
|
2927 |
} else {
|
2960 |
}
|
2961 |
|
2962 |
// Taxonomies - categories, tags, custom taxonomies
|
2963 |
+
foreach ( get_object_taxonomies( $post, 'objects' ) as $taxonomy ) {
|
2964 |
|
2965 |
if ( ! $taxonomy->public || ! $taxonomy->rewrite ) {
|
2966 |
continue;
|
2971 |
continue;
|
2972 |
}
|
2973 |
|
2974 |
+
foreach ( $terms as $term ) {
|
2975 |
|
2976 |
$term_url = get_term_link( $term, $taxonomy->name );
|
2977 |
if ( is_wp_error( $term_url ) ) {
|
3010 |
_deprecated_function( __FUNCTION__, 'WP Super Cache 1.6.3', 'wpsc_delete_post_archives' );
|
3011 |
}
|
3012 |
|
3013 |
+
$post = get_post( $post );
|
3014 |
+
$categories = get_the_category( $post->ID );
|
3015 |
if ( $categories ) {
|
3016 |
+
$category_base = get_option( 'category_base' );
|
3017 |
+
if ( $category_base == '' ) {
|
3018 |
$category_base = '/category/';
|
3019 |
+
}
|
3020 |
$category_base = trailingslashit( $category_base ); // paranoid much?
|
3021 |
+
foreach ( $categories as $cat ) {
|
3022 |
+
prune_super_cache( get_supercache_dir() . $category_base . $cat->slug . '/', true );
|
3023 |
wp_cache_debug( 'wpsc_post_transition: deleting category: ' . get_supercache_dir() . $category_base . $cat->slug . '/' );
|
3024 |
}
|
3025 |
}
|
3026 |
+
$posttags = get_the_tags( $post->ID );
|
3027 |
if ( $posttags ) {
|
3028 |
$tag_base = get_option( 'tag_base' );
|
3029 |
+
if ( $tag_base == '' ) {
|
3030 |
$tag_base = '/tag/';
|
3031 |
+
}
|
3032 |
$tag_base = trailingslashit( str_replace( '..', '', $tag_base ) ); // maybe!
|
3033 |
+
foreach ( $posttags as $tag ) {
|
3034 |
prune_super_cache( get_supercache_dir() . $tag_base . $tag->slug . '/', true );
|
3035 |
wp_cache_debug( 'wpsc_post_transition: deleting tag: ' . get_supercache_dir() . $tag_base . $tag->slug . '/' );
|
3036 |
}
|
3044 |
return;
|
3045 |
}
|
3046 |
|
3047 |
+
if ( ( $old_status === 'private' || $old_status === 'publish' ) && $new_status !== 'publish' ) { // post unpublished
|
3048 |
if ( ! function_exists( 'get_sample_permalink' ) ) {
|
3049 |
+
require_once ABSPATH . 'wp-admin/includes/post.php';
|
3050 |
}
|
3051 |
list( $permalink, $post_name ) = get_sample_permalink( $post );
|
3052 |
+
$post_url = str_replace( array( '%postname%', '%pagename%' ), $post->post_name, $permalink );
|
3053 |
} elseif ( $old_status !== 'publish' && $new_status === 'publish' ) { // post published
|
3054 |
wp_cache_post_edit( $post->ID );
|
3055 |
return;
|
3087 |
|
3088 |
// we want to process the post again just in case it becomes published before the second time this function is called.
|
3089 |
$last_post_edited = $post_id;
|
3090 |
+
if ( $wp_cache_clear_on_post_edit ) {
|
3091 |
wp_cache_debug( "wp_cache_post_edit: Clearing cache $blog_cache_dir and {$cache_path}supercache/ on post edit per config.", 2 );
|
3092 |
prune_super_cache( $blog_cache_dir, true );
|
3093 |
prune_super_cache( get_supercache_dir(), true );
|
3102 |
function wp_cache_post_id_gc( $post_id, $all = 'all' ) {
|
3103 |
|
3104 |
$post_id = intval( $post_id );
|
3105 |
+
if ( $post_id == 0 ) {
|
3106 |
return true;
|
3107 |
+
}
|
3108 |
|
3109 |
$permalink = trailingslashit( str_replace( get_option( 'home' ), '', get_permalink( $post_id ) ) );
|
3110 |
if ( false !== strpos( $permalink, '?' ) ) {
|
3178 |
}
|
3179 |
|
3180 |
$all_backup = $all;
|
3181 |
+
$all = apply_filters( 'wpsc_delete_related_pages_on_edit', $all ); // return 0 to disable deleting homepage and other pages.
|
3182 |
+
if ( $all != $all_backup ) {
|
3183 |
wp_cache_debug( 'wp_cache_post_change: $all changed by wpsc_delete_related_pages_on_edit filter: ' . intval( $all ) );
|
3184 |
+
}
|
3185 |
|
3186 |
// Delete supercache files whenever a post change event occurs, even if supercache is currently disabled.
|
3187 |
$dir = get_supercache_dir();
|
3217 |
wp_cache_debug( "wp_cache_post_change: checking {$blog_cache_dir}meta/", 4 );
|
3218 |
$supercache_files_deleted = false;
|
3219 |
if ( $handle = @opendir( $blog_cache_dir ) ) {
|
3220 |
+
while ( false !== ( $file = readdir( $handle ) ) ) {
|
3221 |
if ( strpos( $file, $file_prefix ) !== false ) {
|
3222 |
if ( strpos( $file, '.html' ) ) {
|
3223 |
// delete old wpcache files immediately
|
3224 |
wp_cache_debug( "wp_cache_post_change: Deleting obsolete wpcache cache+meta files: $file" );
|
3225 |
+
@unlink( $blog_cache_dir . $file );
|
3226 |
@unlink( $blog_cache_dir . 'meta/' . str_replace( '.html', '.meta', $file ) );
|
3227 |
continue;
|
3228 |
} else {
|
3229 |
$meta = json_decode( wp_cache_get_legacy_cache( $blog_cache_dir . 'meta/' . $file ), true );
|
3230 |
+
if ( false == is_array( $meta ) ) {
|
3231 |
wp_cache_debug( "Post change cleaning up stray file: $file", 4 );
|
3232 |
@unlink( $blog_cache_dir . 'meta/' . $file );
|
3233 |
@unlink( $blog_cache_dir . $file );
|
3235 |
}
|
3236 |
if ( $post_id > 0 && $meta ) {
|
3237 |
$permalink = trailingslashit( str_replace( get_option( 'home' ), '', get_permalink( $post_id ) ) );
|
3238 |
+
if ( $meta['blog_id'] == $blog_id && ( ( $all == true && ! $meta['post'] ) || $meta['post'] == $post_id ) ) {
|
3239 |
wp_cache_debug( "Post change: deleting post wp-cache files for {$meta[ 'uri' ]}: $file", 4 );
|
3240 |
@unlink( $blog_cache_dir . 'meta/' . $file );
|
3241 |
@unlink( $blog_cache_dir . $file );
|
3246 |
do_action( 'gc_cache', 'rebuild', $permalink );
|
3247 |
}
|
3248 |
}
|
3249 |
+
} elseif ( $meta['blog_id'] == $blog_id ) {
|
3250 |
wp_cache_debug( "Post change: deleting wp-cache files for {$meta[ 'uri' ]}: $file", 4 );
|
3251 |
@unlink( $blog_cache_dir . 'meta/' . $file );
|
3252 |
@unlink( $blog_cache_dir . $file );
|
3253 |
if ( $super_cache_enabled == true ) {
|
3254 |
wp_cache_debug( "Post change: deleting supercache files for {$meta[ 'uri' ]}" );
|
3255 |
+
wpsc_rebuild_files( $dir . $meta['uri'] );
|
3256 |
+
do_action( 'gc_cache', 'rebuild', trailingslashit( $meta['uri'] ) );
|
3257 |
}
|
3258 |
}
|
3259 |
}
|
3260 |
}
|
3261 |
}
|
3262 |
+
closedir( $handle );
|
3263 |
}
|
3264 |
wp_cache_writers_exit();
|
3265 |
return $post_id;
|
3266 |
}
|
3267 |
|
3268 |
+
function wp_cache_microtime_diff( $a, $b ) {
|
3269 |
+
list($a_dec, $a_sec) = explode( ' ', $a );
|
3270 |
+
list($b_dec, $b_sec) = explode( ' ', $b );
|
3271 |
+
return (float) $b_sec - (float) $a_sec + (float) $b_dec - (float) $a_dec;
|
3272 |
}
|
3273 |
|
3274 |
function wp_cache_post_id() {
|
3275 |
global $posts, $comment_post_ID, $post_ID;
|
3276 |
// We try hard all options. More frequent first.
|
3277 |
+
if ( $post_ID > 0 ) {
|
3278 |
+
return $post_ID;
|
3279 |
+
}
|
3280 |
+
if ( $comment_post_ID > 0 ) {
|
3281 |
+
return $comment_post_ID;
|
3282 |
+
}
|
3283 |
+
if ( is_singular() && ! empty( $posts ) ) {
|
3284 |
+
return $posts[0]->ID;
|
3285 |
+
}
|
3286 |
+
if ( isset( $_GET['p'] ) && $_GET['p'] > 0 ) {
|
3287 |
+
return $_GET['p'];
|
3288 |
+
}
|
3289 |
+
if ( isset( $_POST['p'] ) && $_POST['p'] > 0 ) {
|
3290 |
+
return $_POST['p'];
|
3291 |
+
}
|
3292 |
return 0;
|
3293 |
}
|
3294 |
|
3310 |
}
|
3311 |
function get_gc_flag() {
|
3312 |
global $cache_path;
|
3313 |
+
return $cache_path . strtolower( preg_replace( '!/:.*$!', '', str_replace( 'http://', '', str_replace( 'https://', '', get_option( 'home' ) ) ) ) ) . '_wp_cache_gc.txt';
|
3314 |
}
|
3315 |
|
3316 |
function wp_cache_gc_cron() {
|
3337 |
|
3338 |
wp_cache_debug( 'Cache garbage collection.', 5 );
|
3339 |
|
3340 |
+
if ( ! isset( $cache_max_time ) ) {
|
3341 |
$cache_max_time = 600;
|
3342 |
+
}
|
3343 |
|
3344 |
$start = time();
|
3345 |
+
$num = 0;
|
3346 |
+
if ( false === ( $num = wp_cache_phase2_clean_expired( $file_prefix ) ) ) {
|
3347 |
wp_cache_debug( 'Cache Expiry cron job failed. Probably mutex locked.', 1 );
|
3348 |
update_option( 'wpsupercache_gc_time', time() - ( $cache_time_interval - 10 ) ); // if GC failed then run it again in one minute
|
3349 |
$msg .= __( 'Cache expiry cron job failed. Job will run again in 10 seconds.', 'wp-super-cache' ) . "\n";
|
3350 |
}
|
3351 |
+
if ( time() - $start > 30 ) {
|
3352 |
wp_cache_debug( "Cache Expiry cron job took more than 30 seconds to execute.\nYou should reduce the Expiry Time in the WP Super Cache admin page\nas you probably have more cache files than your server can handle efficiently.", 1 );
|
3353 |
$msg .= __( 'Cache expiry cron job took more than 30 seconds. You should probably run the garbage collector more often.', 'wp-super-cache' ) . "\n";
|
3354 |
}
|
3355 |
|
3356 |
if ( $cache_gc_email_me ) {
|
3357 |
+
if ( $msg != '' ) {
|
3358 |
$msg = "The following warnings were generated by the WP Super Cache Garbage Collector:\n" . $msg;
|
3359 |
+
}
|
3360 |
|
3361 |
+
$msg = "Hi,\n\nThe WP Super Cache Garbage Collector has now run, deleting " . (int) $num . " files and directories.\nIf you want to switch off these emails please see the WP Super Cache Advanced Settings\npage on your blog.\n\n{$msg}\nRegards,\nThe Garbage Collector.";
|
3362 |
|
3363 |
wp_mail( get_option( 'admin_email' ), sprintf( __( '[%1$s] WP Super Cache GC Report', 'wp-super-cache' ), home_url() ), $msg );
|
3364 |
}
|
3370 |
function schedule_wp_gc( $forced = 0 ) {
|
3371 |
global $cache_schedule_type, $cache_max_time, $cache_time_interval, $cache_scheduled_time, $cache_schedule_interval;
|
3372 |
|
3373 |
+
if ( false == isset( $cache_time_interval ) ) {
|
3374 |
$cache_time_interval = 3600;
|
3375 |
+
}
|
3376 |
|
3377 |
if ( false == isset( $cache_schedule_type ) ) {
|
3378 |
+
$cache_schedule_type = 'interval';
|
3379 |
$cache_schedule_interval = $cache_max_time;
|
3380 |
}
|
3381 |
if ( $cache_schedule_type == 'interval' ) {
|
3382 |
+
if ( ! isset( $cache_max_time ) ) {
|
3383 |
$cache_max_time = 600;
|
3384 |
+
}
|
3385 |
+
if ( $cache_max_time == 0 ) {
|
3386 |
return false;
|
3387 |
+
}
|
3388 |
+
$last_gc = get_option( 'wpsupercache_gc_time' );
|
3389 |
|
3390 |
+
if ( ! $last_gc ) {
|
3391 |
update_option( 'wpsupercache_gc_time', time() );
|
3392 |
+
$last_gc = get_option( 'wpsupercache_gc_time' );
|
3393 |
}
|
3394 |
if ( $forced || ( $last_gc < ( time() - 60 ) ) ) { // Allow up to 60 seconds for the previous job to run
|
3395 |
global $wp_cache_shutdown_gc;
|
3396 |
+
if ( ! isset( $wp_cache_shutdown_gc ) || $wp_cache_shutdown_gc == 0 ) {
|
3397 |
+
if ( ! ( $t = wp_next_scheduled( 'wp_cache_gc' ) ) ) {
|
3398 |
wp_clear_scheduled_hook( 'wp_cache_gc' );
|
3399 |
wp_schedule_single_event( time() + $cache_time_interval, 'wp_cache_gc' );
|
3400 |
wp_cache_debug( 'scheduled wp_cache_gc for 10 seconds time.', 5 );
|
3404 |
$time_to_gc_cache = 1; // tell the "shutdown gc" to run!
|
3405 |
}
|
3406 |
}
|
3407 |
+
} elseif ( $cache_schedule_type == 'time' && ! wp_next_scheduled( 'wp_cache_gc' ) ) {
|
3408 |
wp_schedule_event( strtotime( $cache_scheduled_time ), $cache_schedule_interval, 'wp_cache_gc' );
|
3409 |
}
|
3410 |
return true;
|
3421 |
static $is_get_query = null;
|
3422 |
|
3423 |
if ( null === $is_get_query ) {
|
3424 |
+
$request_uri = parse_url( $_SERVER['REQUEST_URI'] );
|
3425 |
$is_get_query = $request_uri && ! empty( $request_uri['query'] );
|
3426 |
}
|
3427 |
|
3440 |
|
3441 |
foreach ( array_keys( $_SERVER ) as $skey ) {
|
3442 |
if ( 0 === strpos( $skey, 'HTTP_' ) ) {
|
3443 |
+
$header = implode( '-', array_map( 'ucfirst', array_slice( explode( '_', strtolower( $skey ) ), 1 ) ) );
|
3444 |
$headers[ $header ] = $_SERVER[ $skey ];
|
3445 |
}
|
3446 |
}
|
wp-cache.php
CHANGED
@@ -1,15 +1,15 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
-
Plugin Name: WP Super Cache
|
4 |
-
Plugin URI: https://wordpress.org/plugins/wp-super-cache/
|
5 |
-
Description: Very fast caching plugin for WordPress.
|
6 |
-
Version: 1.
|
7 |
-
Author: Automattic
|
8 |
-
Author URI: https://automattic.com/
|
9 |
-
License: GPL2+
|
10 |
-
License URI: https://www.gnu.org/licenses/gpl-2.0.txt
|
11 |
-
Text Domain: wp-super-cache
|
12 |
-
*/
|
13 |
|
14 |
/*
|
15 |
Copyright Automattic and many other contributors.
|
@@ -29,11 +29,11 @@ Text Domain: wp-super-cache
|
|
29 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
30 |
*/
|
31 |
|
32 |
-
require_once(
|
33 |
-
require_once(
|
34 |
|
35 |
if ( ! function_exists( 'wp_cache_phase2' ) ) {
|
36 |
-
require_once(
|
37 |
}
|
38 |
|
39 |
if ( ! defined( 'PHP_VERSION_ID' ) ) {
|
@@ -56,9 +56,9 @@ function wpsc_init() {
|
|
56 |
define( 'WPCACHEHOME', dirname( __FILE__ ) . '/' );
|
57 |
$wp_cache_config_file_sample = WPCACHEHOME . 'wp-cache-config-sample.php';
|
58 |
$wpsc_advanced_cache_dist_filename = WPCACHEHOME . 'advanced-cache.php';
|
59 |
-
} elseif ( realpath( WPCACHEHOME ) != realpath(
|
60 |
-
$wp_cache_config_file_sample =
|
61 |
-
$wpsc_advanced_cache_dist_filename =
|
62 |
if ( ! defined( 'ADVANCEDCACHEPROBLEM' ) ) {
|
63 |
define( 'ADVANCEDCACHEPROBLEM', 1 ); // force an update of WPCACHEHOME
|
64 |
}
|
@@ -101,12 +101,12 @@ if ( ! isset( $cache_enabled, $super_cache_enabled, $wp_cache_mod_rewrite, $cach
|
|
101 |
|
102 |
include(WPCACHEHOME . 'wp-cache-base.php');
|
103 |
if ( class_exists( 'WP_REST_Controller' ) ) {
|
104 |
-
include(
|
105 |
}
|
106 |
|
107 |
function wp_super_cache_init_action() {
|
108 |
|
109 |
-
load_plugin_textdomain( 'wp-super-cache', false, basename(
|
110 |
|
111 |
wpsc_register_post_hooks();
|
112 |
}
|
@@ -130,10 +130,10 @@ function get_wpcachehome() {
|
|
130 |
}
|
131 |
|
132 |
if ( ! defined( 'WPCACHEHOME' ) ) {
|
133 |
-
if ( is_file(
|
134 |
define( 'WPCACHEHOME', trailingslashit( dirname( __FILE__ ) ) );
|
135 |
-
} elseif ( is_file(
|
136 |
-
define( 'WPCACHEHOME',
|
137 |
} else {
|
138 |
die( sprintf( esc_html__( 'Please create %s/wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php', 'wp-super-cache' ), esc_attr( WPCACHECONFIGPATH ) ) );
|
139 |
}
|
@@ -243,6 +243,7 @@ function wp_cache_add_pages() {
|
|
243 |
}
|
244 |
add_action( 'admin_menu', 'wp_cache_add_pages' );
|
245 |
|
|
|
246 |
function wp_cache_network_pages() {
|
247 |
add_submenu_page( 'settings.php', 'WP Super Cache', 'WP Super Cache', 'manage_options', 'wpsupercache', 'wp_cache_manager' );
|
248 |
}
|
@@ -733,6 +734,17 @@ function wp_cache_manager_updates() {
|
|
733 |
if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'wpsupercache' )
|
734 |
add_action( 'admin_init', 'wp_cache_manager_updates' );
|
735 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
736 |
function wp_cache_manager() {
|
737 |
global $wp_cache_config_file, $valid_nonce, $supercachedir, $cache_path, $cache_enabled, $cache_compression, $super_cache_enabled;
|
738 |
global $wp_cache_clear_on_post_edit, $cache_rebuild_files, $wp_cache_mutex_disabled, $wp_cache_mobile_enabled, $wp_cache_mobile_browsers, $wp_cache_no_cache_for_get;
|
@@ -802,7 +814,7 @@ function toggleLayer( whichLayer ) {
|
|
802 |
// -->
|
803 |
//Clicking header opens fieldset options
|
804 |
jQuery(document).ready(function(){
|
805 |
-
jQuery("fieldset h4").css("cursor","pointer").click
|
806 |
jQuery(this).parent("fieldset").find("p,form,ul,blockquote").toggle("slow");
|
807 |
});
|
808 |
});
|
@@ -919,6 +931,125 @@ table.wpsc-settings-table {
|
|
919 |
}
|
920 |
|
921 |
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
922 |
<table class="wpsc-settings-table"><td valign="top">
|
923 |
<?php
|
924 |
|
@@ -1042,9 +1173,11 @@ table.wpsc-settings-table {
|
|
1042 |
|
1043 |
</fieldset>
|
1044 |
</td><td valign='top' style='width: 300px'>
|
1045 |
-
<div style='background: #ffc; border: 1px solid #333; margin: 2px; padding: 3px 15px'>
|
1046 |
<h4><?php _e( 'Other Site Tools', 'wp-super-cache' ); ?></h4>
|
1047 |
<ul style="list-style: square; margin-left: 2em;">
|
|
|
|
|
1048 |
<li><a href="https://jetpack.com/redirect/?source=jitm-wpsc-generic"><?php _e( 'Speed up images and photos (free)', 'wp-super-cache' ); ?></a></li>
|
1049 |
<li><a href="https://jetpack.com/redirect/?source=jitm-wpsc-premium"><?php _e( 'Fast video hosting (paid)', 'wp-super-cache' ); ?></a></li>
|
1050 |
<li><a href="https://crowdsignal.com/pricing/?ad=wpsc"><?php _e( 'Add Surveys and Polls to your site', 'wp-super-cache' ); ?></a></li>
|
@@ -1737,7 +1870,7 @@ function wp_cache_index_notice() {
|
|
1737 |
<script type='text/javascript'>
|
1738 |
<!--
|
1739 |
jQuery(document).ready(function(){
|
1740 |
-
jQuery('#wpsc-dismiss').click
|
1741 |
jQuery.ajax({
|
1742 |
type: "post",url: "admin-ajax.php",data: { action: 'wpsc-index-dismiss', _ajax_nonce: '<?php echo wp_create_nonce( 'wpsc-index-dismiss' ); ?>' },
|
1743 |
beforeSend: function() {jQuery("#wpsc-index-warning").fadeOut('slow');},
|
1 |
<?php
|
2 |
/*
|
3 |
+
* Plugin Name: WP Super Cache
|
4 |
+
* Plugin URI: https://wordpress.org/plugins/wp-super-cache/
|
5 |
+
* Description: Very fast caching plugin for WordPress.
|
6 |
+
* Version: 1.8
|
7 |
+
* Author: Automattic
|
8 |
+
* Author URI: https://automattic.com/
|
9 |
+
* License: GPL2+
|
10 |
+
* License URI: https://www.gnu.org/licenses/gpl-2.0.txt
|
11 |
+
* Text Domain: wp-super-cache
|
12 |
+
*/
|
13 |
|
14 |
/*
|
15 |
Copyright Automattic and many other contributors.
|
29 |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
30 |
*/
|
31 |
|
32 |
+
require_once( __DIR__. '/inc/delete-cache-button.php');
|
33 |
+
require_once( __DIR__. '/inc/preload-notification.php');
|
34 |
|
35 |
if ( ! function_exists( 'wp_cache_phase2' ) ) {
|
36 |
+
require_once( __DIR__. '/wp-cache-phase2.php');
|
37 |
}
|
38 |
|
39 |
if ( ! defined( 'PHP_VERSION_ID' ) ) {
|
56 |
define( 'WPCACHEHOME', dirname( __FILE__ ) . '/' );
|
57 |
$wp_cache_config_file_sample = WPCACHEHOME . 'wp-cache-config-sample.php';
|
58 |
$wpsc_advanced_cache_dist_filename = WPCACHEHOME . 'advanced-cache.php';
|
59 |
+
} elseif ( realpath( WPCACHEHOME ) != realpath( __DIR__ ) ) {
|
60 |
+
$wp_cache_config_file_sample = __DIR__. '/wp-cache-config-sample.php';
|
61 |
+
$wpsc_advanced_cache_dist_filename = __DIR__. '/advanced-cache.php';
|
62 |
if ( ! defined( 'ADVANCEDCACHEPROBLEM' ) ) {
|
63 |
define( 'ADVANCEDCACHEPROBLEM', 1 ); // force an update of WPCACHEHOME
|
64 |
}
|
101 |
|
102 |
include(WPCACHEHOME . 'wp-cache-base.php');
|
103 |
if ( class_exists( 'WP_REST_Controller' ) ) {
|
104 |
+
include( __DIR__. '/rest/load.php' );
|
105 |
}
|
106 |
|
107 |
function wp_super_cache_init_action() {
|
108 |
|
109 |
+
load_plugin_textdomain( 'wp-super-cache', false, basename( __DIR__ ) . '/languages' );
|
110 |
|
111 |
wpsc_register_post_hooks();
|
112 |
}
|
130 |
}
|
131 |
|
132 |
if ( ! defined( 'WPCACHEHOME' ) ) {
|
133 |
+
if ( is_file( __DIR__ . '/wp-cache-config-sample.php' ) ) {
|
134 |
define( 'WPCACHEHOME', trailingslashit( dirname( __FILE__ ) ) );
|
135 |
+
} elseif ( is_file( __DIR__ . '/wp-super-cache/wp-cache-config-sample.php' ) ) {
|
136 |
+
define( 'WPCACHEHOME', __DIR__ . '/wp-super-cache/' );
|
137 |
} else {
|
138 |
die( sprintf( esc_html__( 'Please create %s/wp-cache-config.php from wp-super-cache/wp-cache-config-sample.php', 'wp-super-cache' ), esc_attr( WPCACHECONFIGPATH ) ) );
|
139 |
}
|
243 |
}
|
244 |
add_action( 'admin_menu', 'wp_cache_add_pages' );
|
245 |
|
246 |
+
|
247 |
function wp_cache_network_pages() {
|
248 |
add_submenu_page( 'settings.php', 'WP Super Cache', 'WP Super Cache', 'manage_options', 'wpsupercache', 'wp_cache_manager' );
|
249 |
}
|
734 |
if ( isset( $_GET[ 'page' ] ) && $_GET[ 'page' ] == 'wpsupercache' )
|
735 |
add_action( 'admin_init', 'wp_cache_manager_updates' );
|
736 |
|
737 |
+
|
738 |
+
add_action( 'wp_ajax_wpsc-hide-survey', 'wpsc_hide_survey' );
|
739 |
+
function wpsc_hide_survey(){
|
740 |
+
//nonce it
|
741 |
+
check_ajax_referer( 'wpsc-2022-survey', 'security' );
|
742 |
+
//update it
|
743 |
+
update_option('wpsc_2022-survey', 0, false);
|
744 |
+
wp_die();
|
745 |
+
}
|
746 |
+
|
747 |
+
|
748 |
function wp_cache_manager() {
|
749 |
global $wp_cache_config_file, $valid_nonce, $supercachedir, $cache_path, $cache_enabled, $cache_compression, $super_cache_enabled;
|
750 |
global $wp_cache_clear_on_post_edit, $cache_rebuild_files, $wp_cache_mutex_disabled, $wp_cache_mobile_enabled, $wp_cache_mobile_browsers, $wp_cache_no_cache_for_get;
|
814 |
// -->
|
815 |
//Clicking header opens fieldset options
|
816 |
jQuery(document).ready(function(){
|
817 |
+
jQuery("fieldset h4").css("cursor","pointer").on("click",function(){
|
818 |
jQuery(this).parent("fieldset").find("p,form,ul,blockquote").toggle("slow");
|
819 |
});
|
820 |
});
|
931 |
}
|
932 |
|
933 |
?>
|
934 |
+
<style>
|
935 |
+
.feedback-notice{
|
936 |
+
background:white;
|
937 |
+
border: 1px solid #DCDCDE;
|
938 |
+
border-radius: 4px;
|
939 |
+
position:relative;
|
940 |
+
height: 86px;
|
941 |
+
width: calc(100% - 310px);
|
942 |
+
}
|
943 |
+
.feedback-notice .content{
|
944 |
+
margin-top:5px;
|
945 |
+
position: absolute;
|
946 |
+
width:65%;
|
947 |
+
padding-right:5%;
|
948 |
+
height: 42px;
|
949 |
+
left: 65px;
|
950 |
+
top: calc(50% - 65px/2);
|
951 |
+
font-size: 14px;
|
952 |
+
}
|
953 |
+
.megaphone{
|
954 |
+
position:absolute;
|
955 |
+
width: 24px;
|
956 |
+
height: 24px;
|
957 |
+
left: 21px;
|
958 |
+
top: calc(50% - 24px/2);
|
959 |
+
}
|
960 |
+
.survey-title b{
|
961 |
+
font-size:14px;
|
962 |
+
}
|
963 |
+
.survey-cta{
|
964 |
+
position: absolute;
|
965 |
+
width: 140px;
|
966 |
+
height: 40px;
|
967 |
+
right: 64px;
|
968 |
+
top: calc(50% - 40px/2);
|
969 |
+
background: #FFFFFF;
|
970 |
+
border: 1px solid #000000;
|
971 |
+
border-radius: 4px;
|
972 |
+
line-height:40px;
|
973 |
+
text-align:center;
|
974 |
+
font-style: normal;
|
975 |
+
font-weight: 600;
|
976 |
+
font-size: 16px;
|
977 |
+
letter-spacing: -0.01em;
|
978 |
+
}
|
979 |
+
.survey-cta a{
|
980 |
+
color:#000000 !important;
|
981 |
+
text-decoration:none !important;
|
982 |
+
}
|
983 |
+
.close{
|
984 |
+
position: absolute;
|
985 |
+
width: 24px;
|
986 |
+
height: 24px;
|
987 |
+
right: 20px;
|
988 |
+
top: calc(50% - 24px/2);
|
989 |
+
cursor:pointer;
|
990 |
+
}
|
991 |
+
</style>
|
992 |
+
|
993 |
+
<?php
|
994 |
+
$survey_nonce = wp_create_nonce( "wpsc-2022-survey" );
|
995 |
+
$call_out_box = "0px";
|
996 |
+
$showing_2022_survey = get_option('wpsc_2022-survey', true);
|
997 |
+
//to handle the way the yellow box is output in the UI in a table cell.
|
998 |
+
if ( $showing_2022_survey && $curr_tab !== 'contents' ) {
|
999 |
+
$call_out_box = '-90px';
|
1000 |
+
}
|
1001 |
+
?>
|
1002 |
+
|
1003 |
+
<script>
|
1004 |
+
|
1005 |
+
function dismissNotice(){
|
1006 |
+
// hide the notice here sometimes it can be a little slow if waiting for
|
1007 |
+
// the success response.
|
1008 |
+
jQuery('#wp-super-cache-2022-survey').fadeOut('slow');
|
1009 |
+
document.getElementById('wpsc-callout').style.marginTop = "0px";
|
1010 |
+
jQuery.ajax({
|
1011 |
+
type: "post",
|
1012 |
+
dataType: "json",
|
1013 |
+
url: ajaxurl,
|
1014 |
+
data: {
|
1015 |
+
action: 'wpsc-hide-survey',
|
1016 |
+
security: '<?php echo $survey_nonce; ?>',
|
1017 |
+
}
|
1018 |
+
});
|
1019 |
+
}
|
1020 |
+
|
1021 |
+
</script>
|
1022 |
+
|
1023 |
+
<?php
|
1024 |
+
//only show the notification if not dismissed.
|
1025 |
+
if($showing_2022_survey){
|
1026 |
+
?>
|
1027 |
+
<div class="feedback-notice" id="wp-super-cache-2022-survey">
|
1028 |
+
<div class="megaphone">
|
1029 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
1030 |
+
<path d="M5 10H5.07846L5.15522 9.98376L18.0785 7.25H19.25V15.25H18.0785L5.15522 12.5162L5.07846 12.5H5H4.75V10H5Z" stroke="#1E1E1E" stroke-width="1.5"/>
|
1031 |
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.92831 16.2481C8.73996 15.8848 8.07114 14.6269 8.43446 13.4386L7 13C6.39448 14.9806 7.50918 17.077 9.48975 17.6825C11.4703 18.2881 13.5668 17.1734 14.1723 15.1928L12.7378 14.7542C12.3745 15.9426 11.1166 16.6114 9.92831 16.2481Z" fill="#1E1E1E"/>
|
1032 |
+
</svg>
|
1033 |
+
</div>
|
1034 |
+
<div class="content">
|
1035 |
+
<div style="survey-title">
|
1036 |
+
<b><?php _e("WP Super Cache Survey", "wp-super-cache"); ?></b>
|
1037 |
+
</div>
|
1038 |
+
<?php
|
1039 |
+
_e("We’d love to hear your thoughts about what should make it into WP Super Cache in the future. Please take our quick survey to help us improve!", "wp-super-cache");
|
1040 |
+
?>
|
1041 |
+
</div>
|
1042 |
+
<div class="survey-cta">
|
1043 |
+
<a href="https://docs.google.com/forms/d/e/1FAIpQLScOnrNs4_g-vOqzpPRghfK4WPFGGrBWqn9J5ZX8OYwyxa_QKg/viewform" target="_blank"><?php _e("Take Survey", "wp-super-cache"); ?></a>
|
1044 |
+
</div>
|
1045 |
+
<div class="close" onclick="dismissNotice()">
|
1046 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
1047 |
+
<path d="M5.40456 5L19 19M5 19L18.5954 5" stroke="#1E1E1E" stroke-width="1.5"/>
|
1048 |
+
</svg>
|
1049 |
+
</div>
|
1050 |
+
</div>
|
1051 |
+
<?php } ?>
|
1052 |
+
|
1053 |
<table class="wpsc-settings-table"><td valign="top">
|
1054 |
<?php
|
1055 |
|
1173 |
|
1174 |
</fieldset>
|
1175 |
</td><td valign='top' style='width: 300px'>
|
1176 |
+
<div id="wpsc-callout" style='background: #ffc; border: 1px solid #333; margin: 2px; padding: 3px 15px;margin-top:<?php echo $call_out_box;?>;'>
|
1177 |
<h4><?php _e( 'Other Site Tools', 'wp-super-cache' ); ?></h4>
|
1178 |
<ul style="list-style: square; margin-left: 2em;">
|
1179 |
+
|
1180 |
+
<li><a href="https://jetpack.com/redirect/?source=wp-super-cache-boost"><?php _e( 'Boost your page speed scores', 'wp-super-cache' ); ?></a></li>
|
1181 |
<li><a href="https://jetpack.com/redirect/?source=jitm-wpsc-generic"><?php _e( 'Speed up images and photos (free)', 'wp-super-cache' ); ?></a></li>
|
1182 |
<li><a href="https://jetpack.com/redirect/?source=jitm-wpsc-premium"><?php _e( 'Fast video hosting (paid)', 'wp-super-cache' ); ?></a></li>
|
1183 |
<li><a href="https://crowdsignal.com/pricing/?ad=wpsc"><?php _e( 'Add Surveys and Polls to your site', 'wp-super-cache' ); ?></a></li>
|
1870 |
<script type='text/javascript'>
|
1871 |
<!--
|
1872 |
jQuery(document).ready(function(){
|
1873 |
+
jQuery('#wpsc-dismiss').on("click",function() {
|
1874 |
jQuery.ajax({
|
1875 |
type: "post",url: "admin-ajax.php",data: { action: 'wpsc-index-dismiss', _ajax_nonce: '<?php echo wp_create_nonce( 'wpsc-index-dismiss' ); ?>' },
|
1876 |
beforeSend: function() {jQuery("#wpsc-index-warning").fadeOut('slow');},
|
wp-super-cache.pot
DELETED
@@ -1,2242 +0,0 @@
|
|
1 |
-
# Copyright (C) 2017 WP Super Cache
|
2 |
-
# This file is distributed under the same license as the WP Super Cache package.
|
3 |
-
msgid ""
|
4 |
-
msgstr ""
|
5 |
-
"Project-Id-Version: WP Super Cache 1.4.9\n"
|
6 |
-
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-super-cache\n"
|
7 |
-
"POT-Creation-Date: 2017-02-28 12:51:09+00:00\n"
|
8 |
-
"MIME-Version: 1.0\n"
|
9 |
-
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
-
"Content-Transfer-Encoding: 8bit\n"
|
11 |
-
"PO-Revision-Date: 2017-MO-DA HO:MI+ZONE\n"
|
12 |
-
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
-
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
-
|
15 |
-
#: ossdl-cdn.php:153
|
16 |
-
msgid ""
|
17 |
-
"Your website probably uses lots of static files. Image, Javascript and CSS "
|
18 |
-
"files are usually static files that could just as easily be served from "
|
19 |
-
"another site or CDN. Therefore, this plugin replaces any links in the "
|
20 |
-
"<code>wp-content</code> and <code>wp-includes</code> directories (except for "
|
21 |
-
"PHP files) on your site with the URL you provide below. That way you can "
|
22 |
-
"either copy all the static content to a dedicated host or mirror the files "
|
23 |
-
"to a CDN by <a href=\"https://knowledgelayer.softlayer.com/faq/how-does-"
|
24 |
-
"origin-pull-work\" target=\"_blank\">origin pull</a>."
|
25 |
-
msgstr ""
|
26 |
-
|
27 |
-
#: ossdl-cdn.php:154
|
28 |
-
msgid ""
|
29 |
-
"<strong style=\"color: red\">WARNING:</strong> Test some static urls e.g., "
|
30 |
-
"%s to ensure your CDN service is fully working before saving changes."
|
31 |
-
msgstr ""
|
32 |
-
|
33 |
-
#: ossdl-cdn.php:155
|
34 |
-
msgid "You can define different CDN URLs for each site on a multsite network."
|
35 |
-
msgstr ""
|
36 |
-
|
37 |
-
#: ossdl-cdn.php:163
|
38 |
-
msgid "Enable CDN Support"
|
39 |
-
msgstr ""
|
40 |
-
|
41 |
-
#: ossdl-cdn.php:166
|
42 |
-
msgid "Off-site URL"
|
43 |
-
msgstr ""
|
44 |
-
|
45 |
-
#: ossdl-cdn.php:169
|
46 |
-
msgid ""
|
47 |
-
"The new URL to be used in place of %1$s for rewriting. No trailing <code>/</"
|
48 |
-
"code> please.<br />Example: <code>%2$s</code>."
|
49 |
-
msgstr ""
|
50 |
-
|
51 |
-
#: ossdl-cdn.php:173
|
52 |
-
msgid "Include directories"
|
53 |
-
msgstr ""
|
54 |
-
|
55 |
-
#: ossdl-cdn.php:176
|
56 |
-
msgid ""
|
57 |
-
"Directories to include in static file matching. Use a comma as the "
|
58 |
-
"delimiter. Default is <code>wp-content, wp-includes</code>, which will be "
|
59 |
-
"enforced if this field is left empty."
|
60 |
-
msgstr ""
|
61 |
-
|
62 |
-
#: ossdl-cdn.php:180
|
63 |
-
msgid "Exclude if substring"
|
64 |
-
msgstr ""
|
65 |
-
|
66 |
-
#: ossdl-cdn.php:183
|
67 |
-
msgid ""
|
68 |
-
"Excludes something from being rewritten if one of the above strings is found "
|
69 |
-
"in the match. Use a comma as the delimiter like this, <code>.php, .flv, .do</"
|
70 |
-
"code>, and always include <code>.php</code> (default)."
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
#: ossdl-cdn.php:187
|
74 |
-
msgid "Additional CNAMES"
|
75 |
-
msgstr ""
|
76 |
-
|
77 |
-
#: ossdl-cdn.php:190
|
78 |
-
msgid ""
|
79 |
-
"These <a href=\"http://en.wikipedia.org/wiki/CNAME_record\">CNAMES</a> will "
|
80 |
-
"be used in place of %1$s for rewriting (in addition to the off-site URL "
|
81 |
-
"above). Use a comma as the delimiter. For pages with a large number of "
|
82 |
-
"static files, this can improve browser performance. CNAMEs may also need to "
|
83 |
-
"be configured on your CDN.<br />Example: %2$s"
|
84 |
-
msgstr ""
|
85 |
-
|
86 |
-
#: ossdl-cdn.php:194
|
87 |
-
msgid "Skip https URLs to avoid \"mixed content\" errors"
|
88 |
-
msgstr ""
|
89 |
-
|
90 |
-
#: ossdl-cdn.php:198
|
91 |
-
msgid "Save Changes"
|
92 |
-
msgstr ""
|
93 |
-
|
94 |
-
#: ossdl-cdn.php:200
|
95 |
-
msgid ""
|
96 |
-
"CDN functionality provided by <a href=\"http://wordpress.org/plugins/ossdl-"
|
97 |
-
"cdn-off-linker/\">OSSDL CDN Off Linker</a> by <a href=\"http://mark.ossdl.de/"
|
98 |
-
"\">Mark Kubacki</a>"
|
99 |
-
msgstr ""
|
100 |
-
|
101 |
-
#: plugins/awaitingmoderation.php:4
|
102 |
-
msgid "Your comment is awaiting moderation."
|
103 |
-
msgstr ""
|
104 |
-
|
105 |
-
#: plugins/awaitingmoderation.php:32
|
106 |
-
msgid "Awaiting Moderation"
|
107 |
-
msgstr ""
|
108 |
-
|
109 |
-
#: plugins/awaitingmoderation.php:34 plugins/badbehaviour.php:65
|
110 |
-
#: plugins/domain-mapping.php:75 plugins/jetpack.php:31
|
111 |
-
#: plugins/searchengine.php:69 plugins/wptouch.php:22 wp-cache.php:1500
|
112 |
-
msgid "Enabled"
|
113 |
-
msgstr ""
|
114 |
-
|
115 |
-
#: plugins/awaitingmoderation.php:35 plugins/badbehaviour.php:66
|
116 |
-
#: plugins/domain-mapping.php:76 plugins/jetpack.php:32
|
117 |
-
#: plugins/searchengine.php:70 plugins/wptouch.php:23 wp-cache.php:1500
|
118 |
-
msgid "Disabled"
|
119 |
-
msgstr ""
|
120 |
-
|
121 |
-
#: plugins/awaitingmoderation.php:36
|
122 |
-
msgid ""
|
123 |
-
"Enables or disables plugin to Remove the text \"Your comment is awaiting "
|
124 |
-
"moderation.\" when someone leaves a moderated comment."
|
125 |
-
msgstr ""
|
126 |
-
|
127 |
-
#: plugins/awaitingmoderation.php:40 plugins/badbehaviour.php:71
|
128 |
-
#: plugins/domain-mapping.php:81 plugins/jetpack.php:37
|
129 |
-
#: plugins/searchengine.php:75 plugins/wptouch.php:28 wp-cache.php:1977
|
130 |
-
#: wp-cache.php:1979
|
131 |
-
msgid "enabled"
|
132 |
-
msgstr ""
|
133 |
-
|
134 |
-
#: plugins/awaitingmoderation.php:42 plugins/badbehaviour.php:73
|
135 |
-
#: plugins/domain-mapping.php:83 plugins/jetpack.php:39
|
136 |
-
#: plugins/searchengine.php:77 plugins/wptouch.php:30
|
137 |
-
msgid "disabled"
|
138 |
-
msgstr ""
|
139 |
-
|
140 |
-
#: plugins/awaitingmoderation.php:43
|
141 |
-
msgid "Awaiting Moderation is now %s"
|
142 |
-
msgstr ""
|
143 |
-
|
144 |
-
#: plugins/awaitingmoderation.php:45 plugins/badbehaviour.php:76
|
145 |
-
#: plugins/domain-mapping.php:86 plugins/jetpack.php:42
|
146 |
-
#: plugins/searchengine.php:80 plugins/wptouch.php:33
|
147 |
-
msgid "Update"
|
148 |
-
msgstr ""
|
149 |
-
|
150 |
-
#: plugins/badbehaviour.php:47
|
151 |
-
msgid "Bad Behaviour not found. Please check your install."
|
152 |
-
msgstr ""
|
153 |
-
|
154 |
-
#: plugins/badbehaviour.php:63
|
155 |
-
msgid "Bad Behavior"
|
156 |
-
msgstr ""
|
157 |
-
|
158 |
-
#: plugins/badbehaviour.php:68
|
159 |
-
msgid ""
|
160 |
-
"(Only legacy caching supported, disabled compression and requires <a href="
|
161 |
-
"\"http://www.bad-behavior.ioerror.us/\">Bad Behavior</a> in \"%s/plugins/bad-"
|
162 |
-
"behavior/\") "
|
163 |
-
msgstr ""
|
164 |
-
|
165 |
-
#: plugins/badbehaviour.php:74
|
166 |
-
msgid "Bad Behavior support is now %s"
|
167 |
-
msgstr ""
|
168 |
-
|
169 |
-
#: plugins/badbehaviour.php:83 wp-cache.php:1593 wp-cache.php:1598
|
170 |
-
msgid "Warning!"
|
171 |
-
msgstr ""
|
172 |
-
|
173 |
-
#: plugins/domain-mapping.php:73
|
174 |
-
msgid "Domain Mapping"
|
175 |
-
msgstr ""
|
176 |
-
|
177 |
-
#: plugins/domain-mapping.php:78
|
178 |
-
msgid ""
|
179 |
-
"Provides support for <a href=\"http://wordpress.org/extend/plugins/wordpress-"
|
180 |
-
"mu-domain-mapping/\">Domain Mapping</a> plugin to map multiple domains to a "
|
181 |
-
"blog."
|
182 |
-
msgstr ""
|
183 |
-
|
184 |
-
#: plugins/domain-mapping.php:84
|
185 |
-
msgid "Domain Mapping support is now %s"
|
186 |
-
msgstr ""
|
187 |
-
|
188 |
-
#: plugins/domain-mapping.php:98
|
189 |
-
msgid ""
|
190 |
-
"Domain Mapping plugin detected! Please go to the Supercache plugins page and "
|
191 |
-
"enable the domain mapping helper plugin."
|
192 |
-
msgstr ""
|
193 |
-
|
194 |
-
#: plugins/jetpack.php:25
|
195 |
-
msgid "Jetpack Mobile Theme"
|
196 |
-
msgstr ""
|
197 |
-
|
198 |
-
#: plugins/jetpack.php:28
|
199 |
-
msgid ""
|
200 |
-
"Jetpack not found in %s. Install it and enable the mobile theme and this "
|
201 |
-
"helper plugin to cache visits by mobile visitors."
|
202 |
-
msgstr ""
|
203 |
-
|
204 |
-
#: plugins/jetpack.php:34
|
205 |
-
msgid ""
|
206 |
-
"Provides support for the <a href=\"http://wordpress.org/extend/plugins/"
|
207 |
-
"jetpack/\">Jetpack</a> mobile theme and plugin. PHP caching mode and mobile "
|
208 |
-
"support will be enabled too."
|
209 |
-
msgstr ""
|
210 |
-
|
211 |
-
#: plugins/jetpack.php:40
|
212 |
-
msgid "Jetpack Mobile Theme support is now %s"
|
213 |
-
msgstr ""
|
214 |
-
|
215 |
-
#: plugins/multisite.php:13
|
216 |
-
msgid "Cached"
|
217 |
-
msgstr ""
|
218 |
-
|
219 |
-
#: plugins/multisite.php:31 wp-cache.php:1513
|
220 |
-
msgid "Enable"
|
221 |
-
msgstr ""
|
222 |
-
|
223 |
-
#: plugins/multisite.php:33 plugins/searchengine.php:61 wp-cache.php:1513
|
224 |
-
msgid "Disable"
|
225 |
-
msgstr ""
|
226 |
-
|
227 |
-
#: plugins/multisite.php:39
|
228 |
-
msgid "Caching has been disabled on this blog on the Network Admin Sites page."
|
229 |
-
msgstr ""
|
230 |
-
|
231 |
-
#: plugins/searchengine.php:67
|
232 |
-
msgid "No Adverts for Friends"
|
233 |
-
msgstr ""
|
234 |
-
|
235 |
-
#: plugins/searchengine.php:72
|
236 |
-
msgid ""
|
237 |
-
"Provides support for <a href=\"http://ocaoimh.ie/no-adverts-for-friends/"
|
238 |
-
"\">No Adverts for Friends</a>."
|
239 |
-
msgstr ""
|
240 |
-
|
241 |
-
#: plugins/searchengine.php:78
|
242 |
-
msgid "No Adverts for Friends support is now %s"
|
243 |
-
msgstr ""
|
244 |
-
|
245 |
-
#: plugins/wptouch.php:20
|
246 |
-
msgid "WPTouch"
|
247 |
-
msgstr ""
|
248 |
-
|
249 |
-
#: plugins/wptouch.php:25
|
250 |
-
msgid ""
|
251 |
-
"Provides support for <a href=\"http://wordpress.org/extend/plugins/wptouch/"
|
252 |
-
"\">WPTouch</a> mobile theme and plugin."
|
253 |
-
msgstr ""
|
254 |
-
|
255 |
-
#: plugins/wptouch.php:31
|
256 |
-
msgid "WPTouch support is now %s"
|
257 |
-
msgstr ""
|
258 |
-
|
259 |
-
#: plugins/wptouch.php:45
|
260 |
-
msgid ""
|
261 |
-
"WPTouch plugin detected! Please go to the Supercache plugins page and enable "
|
262 |
-
"the WPTouch helper plugin."
|
263 |
-
msgstr ""
|
264 |
-
|
265 |
-
#: wp-cache-phase2.php:1389
|
266 |
-
msgid "Cache expiry cron job failed. Job will run again in 10 seconds."
|
267 |
-
msgstr ""
|
268 |
-
|
269 |
-
#: wp-cache-phase2.php:1393
|
270 |
-
msgid ""
|
271 |
-
"Cache expiry cron job took more than 30 seconds. You should probably run the "
|
272 |
-
"garbage collector more often."
|
273 |
-
msgstr ""
|
274 |
-
|
275 |
-
#: wp-cache-phase2.php:1402
|
276 |
-
msgid "[%1$s] WP Super Cache GC Report"
|
277 |
-
msgstr ""
|
278 |
-
|
279 |
-
#: wp-cache.php:111
|
280 |
-
msgid ""
|
281 |
-
"Please create %s /wp-cache-config.php from wp-super-cache/wp-cache-config-"
|
282 |
-
"sample.php"
|
283 |
-
msgstr ""
|
284 |
-
|
285 |
-
#: wp-cache.php:203
|
286 |
-
msgid "Warning! PHP Safe Mode Enabled!"
|
287 |
-
msgstr ""
|
288 |
-
|
289 |
-
#: wp-cache.php:204
|
290 |
-
msgid ""
|
291 |
-
"You may experience problems running this plugin because SAFE MODE is enabled."
|
292 |
-
msgstr ""
|
293 |
-
|
294 |
-
#: wp-cache.php:208
|
295 |
-
msgid ""
|
296 |
-
"Your server is set up to check the owner of PHP scripts before allowing them "
|
297 |
-
"to read and write files."
|
298 |
-
msgstr ""
|
299 |
-
|
300 |
-
#: wp-cache.php:209
|
301 |
-
msgid ""
|
302 |
-
"You or an administrator may be able to make it work by changing the group "
|
303 |
-
"owner of the plugin scripts to match that of the web server user. The group "
|
304 |
-
"owner of the %s/cache/ directory must also be changed. See the <a href="
|
305 |
-
"\"http://php.net/features.safe-mode\">safe mode manual page</a> for further "
|
306 |
-
"details."
|
307 |
-
msgstr ""
|
308 |
-
|
309 |
-
#: wp-cache.php:211
|
310 |
-
msgid ""
|
311 |
-
"You or an administrator must disable this. See the <a href=\"http://php.net/"
|
312 |
-
"features.safe-mode\">safe mode manual page</a> for further details. This "
|
313 |
-
"cannot be disabled in a .htaccess file unfortunately. It must be done in the "
|
314 |
-
"php.ini config file."
|
315 |
-
msgstr ""
|
316 |
-
|
317 |
-
#: wp-cache.php:217
|
318 |
-
msgid "Permlink Structure Error"
|
319 |
-
msgstr ""
|
320 |
-
|
321 |
-
#: wp-cache.php:218
|
322 |
-
msgid ""
|
323 |
-
"A custom url or permalink structure is required for this plugin to work "
|
324 |
-
"correctly. Please go to the <a href=\"options-permalink.php\">Permalinks "
|
325 |
-
"Options Page</a> to configure your permalinks."
|
326 |
-
msgstr ""
|
327 |
-
|
328 |
-
#: wp-cache.php:230
|
329 |
-
msgid "Warning! Your hostname \"%s\" resolves to %s"
|
330 |
-
msgstr ""
|
331 |
-
|
332 |
-
#: wp-cache.php:231
|
333 |
-
msgid ""
|
334 |
-
"Your server thinks your hostname resolves to %s. Some services such as "
|
335 |
-
"garbage collection by this plugin, and WordPress scheduled posts may not "
|
336 |
-
"operate correctly."
|
337 |
-
msgstr ""
|
338 |
-
|
339 |
-
#: wp-cache.php:232 wp-cache.php:246
|
340 |
-
msgid ""
|
341 |
-
"Please see entry 16 in the <a href=\"%s\">Troubleshooting section</a> of the "
|
342 |
-
"readme.txt"
|
343 |
-
msgstr ""
|
344 |
-
|
345 |
-
#: wp-cache.php:245
|
346 |
-
msgid ""
|
347 |
-
"Unfortunately, WordPress cannot find the file wp-cron.php. This script is "
|
348 |
-
"required for the correct operation of garbage collection by this plugin, "
|
349 |
-
"WordPress scheduled posts as well as other critical activities."
|
350 |
-
msgstr ""
|
351 |
-
|
352 |
-
#: wp-cache.php:259
|
353 |
-
msgid "Cannot continue... fix previous problems and retry."
|
354 |
-
msgstr ""
|
355 |
-
|
356 |
-
#: wp-cache.php:268
|
357 |
-
msgid "Zlib Output Compression Enabled!"
|
358 |
-
msgstr ""
|
359 |
-
|
360 |
-
#: wp-cache.php:269
|
361 |
-
msgid ""
|
362 |
-
"PHP is compressing the data sent to the visitors of your site. Disabling "
|
363 |
-
"this is recommended as the plugin caches the compressed output once instead "
|
364 |
-
"of compressing the same page over and over again. Also see #21 in the "
|
365 |
-
"Troubleshooting section. See <a href=\"http://php.net/manual/en/zlib."
|
366 |
-
"configuration.php\">this page</a> for instructions on modifying your php.ini."
|
367 |
-
msgstr ""
|
368 |
-
|
369 |
-
#: wp-cache.php:273
|
370 |
-
msgid "Mod rewrite may not be installed!"
|
371 |
-
msgstr ""
|
372 |
-
|
373 |
-
#: wp-cache.php:274
|
374 |
-
msgid ""
|
375 |
-
"It appears that mod_rewrite is not installed. Sometimes this check isn’"
|
376 |
-
"t 100% reliable, especially if you are not using Apache. Please verify that "
|
377 |
-
"the mod_rewrite module is loaded. It is required for serving Super Cache "
|
378 |
-
"static files. You will still be able to use legacy or PHP modes."
|
379 |
-
msgstr ""
|
380 |
-
|
381 |
-
#: wp-cache.php:280
|
382 |
-
msgid "Read Only Mode. Configuration cannot be changed."
|
383 |
-
msgstr ""
|
384 |
-
|
385 |
-
#: wp-cache.php:281
|
386 |
-
msgid ""
|
387 |
-
"The WP Super Cache configuration file is <code>%s/wp-cache-config.php</code> "
|
388 |
-
"and cannot be modified. That file must be writeable by the web server to "
|
389 |
-
"make any changes."
|
390 |
-
msgstr ""
|
391 |
-
|
392 |
-
#: wp-cache.php:282
|
393 |
-
msgid ""
|
394 |
-
"A simple way of doing that is by changing the permissions temporarily using "
|
395 |
-
"the CHMOD command or through your ftp client. Make sure it’s globally "
|
396 |
-
"writeable and it should be fine."
|
397 |
-
msgstr ""
|
398 |
-
|
399 |
-
#: wp-cache.php:283 wp-cache.php:332
|
400 |
-
msgid ""
|
401 |
-
"<a href=\"http://codex.wordpress.org/Changing_File_Permissions\">This page</"
|
402 |
-
"a> explains how to change file permissions."
|
403 |
-
msgstr ""
|
404 |
-
|
405 |
-
#: wp-cache.php:284
|
406 |
-
msgid "Writeable:"
|
407 |
-
msgstr ""
|
408 |
-
|
409 |
-
#: wp-cache.php:285
|
410 |
-
msgid "Read-only:"
|
411 |
-
msgstr ""
|
412 |
-
|
413 |
-
#: wp-cache.php:303
|
414 |
-
msgid "Warning! Garbage collection is not scheduled!"
|
415 |
-
msgstr ""
|
416 |
-
|
417 |
-
#: wp-cache.php:304
|
418 |
-
msgid ""
|
419 |
-
"Garbage collection by this plugin clears out expired and old cached pages on "
|
420 |
-
"a regular basis. Use <a href=\"#expirytime\">this form</a> to enable it."
|
421 |
-
msgstr ""
|
422 |
-
|
423 |
-
#: wp-cache.php:309 wp-cache.php:337 wp-cache.php:409 wp-cache.php:2169
|
424 |
-
msgid "Dismiss"
|
425 |
-
msgstr ""
|
426 |
-
|
427 |
-
#: wp-cache.php:330
|
428 |
-
msgid "Warning! %s is writeable!"
|
429 |
-
msgstr ""
|
430 |
-
|
431 |
-
#: wp-cache.php:331
|
432 |
-
msgid ""
|
433 |
-
"You should change the permissions on %s and make it more restrictive. Use "
|
434 |
-
"your ftp client, or the following command to fix things:"
|
435 |
-
msgstr ""
|
436 |
-
|
437 |
-
#: wp-cache.php:349
|
438 |
-
msgid "Mobile rewrite rules detected"
|
439 |
-
msgstr ""
|
440 |
-
|
441 |
-
#: wp-cache.php:350
|
442 |
-
msgid ""
|
443 |
-
"For best performance you should enable \"Mobile device support\" or delete "
|
444 |
-
"the mobile rewrite rules in your .htaccess. Look for the 2 lines with the "
|
445 |
-
"text \"2.0\\ MMP|240x320\" and delete those."
|
446 |
-
msgstr ""
|
447 |
-
|
448 |
-
#: wp-cache.php:350
|
449 |
-
msgid ""
|
450 |
-
"This will have no affect on ordinary users but mobile users will see "
|
451 |
-
"uncached pages."
|
452 |
-
msgstr ""
|
453 |
-
|
454 |
-
#: wp-cache.php:356 wp-cache.php:367
|
455 |
-
msgid "Rewrite rules must be updated"
|
456 |
-
msgstr ""
|
457 |
-
|
458 |
-
#: wp-cache.php:357 wp-cache.php:368
|
459 |
-
msgid "The rewrite rules required by this plugin have changed or are missing. "
|
460 |
-
msgstr ""
|
461 |
-
|
462 |
-
#: wp-cache.php:358
|
463 |
-
msgid ""
|
464 |
-
"Mobile support requires extra rules in your .htaccess file, or you can set "
|
465 |
-
"the plugin to legacy mode. Here are your options (in order of difficulty):"
|
466 |
-
msgstr ""
|
467 |
-
|
468 |
-
#: wp-cache.php:359
|
469 |
-
msgid "Set the plugin to legacy mode and enable mobile support."
|
470 |
-
msgstr ""
|
471 |
-
|
472 |
-
#: wp-cache.php:360 wp-cache.php:369
|
473 |
-
msgid ""
|
474 |
-
"Scroll down the Advanced Settings page and click the <strong>Update "
|
475 |
-
"Mod_Rewrite Rules</strong> button."
|
476 |
-
msgstr ""
|
477 |
-
|
478 |
-
#: wp-cache.php:361
|
479 |
-
msgid ""
|
480 |
-
"Delete the plugin mod_rewrite rules in %s.htaccess enclosed by <code># BEGIN "
|
481 |
-
"WPSuperCache</code> and <code># END WPSuperCache</code> and let the plugin "
|
482 |
-
"regenerate them by reloading this page."
|
483 |
-
msgstr ""
|
484 |
-
|
485 |
-
#: wp-cache.php:362
|
486 |
-
msgid ""
|
487 |
-
"Add the rules yourself. Edit %s.htaccess and find the block of code enclosed "
|
488 |
-
"by the lines <code># BEGIN WPSuperCache</code> and <code># END WPSuperCache</"
|
489 |
-
"code>. There are two sections that look very similar. Just below the line "
|
490 |
-
"<code>%%{HTTP:Cookie} !^.*(comment_author_|%s|wp-postpass_).*$</code> add "
|
491 |
-
"these lines: (do it twice, once for each section)"
|
492 |
-
msgstr ""
|
493 |
-
|
494 |
-
#: wp-cache.php:375
|
495 |
-
msgid "Required to serve compressed supercache files properly."
|
496 |
-
msgstr ""
|
497 |
-
|
498 |
-
#: wp-cache.php:375
|
499 |
-
msgid ""
|
500 |
-
"Required to set caching information on supercache pages. IE7 users will see "
|
501 |
-
"old pages without this module."
|
502 |
-
msgstr ""
|
503 |
-
|
504 |
-
#: wp-cache.php:375
|
505 |
-
msgid ""
|
506 |
-
"Set the expiry date on supercached pages. Visitors may not see new pages "
|
507 |
-
"when they refresh or leave comments without this module."
|
508 |
-
msgstr ""
|
509 |
-
|
510 |
-
#: wp-cache.php:382
|
511 |
-
msgid "Missing Apache Modules"
|
512 |
-
msgstr ""
|
513 |
-
|
514 |
-
#: wp-cache.php:383
|
515 |
-
msgid ""
|
516 |
-
"The following Apache modules are missing. The plugin will work in legacy "
|
517 |
-
"mode without them. In full Supercache mode, your visitors may see corrupted "
|
518 |
-
"pages or out of date content however."
|
519 |
-
msgstr ""
|
520 |
-
|
521 |
-
#: wp-cache.php:403
|
522 |
-
msgid ".htaccess file may need to be moved"
|
523 |
-
msgstr ""
|
524 |
-
|
525 |
-
#: wp-cache.php:404
|
526 |
-
msgid ""
|
527 |
-
"It appears you have WordPress installed in a sub directory as described <a "
|
528 |
-
"href=\"http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory\">here</"
|
529 |
-
"a>. Unfortunately, WordPress writes to the .htaccess in the install "
|
530 |
-
"directory, not where your site is served from.<br />When you update the "
|
531 |
-
"rewrite rules in this plugin you will have to copy the file to where your "
|
532 |
-
"site is hosted. This will be fixed in the future."
|
533 |
-
msgstr ""
|
534 |
-
|
535 |
-
#: wp-cache.php:663
|
536 |
-
msgid ""
|
537 |
-
"<strong>Warning!</strong> You attempted to enable compression but <code>zlib."
|
538 |
-
"output_compression</code> is enabled. See #21 in the Troubleshooting section "
|
539 |
-
"of the readme file."
|
540 |
-
msgstr ""
|
541 |
-
|
542 |
-
#: wp-cache.php:763
|
543 |
-
msgid "WP Super Cache Settings"
|
544 |
-
msgstr ""
|
545 |
-
|
546 |
-
#: wp-cache.php:777
|
547 |
-
msgid ""
|
548 |
-
"Notice: <em>Mod_rewrite or Legacy caching enabled</em>. Showing Advanced "
|
549 |
-
"Settings Page by default."
|
550 |
-
msgstr ""
|
551 |
-
|
552 |
-
#: wp-cache.php:788
|
553 |
-
msgid ""
|
554 |
-
"Configuration file changed, some values might be wrong. Load the page again "
|
555 |
-
"from the \"Settings\" menu to reset them."
|
556 |
-
msgstr ""
|
557 |
-
|
558 |
-
#: wp-cache.php:820
|
559 |
-
msgid "Caching must be enabled to use this feature"
|
560 |
-
msgstr ""
|
561 |
-
|
562 |
-
#: wp-cache.php:838 wp-cache.php:978
|
563 |
-
msgid "Cancel Cache Preload"
|
564 |
-
msgstr ""
|
565 |
-
|
566 |
-
#: wp-cache.php:846
|
567 |
-
msgid ""
|
568 |
-
"Scheduled preloading of cache almost cancelled. It may take up to a minute "
|
569 |
-
"for it to cancel completely."
|
570 |
-
msgstr ""
|
571 |
-
|
572 |
-
#: wp-cache.php:857
|
573 |
-
msgid "Scheduled preloading of cache cancelled."
|
574 |
-
msgstr ""
|
575 |
-
|
576 |
-
#: wp-cache.php:889 wp-cache.php:976
|
577 |
-
msgid "Preload Cache Now"
|
578 |
-
msgstr ""
|
579 |
-
|
580 |
-
#: wp-cache.php:893
|
581 |
-
msgid "Scheduled preloading of cache in 10 seconds."
|
582 |
-
msgstr ""
|
583 |
-
|
584 |
-
#: wp-cache.php:898
|
585 |
-
msgid "Scheduled preloading of cache in %d minutes"
|
586 |
-
msgstr ""
|
587 |
-
|
588 |
-
#: wp-cache.php:902
|
589 |
-
msgid ""
|
590 |
-
"This will cache every published post and page on your site. It will create "
|
591 |
-
"supercache static files so unknown visitors (including bots) will hit a "
|
592 |
-
"cached page. This will probably help your Google ranking as they are using "
|
593 |
-
"speed as a metric when judging websites now."
|
594 |
-
msgstr ""
|
595 |
-
|
596 |
-
#: wp-cache.php:903
|
597 |
-
msgid ""
|
598 |
-
"Preloading creates lots of files however. Caching is done from the newest "
|
599 |
-
"post to the oldest so please consider only caching the newest if you have "
|
600 |
-
"lots (10,000+) of posts. This is especially important on shared hosting."
|
601 |
-
msgstr ""
|
602 |
-
|
603 |
-
#: wp-cache.php:904
|
604 |
-
msgid ""
|
605 |
-
"In ’Preload Mode’ regular garbage collection will only clean out "
|
606 |
-
"old legacy files for known users, not the preloaded supercache files. This "
|
607 |
-
"is a recommended setting when the cache is preloaded."
|
608 |
-
msgstr ""
|
609 |
-
|
610 |
-
#: wp-cache.php:908
|
611 |
-
msgid ""
|
612 |
-
"Refresh preloaded cache files every %s minutes. (0 to disable, minimum %d "
|
613 |
-
"minutes.)"
|
614 |
-
msgstr ""
|
615 |
-
|
616 |
-
#: wp-cache.php:921
|
617 |
-
msgid "all"
|
618 |
-
msgstr ""
|
619 |
-
|
620 |
-
#: wp-cache.php:934
|
621 |
-
msgid "Preload %s posts."
|
622 |
-
msgstr ""
|
623 |
-
|
624 |
-
#: wp-cache.php:941
|
625 |
-
msgid ""
|
626 |
-
"Preload mode (garbage collection only on legacy cache files. Recommended.)"
|
627 |
-
msgstr ""
|
628 |
-
|
629 |
-
#: wp-cache.php:944
|
630 |
-
msgid "Preload tags, categories and other taxonomies."
|
631 |
-
msgstr ""
|
632 |
-
|
633 |
-
#: wp-cache.php:947
|
634 |
-
msgid "Send me status emails when files are refreshed."
|
635 |
-
msgstr ""
|
636 |
-
|
637 |
-
#: wp-cache.php:952
|
638 |
-
msgid "Many emails, 2 emails per 100 posts."
|
639 |
-
msgstr ""
|
640 |
-
|
641 |
-
#: wp-cache.php:955
|
642 |
-
msgid "Medium, 1 email per 100 posts."
|
643 |
-
msgstr ""
|
644 |
-
|
645 |
-
#: wp-cache.php:958
|
646 |
-
msgid "Less emails, 1 at the start and 1 at the end of preloading all posts."
|
647 |
-
msgstr ""
|
648 |
-
|
649 |
-
#: wp-cache.php:962
|
650 |
-
msgid "Refresh of cache in %d hours %d minutes and %d seconds."
|
651 |
-
msgstr ""
|
652 |
-
|
653 |
-
#: wp-cache.php:963
|
654 |
-
msgid "Full refresh of cache in %d hours %d minutes and %d seconds."
|
655 |
-
msgstr ""
|
656 |
-
|
657 |
-
#: wp-cache.php:969
|
658 |
-
msgid "Currently caching from post %d to %d."
|
659 |
-
msgstr ""
|
660 |
-
|
661 |
-
#: wp-cache.php:973
|
662 |
-
msgid "<strong>Page last cached:</strong> %s"
|
663 |
-
msgstr ""
|
664 |
-
|
665 |
-
#: wp-cache.php:976
|
666 |
-
msgid "Update Settings"
|
667 |
-
msgstr ""
|
668 |
-
|
669 |
-
#: wp-cache.php:984
|
670 |
-
msgid ""
|
671 |
-
"Preloading of cache disabled. Please disable legacy page caching or talk to "
|
672 |
-
"your host administrator."
|
673 |
-
msgstr ""
|
674 |
-
|
675 |
-
#: wp-cache.php:1001 wp-cache.php:1146
|
676 |
-
msgid "Caching"
|
677 |
-
msgstr ""
|
678 |
-
|
679 |
-
#: wp-cache.php:1005 wp-cache.php:1149
|
680 |
-
msgid "Caching On"
|
681 |
-
msgstr ""
|
682 |
-
|
683 |
-
#: wp-cache.php:1005 wp-cache.php:1008 wp-cache.php:1024 wp-cache.php:1029
|
684 |
-
#: wp-cache.php:1030 wp-cache.php:1037 wp-cache.php:1064 wp-cache.php:1149
|
685 |
-
msgid "Recommended"
|
686 |
-
msgstr ""
|
687 |
-
|
688 |
-
#: wp-cache.php:1006 wp-cache.php:1150
|
689 |
-
msgid "Caching Off"
|
690 |
-
msgstr ""
|
691 |
-
|
692 |
-
#: wp-cache.php:1007
|
693 |
-
msgid "Use mod_rewrite to serve cache files."
|
694 |
-
msgstr ""
|
695 |
-
|
696 |
-
#: wp-cache.php:1008
|
697 |
-
msgid "Use PHP to serve cache files."
|
698 |
-
msgstr ""
|
699 |
-
|
700 |
-
#: wp-cache.php:1009
|
701 |
-
msgid "Legacy page caching."
|
702 |
-
msgstr ""
|
703 |
-
|
704 |
-
#: wp-cache.php:1010
|
705 |
-
msgid ""
|
706 |
-
"Mod_rewrite is fastest, PHP is almost as fast and easier to get working, "
|
707 |
-
"while legacy caching is slower again, but more flexible and also easy to get "
|
708 |
-
"working. New users should use PHP caching."
|
709 |
-
msgstr ""
|
710 |
-
|
711 |
-
#: wp-cache.php:1016
|
712 |
-
msgid "Miscellaneous"
|
713 |
-
msgstr ""
|
714 |
-
|
715 |
-
#: wp-cache.php:1022
|
716 |
-
msgid "Warning! Compression is disabled as gzencode() function was not found."
|
717 |
-
msgstr ""
|
718 |
-
|
719 |
-
#: wp-cache.php:1024
|
720 |
-
msgid "Compress pages so they’re served more quickly to visitors."
|
721 |
-
msgstr ""
|
722 |
-
|
723 |
-
#: wp-cache.php:1025
|
724 |
-
msgid ""
|
725 |
-
"Compression is disabled by default because some hosts have problems with "
|
726 |
-
"compressed files. Switching it on and off clears the cache."
|
727 |
-
msgstr ""
|
728 |
-
|
729 |
-
#: wp-cache.php:1029
|
730 |
-
msgid ""
|
731 |
-
"Don’t cache pages for <acronym title=\"Logged in users and those that "
|
732 |
-
"comment\">known users</acronym>."
|
733 |
-
msgstr ""
|
734 |
-
|
735 |
-
#: wp-cache.php:1030
|
736 |
-
msgid ""
|
737 |
-
"Cache rebuild. Serve a supercache file to anonymous users while a new file "
|
738 |
-
"is being generated."
|
739 |
-
msgstr ""
|
740 |
-
|
741 |
-
#: wp-cache.php:1037
|
742 |
-
msgid ""
|
743 |
-
"304 Not Modified browser caching. Indicate when a page has not been modified "
|
744 |
-
"since it was last requested."
|
745 |
-
msgstr ""
|
746 |
-
|
747 |
-
#: wp-cache.php:1040
|
748 |
-
msgid ""
|
749 |
-
"Warning! 304 browser caching is only supported when mod_rewrite caching is "
|
750 |
-
"not used."
|
751 |
-
msgstr ""
|
752 |
-
|
753 |
-
#: wp-cache.php:1042
|
754 |
-
msgid ""
|
755 |
-
"304 support is disabled by default because some hosts have had problems with "
|
756 |
-
"the headers used in the past."
|
757 |
-
msgstr ""
|
758 |
-
|
759 |
-
#: wp-cache.php:1045
|
760 |
-
msgid "Don’t cache pages with GET parameters. (?x=y at the end of a url)"
|
761 |
-
msgstr ""
|
762 |
-
|
763 |
-
#: wp-cache.php:1046
|
764 |
-
msgid ""
|
765 |
-
"Make known users anonymous so they’re served supercached static files."
|
766 |
-
msgstr ""
|
767 |
-
|
768 |
-
#: wp-cache.php:1047
|
769 |
-
msgid ""
|
770 |
-
"Proudly tell the world your server is <a href=\"%s\">Stephen Fry proof</a>! "
|
771 |
-
"(places a message in your blog’s footer)"
|
772 |
-
msgstr ""
|
773 |
-
|
774 |
-
#: wp-cache.php:1053 wp-cache.php:1350 wp-cache.php:1986
|
775 |
-
msgid "Advanced"
|
776 |
-
msgstr ""
|
777 |
-
|
778 |
-
#: wp-cache.php:1057
|
779 |
-
msgid ""
|
780 |
-
"Enable dynamic caching. Requires PHP or legacy caching. (See <a href="
|
781 |
-
"\"http://wordpress.org/plugins/wp-super-cache/faq/\">FAQ</a> or wp-super-"
|
782 |
-
"cache/plugins/dynamic-cache-test.php for example code.)"
|
783 |
-
msgstr ""
|
784 |
-
|
785 |
-
#: wp-cache.php:1058
|
786 |
-
msgid ""
|
787 |
-
"Mobile device support. (External plugin or theme required. See the <a href="
|
788 |
-
"\"http://wordpress.org/plugins/wp-super-cache/faq/\">FAQ</a> for further "
|
789 |
-
"details.)"
|
790 |
-
msgstr ""
|
791 |
-
|
792 |
-
#: wp-cache.php:1060
|
793 |
-
msgid "Mobile Browsers"
|
794 |
-
msgstr ""
|
795 |
-
|
796 |
-
#: wp-cache.php:1060
|
797 |
-
msgid "Mobile Prefixes"
|
798 |
-
msgstr ""
|
799 |
-
|
800 |
-
#: wp-cache.php:1062
|
801 |
-
msgid ""
|
802 |
-
"Remove UTF8/blog charset support from .htaccess file. Only necessary if you "
|
803 |
-
"see odd characters or punctuation looks incorrect. Requires rewrite rules "
|
804 |
-
"update."
|
805 |
-
msgstr ""
|
806 |
-
|
807 |
-
#: wp-cache.php:1063
|
808 |
-
msgid "Clear all cache files when a post or page is published or updated."
|
809 |
-
msgstr ""
|
810 |
-
|
811 |
-
#: wp-cache.php:1064
|
812 |
-
msgid "Extra homepage checks. (Very occasionally stops homepage caching)"
|
813 |
-
msgstr ""
|
814 |
-
|
815 |
-
#: wp-cache.php:1065
|
816 |
-
msgid "Only refresh current page when comments made."
|
817 |
-
msgstr ""
|
818 |
-
|
819 |
-
#: wp-cache.php:1066
|
820 |
-
msgid "List the newest cached pages on this page."
|
821 |
-
msgstr ""
|
822 |
-
|
823 |
-
#: wp-cache.php:1068
|
824 |
-
msgid ""
|
825 |
-
"Coarse file locking. You do not need this as it will slow down your website."
|
826 |
-
msgstr ""
|
827 |
-
|
828 |
-
#: wp-cache.php:1070
|
829 |
-
msgid ""
|
830 |
-
"Late init. Display cached files after WordPress has loaded. Most useful in "
|
831 |
-
"legacy mode."
|
832 |
-
msgstr ""
|
833 |
-
|
834 |
-
#: wp-cache.php:1072
|
835 |
-
msgid "Use object cache to store cached files."
|
836 |
-
msgstr ""
|
837 |
-
|
838 |
-
#: wp-cache.php:1072
|
839 |
-
msgid "(Experimental)"
|
840 |
-
msgstr ""
|
841 |
-
|
842 |
-
#: wp-cache.php:1074
|
843 |
-
msgid "<strong>DO NOT CACHE PAGE</strong> secret key: <a href=\"%s\">%s</a>"
|
844 |
-
msgstr ""
|
845 |
-
|
846 |
-
#: wp-cache.php:1079
|
847 |
-
msgid "Cache Location"
|
848 |
-
msgstr ""
|
849 |
-
|
850 |
-
#: wp-cache.php:1084
|
851 |
-
msgid ""
|
852 |
-
"Change the location of your cache files. The default is WP_CONTENT_DIR . /"
|
853 |
-
"cache/ which translates to %s."
|
854 |
-
msgstr ""
|
855 |
-
|
856 |
-
#: wp-cache.php:1085
|
857 |
-
msgid "You must give the full path to the directory."
|
858 |
-
msgstr ""
|
859 |
-
|
860 |
-
#: wp-cache.php:1086
|
861 |
-
msgid ""
|
862 |
-
"If the directory does not exist, it will be created. Please make sure your "
|
863 |
-
"web server user has write access to the parent directory. The parent "
|
864 |
-
"directory must exist."
|
865 |
-
msgstr ""
|
866 |
-
|
867 |
-
#: wp-cache.php:1087
|
868 |
-
msgid ""
|
869 |
-
"If the new cache directory does not exist, it will be created and the "
|
870 |
-
"contents of the old cache directory will be moved there. Otherwise, the old "
|
871 |
-
"cache directory will be left where it is."
|
872 |
-
msgstr ""
|
873 |
-
|
874 |
-
#: wp-cache.php:1088
|
875 |
-
msgid ""
|
876 |
-
"Submit a blank entry to set it to the default directory, WP_CONTENT_DIR . /"
|
877 |
-
"cache/."
|
878 |
-
msgstr ""
|
879 |
-
|
880 |
-
#: wp-cache.php:1090
|
881 |
-
msgid ""
|
882 |
-
"The plugin detected a bare directory index in your cache directory, which "
|
883 |
-
"would let visitors see your cache files directly and might expose private "
|
884 |
-
"posts."
|
885 |
-
msgstr ""
|
886 |
-
|
887 |
-
#: wp-cache.php:1092
|
888 |
-
msgid ""
|
889 |
-
"You are using mod_rewrite to serve cache files so the plugin has added "
|
890 |
-
"<q>Options -Indexes</q> to the .htaccess file in the cache directory to "
|
891 |
-
"disable indexes. However, if that does not work, you should contact your "
|
892 |
-
"system administrator or support and ask for them to be disabled, or use PHP "
|
893 |
-
"mode and move the cache outside of the web root."
|
894 |
-
msgstr ""
|
895 |
-
|
896 |
-
#: wp-cache.php:1094
|
897 |
-
msgid ""
|
898 |
-
"index.html files have been added in key directories, but unless directory "
|
899 |
-
"indexes are disabled, it is probably better to store the cache files outside "
|
900 |
-
"of the web root of %s"
|
901 |
-
msgstr ""
|
902 |
-
|
903 |
-
#: wp-cache.php:1101
|
904 |
-
msgid ""
|
905 |
-
"Since you are using mod_rewrite to serve cache files, you must choose a "
|
906 |
-
"directory in your web root which is <q>%s</q> and update the mod_rewrite "
|
907 |
-
"rules in the .htaccess file."
|
908 |
-
msgstr ""
|
909 |
-
|
910 |
-
#: wp-cache.php:1109
|
911 |
-
msgid "Note:"
|
912 |
-
msgstr ""
|
913 |
-
|
914 |
-
#: wp-cache.php:1111
|
915 |
-
msgid ""
|
916 |
-
"Uninstall this plugin on the plugins page. It will automatically clean up "
|
917 |
-
"after itself. If manual intervention is required, then simple instructions "
|
918 |
-
"are provided."
|
919 |
-
msgstr ""
|
920 |
-
|
921 |
-
#: wp-cache.php:1112
|
922 |
-
msgid ""
|
923 |
-
"If uninstalling this plugin, make sure the directory <em>%s</em> is "
|
924 |
-
"writeable by the webserver so the files <em>advanced-cache.php</em> and "
|
925 |
-
"<em>cache-config.php</em> can be deleted automatically. (Making sure those "
|
926 |
-
"files are writeable is probably a good idea!)"
|
927 |
-
msgstr ""
|
928 |
-
|
929 |
-
#: wp-cache.php:1113
|
930 |
-
msgid ""
|
931 |
-
"Please see the <a href=\"%1$s/wp-super-cache/readme.txt\">readme.txt</a> for "
|
932 |
-
"instructions on uninstalling this script. Look for the heading, \"How to "
|
933 |
-
"uninstall WP Super Cache\"."
|
934 |
-
msgstr ""
|
935 |
-
|
936 |
-
#: wp-cache.php:1114
|
937 |
-
msgid ""
|
938 |
-
"Need help? Check the <a href=\"%1$s\">Super Cache readme file</a>. It "
|
939 |
-
"includes installation documentation, a FAQ and Troubleshooting tips. The <a "
|
940 |
-
"href=\"%2$s\">support forum</a> is also available. Your question may already "
|
941 |
-
"have been answered."
|
942 |
-
msgstr ""
|
943 |
-
|
944 |
-
#: wp-cache.php:1117 wp-cache.php:1162
|
945 |
-
msgid "Update Status"
|
946 |
-
msgstr ""
|
947 |
-
|
948 |
-
#: wp-cache.php:1124
|
949 |
-
msgid "Accepted Filenames & Rejected URIs"
|
950 |
-
msgstr ""
|
951 |
-
|
952 |
-
#: wp-cache.php:1159
|
953 |
-
msgid ""
|
954 |
-
"Notice: PHP caching enabled but Supercache mod_rewrite rules detected. "
|
955 |
-
"Cached files will be served using those rules. If your site is working ok, "
|
956 |
-
"please ignore this message. Otherwise, you can edit the .htaccess file in "
|
957 |
-
"the root of your install and remove the SuperCache rules."
|
958 |
-
msgstr ""
|
959 |
-
|
960 |
-
#: wp-cache.php:1164
|
961 |
-
msgid "Cache Tester"
|
962 |
-
msgstr ""
|
963 |
-
|
964 |
-
#: wp-cache.php:1165
|
965 |
-
msgid "Test your cached website by clicking the test button below."
|
966 |
-
msgstr ""
|
967 |
-
|
968 |
-
#: wp-cache.php:1171
|
969 |
-
msgid "Fetching %s to prime cache: "
|
970 |
-
msgstr ""
|
971 |
-
|
972 |
-
#: wp-cache.php:1173 wp-cache.php:1182 wp-cache.php:1194
|
973 |
-
msgid "OK"
|
974 |
-
msgstr ""
|
975 |
-
|
976 |
-
#: wp-cache.php:1176
|
977 |
-
msgid "Fetching first copy of %s: "
|
978 |
-
msgstr ""
|
979 |
-
|
980 |
-
#: wp-cache.php:1185 wp-cache.php:1196
|
981 |
-
msgid "FAILED"
|
982 |
-
msgstr ""
|
983 |
-
|
984 |
-
#: wp-cache.php:1188
|
985 |
-
msgid "Fetching second copy of %s: "
|
986 |
-
msgstr ""
|
987 |
-
|
988 |
-
#: wp-cache.php:1200
|
989 |
-
msgid "One or more page requests failed:"
|
990 |
-
msgstr ""
|
991 |
-
|
992 |
-
#: wp-cache.php:1219 wp-cache.php:1220
|
993 |
-
msgid "Page %d: %d (%s)"
|
994 |
-
msgstr ""
|
995 |
-
|
996 |
-
#: wp-cache.php:1226
|
997 |
-
msgid "Page 1: %s"
|
998 |
-
msgstr ""
|
999 |
-
|
1000 |
-
#: wp-cache.php:1227
|
1001 |
-
msgid "Page 2: %s"
|
1002 |
-
msgstr ""
|
1003 |
-
|
1004 |
-
#: wp-cache.php:1228
|
1005 |
-
msgid "The timestamps on both pages match!"
|
1006 |
-
msgstr ""
|
1007 |
-
|
1008 |
-
#: wp-cache.php:1230
|
1009 |
-
msgid "The pages do not match! Timestamps differ or were not found!"
|
1010 |
-
msgstr ""
|
1011 |
-
|
1012 |
-
#: wp-cache.php:1231
|
1013 |
-
msgid "Things you can do:"
|
1014 |
-
msgstr ""
|
1015 |
-
|
1016 |
-
#: wp-cache.php:1232
|
1017 |
-
msgid ""
|
1018 |
-
"Load your homepage in a logged out browser, check the timestamp at the end "
|
1019 |
-
"of the html source. Load the page again and compare the timestamp. Caching "
|
1020 |
-
"is working if the timestamps match."
|
1021 |
-
msgstr ""
|
1022 |
-
|
1023 |
-
#: wp-cache.php:1233
|
1024 |
-
msgid ""
|
1025 |
-
"Enable logging on the Debug page here. That should help you track down the "
|
1026 |
-
"problem."
|
1027 |
-
msgstr ""
|
1028 |
-
|
1029 |
-
#: wp-cache.php:1234
|
1030 |
-
msgid ""
|
1031 |
-
"You should check Page 1 and Page 2 above for errors. Your local server "
|
1032 |
-
"configuration may not allow your website to access itself."
|
1033 |
-
msgstr ""
|
1034 |
-
|
1035 |
-
#: wp-cache.php:1242
|
1036 |
-
msgid "Send non-secure (non https) request for homepage"
|
1037 |
-
msgstr ""
|
1038 |
-
|
1039 |
-
#: wp-cache.php:1243
|
1040 |
-
msgid "Test Cache"
|
1041 |
-
msgstr ""
|
1042 |
-
|
1043 |
-
#: wp-cache.php:1247
|
1044 |
-
msgid "Delete Cached Pages"
|
1045 |
-
msgstr ""
|
1046 |
-
|
1047 |
-
#: wp-cache.php:1248
|
1048 |
-
msgid ""
|
1049 |
-
"Cached pages are stored on your server as html and PHP files. If you need to "
|
1050 |
-
"delete them, use the button below."
|
1051 |
-
msgstr ""
|
1052 |
-
|
1053 |
-
#: wp-cache.php:1251 wp-cache.php:2691 wp-cache.php:2710 wp-cache.php:2901
|
1054 |
-
#: wp-cache.php:3440
|
1055 |
-
msgid "Delete Cache"
|
1056 |
-
msgstr ""
|
1057 |
-
|
1058 |
-
#: wp-cache.php:1258 wp-cache.php:2697
|
1059 |
-
msgid "Delete Cache On All Blogs"
|
1060 |
-
msgstr ""
|
1061 |
-
|
1062 |
-
#: wp-cache.php:1263
|
1063 |
-
msgid "Recommended Links and Plugins"
|
1064 |
-
msgstr ""
|
1065 |
-
|
1066 |
-
#: wp-cache.php:1264
|
1067 |
-
msgid ""
|
1068 |
-
"Caching is only one part of making a website faster. Here are some other "
|
1069 |
-
"plugins that will help:"
|
1070 |
-
msgstr ""
|
1071 |
-
|
1072 |
-
#: wp-cache.php:1265
|
1073 |
-
msgid ""
|
1074 |
-
"<a href=\"%s\">Yahoo! Yslow</a> is an extension for the Firefox add-on "
|
1075 |
-
"Firebug. It analyzes web pages and suggests ways to improve their "
|
1076 |
-
"performance based on a set of rules for high performance web pages. Also try "
|
1077 |
-
"the performance tools online at <a href=\"%s\">GTMetrix</a>."
|
1078 |
-
msgstr ""
|
1079 |
-
|
1080 |
-
#: wp-cache.php:1266
|
1081 |
-
msgid ""
|
1082 |
-
"<a href=\"%s\">Use Google Libraries</a> allows you to load some commonly "
|
1083 |
-
"used Javascript libraries from Google webservers. Ironically, it may reduce "
|
1084 |
-
"your Yslow score."
|
1085 |
-
msgstr ""
|
1086 |
-
|
1087 |
-
#: wp-cache.php:1267
|
1088 |
-
msgid ""
|
1089 |
-
"<strong>Advanced users only:</strong> Install an object cache. Choose from "
|
1090 |
-
"<a href=\"%s\">Memcached</a>, <a href=\"%s\">XCache</a>, <a href=\"%s"
|
1091 |
-
"\">eAcccelerator</a> and others."
|
1092 |
-
msgstr ""
|
1093 |
-
|
1094 |
-
#: wp-cache.php:1268
|
1095 |
-
msgid ""
|
1096 |
-
"<a href=\"%s\">Cron View</a> is a useful plugin to use when trying to debug "
|
1097 |
-
"garbage collection and preload problems."
|
1098 |
-
msgstr ""
|
1099 |
-
|
1100 |
-
#: wp-cache.php:1279
|
1101 |
-
msgid "Need Help?"
|
1102 |
-
msgstr ""
|
1103 |
-
|
1104 |
-
#: wp-cache.php:1281
|
1105 |
-
msgid ""
|
1106 |
-
"Use the debug system in the Debug tab above. It will tell you what the "
|
1107 |
-
"plugin is doing."
|
1108 |
-
msgstr ""
|
1109 |
-
|
1110 |
-
#: wp-cache.php:1282
|
1111 |
-
msgid "<a href=\"%1$s\">Installation Help</a>"
|
1112 |
-
msgstr ""
|
1113 |
-
|
1114 |
-
#: wp-cache.php:1283
|
1115 |
-
msgid "<a href=\"%1$s\">Frequently Asked Questions</a>"
|
1116 |
-
msgstr ""
|
1117 |
-
|
1118 |
-
#: wp-cache.php:1284
|
1119 |
-
msgid "<a href=\"%1$s\">Support Forum</a>"
|
1120 |
-
msgstr ""
|
1121 |
-
|
1122 |
-
#: wp-cache.php:1285
|
1123 |
-
msgid "<a href=\"%1$s\">Development Version</a>"
|
1124 |
-
msgstr ""
|
1125 |
-
|
1126 |
-
#: wp-cache.php:1287
|
1127 |
-
msgid "Rate This Plugin!"
|
1128 |
-
msgstr ""
|
1129 |
-
|
1130 |
-
#: wp-cache.php:1288
|
1131 |
-
msgid ""
|
1132 |
-
"Please <a href=\"%s\">rate</a> this plugin and tell me if it works for you "
|
1133 |
-
"or not. It really helps development."
|
1134 |
-
msgstr ""
|
1135 |
-
|
1136 |
-
#: wp-cache.php:1297
|
1137 |
-
msgid "Cached pages since %1$s : <strong>%2$s</strong>"
|
1138 |
-
msgstr ""
|
1139 |
-
|
1140 |
-
#: wp-cache.php:1298
|
1141 |
-
msgid "Newest Cached Pages:"
|
1142 |
-
msgstr ""
|
1143 |
-
|
1144 |
-
#: wp-cache.php:1302
|
1145 |
-
msgid "Cached %s seconds ago"
|
1146 |
-
msgstr ""
|
1147 |
-
|
1148 |
-
#: wp-cache.php:1305
|
1149 |
-
msgid "(may not always be accurate on busy sites)"
|
1150 |
-
msgstr ""
|
1151 |
-
|
1152 |
-
#: wp-cache.php:1321
|
1153 |
-
msgid ""
|
1154 |
-
"Cache plugins are PHP scripts that live in a plugins folder inside the wp-"
|
1155 |
-
"super-cache folder. They are loaded when Supercache loads, much sooner than "
|
1156 |
-
"regular WordPress plugins."
|
1157 |
-
msgstr ""
|
1158 |
-
|
1159 |
-
#: wp-cache.php:1322
|
1160 |
-
msgid ""
|
1161 |
-
"This is strictly an advanced feature only and knowledge of both PHP and "
|
1162 |
-
"WordPress actions is required to create them."
|
1163 |
-
msgstr ""
|
1164 |
-
|
1165 |
-
#: wp-cache.php:1323
|
1166 |
-
msgid ""
|
1167 |
-
"<strong>Warning</strong>! Due to the way WordPress upgrades plugins, the "
|
1168 |
-
"plugins you upload to wp-super-cache/plugins/ will be deleted when you "
|
1169 |
-
"upgrade WP Super Cache. You can avoid this by loading the plugins from "
|
1170 |
-
"elsewhere. Set <strong>$wp_cache_plugins_dir</strong> to the new location in "
|
1171 |
-
"wp-config.php and WP Super Cache will look there instead.<br />More info "
|
1172 |
-
"available in the <a href=\"http://ocaoimh.ie/wp-super-cache-developers/"
|
1173 |
-
"\">developer documentation</a>."
|
1174 |
-
msgstr ""
|
1175 |
-
|
1176 |
-
#: wp-cache.php:1333
|
1177 |
-
msgid "Available Plugins"
|
1178 |
-
msgstr ""
|
1179 |
-
|
1180 |
-
#: wp-cache.php:1350
|
1181 |
-
msgid "Easy"
|
1182 |
-
msgstr ""
|
1183 |
-
|
1184 |
-
#: wp-cache.php:1350
|
1185 |
-
msgid "CDN"
|
1186 |
-
msgstr ""
|
1187 |
-
|
1188 |
-
#: wp-cache.php:1350
|
1189 |
-
msgid "Contents"
|
1190 |
-
msgstr ""
|
1191 |
-
|
1192 |
-
#: wp-cache.php:1350
|
1193 |
-
msgid "Preload"
|
1194 |
-
msgstr ""
|
1195 |
-
|
1196 |
-
#: wp-cache.php:1350
|
1197 |
-
msgid "Plugins"
|
1198 |
-
msgstr ""
|
1199 |
-
|
1200 |
-
#: wp-cache.php:1350
|
1201 |
-
msgid "Debug"
|
1202 |
-
msgstr ""
|
1203 |
-
|
1204 |
-
#: wp-cache.php:1388
|
1205 |
-
msgid ""
|
1206 |
-
"Notice: WP Super Cache mod_rewrite rule checks disabled unless running on <a "
|
1207 |
-
"href=\"%s\">the main site</a> of this network."
|
1208 |
-
msgstr ""
|
1209 |
-
|
1210 |
-
#: wp-cache.php:1397
|
1211 |
-
msgid "Mod Rewrite Rules"
|
1212 |
-
msgstr ""
|
1213 |
-
|
1214 |
-
#: wp-cache.php:1403
|
1215 |
-
msgid "WordPress MU Detected"
|
1216 |
-
msgstr ""
|
1217 |
-
|
1218 |
-
#: wp-cache.php:1403
|
1219 |
-
msgid ""
|
1220 |
-
"Unfortunately, the rewrite rules cannot be updated automatically when "
|
1221 |
-
"running WordPress MU. Please open your .htaccess and add the following "
|
1222 |
-
"mod_rewrite rules above any other rules in that file."
|
1223 |
-
msgstr ""
|
1224 |
-
|
1225 |
-
#: wp-cache.php:1405
|
1226 |
-
msgid "Mod Rewrite rules cannot be updated!"
|
1227 |
-
msgstr ""
|
1228 |
-
|
1229 |
-
#: wp-cache.php:1406
|
1230 |
-
msgid ""
|
1231 |
-
"You must have <strong>BEGIN</strong> and <strong>END</strong> markers in %s."
|
1232 |
-
"htaccess for the auto update to work. They look like this and surround the "
|
1233 |
-
"main WordPress mod_rewrite rules:"
|
1234 |
-
msgstr ""
|
1235 |
-
|
1236 |
-
#: wp-cache.php:1408
|
1237 |
-
msgid "Refresh this page when you have updated your .htaccess file."
|
1238 |
-
msgstr ""
|
1239 |
-
|
1240 |
-
#: wp-cache.php:1412
|
1241 |
-
msgid "Thank you for upgrading."
|
1242 |
-
msgstr ""
|
1243 |
-
|
1244 |
-
#: wp-cache.php:1412
|
1245 |
-
msgid ""
|
1246 |
-
"The mod_rewrite rules changed since you last installed this plugin. "
|
1247 |
-
"Unfortunately, you must remove the old supercache rules before the new ones "
|
1248 |
-
"are updated. Refresh this page when you have edited your .htaccess file. If "
|
1249 |
-
"you wish to manually upgrade, change the following line: %1$s so it looks "
|
1250 |
-
"like this: %2$s The only changes are \"HTTP_COOKIE\" becomes \"HTTP:Cookie\" "
|
1251 |
-
"and \"wordpressuser\" becomes \"wordpress\". This is a WordPress 2.5 change "
|
1252 |
-
"but it’s backwards compatible with older versions if you’re "
|
1253 |
-
"brave enough to use them."
|
1254 |
-
msgstr ""
|
1255 |
-
|
1256 |
-
#: wp-cache.php:1416
|
1257 |
-
msgid "Trailing slash check required."
|
1258 |
-
msgstr ""
|
1259 |
-
|
1260 |
-
#: wp-cache.php:1416
|
1261 |
-
msgid ""
|
1262 |
-
"It looks like your blog has URLs that end with a \"/\". Unfortunately since "
|
1263 |
-
"you installed this plugin a duplicate content bug has been found where URLs "
|
1264 |
-
"not ending in a \"/\" end serve the same content as those with the \"/\" and "
|
1265 |
-
"do not redirect to the proper URL. To fix, you must edit your .htaccess file "
|
1266 |
-
"and add these two rules to the two groups of Super Cache rules:"
|
1267 |
-
msgstr ""
|
1268 |
-
|
1269 |
-
#: wp-cache.php:1418
|
1270 |
-
msgid ""
|
1271 |
-
"You can see where the rules go and examine the complete rules by clicking "
|
1272 |
-
"the \"View mod_rewrite rules\" link below."
|
1273 |
-
msgstr ""
|
1274 |
-
|
1275 |
-
#: wp-cache.php:1432
|
1276 |
-
msgid "Mod Rewrite rules updated!"
|
1277 |
-
msgstr ""
|
1278 |
-
|
1279 |
-
#: wp-cache.php:1433
|
1280 |
-
msgid ""
|
1281 |
-
"%s.htaccess has been updated with the necessary mod_rewrite rules. Please "
|
1282 |
-
"verify they are correct. They should look like this:"
|
1283 |
-
msgstr ""
|
1284 |
-
|
1285 |
-
#: wp-cache.php:1435
|
1286 |
-
msgid "Mod Rewrite rules must be updated!"
|
1287 |
-
msgstr ""
|
1288 |
-
|
1289 |
-
#: wp-cache.php:1436
|
1290 |
-
msgid ""
|
1291 |
-
"Your %s.htaccess is not writable by the webserver and must be updated with "
|
1292 |
-
"the necessary mod_rewrite rules. The new rules go above the regular "
|
1293 |
-
"WordPress rules as shown in the code below:"
|
1294 |
-
msgstr ""
|
1295 |
-
|
1296 |
-
#: wp-cache.php:1441
|
1297 |
-
msgid ""
|
1298 |
-
"WP Super Cache mod rewrite rules were detected in your %s.htaccess file.<br /"
|
1299 |
-
"> Click the following link to see the lines added to that file. If you have "
|
1300 |
-
"upgraded the plugin, make sure these rules match."
|
1301 |
-
msgstr ""
|
1302 |
-
|
1303 |
-
#: wp-cache.php:1444
|
1304 |
-
msgid ""
|
1305 |
-
"A difference between the rules in your .htaccess file and the plugin rewrite "
|
1306 |
-
"rules has been found. This could be simple whitespace differences, but you "
|
1307 |
-
"should compare the rules in the file with those below as soon as possible. "
|
1308 |
-
"Click the ’Update Mod_Rewrite Rules’ button to update the rules."
|
1309 |
-
msgstr ""
|
1310 |
-
|
1311 |
-
#: wp-cache.php:1446
|
1312 |
-
msgid "View Mod_Rewrite Rules"
|
1313 |
-
msgstr ""
|
1314 |
-
|
1315 |
-
#: wp-cache.php:1452 wp-cache.php:3019
|
1316 |
-
msgid "Rules must be added to %s too:"
|
1317 |
-
msgstr ""
|
1318 |
-
|
1319 |
-
#: wp-cache.php:1458
|
1320 |
-
msgid "Gzip encoding rules in %s.htaccess created."
|
1321 |
-
msgstr ""
|
1322 |
-
|
1323 |
-
#: wp-cache.php:1464
|
1324 |
-
msgid "Fix Configuration"
|
1325 |
-
msgstr ""
|
1326 |
-
|
1327 |
-
#: wp-cache.php:1467
|
1328 |
-
msgid "Restore Default Configuration"
|
1329 |
-
msgstr ""
|
1330 |
-
|
1331 |
-
#: wp-cache.php:1475
|
1332 |
-
msgid ""
|
1333 |
-
"Comment moderation is enabled. Your comment may take some time to appear."
|
1334 |
-
msgstr ""
|
1335 |
-
|
1336 |
-
#: wp-cache.php:1500
|
1337 |
-
msgid "Lock Down:"
|
1338 |
-
msgstr ""
|
1339 |
-
|
1340 |
-
#: wp-cache.php:1501
|
1341 |
-
msgid ""
|
1342 |
-
"Prepare your server for an expected spike in traffic by enabling the lock "
|
1343 |
-
"down. When this is enabled, new comments on a post will not refresh the "
|
1344 |
-
"cached static files."
|
1345 |
-
msgstr ""
|
1346 |
-
|
1347 |
-
#: wp-cache.php:1502
|
1348 |
-
msgid ""
|
1349 |
-
"Developers: Make your plugin lock down compatible by checking the "
|
1350 |
-
"\"WPLOCKDOWN\" constant. The following code will make sure your plugin "
|
1351 |
-
"respects the WPLOCKDOWN setting."
|
1352 |
-
msgstr ""
|
1353 |
-
|
1354 |
-
#: wp-cache.php:1504
|
1355 |
-
msgid "Sorry. My blog is locked down. Updates will appear shortly"
|
1356 |
-
msgstr ""
|
1357 |
-
|
1358 |
-
#: wp-cache.php:1508
|
1359 |
-
msgid ""
|
1360 |
-
"WordPress is locked down. Super Cache static files will not be deleted when "
|
1361 |
-
"new comments are made."
|
1362 |
-
msgstr ""
|
1363 |
-
|
1364 |
-
#: wp-cache.php:1510
|
1365 |
-
msgid ""
|
1366 |
-
"WordPress is not locked down. New comments will refresh Super Cache static "
|
1367 |
-
"files as normal."
|
1368 |
-
msgstr ""
|
1369 |
-
|
1370 |
-
#: wp-cache.php:1516
|
1371 |
-
msgid "Lock Down"
|
1372 |
-
msgstr ""
|
1373 |
-
|
1374 |
-
#: wp-cache.php:1524
|
1375 |
-
msgid "Directly Cached Files"
|
1376 |
-
msgstr ""
|
1377 |
-
|
1378 |
-
#: wp-cache.php:1576
|
1379 |
-
msgid "Cannot delete directory"
|
1380 |
-
msgstr ""
|
1381 |
-
|
1382 |
-
#: wp-cache.php:1585
|
1383 |
-
msgid "%s removed!"
|
1384 |
-
msgstr ""
|
1385 |
-
|
1386 |
-
#: wp-cache.php:1593
|
1387 |
-
msgid ""
|
1388 |
-
"You must make %s writable to enable this feature. As this is a security "
|
1389 |
-
"risk, please make it read-only after your page is generated."
|
1390 |
-
msgstr ""
|
1391 |
-
|
1392 |
-
#: wp-cache.php:1598
|
1393 |
-
msgid ""
|
1394 |
-
"%s is writable. Please make it readonly after your page is generated as this "
|
1395 |
-
"is a security risk."
|
1396 |
-
msgstr ""
|
1397 |
-
|
1398 |
-
#: wp-cache.php:1613
|
1399 |
-
msgid "Existing direct page"
|
1400 |
-
msgstr ""
|
1401 |
-
|
1402 |
-
#: wp-cache.php:1613
|
1403 |
-
msgid "Delete cached file"
|
1404 |
-
msgstr ""
|
1405 |
-
|
1406 |
-
#: wp-cache.php:1618
|
1407 |
-
msgid "Add direct page:"
|
1408 |
-
msgstr ""
|
1409 |
-
|
1410 |
-
#: wp-cache.php:1620
|
1411 |
-
msgid ""
|
1412 |
-
"Directly cached files are files created directly off %s where your blog "
|
1413 |
-
"lives. This feature is only useful if you are expecting a major Digg or "
|
1414 |
-
"Slashdot level of traffic to one post or page."
|
1415 |
-
msgstr ""
|
1416 |
-
|
1417 |
-
#: wp-cache.php:1622
|
1418 |
-
msgid ""
|
1419 |
-
"For example: to cache <em>%1$sabout/</em>, you would enter %1$sabout/ or /"
|
1420 |
-
"about/. The cached file will be generated the next time an anonymous user "
|
1421 |
-
"visits that page."
|
1422 |
-
msgstr ""
|
1423 |
-
|
1424 |
-
#: wp-cache.php:1623
|
1425 |
-
msgid ""
|
1426 |
-
"Make the textbox blank to remove it from the list of direct pages and delete "
|
1427 |
-
"the cached file."
|
1428 |
-
msgstr ""
|
1429 |
-
|
1430 |
-
#: wp-cache.php:1628
|
1431 |
-
msgid "Update Direct Pages"
|
1432 |
-
msgstr ""
|
1433 |
-
|
1434 |
-
#: wp-cache.php:1656
|
1435 |
-
msgctxt "timezone date format"
|
1436 |
-
msgid "Y-m-d G:i:s"
|
1437 |
-
msgstr ""
|
1438 |
-
|
1439 |
-
#: wp-cache.php:1728
|
1440 |
-
msgid "Expiry Time & Garbage Collection"
|
1441 |
-
msgstr ""
|
1442 |
-
|
1443 |
-
#: wp-cache.php:1730
|
1444 |
-
msgid ""
|
1445 |
-
"<abbr title=\"Coordinated Universal Time\">UTC</abbr> time is <code>%s</code>"
|
1446 |
-
msgstr ""
|
1447 |
-
|
1448 |
-
#: wp-cache.php:1733
|
1449 |
-
msgid "Local time is <code>%1$s</code>"
|
1450 |
-
msgstr ""
|
1451 |
-
|
1452 |
-
#: wp-cache.php:1737
|
1453 |
-
msgid "Next scheduled garbage collection will be at <strong>%s UTC</strong>"
|
1454 |
-
msgstr ""
|
1455 |
-
|
1456 |
-
#: wp-cache.php:1741
|
1457 |
-
msgid ""
|
1458 |
-
"Warning! <strong>PRELOAD MODE</strong> activated. Supercache files will not "
|
1459 |
-
"be deleted regardless of age."
|
1460 |
-
msgstr ""
|
1461 |
-
|
1462 |
-
#: wp-cache.php:1759
|
1463 |
-
msgid "Cache Timeout"
|
1464 |
-
msgstr ""
|
1465 |
-
|
1466 |
-
#: wp-cache.php:1760 wp-cache.php:1763
|
1467 |
-
msgid "seconds"
|
1468 |
-
msgstr ""
|
1469 |
-
|
1470 |
-
#: wp-cache.php:1761
|
1471 |
-
msgid ""
|
1472 |
-
"How long should cached pages remain fresh? Set to 0 to disable garbage "
|
1473 |
-
"collection. A good starting point is 3600 seconds."
|
1474 |
-
msgstr ""
|
1475 |
-
|
1476 |
-
#: wp-cache.php:1762
|
1477 |
-
msgid "Scheduler"
|
1478 |
-
msgstr ""
|
1479 |
-
|
1480 |
-
#: wp-cache.php:1762
|
1481 |
-
msgid "Timer:"
|
1482 |
-
msgstr ""
|
1483 |
-
|
1484 |
-
#: wp-cache.php:1763
|
1485 |
-
msgid "Check for stale cached files every <em>interval</em> seconds."
|
1486 |
-
msgstr ""
|
1487 |
-
|
1488 |
-
#: wp-cache.php:1764
|
1489 |
-
msgid "Clock:"
|
1490 |
-
msgstr ""
|
1491 |
-
|
1492 |
-
#: wp-cache.php:1765
|
1493 |
-
msgid "HH:MM"
|
1494 |
-
msgstr ""
|
1495 |
-
|
1496 |
-
#: wp-cache.php:1765
|
1497 |
-
msgid ""
|
1498 |
-
"Check for stale cached files at this time <strong>(UTC)</strong> or starting "
|
1499 |
-
"at this time every <em>interval</em> below."
|
1500 |
-
msgstr ""
|
1501 |
-
|
1502 |
-
#: wp-cache.php:1767
|
1503 |
-
msgid "Interval:"
|
1504 |
-
msgstr ""
|
1505 |
-
|
1506 |
-
#: wp-cache.php:1773
|
1507 |
-
msgid "Notification Emails"
|
1508 |
-
msgstr ""
|
1509 |
-
|
1510 |
-
#: wp-cache.php:1774
|
1511 |
-
msgid "Email me when the garbage collection runs."
|
1512 |
-
msgstr ""
|
1513 |
-
|
1514 |
-
#: wp-cache.php:1776
|
1515 |
-
msgid "Garbage Collection"
|
1516 |
-
msgstr ""
|
1517 |
-
|
1518 |
-
#: wp-cache.php:1777
|
1519 |
-
msgid ""
|
1520 |
-
"<em>Garbage collection</em> is the simple act of throwing out your garbage. "
|
1521 |
-
"For this plugin that would be old or <em>stale</em> cached files that may be "
|
1522 |
-
"out of date. New cached files are described as <em>fresh</em>."
|
1523 |
-
msgstr ""
|
1524 |
-
|
1525 |
-
#: wp-cache.php:1778
|
1526 |
-
msgid ""
|
1527 |
-
"Cached files are fresh for a limited length of time. You can set that time "
|
1528 |
-
"in the <em>Cache Timeout</em> text box on this page."
|
1529 |
-
msgstr ""
|
1530 |
-
|
1531 |
-
#: wp-cache.php:1779
|
1532 |
-
msgid ""
|
1533 |
-
"Stale cached files are not removed as soon as they become stale. They have "
|
1534 |
-
"to be removed by the garbage collecter. That is why you have to tell the "
|
1535 |
-
"plugin when the garbage collector should run."
|
1536 |
-
msgstr ""
|
1537 |
-
|
1538 |
-
#: wp-cache.php:1780
|
1539 |
-
msgid ""
|
1540 |
-
"Use the <em>Timer</em> or <em>Clock</em> schedulers to define when the "
|
1541 |
-
"garbage collector should run."
|
1542 |
-
msgstr ""
|
1543 |
-
|
1544 |
-
#: wp-cache.php:1781
|
1545 |
-
msgid ""
|
1546 |
-
"The <em>Timer</em> scheduler tells the plugin to run the garbage collector "
|
1547 |
-
"at regular intervals. When one garbage collection is done, the next run is "
|
1548 |
-
"scheduled."
|
1549 |
-
msgstr ""
|
1550 |
-
|
1551 |
-
#: wp-cache.php:1782
|
1552 |
-
msgid ""
|
1553 |
-
"Or, the <em>Clock</em> scheduler allows the garbage collection to run at "
|
1554 |
-
"specific times. If set to run hourly or twice daily, the garbage collector "
|
1555 |
-
"will be first scheduled for the time you enter here. It will then run again "
|
1556 |
-
"at the indicated interval. If set to run daily, it will run once a day at "
|
1557 |
-
"the time specified."
|
1558 |
-
msgstr ""
|
1559 |
-
|
1560 |
-
#: wp-cache.php:1784
|
1561 |
-
msgid ""
|
1562 |
-
"There are no best garbage collection settings but here are a few scenarios. "
|
1563 |
-
"Garbage collection is separate to other actions that clear our cached files "
|
1564 |
-
"like leaving a comment or publishing a post."
|
1565 |
-
msgstr ""
|
1566 |
-
|
1567 |
-
#: wp-cache.php:1786
|
1568 |
-
msgid ""
|
1569 |
-
"Sites that want to serve lots of newly generated data should set the "
|
1570 |
-
"<em>Cache Timeout</em> to 60 and use the <em>Timer</em> scheduler set to 90 "
|
1571 |
-
"seconds."
|
1572 |
-
msgstr ""
|
1573 |
-
|
1574 |
-
#: wp-cache.php:1787
|
1575 |
-
msgid ""
|
1576 |
-
"Sites with widgets and rss feeds in their sidebar should probably use a "
|
1577 |
-
"timeout of 3600 seconds and set the timer to 600 seconds. Stale files will "
|
1578 |
-
"be caught within 10 minutes of going stale."
|
1579 |
-
msgstr ""
|
1580 |
-
|
1581 |
-
#: wp-cache.php:1788
|
1582 |
-
msgid ""
|
1583 |
-
"Sites with lots of static content, no widgets or rss feeds in their sidebar "
|
1584 |
-
"can use a timeout of 86400 seconds or even more and set the timer to "
|
1585 |
-
"something equally long."
|
1586 |
-
msgstr ""
|
1587 |
-
|
1588 |
-
#: wp-cache.php:1789
|
1589 |
-
msgid ""
|
1590 |
-
"Sites where an external data source updates at a particular time every day "
|
1591 |
-
"should set the timeout to 86400 seconds and use the Clock scheduler set "
|
1592 |
-
"appropriately."
|
1593 |
-
msgstr ""
|
1594 |
-
|
1595 |
-
#: wp-cache.php:1791
|
1596 |
-
msgid ""
|
1597 |
-
"Checking for and deleting expired files is expensive, but it’s "
|
1598 |
-
"expensive leaving them there too. On a very busy site, you should set the "
|
1599 |
-
"expiry time to <em>600 seconds</em>. Experiment with different values and "
|
1600 |
-
"visit this page to see how many expired files remain at different times "
|
1601 |
-
"during the day. If you are using legacy caching, aim to have less than 500 "
|
1602 |
-
"cached files if possible. You can have many times more cached files when "
|
1603 |
-
"using mod_rewrite or PHP caching."
|
1604 |
-
msgstr ""
|
1605 |
-
|
1606 |
-
#: wp-cache.php:1792
|
1607 |
-
msgid "Set the expiry time to 0 seconds to disable garbage collection."
|
1608 |
-
msgstr ""
|
1609 |
-
|
1610 |
-
#: wp-cache.php:1793
|
1611 |
-
msgid "Change Expiration"
|
1612 |
-
msgstr ""
|
1613 |
-
|
1614 |
-
#: wp-cache.php:1837
|
1615 |
-
msgid "Rejected User Agents"
|
1616 |
-
msgstr ""
|
1617 |
-
|
1618 |
-
#: wp-cache.php:1838
|
1619 |
-
msgid ""
|
1620 |
-
"Strings in the HTTP ’User Agent’ header that prevent WP-Cache "
|
1621 |
-
"from caching bot, spiders, and crawlers’ requests. Note that super "
|
1622 |
-
"cached files are still sent to these agents if they already exists."
|
1623 |
-
msgstr ""
|
1624 |
-
|
1625 |
-
#: wp-cache.php:1845
|
1626 |
-
msgid "Save UA Strings"
|
1627 |
-
msgstr ""
|
1628 |
-
|
1629 |
-
#: wp-cache.php:1868
|
1630 |
-
msgid ""
|
1631 |
-
"Do not cache the following page types. See the <a href=\"http://codex."
|
1632 |
-
"wordpress.org/Conditional_Tags\">Conditional Tags</a> documentation for a "
|
1633 |
-
"complete discussion on each type."
|
1634 |
-
msgstr ""
|
1635 |
-
|
1636 |
-
#: wp-cache.php:1871
|
1637 |
-
msgid "Single Posts"
|
1638 |
-
msgstr ""
|
1639 |
-
|
1640 |
-
#: wp-cache.php:1872
|
1641 |
-
msgid "Pages"
|
1642 |
-
msgstr ""
|
1643 |
-
|
1644 |
-
#: wp-cache.php:1873
|
1645 |
-
msgid "Front Page"
|
1646 |
-
msgstr ""
|
1647 |
-
|
1648 |
-
#: wp-cache.php:1874
|
1649 |
-
msgid "Home"
|
1650 |
-
msgstr ""
|
1651 |
-
|
1652 |
-
#: wp-cache.php:1875
|
1653 |
-
msgid "Archives"
|
1654 |
-
msgstr ""
|
1655 |
-
|
1656 |
-
#: wp-cache.php:1876
|
1657 |
-
msgid "Tags"
|
1658 |
-
msgstr ""
|
1659 |
-
|
1660 |
-
#: wp-cache.php:1877
|
1661 |
-
msgid "Category"
|
1662 |
-
msgstr ""
|
1663 |
-
|
1664 |
-
#: wp-cache.php:1878
|
1665 |
-
msgid "Feeds"
|
1666 |
-
msgstr ""
|
1667 |
-
|
1668 |
-
#: wp-cache.php:1879
|
1669 |
-
msgid "Search Pages"
|
1670 |
-
msgstr ""
|
1671 |
-
|
1672 |
-
#: wp-cache.php:1880
|
1673 |
-
msgid "Author Pages"
|
1674 |
-
msgstr ""
|
1675 |
-
|
1676 |
-
#: wp-cache.php:1882 wp-cache.php:1996
|
1677 |
-
msgid "Save"
|
1678 |
-
msgstr ""
|
1679 |
-
|
1680 |
-
#: wp-cache.php:1899
|
1681 |
-
msgid ""
|
1682 |
-
"Add here strings (not a filename) that forces a page not to be cached. For "
|
1683 |
-
"example, if your URLs include year and you dont want to cache last year "
|
1684 |
-
"posts, it’s enough to specify the year, i.e. ’/2004/’. WP-"
|
1685 |
-
"Cache will search if that string is part of the URI and if so, it will not "
|
1686 |
-
"cache that page."
|
1687 |
-
msgstr ""
|
1688 |
-
|
1689 |
-
#: wp-cache.php:1905
|
1690 |
-
msgid "Save Strings"
|
1691 |
-
msgstr ""
|
1692 |
-
|
1693 |
-
#: wp-cache.php:1921
|
1694 |
-
msgid ""
|
1695 |
-
"Add here those filenames that can be cached, even if they match one of the "
|
1696 |
-
"rejected substring specified above."
|
1697 |
-
msgstr ""
|
1698 |
-
|
1699 |
-
#: wp-cache.php:1927
|
1700 |
-
msgid "Save Files"
|
1701 |
-
msgstr ""
|
1702 |
-
|
1703 |
-
#: wp-cache.php:1970
|
1704 |
-
msgid "Currently logging to: %s"
|
1705 |
-
msgstr ""
|
1706 |
-
|
1707 |
-
#: wp-cache.php:1973
|
1708 |
-
msgid ""
|
1709 |
-
"Fix problems with the plugin by debugging it here. It can log them to a file "
|
1710 |
-
"in your cache directory."
|
1711 |
-
msgstr ""
|
1712 |
-
|
1713 |
-
#: wp-cache.php:1977
|
1714 |
-
msgid "Debugging"
|
1715 |
-
msgstr ""
|
1716 |
-
|
1717 |
-
#: wp-cache.php:1978
|
1718 |
-
msgid "IP Address"
|
1719 |
-
msgstr ""
|
1720 |
-
|
1721 |
-
#: wp-cache.php:1978
|
1722 |
-
msgid "(only log requests from this IP address. Your IP is %s)"
|
1723 |
-
msgstr ""
|
1724 |
-
|
1725 |
-
#: wp-cache.php:1979
|
1726 |
-
msgid "Cache Status Messages"
|
1727 |
-
msgstr ""
|
1728 |
-
|
1729 |
-
#: wp-cache.php:1980
|
1730 |
-
msgid "Display comments at the end of every page like this:"
|
1731 |
-
msgstr ""
|
1732 |
-
|
1733 |
-
#: wp-cache.php:1986
|
1734 |
-
msgid ""
|
1735 |
-
"In very rare cases two problems may arise on some blogs:<ol><li> The front "
|
1736 |
-
"page may start downloading as a zip file.</li><li> The wrong page is "
|
1737 |
-
"occasionally cached as the front page if your blog uses a static front page "
|
1738 |
-
"and the permalink structure is <em>/%category%/%postname%/</em>.</li></ol>"
|
1739 |
-
msgstr ""
|
1740 |
-
|
1741 |
-
#: wp-cache.php:1987
|
1742 |
-
msgid ""
|
1743 |
-
"I’m 99% certain that they aren’t bugs in WP Super Cache and they "
|
1744 |
-
"only happen in very rare cases but you can run a simple check once every 5 "
|
1745 |
-
"minutes to verify that your site is ok if you’re worried. You will be "
|
1746 |
-
"emailed if there is a problem."
|
1747 |
-
msgstr ""
|
1748 |
-
|
1749 |
-
#: wp-cache.php:1989
|
1750 |
-
msgid "Check front page every 5 minutes."
|
1751 |
-
msgstr ""
|
1752 |
-
|
1753 |
-
#: wp-cache.php:1990
|
1754 |
-
msgid "Front page text"
|
1755 |
-
msgstr ""
|
1756 |
-
|
1757 |
-
#: wp-cache.php:1990
|
1758 |
-
msgid ""
|
1759 |
-
"Text to search for on your front page. If this text is missing, the cache "
|
1760 |
-
"will be cleared. Leave blank to disable."
|
1761 |
-
msgstr ""
|
1762 |
-
|
1763 |
-
#: wp-cache.php:1991
|
1764 |
-
msgid "Clear cache on error."
|
1765 |
-
msgstr ""
|
1766 |
-
|
1767 |
-
#: wp-cache.php:1992
|
1768 |
-
msgid "Email the blog admin when checks are made. (useful for testing)"
|
1769 |
-
msgstr ""
|
1770 |
-
|
1771 |
-
#: wp-cache.php:2006
|
1772 |
-
msgid ""
|
1773 |
-
"Error: GZIP compression is enabled. Disable it if you want to enable wp-"
|
1774 |
-
"cache."
|
1775 |
-
msgstr ""
|
1776 |
-
|
1777 |
-
#: wp-cache.php:2056 wp-cache.php:2355 wp-cache.php:2391
|
1778 |
-
msgid "Warning"
|
1779 |
-
msgstr ""
|
1780 |
-
|
1781 |
-
#: wp-cache.php:2056
|
1782 |
-
msgid ""
|
1783 |
-
"GZIP compression is enabled in WordPress, wp-cache will be bypassed until "
|
1784 |
-
"you disable gzip compression."
|
1785 |
-
msgstr ""
|
1786 |
-
|
1787 |
-
#: wp-cache.php:2153 wp-cache.php:2159
|
1788 |
-
msgid "WP Super Cache Warning!"
|
1789 |
-
msgstr ""
|
1790 |
-
|
1791 |
-
#: wp-cache.php:2154
|
1792 |
-
msgid ""
|
1793 |
-
"All users of this site have been logged out to refresh their login cookies."
|
1794 |
-
msgstr ""
|
1795 |
-
|
1796 |
-
#: wp-cache.php:2160
|
1797 |
-
msgid ""
|
1798 |
-
"Your server is configured to show files and directories, which may expose "
|
1799 |
-
"sensitive data such as login cookies to attackers in the cache directories. "
|
1800 |
-
"That has been fixed by adding a file named index.html to each directory. If "
|
1801 |
-
"you use PHP or legacy caching, consider moving the location of the cache "
|
1802 |
-
"directory on the Advanced Settings page."
|
1803 |
-
msgstr ""
|
1804 |
-
|
1805 |
-
#: wp-cache.php:2162
|
1806 |
-
msgid ""
|
1807 |
-
"If you just installed WP Super Cache for the first time, you can dismiss "
|
1808 |
-
"this message. Otherwise, you should probably refresh the login cookies of "
|
1809 |
-
"all logged in WordPress users here by clicking the logout link below."
|
1810 |
-
msgstr ""
|
1811 |
-
|
1812 |
-
#: wp-cache.php:2165
|
1813 |
-
msgid ""
|
1814 |
-
"Your site is using a very old version of WordPress. When you update to the "
|
1815 |
-
"latest version everyone will be logged out and cookie information updated."
|
1816 |
-
msgstr ""
|
1817 |
-
|
1818 |
-
#: wp-cache.php:2167
|
1819 |
-
msgid ""
|
1820 |
-
"The logout link will log out all WordPress users on this site except you. "
|
1821 |
-
"Your authentication cookie will be updated, but you will not be logged out."
|
1822 |
-
msgstr ""
|
1823 |
-
|
1824 |
-
#: wp-cache.php:2171
|
1825 |
-
msgid "Logout"
|
1826 |
-
msgstr ""
|
1827 |
-
|
1828 |
-
#: wp-cache.php:2275 wp-cache.php:2280 wp-cache.php:2314 wp-cache.php:2319
|
1829 |
-
#: wp-cache.php:2325
|
1830 |
-
msgid "Error"
|
1831 |
-
msgstr ""
|
1832 |
-
|
1833 |
-
#: wp-cache.php:2275
|
1834 |
-
msgid ""
|
1835 |
-
"Your cache directory (<strong>%1$s</strong>) did not exist and couldn’"
|
1836 |
-
"t be created by the web server. Check %1$s permissions."
|
1837 |
-
msgstr ""
|
1838 |
-
|
1839 |
-
#: wp-cache.php:2280
|
1840 |
-
msgid ""
|
1841 |
-
"Your cache directory (<strong>%1$s</strong>) or <strong>%2$s</strong> need "
|
1842 |
-
"to be writable for this plugin to work. Double-check it."
|
1843 |
-
msgstr ""
|
1844 |
-
|
1845 |
-
#: wp-cache.php:2314
|
1846 |
-
msgid ""
|
1847 |
-
"Your WP-Cache config file (<strong>%s</strong>) is out of date and not "
|
1848 |
-
"writable by the Web server. Please delete it and refresh this page."
|
1849 |
-
msgstr ""
|
1850 |
-
|
1851 |
-
#: wp-cache.php:2319
|
1852 |
-
msgid ""
|
1853 |
-
"Configuration file missing and %1$s directory (<strong>%2$s</strong>) is "
|
1854 |
-
"not writable by the web server. Check its permissions."
|
1855 |
-
msgstr ""
|
1856 |
-
|
1857 |
-
#: wp-cache.php:2325
|
1858 |
-
msgid ""
|
1859 |
-
"Sample WP-Cache config file (<strong>%s</strong>) does not exist. Verify "
|
1860 |
-
"your installation."
|
1861 |
-
msgstr ""
|
1862 |
-
|
1863 |
-
#: wp-cache.php:2355
|
1864 |
-
msgid "Could not update %s!</em> WPCACHEHOME must be set in config file."
|
1865 |
-
msgstr ""
|
1866 |
-
|
1867 |
-
#: wp-cache.php:2391
|
1868 |
-
msgid "%s/advanced-cache.php</em> does not exist or cannot be updated."
|
1869 |
-
msgstr ""
|
1870 |
-
|
1871 |
-
#: wp-cache.php:2392
|
1872 |
-
msgid "1. If it already exists, please delete the file first."
|
1873 |
-
msgstr ""
|
1874 |
-
|
1875 |
-
#: wp-cache.php:2393
|
1876 |
-
msgid ""
|
1877 |
-
"2. Make %1$s writable using the chmod command through your ftp or server "
|
1878 |
-
"software. (<em>chmod 777 %1$s</em>) and refresh this page. This is only a "
|
1879 |
-
"temporary measure and you’ll have to make it read only afterwards "
|
1880 |
-
"again. (Change 777 to 755 in the previous command)"
|
1881 |
-
msgstr ""
|
1882 |
-
|
1883 |
-
#: wp-cache.php:2394
|
1884 |
-
msgid "3. Refresh this page to update <em>%s/advanced-cache.php</em>"
|
1885 |
-
msgstr ""
|
1886 |
-
|
1887 |
-
#: wp-cache.php:2395
|
1888 |
-
msgid ""
|
1889 |
-
"If that doesn’t work, make sure the file <em>%s/advanced-cache.php</"
|
1890 |
-
"em> doesn’t exist:"
|
1891 |
-
msgstr ""
|
1892 |
-
|
1893 |
-
#: wp-cache.php:2396
|
1894 |
-
msgid ""
|
1895 |
-
"<li>1. Open <em>%1$s$wp_cache_file</em> in a text editor.</li><li>2. Change "
|
1896 |
-
"the text <em>CACHEHOME</em> to <em>%2$s</em></li><li>3. Save the file and "
|
1897 |
-
"copy it to <em>%3$s</em> and refresh this page.</li>"
|
1898 |
-
msgstr ""
|
1899 |
-
|
1900 |
-
#: wp-cache.php:2419
|
1901 |
-
msgid ""
|
1902 |
-
"<h3>WP_CACHE constant set to false</h3><p>The WP_CACHE constant is used by "
|
1903 |
-
"WordPress to load the code that serves cached pages. Unfortunately, it is "
|
1904 |
-
"set to false. Please edit your wp-config.php and add or edit the following "
|
1905 |
-
"line above the final require_once command:<br /><br /><code>define"
|
1906 |
-
"('WP_CACHE', true);</code></p>"
|
1907 |
-
msgstr ""
|
1908 |
-
|
1909 |
-
#: wp-cache.php:2421
|
1910 |
-
msgid ""
|
1911 |
-
"<strong>Error: WP_CACHE is not enabled</strong> in your <code>wp-config.php</"
|
1912 |
-
"code> file and I couldn’t modify it."
|
1913 |
-
msgstr ""
|
1914 |
-
|
1915 |
-
#: wp-cache.php:2422
|
1916 |
-
msgid ""
|
1917 |
-
"Edit <code>%s</code> and add the following line:<br /> <code>define"
|
1918 |
-
"('WP_CACHE', true);</code><br />Otherwise, <strong>WP-Cache will not be "
|
1919 |
-
"executed</strong> by WordPress core. "
|
1920 |
-
msgstr ""
|
1921 |
-
|
1922 |
-
#: wp-cache.php:2426
|
1923 |
-
msgid ""
|
1924 |
-
"<h3>WP_CACHE constant added to wp-config.php</h3><p>If you continue to see "
|
1925 |
-
"this warning message please see point 5 of the <a href=\"http://wordpress."
|
1926 |
-
"org/plugins/wp-super-cache/faq/\">Troubleshooting Guide</a>. The WP_CACHE "
|
1927 |
-
"line must be moved up."
|
1928 |
-
msgstr ""
|
1929 |
-
|
1930 |
-
#: wp-cache.php:2454
|
1931 |
-
msgid "Cache Contents"
|
1932 |
-
msgstr ""
|
1933 |
-
|
1934 |
-
#: wp-cache.php:2457
|
1935 |
-
msgid "Object cache in use. No cache listing available."
|
1936 |
-
msgstr ""
|
1937 |
-
|
1938 |
-
#: wp-cache.php:2481
|
1939 |
-
msgid "Deleting supercache file: <strong>%s</strong><br />"
|
1940 |
-
msgstr ""
|
1941 |
-
|
1942 |
-
#: wp-cache.php:2502
|
1943 |
-
msgid "Deleting wp-cache file: <strong>%s</strong><br />"
|
1944 |
-
msgstr ""
|
1945 |
-
|
1946 |
-
#: wp-cache.php:2569
|
1947 |
-
msgid ""
|
1948 |
-
"Cache stats are not automatically generated. You must click the link below "
|
1949 |
-
"to regenerate the stats on this page."
|
1950 |
-
msgstr ""
|
1951 |
-
|
1952 |
-
#: wp-cache.php:2570
|
1953 |
-
msgid "Regenerate cache stats"
|
1954 |
-
msgstr ""
|
1955 |
-
|
1956 |
-
#: wp-cache.php:2572
|
1957 |
-
msgid "Cache stats last generated: %s minutes ago."
|
1958 |
-
msgstr ""
|
1959 |
-
|
1960 |
-
#: wp-cache.php:2578
|
1961 |
-
msgid "WP-Cache"
|
1962 |
-
msgstr ""
|
1963 |
-
|
1964 |
-
#: wp-cache.php:2579 wp-cache.php:2594
|
1965 |
-
msgid "%s Cached Pages"
|
1966 |
-
msgstr ""
|
1967 |
-
|
1968 |
-
#: wp-cache.php:2580 wp-cache.php:2599
|
1969 |
-
msgid "%s Expired Pages"
|
1970 |
-
msgstr ""
|
1971 |
-
|
1972 |
-
#: wp-cache.php:2593
|
1973 |
-
msgid "WP-Super-Cache"
|
1974 |
-
msgstr ""
|
1975 |
-
|
1976 |
-
#: wp-cache.php:2603
|
1977 |
-
msgid "Fresh WP-Cached Files"
|
1978 |
-
msgstr ""
|
1979 |
-
|
1980 |
-
#: wp-cache.php:2604 wp-cache.php:2620 wp-cache.php:2636 wp-cache.php:2652
|
1981 |
-
msgid "URI"
|
1982 |
-
msgstr ""
|
1983 |
-
|
1984 |
-
#: wp-cache.php:2604 wp-cache.php:2620
|
1985 |
-
msgid "Key"
|
1986 |
-
msgstr ""
|
1987 |
-
|
1988 |
-
#: wp-cache.php:2604 wp-cache.php:2620 wp-cache.php:2636 wp-cache.php:2652
|
1989 |
-
msgid "Age"
|
1990 |
-
msgstr ""
|
1991 |
-
|
1992 |
-
#: wp-cache.php:2604 wp-cache.php:2620 wp-cache.php:2636 wp-cache.php:2652
|
1993 |
-
msgid "Delete"
|
1994 |
-
msgstr ""
|
1995 |
-
|
1996 |
-
#: wp-cache.php:2619
|
1997 |
-
msgid "Stale WP-Cached Files"
|
1998 |
-
msgstr ""
|
1999 |
-
|
2000 |
-
#: wp-cache.php:2635
|
2001 |
-
msgid "Fresh Super Cached Files"
|
2002 |
-
msgstr ""
|
2003 |
-
|
2004 |
-
#: wp-cache.php:2651
|
2005 |
-
msgid "Stale Super Cached Files"
|
2006 |
-
msgstr ""
|
2007 |
-
|
2008 |
-
#: wp-cache.php:2667
|
2009 |
-
msgid "Hide file list"
|
2010 |
-
msgstr ""
|
2011 |
-
|
2012 |
-
#: wp-cache.php:2669
|
2013 |
-
msgid "Too many cached files, no listing possible."
|
2014 |
-
msgstr ""
|
2015 |
-
|
2016 |
-
#: wp-cache.php:2671
|
2017 |
-
msgid "List all cached files"
|
2018 |
-
msgstr ""
|
2019 |
-
|
2020 |
-
#: wp-cache.php:2674
|
2021 |
-
msgid ""
|
2022 |
-
"Expired files are files older than %s seconds. They are still used by the "
|
2023 |
-
"plugin and are deleted periodically."
|
2024 |
-
msgstr ""
|
2025 |
-
|
2026 |
-
#: wp-cache.php:2685
|
2027 |
-
msgid "Delete Expired"
|
2028 |
-
msgstr ""
|
2029 |
-
|
2030 |
-
#: wp-cache.php:2710
|
2031 |
-
msgid "Delete Super Cache cached files (opens in new window)"
|
2032 |
-
msgstr ""
|
2033 |
-
|
2034 |
-
#: wp-cache.php:2877
|
2035 |
-
msgid "%1$s is Stephen Fry proof thanks to caching by %2$s"
|
2036 |
-
msgstr ""
|
2037 |
-
|
2038 |
-
#: wp-cache.php:2910
|
2039 |
-
msgid ""
|
2040 |
-
"WP Super Cache must be configured. Go to <a href=\"%s\">the admin page</a> "
|
2041 |
-
"to enable and configure the plugin."
|
2042 |
-
msgstr ""
|
2043 |
-
|
2044 |
-
#: wp-cache.php:2916
|
2045 |
-
msgid "Settings"
|
2046 |
-
msgstr ""
|
2047 |
-
|
2048 |
-
#: wp-cache.php:2926
|
2049 |
-
msgid ""
|
2050 |
-
"WP Super Cache is disabled. Please go to the <a href=\"%s\">plugin admin "
|
2051 |
-
"page</a> to enable caching."
|
2052 |
-
msgstr ""
|
2053 |
-
|
2054 |
-
#: wp-cache.php:2929
|
2055 |
-
msgid ""
|
2056 |
-
"Warning! WP Super Cache caching <strong>was</strong> broken but has been "
|
2057 |
-
"<strong>fixed</strong>! The script advanced-cache.php could not load wp-"
|
2058 |
-
"cache-phase1.php.<br /><br />The file %1$s/advanced-cache.php has been "
|
2059 |
-
"recreated and WPCACHEHOME fixed in your wp-config.php. Reload to hide this "
|
2060 |
-
"message."
|
2061 |
-
msgstr ""
|
2062 |
-
|
2063 |
-
#: wp-cache.php:2950
|
2064 |
-
msgid "[%s] Front page is gzipped! Please clear cache!"
|
2065 |
-
msgstr ""
|
2066 |
-
|
2067 |
-
#: wp-cache.php:2950
|
2068 |
-
msgid ""
|
2069 |
-
"Please visit %s to clear the cache as the front page of your site is now "
|
2070 |
-
"downloading!"
|
2071 |
-
msgstr ""
|
2072 |
-
|
2073 |
-
#: wp-cache.php:2953
|
2074 |
-
msgid "[%s] Front page is gzipped! Cache Cleared!"
|
2075 |
-
msgstr ""
|
2076 |
-
|
2077 |
-
#: wp-cache.php:2953
|
2078 |
-
msgid ""
|
2079 |
-
"The cache on your blog has been cleared because the front page of your site "
|
2080 |
-
"is now downloading. Please visit %s to verify the cache has been cleared."
|
2081 |
-
msgstr ""
|
2082 |
-
|
2083 |
-
#: wp-cache.php:2960
|
2084 |
-
msgid "[%s] Front page is not correct! Please clear cache!"
|
2085 |
-
msgstr ""
|
2086 |
-
|
2087 |
-
#: wp-cache.php:2960
|
2088 |
-
msgid ""
|
2089 |
-
"Please visit %1$s to clear the cache as the front page of your site is not "
|
2090 |
-
"correct and missing the text, \"%2$s\"!"
|
2091 |
-
msgstr ""
|
2092 |
-
|
2093 |
-
#: wp-cache.php:2963
|
2094 |
-
msgid "[%s] Front page is not correct! Cache Cleared!"
|
2095 |
-
msgstr ""
|
2096 |
-
|
2097 |
-
#: wp-cache.php:2963
|
2098 |
-
msgid ""
|
2099 |
-
"The cache on your blog has been cleared because the front page of your site "
|
2100 |
-
"is missing the text \"%2$s\". Please visit %1$s to verify the cache has been "
|
2101 |
-
"cleared."
|
2102 |
-
msgstr ""
|
2103 |
-
|
2104 |
-
#: wp-cache.php:2968
|
2105 |
-
msgid "[%s] Front page check!"
|
2106 |
-
msgstr ""
|
2107 |
-
|
2108 |
-
#: wp-cache.php:2968
|
2109 |
-
msgid ""
|
2110 |
-
"WP Super Cache has checked the front page of your blog. Please visit %s if "
|
2111 |
-
"you would like to disable this."
|
2112 |
-
msgstr ""
|
2113 |
-
|
2114 |
-
#: wp-cache.php:3011
|
2115 |
-
msgid "Cannot update .htaccess"
|
2116 |
-
msgstr ""
|
2117 |
-
|
2118 |
-
#: wp-cache.php:3011
|
2119 |
-
msgid ""
|
2120 |
-
"The file <code>%s.htaccess</code> cannot be modified by the web server. "
|
2121 |
-
"Please correct this using the chmod command or your ftp client."
|
2122 |
-
msgstr ""
|
2123 |
-
|
2124 |
-
#: wp-cache.php:3011
|
2125 |
-
msgid "Refresh this page when the file permissions have been modified."
|
2126 |
-
msgstr ""
|
2127 |
-
|
2128 |
-
#: wp-cache.php:3011
|
2129 |
-
msgid ""
|
2130 |
-
"Alternatively, you can edit your <code>%s.htaccess</code> file manually and "
|
2131 |
-
"add the following code (before any WordPress rules):"
|
2132 |
-
msgstr ""
|
2133 |
-
|
2134 |
-
#: wp-cache.php:3015
|
2135 |
-
msgid ""
|
2136 |
-
"To serve static html files your server must have the correct mod_rewrite "
|
2137 |
-
"rules added to a file called <code>%s.htaccess</code>"
|
2138 |
-
msgstr ""
|
2139 |
-
|
2140 |
-
#: wp-cache.php:3016
|
2141 |
-
msgid "You can edit the file yourself. Add the following rules."
|
2142 |
-
msgstr ""
|
2143 |
-
|
2144 |
-
#: wp-cache.php:3017
|
2145 |
-
msgid " Make sure they appear before any existing WordPress rules. "
|
2146 |
-
msgstr ""
|
2147 |
-
|
2148 |
-
#: wp-cache.php:3025
|
2149 |
-
msgid "Update Mod_Rewrite Rules"
|
2150 |
-
msgstr ""
|
2151 |
-
|
2152 |
-
#: wp-cache.php:3188
|
2153 |
-
msgid "[%1$s] Cache Preload Started"
|
2154 |
-
msgstr ""
|
2155 |
-
|
2156 |
-
#: wp-cache.php:3218
|
2157 |
-
msgid "[%1$s] Refreshing %2$s taxonomy from %3$d to %4$d"
|
2158 |
-
msgstr ""
|
2159 |
-
|
2160 |
-
#: wp-cache.php:3267
|
2161 |
-
msgid "[%1$s] Refreshing posts from %2$d to %3$d"
|
2162 |
-
msgstr ""
|
2163 |
-
|
2164 |
-
#: wp-cache.php:3288
|
2165 |
-
msgid "[%1$s] Cache Preload Stopped"
|
2166 |
-
msgstr ""
|
2167 |
-
|
2168 |
-
#: wp-cache.php:3298
|
2169 |
-
msgid "[%1$s] %2$d posts refreshed"
|
2170 |
-
msgstr ""
|
2171 |
-
|
2172 |
-
#: wp-cache.php:3298
|
2173 |
-
msgid "Refreshed the following posts:"
|
2174 |
-
msgstr ""
|
2175 |
-
|
2176 |
-
#: wp-cache.php:3308
|
2177 |
-
msgid "Scheduling next preload refresh in %d minutes."
|
2178 |
-
msgstr ""
|
2179 |
-
|
2180 |
-
#: wp-cache.php:3319
|
2181 |
-
msgid "[%s] Cache Preload Completed"
|
2182 |
-
msgstr ""
|
2183 |
-
|
2184 |
-
#: wp-cache.php:3319
|
2185 |
-
msgid "Cleaning up old supercache files."
|
2186 |
-
msgstr ""
|
2187 |
-
|
2188 |
-
#: wp-cache.php:3361
|
2189 |
-
msgid "[%s] Preload may have stalled."
|
2190 |
-
msgstr ""
|
2191 |
-
|
2192 |
-
#: wp-cache.php:3361
|
2193 |
-
msgid ""
|
2194 |
-
"Preload has been restarted.\n"
|
2195 |
-
"%s"
|
2196 |
-
msgstr ""
|
2197 |
-
|
2198 |
-
#: wp-cache.php:3404
|
2199 |
-
msgid "Supercache Uninstall Problems"
|
2200 |
-
msgstr ""
|
2201 |
-
|
2202 |
-
#: wp-cache.php:3404
|
2203 |
-
msgid ""
|
2204 |
-
"Dear User,\n"
|
2205 |
-
"\n"
|
2206 |
-
"WP Super Cache was removed from your blog but the mod_rewrite rules\n"
|
2207 |
-
"in your .htaccess were not.\n"
|
2208 |
-
"\n"
|
2209 |
-
"Please edit the following file and remove the code\n"
|
2210 |
-
"between 'BEGIN WPSuperCache' and 'END WPSuperCache'. Please backup the file "
|
2211 |
-
"first!\n"
|
2212 |
-
"\n"
|
2213 |
-
"%s\n"
|
2214 |
-
"\n"
|
2215 |
-
"Regards,\n"
|
2216 |
-
"WP Super Cache Plugin\n"
|
2217 |
-
"http://wordpress.org/plugins/wp-super-cache/"
|
2218 |
-
msgstr ""
|
2219 |
-
|
2220 |
-
#: wp-cache.php:3441
|
2221 |
-
msgid "Delete cache of the current page"
|
2222 |
-
msgstr ""
|
2223 |
-
|
2224 |
-
#. Plugin Name of the plugin/theme
|
2225 |
-
msgid "WP Super Cache"
|
2226 |
-
msgstr ""
|
2227 |
-
|
2228 |
-
#. Plugin URI of the plugin/theme
|
2229 |
-
msgid "https://wordpress.org/plugins/wp-super-cache/"
|
2230 |
-
msgstr ""
|
2231 |
-
|
2232 |
-
#. Description of the plugin/theme
|
2233 |
-
msgid "Very fast caching plugin for WordPress."
|
2234 |
-
msgstr ""
|
2235 |
-
|
2236 |
-
#. Author of the plugin/theme
|
2237 |
-
msgid "Automattic"
|
2238 |
-
msgstr ""
|
2239 |
-
|
2240 |
-
#. Author URI of the plugin/theme
|
2241 |
-
msgid "https://automattic.com/"
|
2242 |
-
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|