LiteSpeed Cache - Version 4.4.4

Version Description

  • Nov 23 2021 =
  • Page Optimize Delay deletion of outdated CSS/JS files for a default of 20 days to avoid 404 errors with cached search engine copies.
  • Cache When caching, no longer send a purge request for CSS/JS removal to avoid cache engine conflicts.
  • Core Optimized SQL queries while autoloading if expected options are missing; reduced by 7 and 3 queries on backend and frontend respectively. (#396425 Jackson)
  • Page Optm Fixed a 404 issue that occured when upgrading the plugin manually, with a package upload or through the plugin manager. (Tobolo/Magorzata/Abe)
  • API Added litespeed_ccss_url and litespeed_ucss_url API to manipulate the request URL for CCSS and UCSS.
  • REST Fixed a potential warning when detecting cacheable status on REST call. (rafaucau)
  • OLS Fixed an issue where the COOKIEHASH constant was undefined when used with OpenLiteSpeed as an MU plugin or with network activation.
  • 3rd Sanitized POST data for nextgengallery.
  • Cloud Sanitized GET data when linking to QUIC.cloud. (#591762 WPScan)
Download this release

Release Info

Developer LiteSpeedTech
Plugin Icon 128x128 LiteSpeed Cache
Version 4.4.4
Comparing to
See all releases

Code changes from version 4.4.3 to 4.4.4

lang/litespeed-cache.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the LiteSpeed Cache package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: LiteSpeed Cache 4.4.3\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
7
- "POT-Creation-Date: 2021-10-11 17:31:14+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -53,7 +53,7 @@ msgstr ""
53
  msgid "CDN"
54
  msgstr ""
55
 
56
- #: src/admin-display.cls.php:123 src/gui.cls.php:593
57
  #: tpl/dash/dashboard.tpl.php:55 tpl/dash/network_dash.tpl.php:27
58
  msgid "Image Optimization"
59
  msgstr ""
@@ -102,8 +102,8 @@ msgstr ""
102
  msgid "Add new CDN URL"
103
  msgstr ""
104
 
105
- #: src/admin-display.cls.php:232 src/admin-display.cls.php:826
106
- #: src/admin-display.cls.php:855 src/admin-display.cls.php:906
107
  #: tpl/cache/settings-cache.tpl.php:19
108
  #: tpl/cache/settings_inc.cache_mobile.tpl.php:71 tpl/cdn/settings.tpl.php:49
109
  #: tpl/page_optm/settings_css.tpl.php:173
@@ -113,8 +113,8 @@ msgstr ""
113
  msgid "ON"
114
  msgstr ""
115
 
116
- #: src/admin-display.cls.php:233 src/admin-display.cls.php:827
117
- #: src/admin-display.cls.php:854 src/admin-display.cls.php:906
118
  #: tpl/cache/settings-cache.tpl.php:19
119
  #: tpl/cache/settings_inc.object.tpl.php:210 tpl/cdn/settings.tpl.php:54
120
  #: tpl/page_optm/settings_css.tpl.php:71 tpl/page_optm/settings_js.tpl.php:63
@@ -123,83 +123,83 @@ msgstr ""
123
  msgid "OFF"
124
  msgstr ""
125
 
126
- #: src/admin-display.cls.php:281 src/gui.cls.php:584
127
  msgid "Settings"
128
  msgstr ""
129
 
130
- #: src/admin-display.cls.php:450
131
  msgid "Dismiss"
132
  msgstr ""
133
 
134
- #: src/admin-display.cls.php:695 src/admin-display.cls.php:700
135
  msgid "Save Changes"
136
  msgstr ""
137
 
138
- #: src/admin-display.cls.php:918
139
  msgid "This setting is overwritten by the PHP constant %s"
140
  msgstr ""
141
 
142
- #: src/admin-display.cls.php:921
143
  msgid "This setting is overwritten by the primary site setting"
144
  msgstr ""
145
 
146
- #: src/admin-display.cls.php:924
147
  msgid "This setting is overwritten by the Network setting"
148
  msgstr ""
149
 
150
- #: src/admin-display.cls.php:928
151
  msgid "currently set to %s"
152
  msgstr ""
153
 
154
- #: src/admin-display.cls.php:938 tpl/cache/settings_inc.object.tpl.php:103
155
  #: tpl/crawler/settings-general.tpl.php:60
156
  #: tpl/crawler/settings-general.tpl.php:74
157
  #: tpl/crawler/settings-general.tpl.php:89 tpl/esi_widget_edit.php:70
158
  msgid "seconds"
159
  msgstr ""
160
 
161
- #: src/admin-display.cls.php:969 src/admin-display.cls.php:974
162
  #: tpl/cdn/settings.tpl.php:99
163
  msgid "Default value"
164
  msgstr ""
165
 
166
- #: src/admin-display.cls.php:998
167
  msgid "Invalid rewrite rule"
168
  msgstr ""
169
 
170
- #: src/admin-display.cls.php:1015
171
  msgid "Path must end with %s"
172
  msgstr ""
173
 
174
- #: src/admin-display.cls.php:1033
175
  msgid "Minimum value"
176
  msgstr ""
177
 
178
- #: src/admin-display.cls.php:1036
179
  msgid "Maximum value"
180
  msgstr ""
181
 
182
- #: src/admin-display.cls.php:1048
183
  msgid "Zero, or"
184
  msgstr ""
185
 
186
- #: src/admin-display.cls.php:1055
187
  msgid "Larger than"
188
  msgstr ""
189
 
190
- #: src/admin-display.cls.php:1058
191
  msgid "Smaller than"
192
  msgstr ""
193
 
194
- #: src/admin-display.cls.php:1061
195
  msgid "Value range"
196
  msgstr ""
197
 
198
- #: src/admin-display.cls.php:1086
199
  msgid "Invalid IP"
200
  msgstr ""
201
 
202
- #: src/admin-display.cls.php:1106 tpl/cache/settings-esi.tpl.php:95
203
  #: tpl/page_optm/settings_css.tpl.php:175
204
  #: tpl/page_optm/settings_html.tpl.php:85
205
  #: tpl/page_optm/settings_media_exc.tpl.php:26
@@ -212,43 +212,43 @@ msgstr ""
212
  msgid "API"
213
  msgstr ""
214
 
215
- #: src/admin-display.cls.php:1107
216
  msgid "Server variable(s) %s available to override this setting."
217
  msgstr ""
218
 
219
- #: src/admin-display.cls.php:1119
220
  msgid "The URLs will be compared to the REQUEST_URI server variable."
221
  msgstr ""
222
 
223
- #: src/admin-display.cls.php:1120
224
  msgid "For example, for %s, %s can be used here."
225
  msgstr ""
226
 
227
- #: src/admin-display.cls.php:1122
228
  msgid "To match the beginning, add %s to the beginning of the item."
229
  msgstr ""
230
 
231
- #: src/admin-display.cls.php:1123
232
  msgid "To do an exact match, add %s to the end of the URL."
233
  msgstr ""
234
 
235
- #: src/admin-display.cls.php:1124 src/doc.cls.php:74
236
  msgid "One per line."
237
  msgstr ""
238
 
239
- #: src/admin-display.cls.php:1138
240
  msgid "%s groups"
241
  msgstr ""
242
 
243
- #: src/admin-display.cls.php:1141
244
  msgid "%s images"
245
  msgstr ""
246
 
247
- #: src/admin-display.cls.php:1151
248
  msgid "%s group"
249
  msgstr ""
250
 
251
- #: src/admin-display.cls.php:1154
252
  msgid "%s image"
253
  msgstr ""
254
 
@@ -357,15 +357,15 @@ msgstr ""
357
  msgid "Sync credit allowance with Cloud Server successfully."
358
  msgstr ""
359
 
360
- #: src/conf.cls.php:701
361
  msgid "Changed setting successfully."
362
  msgstr ""
363
 
364
- #: src/core.cls.php:283
365
  msgid "Notified LiteSpeed Web Server to purge everything."
366
  msgstr ""
367
 
368
- #: src/core.cls.php:288
369
  msgid "Notified LiteSpeed Web Server to purge the list."
370
  msgstr ""
371
 
@@ -409,13 +409,13 @@ msgstr ""
409
  msgid "Cancel"
410
  msgstr ""
411
 
412
- #: src/data.cls.php:213
413
  msgid ""
414
  "The database has been upgrading in the background since %s. This message "
415
  "will disappear once upgrade is complete."
416
  msgstr ""
417
 
418
- #: src/data.upgrade.func.php:83
419
  msgid ""
420
  "LiteSpeed Cache upgraded successfully. NOTE: Due to changes in this version, "
421
  "the settings %1$s and %2$s have been turned OFF. Please turn them back on "
@@ -423,15 +423,15 @@ msgid ""
423
  "errors."
424
  msgstr ""
425
 
426
- #: src/data.upgrade.func.php:83 src/lang.cls.php:115
427
  msgid "JS Combine"
428
  msgstr ""
429
 
430
- #: src/data.upgrade.func.php:83
431
  msgid "JS Defer"
432
  msgstr ""
433
 
434
- #: src/data.upgrade.func.php:84
435
  msgid "Click here to settings"
436
  msgstr ""
437
 
@@ -703,41 +703,41 @@ msgstr ""
703
  msgid "Private Cache Hits"
704
  msgstr ""
705
 
706
- #: src/gui.cls.php:393
707
  msgid "Purge this page"
708
  msgstr ""
709
 
710
- #: src/gui.cls.php:401
711
  msgid "Mark this page as "
712
  msgstr ""
713
 
714
- #: src/gui.cls.php:413
715
  msgid "Forced cacheable"
716
  msgstr ""
717
 
718
- #: src/gui.cls.php:424
719
  msgid "Non cacheable"
720
  msgstr ""
721
 
722
- #: src/gui.cls.php:435
723
  msgid "Private cache"
724
  msgstr ""
725
 
726
- #: src/gui.cls.php:446
727
  msgid "No optimization"
728
  msgstr ""
729
 
730
- #: src/gui.cls.php:454
731
  msgid "More settings"
732
  msgstr ""
733
 
734
- #: src/gui.cls.php:461 src/gui.cls.php:469 src/gui.cls.php:477
735
- #: src/gui.cls.php:486 src/gui.cls.php:496 src/gui.cls.php:506
736
- #: src/gui.cls.php:516 src/gui.cls.php:526 src/gui.cls.php:536
737
- #: src/gui.cls.php:602 src/gui.cls.php:610 src/gui.cls.php:618
738
- #: src/gui.cls.php:627 src/gui.cls.php:637 src/gui.cls.php:647
739
- #: src/gui.cls.php:657 src/gui.cls.php:667 src/gui.cls.php:677
740
- #: src/gui.cls.php:687 tpl/page_optm/settings_media.tpl.php:125
741
  #: tpl/toolbox/purge.tpl.php:37 tpl/toolbox/purge.tpl.php:43
742
  #: tpl/toolbox/purge.tpl.php:52 tpl/toolbox/purge.tpl.php:61
743
  #: tpl/toolbox/purge.tpl.php:70 tpl/toolbox/purge.tpl.php:79
@@ -746,73 +746,73 @@ msgstr ""
746
  msgid "Purge All"
747
  msgstr ""
748
 
749
- #: src/gui.cls.php:469 src/gui.cls.php:560 src/gui.cls.php:610
750
  msgid "LSCache"
751
  msgstr ""
752
 
753
- #: src/gui.cls.php:477 src/gui.cls.php:618 tpl/toolbox/purge.tpl.php:43
754
  msgid "CSS/JS Cache"
755
  msgstr ""
756
 
757
- #: src/gui.cls.php:486 src/gui.cls.php:637 src/lang.cls.php:82
758
  #: tpl/dash/dashboard.tpl.php:396 tpl/toolbox/purge.tpl.php:52
759
  msgid "Object Cache"
760
  msgstr ""
761
 
762
- #: src/gui.cls.php:496 src/gui.cls.php:647 tpl/toolbox/purge.tpl.php:61
763
  msgid "Opcode Cache"
764
  msgstr ""
765
 
766
- #: src/gui.cls.php:526 src/gui.cls.php:677
767
  #: tpl/page_optm/settings_media.tpl.php:125 tpl/toolbox/purge.tpl.php:88
768
  msgid "LQIP Cache"
769
  msgstr ""
770
 
771
- #: src/gui.cls.php:536 src/gui.cls.php:687 src/lang.cls.php:142
772
  #: tpl/toolbox/purge.tpl.php:97
773
  msgid "Gravatar Cache"
774
  msgstr ""
775
 
776
- #: src/gui.cls.php:560
777
  msgid "LiteSpeed Cache Purge All"
778
  msgstr ""
779
 
780
- #: src/gui.cls.php:576 tpl/cdn/entry.tpl.php:7 tpl/cdn/settings.tpl.php:194
781
  #: tpl/db_optm/entry.tpl.php:6
782
  msgid "Manage"
783
  msgstr ""
784
 
785
- #: src/gui.cls.php:627 tpl/cdn/manage.tpl.php:17
786
  msgid "Cloudflare"
787
  msgstr ""
788
 
789
- #: src/gui.cls.php:706 tpl/img_optm/summary.tpl.php:175
790
  msgid "Remove all previous unfinished image optimization requests."
791
  msgstr ""
792
 
793
- #: src/gui.cls.php:707 tpl/img_optm/summary.tpl.php:177
794
  msgid "Clean Up Unfinished Data"
795
  msgstr ""
796
 
797
- #: src/gui.cls.php:725
798
  msgid "Install %s"
799
  msgstr ""
800
 
801
- #: src/gui.cls.php:726
802
  msgid "Install Now"
803
  msgstr ""
804
 
805
- #: src/gui.cls.php:745
806
  msgid ""
807
  "<a href=\"%1$s\" %2$s>View version %3$s details</a> or <a href=\"%4$s\" %5$s "
808
  "target=\"_blank\">update now</a>."
809
  msgstr ""
810
 
811
- #: src/gui.cls.php:748
812
  msgid "View %1$s version %2$s details"
813
  msgstr ""
814
 
815
- #: src/gui.cls.php:753
816
  msgid "Update %s now"
817
  msgstr ""
818
 
@@ -820,7 +820,7 @@ msgstr ""
820
  msgid "Mobile Agent Rules"
821
  msgstr ""
822
 
823
- #: src/htaccess.cls.php:785
824
  msgid ""
825
  "<p>Please add/replace the following codes into the beginning of %1$s:</p> "
826
  "%2$s"
@@ -1772,47 +1772,47 @@ msgstr ""
1772
  msgid "Cleaned all Gravatar files."
1773
  msgstr ""
1774
 
1775
- #: src/purge.cls.php:305
1776
  msgid "Notified LiteSpeed Web Server to purge CSS/JS entries."
1777
  msgstr ""
1778
 
1779
- #: src/purge.cls.php:321
1780
  msgid "Opcode cache is not enabled."
1781
  msgstr ""
1782
 
1783
- #: src/purge.cls.php:333
1784
  msgid "Reset the entire opcode cache successfully."
1785
  msgstr ""
1786
 
1787
- #: src/purge.cls.php:361
1788
  msgid "Object cache is not enabled."
1789
  msgstr ""
1790
 
1791
- #: src/purge.cls.php:374
1792
  msgid "Purge all object caches successfully."
1793
  msgstr ""
1794
 
1795
- #: src/purge.cls.php:567
1796
  msgid "Notified LiteSpeed Web Server to purge the front page."
1797
  msgstr ""
1798
 
1799
- #: src/purge.cls.php:580
1800
  msgid "Notified LiteSpeed Web Server to purge all pages."
1801
  msgstr ""
1802
 
1803
- #: src/purge.cls.php:599
1804
  msgid "Notified LiteSpeed Web Server to purge error pages."
1805
  msgstr ""
1806
 
1807
- #: src/purge.cls.php:626
1808
  msgid "Purge category %s"
1809
  msgstr ""
1810
 
1811
- #: src/purge.cls.php:653
1812
  msgid "Purge tag %s"
1813
  msgstr ""
1814
 
1815
- #: src/purge.cls.php:684
1816
  msgid "Purge url %s"
1817
  msgstr ""
1818
 
@@ -1960,7 +1960,7 @@ msgstr ""
1960
  msgid "Dismiss this notice"
1961
  msgstr ""
1962
 
1963
- #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 4.4.3) #-#-#-#-#
1964
  #. Plugin Name of the plugin/theme
1965
  #: tpl/banner/new_version.php:59 tpl/banner/new_version_dev.tpl.php:12
1966
  #: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
@@ -3270,7 +3270,7 @@ msgstr ""
3270
  msgid "Ended reason"
3271
  msgstr ""
3272
 
3273
- #: tpl/crawler/summary.tpl.php:106 tpl/dash/dashboard.tpl.php:563
3274
  msgid "<b>Last crawled:</b> %s item(s)"
3275
  msgstr ""
3276
 
@@ -3515,6 +3515,10 @@ msgstr ""
3515
  msgid "Currently active crawler"
3516
  msgstr ""
3517
 
 
 
 
 
3518
  #: tpl/dash/entry.tpl.php:11
3519
  msgid "Network Dashboard"
3520
  msgstr ""
2
  # This file is distributed under the same license as the LiteSpeed Cache package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: LiteSpeed Cache 4.4.4\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
7
+ "POT-Creation-Date: 2021-11-19 21:27:41+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
53
  msgid "CDN"
54
  msgstr ""
55
 
56
+ #: src/admin-display.cls.php:123 src/gui.cls.php:602
57
  #: tpl/dash/dashboard.tpl.php:55 tpl/dash/network_dash.tpl.php:27
58
  msgid "Image Optimization"
59
  msgstr ""
102
  msgid "Add new CDN URL"
103
  msgstr ""
104
 
105
+ #: src/admin-display.cls.php:232 src/admin-display.cls.php:832
106
+ #: src/admin-display.cls.php:861 src/admin-display.cls.php:912
107
  #: tpl/cache/settings-cache.tpl.php:19
108
  #: tpl/cache/settings_inc.cache_mobile.tpl.php:71 tpl/cdn/settings.tpl.php:49
109
  #: tpl/page_optm/settings_css.tpl.php:173
113
  msgid "ON"
114
  msgstr ""
115
 
116
+ #: src/admin-display.cls.php:233 src/admin-display.cls.php:833
117
+ #: src/admin-display.cls.php:860 src/admin-display.cls.php:912
118
  #: tpl/cache/settings-cache.tpl.php:19
119
  #: tpl/cache/settings_inc.object.tpl.php:210 tpl/cdn/settings.tpl.php:54
120
  #: tpl/page_optm/settings_css.tpl.php:71 tpl/page_optm/settings_js.tpl.php:63
123
  msgid "OFF"
124
  msgstr ""
125
 
126
+ #: src/admin-display.cls.php:281 src/gui.cls.php:593
127
  msgid "Settings"
128
  msgstr ""
129
 
130
+ #: src/admin-display.cls.php:455
131
  msgid "Dismiss"
132
  msgstr ""
133
 
134
+ #: src/admin-display.cls.php:701 src/admin-display.cls.php:706
135
  msgid "Save Changes"
136
  msgstr ""
137
 
138
+ #: src/admin-display.cls.php:924
139
  msgid "This setting is overwritten by the PHP constant %s"
140
  msgstr ""
141
 
142
+ #: src/admin-display.cls.php:927
143
  msgid "This setting is overwritten by the primary site setting"
144
  msgstr ""
145
 
146
+ #: src/admin-display.cls.php:930
147
  msgid "This setting is overwritten by the Network setting"
148
  msgstr ""
149
 
150
+ #: src/admin-display.cls.php:934
151
  msgid "currently set to %s"
152
  msgstr ""
153
 
154
+ #: src/admin-display.cls.php:944 tpl/cache/settings_inc.object.tpl.php:103
155
  #: tpl/crawler/settings-general.tpl.php:60
156
  #: tpl/crawler/settings-general.tpl.php:74
157
  #: tpl/crawler/settings-general.tpl.php:89 tpl/esi_widget_edit.php:70
158
  msgid "seconds"
159
  msgstr ""
160
 
161
+ #: src/admin-display.cls.php:975 src/admin-display.cls.php:980
162
  #: tpl/cdn/settings.tpl.php:99
163
  msgid "Default value"
164
  msgstr ""
165
 
166
+ #: src/admin-display.cls.php:1004
167
  msgid "Invalid rewrite rule"
168
  msgstr ""
169
 
170
+ #: src/admin-display.cls.php:1021
171
  msgid "Path must end with %s"
172
  msgstr ""
173
 
174
+ #: src/admin-display.cls.php:1039
175
  msgid "Minimum value"
176
  msgstr ""
177
 
178
+ #: src/admin-display.cls.php:1042
179
  msgid "Maximum value"
180
  msgstr ""
181
 
182
+ #: src/admin-display.cls.php:1054
183
  msgid "Zero, or"
184
  msgstr ""
185
 
186
+ #: src/admin-display.cls.php:1061
187
  msgid "Larger than"
188
  msgstr ""
189
 
190
+ #: src/admin-display.cls.php:1064
191
  msgid "Smaller than"
192
  msgstr ""
193
 
194
+ #: src/admin-display.cls.php:1067
195
  msgid "Value range"
196
  msgstr ""
197
 
198
+ #: src/admin-display.cls.php:1092
199
  msgid "Invalid IP"
200
  msgstr ""
201
 
202
+ #: src/admin-display.cls.php:1112 tpl/cache/settings-esi.tpl.php:95
203
  #: tpl/page_optm/settings_css.tpl.php:175
204
  #: tpl/page_optm/settings_html.tpl.php:85
205
  #: tpl/page_optm/settings_media_exc.tpl.php:26
212
  msgid "API"
213
  msgstr ""
214
 
215
+ #: src/admin-display.cls.php:1113
216
  msgid "Server variable(s) %s available to override this setting."
217
  msgstr ""
218
 
219
+ #: src/admin-display.cls.php:1125
220
  msgid "The URLs will be compared to the REQUEST_URI server variable."
221
  msgstr ""
222
 
223
+ #: src/admin-display.cls.php:1126
224
  msgid "For example, for %s, %s can be used here."
225
  msgstr ""
226
 
227
+ #: src/admin-display.cls.php:1128
228
  msgid "To match the beginning, add %s to the beginning of the item."
229
  msgstr ""
230
 
231
+ #: src/admin-display.cls.php:1129
232
  msgid "To do an exact match, add %s to the end of the URL."
233
  msgstr ""
234
 
235
+ #: src/admin-display.cls.php:1130 src/doc.cls.php:74
236
  msgid "One per line."
237
  msgstr ""
238
 
239
+ #: src/admin-display.cls.php:1144
240
  msgid "%s groups"
241
  msgstr ""
242
 
243
+ #: src/admin-display.cls.php:1147
244
  msgid "%s images"
245
  msgstr ""
246
 
247
+ #: src/admin-display.cls.php:1157
248
  msgid "%s group"
249
  msgstr ""
250
 
251
+ #: src/admin-display.cls.php:1160
252
  msgid "%s image"
253
  msgstr ""
254
 
357
  msgid "Sync credit allowance with Cloud Server successfully."
358
  msgstr ""
359
 
360
+ #: src/conf.cls.php:704
361
  msgid "Changed setting successfully."
362
  msgstr ""
363
 
364
+ #: src/core.cls.php:289
365
  msgid "Notified LiteSpeed Web Server to purge everything."
366
  msgstr ""
367
 
368
+ #: src/core.cls.php:294
369
  msgid "Notified LiteSpeed Web Server to purge the list."
370
  msgstr ""
371
 
409
  msgid "Cancel"
410
  msgstr ""
411
 
412
+ #: src/data.cls.php:219
413
  msgid ""
414
  "The database has been upgrading in the background since %s. This message "
415
  "will disappear once upgrade is complete."
416
  msgstr ""
417
 
418
+ #: src/data.upgrade.func.php:101
419
  msgid ""
420
  "LiteSpeed Cache upgraded successfully. NOTE: Due to changes in this version, "
421
  "the settings %1$s and %2$s have been turned OFF. Please turn them back on "
423
  "errors."
424
  msgstr ""
425
 
426
+ #: src/data.upgrade.func.php:101 src/lang.cls.php:115
427
  msgid "JS Combine"
428
  msgstr ""
429
 
430
+ #: src/data.upgrade.func.php:101
431
  msgid "JS Defer"
432
  msgstr ""
433
 
434
+ #: src/data.upgrade.func.php:102
435
  msgid "Click here to settings"
436
  msgstr ""
437
 
703
  msgid "Private Cache Hits"
704
  msgstr ""
705
 
706
+ #: src/gui.cls.php:402
707
  msgid "Purge this page"
708
  msgstr ""
709
 
710
+ #: src/gui.cls.php:410
711
  msgid "Mark this page as "
712
  msgstr ""
713
 
714
+ #: src/gui.cls.php:422
715
  msgid "Forced cacheable"
716
  msgstr ""
717
 
718
+ #: src/gui.cls.php:433
719
  msgid "Non cacheable"
720
  msgstr ""
721
 
722
+ #: src/gui.cls.php:444
723
  msgid "Private cache"
724
  msgstr ""
725
 
726
+ #: src/gui.cls.php:455
727
  msgid "No optimization"
728
  msgstr ""
729
 
730
+ #: src/gui.cls.php:463
731
  msgid "More settings"
732
  msgstr ""
733
 
734
+ #: src/gui.cls.php:470 src/gui.cls.php:478 src/gui.cls.php:486
735
+ #: src/gui.cls.php:495 src/gui.cls.php:505 src/gui.cls.php:515
736
+ #: src/gui.cls.php:525 src/gui.cls.php:535 src/gui.cls.php:545
737
+ #: src/gui.cls.php:611 src/gui.cls.php:619 src/gui.cls.php:627
738
+ #: src/gui.cls.php:636 src/gui.cls.php:646 src/gui.cls.php:656
739
+ #: src/gui.cls.php:666 src/gui.cls.php:676 src/gui.cls.php:686
740
+ #: src/gui.cls.php:696 tpl/page_optm/settings_media.tpl.php:125
741
  #: tpl/toolbox/purge.tpl.php:37 tpl/toolbox/purge.tpl.php:43
742
  #: tpl/toolbox/purge.tpl.php:52 tpl/toolbox/purge.tpl.php:61
743
  #: tpl/toolbox/purge.tpl.php:70 tpl/toolbox/purge.tpl.php:79
746
  msgid "Purge All"
747
  msgstr ""
748
 
749
+ #: src/gui.cls.php:478 src/gui.cls.php:569 src/gui.cls.php:619
750
  msgid "LSCache"
751
  msgstr ""
752
 
753
+ #: src/gui.cls.php:486 src/gui.cls.php:627 tpl/toolbox/purge.tpl.php:43
754
  msgid "CSS/JS Cache"
755
  msgstr ""
756
 
757
+ #: src/gui.cls.php:495 src/gui.cls.php:646 src/lang.cls.php:82
758
  #: tpl/dash/dashboard.tpl.php:396 tpl/toolbox/purge.tpl.php:52
759
  msgid "Object Cache"
760
  msgstr ""
761
 
762
+ #: src/gui.cls.php:505 src/gui.cls.php:656 tpl/toolbox/purge.tpl.php:61
763
  msgid "Opcode Cache"
764
  msgstr ""
765
 
766
+ #: src/gui.cls.php:535 src/gui.cls.php:686
767
  #: tpl/page_optm/settings_media.tpl.php:125 tpl/toolbox/purge.tpl.php:88
768
  msgid "LQIP Cache"
769
  msgstr ""
770
 
771
+ #: src/gui.cls.php:545 src/gui.cls.php:696 src/lang.cls.php:142
772
  #: tpl/toolbox/purge.tpl.php:97
773
  msgid "Gravatar Cache"
774
  msgstr ""
775
 
776
+ #: src/gui.cls.php:569
777
  msgid "LiteSpeed Cache Purge All"
778
  msgstr ""
779
 
780
+ #: src/gui.cls.php:585 tpl/cdn/entry.tpl.php:7 tpl/cdn/settings.tpl.php:194
781
  #: tpl/db_optm/entry.tpl.php:6
782
  msgid "Manage"
783
  msgstr ""
784
 
785
+ #: src/gui.cls.php:636 tpl/cdn/manage.tpl.php:17
786
  msgid "Cloudflare"
787
  msgstr ""
788
 
789
+ #: src/gui.cls.php:715 tpl/img_optm/summary.tpl.php:175
790
  msgid "Remove all previous unfinished image optimization requests."
791
  msgstr ""
792
 
793
+ #: src/gui.cls.php:716 tpl/img_optm/summary.tpl.php:177
794
  msgid "Clean Up Unfinished Data"
795
  msgstr ""
796
 
797
+ #: src/gui.cls.php:734
798
  msgid "Install %s"
799
  msgstr ""
800
 
801
+ #: src/gui.cls.php:735
802
  msgid "Install Now"
803
  msgstr ""
804
 
805
+ #: src/gui.cls.php:754
806
  msgid ""
807
  "<a href=\"%1$s\" %2$s>View version %3$s details</a> or <a href=\"%4$s\" %5$s "
808
  "target=\"_blank\">update now</a>."
809
  msgstr ""
810
 
811
+ #: src/gui.cls.php:757
812
  msgid "View %1$s version %2$s details"
813
  msgstr ""
814
 
815
+ #: src/gui.cls.php:762
816
  msgid "Update %s now"
817
  msgstr ""
818
 
820
  msgid "Mobile Agent Rules"
821
  msgstr ""
822
 
823
+ #: src/htaccess.cls.php:787
824
  msgid ""
825
  "<p>Please add/replace the following codes into the beginning of %1$s:</p> "
826
  "%2$s"
1772
  msgid "Cleaned all Gravatar files."
1773
  msgstr ""
1774
 
1775
+ #: src/purge.cls.php:309
1776
  msgid "Notified LiteSpeed Web Server to purge CSS/JS entries."
1777
  msgstr ""
1778
 
1779
+ #: src/purge.cls.php:325
1780
  msgid "Opcode cache is not enabled."
1781
  msgstr ""
1782
 
1783
+ #: src/purge.cls.php:337
1784
  msgid "Reset the entire opcode cache successfully."
1785
  msgstr ""
1786
 
1787
+ #: src/purge.cls.php:365
1788
  msgid "Object cache is not enabled."
1789
  msgstr ""
1790
 
1791
+ #: src/purge.cls.php:378
1792
  msgid "Purge all object caches successfully."
1793
  msgstr ""
1794
 
1795
+ #: src/purge.cls.php:571
1796
  msgid "Notified LiteSpeed Web Server to purge the front page."
1797
  msgstr ""
1798
 
1799
+ #: src/purge.cls.php:584
1800
  msgid "Notified LiteSpeed Web Server to purge all pages."
1801
  msgstr ""
1802
 
1803
+ #: src/purge.cls.php:603
1804
  msgid "Notified LiteSpeed Web Server to purge error pages."
1805
  msgstr ""
1806
 
1807
+ #: src/purge.cls.php:630
1808
  msgid "Purge category %s"
1809
  msgstr ""
1810
 
1811
+ #: src/purge.cls.php:657
1812
  msgid "Purge tag %s"
1813
  msgstr ""
1814
 
1815
+ #: src/purge.cls.php:688
1816
  msgid "Purge url %s"
1817
  msgstr ""
1818
 
1960
  msgid "Dismiss this notice"
1961
  msgstr ""
1962
 
1963
+ #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 4.4.4) #-#-#-#-#
1964
  #. Plugin Name of the plugin/theme
1965
  #: tpl/banner/new_version.php:59 tpl/banner/new_version_dev.tpl.php:12
1966
  #: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
3270
  msgid "Ended reason"
3271
  msgstr ""
3272
 
3273
+ #: tpl/crawler/summary.tpl.php:106
3274
  msgid "<b>Last crawled:</b> %s item(s)"
3275
  msgstr ""
3276
 
3515
  msgid "Currently active crawler"
3516
  msgstr ""
3517
 
3518
+ #: tpl/dash/dashboard.tpl.php:563
3519
+ msgid "<b>Last crawled:</b> %d item(s)"
3520
+ msgstr ""
3521
+
3522
  #: tpl/dash/entry.tpl.php:11
3523
  msgid "Network Dashboard"
3524
  msgstr ""
litespeed-cache.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: LiteSpeed Cache
4
  * Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration
5
  * Description: High-performance page caching and site optimization from LiteSpeed
6
- * Version: 4.4.3
7
  * Author: LiteSpeed Technologies
8
  * Author URI: https://www.litespeedtech.com
9
  * License: GPLv3
@@ -33,7 +33,7 @@ if ( defined( 'LSCWP_V' ) ) {
33
  return;
34
  }
35
 
36
- ! defined( 'LSCWP_V' ) && define( 'LSCWP_V', '4.4.3' );
37
 
38
  ! defined( 'LSCWP_CONTENT_DIR' ) && define( 'LSCWP_CONTENT_DIR', WP_CONTENT_DIR ) ;
39
  ! defined( 'LSCWP_DIR' ) && define( 'LSCWP_DIR', __DIR__ . '/' ) ;// Full absolute path '/var/www/html/***/wp-content/plugins/litespeed-cache/' or MU
3
  * Plugin Name: LiteSpeed Cache
4
  * Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration
5
  * Description: High-performance page caching and site optimization from LiteSpeed
6
+ * Version: 4.4.4
7
  * Author: LiteSpeed Technologies
8
  * Author URI: https://www.litespeedtech.com
9
  * License: GPLv3
33
  return;
34
  }
35
 
36
+ ! defined( 'LSCWP_V' ) && define( 'LSCWP_V', '4.4.4' );
37
 
38
  ! defined( 'LSCWP_CONTENT_DIR' ) && define( 'LSCWP_CONTENT_DIR', WP_CONTENT_DIR ) ;
39
  ! defined( 'LSCWP_DIR' ) && define( 'LSCWP_DIR', __DIR__ . '/' ) ;// Full absolute path '/var/www/html/***/wp-content/plugins/litespeed-cache/' or MU
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: LiteSpeedTech
3
  Tags: caching, optimize, performance, pagespeed, core web vitals, seo, speed, image optimize, compress, object cache, redis, memcached, database cleaner
4
  Requires at least: 4.0
5
- Tested up to: 5.8.1
6
- Stable tag: 4.4.3
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl.html
9
 
@@ -249,6 +249,17 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
249
 
250
  == Changelog ==
251
 
 
 
 
 
 
 
 
 
 
 
 
252
  = 4.4.3 - Oct 13 2021 =
253
  * 🐞**Media** Fixed an issue where WebP is served erroneously under Guest Mode on older versions of Safari. (hash73)
254
  * 🐞**Media** Reverted regex change to fix `Lazy Load Image Parent Class Name Excludes` failure. (thpstock)
2
  Contributors: LiteSpeedTech
3
  Tags: caching, optimize, performance, pagespeed, core web vitals, seo, speed, image optimize, compress, object cache, redis, memcached, database cleaner
4
  Requires at least: 4.0
5
+ Tested up to: 5.8.2
6
+ Stable tag: 4.4.4
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl.html
9
 
249
 
250
  == Changelog ==
251
 
252
+ = 4.4.4 - Nov 23 2021 =
253
+ * **Page Optimize** Delay deletion of outdated CSS/JS files for a default of 20 days to avoid 404 errors with cached search engine copies.
254
+ * **Cache** When caching, no longer send a purge request for CSS/JS removal to avoid cache engine conflicts.
255
+ * 🐞**Core** Optimized SQL queries while autoloading if expected options are missing; reduced by 7 and 3 queries on backend and frontend respectively. (#396425 Jackson)
256
+ * **Page Optm** Fixed a 404 issue that occured when upgrading the plugin manually, with a package upload or through the plugin manager. (Tobolo/Małgorzata/Abe)
257
+ * **API** Added `litespeed_ccss_url` and `litespeed_ucss_url` API to manipulate the request URL for CCSS and UCSS.
258
+ * **REST** Fixed a potential warning when detecting cacheable status on REST call. (rafaucau)
259
+ * **OLS** Fixed an issue where the `COOKIEHASH` constant was undefined when used with OpenLiteSpeed as an MU plugin or with network activation.
260
+ * **3rd** Sanitized POST data for nextgengallery.
261
+ * **Cloud** Sanitized GET data when linking to QUIC.cloud. (#591762 WPScan)
262
+
263
  = 4.4.3 - Oct 13 2021 =
264
  * 🐞**Media** Fixed an issue where WebP is served erroneously under Guest Mode on older versions of Safari. (hash73)
265
  * 🐞**Media** Reverted regex change to fix `Lazy Load Image Parent Class Name Excludes` failure. (thpstock)
src/admin-display.cls.php CHANGED
@@ -385,7 +385,10 @@ class Admin_Display extends Base {
385
 
386
  $msg_name = $irremovable ? self::DB_MSG_PIN : self::DB_MSG;
387
 
388
- $messages = self::get_option( $msg_name, array() );
 
 
 
389
 
390
  if ( is_array($msg) ) {
391
  foreach ( $msg as $k => $str ) {
@@ -420,7 +423,7 @@ class Admin_Display extends Base {
420
  Cloud::cls()->check_dev_version();
421
 
422
  // One time msg
423
- $messages = self::get_option( self::DB_MSG, array() );
424
  $added_thickbox = false;
425
  if( is_array( $messages ) ) {
426
  foreach ( $messages as $msg ) {
@@ -432,10 +435,12 @@ class Admin_Display extends Base {
432
  echo $msg;
433
  }
434
  }
435
- self::delete_option( self::DB_MSG );
 
 
436
 
437
  // Pinned msg
438
- $messages = self::get_option( self::DB_MSG_PIN, array() );
439
  if( is_array( $messages ) ) {
440
  foreach ( $messages as $k => $msg ) {
441
  // Added for popup links
@@ -452,6 +457,9 @@ class Admin_Display extends Base {
452
  echo $msg;
453
  }
454
  }
 
 
 
455
 
456
  if( empty( $_GET[ 'page' ] ) || strpos( $_GET[ 'page' ], 'litespeed' ) !== 0 ) {
457
  global $pagenow;
@@ -493,18 +501,16 @@ class Admin_Display extends Base {
493
  return;
494
  }
495
 
496
- $messages = self::get_option( self::DB_MSG_PIN, array() );
497
- if ( empty( $messages[ $_GET[ 'msgid' ] ] ) ) {
498
  return;
499
  }
500
 
501
  unset( $messages[ $_GET[ 'msgid' ] ] );
502
  if ( ! $messages ) {
503
- self::delete_option( self::DB_MSG_PIN );
504
- }
505
- else {
506
- self::update_option( self::DB_MSG_PIN, $messages );
507
  }
 
508
  }
509
 
510
  /**
385
 
386
  $msg_name = $irremovable ? self::DB_MSG_PIN : self::DB_MSG;
387
 
388
+ $messages = self::get_option( $msg_name );
389
+ if ( ! is_array( $messages ) ) {
390
+ $messages = array();
391
+ }
392
 
393
  if ( is_array($msg) ) {
394
  foreach ( $msg as $k => $str ) {
423
  Cloud::cls()->check_dev_version();
424
 
425
  // One time msg
426
+ $messages = self::get_option( self::DB_MSG );
427
  $added_thickbox = false;
428
  if( is_array( $messages ) ) {
429
  foreach ( $messages as $msg ) {
435
  echo $msg;
436
  }
437
  }
438
+ if ( $messages != -1 ) {
439
+ self::update_option( self::DB_MSG, -1 );
440
+ }
441
 
442
  // Pinned msg
443
+ $messages = self::get_option( self::DB_MSG_PIN );
444
  if( is_array( $messages ) ) {
445
  foreach ( $messages as $k => $msg ) {
446
  // Added for popup links
457
  echo $msg;
458
  }
459
  }
460
+ if ( $messages != -1 ) {
461
+ self::update_option( self::DB_MSG_PIN, -1 );
462
+ }
463
 
464
  if( empty( $_GET[ 'page' ] ) || strpos( $_GET[ 'page' ], 'litespeed' ) !== 0 ) {
465
  global $pagenow;
501
  return;
502
  }
503
 
504
+ $messages = self::get_option( self::DB_MSG_PIN );
505
+ if ( ! is_array( $messages ) || empty( $messages[ $_GET[ 'msgid' ] ] ) ) {
506
  return;
507
  }
508
 
509
  unset( $messages[ $_GET[ 'msgid' ] ] );
510
  if ( ! $messages ) {
511
+ $messages = -1;
 
 
 
512
  }
513
+ self::update_option( self::DB_MSG_PIN, $messages );
514
  }
515
 
516
  /**
src/cloud.cls.php CHANGED
@@ -1078,7 +1078,7 @@ class Cloud extends Base {
1078
  self::save_summary();
1079
 
1080
  // Drop QS
1081
- echo "<script>window.history.pushState( 'remove_gen_link', document.title, window.location.href.replace( '&qc_res=" . $_GET[ 'qc_res' ] . "&domain_hash=" . $_GET[ 'domain_hash' ] . "', '' ) );</script>";
1082
  }
1083
 
1084
  /**
1078
  self::save_summary();
1079
 
1080
  // Drop QS
1081
+ echo "<script>window.history.pushState( 'remove_gen_link', document.title, window.location.href.replace( '&qc_res=" . sanitize_key( $_GET[ 'qc_res' ] ) . "&domain_hash=" . sanitize_key( $_GET[ 'domain_hash' ] ) . "', '' ) );</script>";
1082
  }
1083
 
1084
  /**
src/conf.cls.php CHANGED
@@ -68,8 +68,10 @@ class Conf extends Base {
68
  */
69
  $has_delay_conf_tag = self::get_option( '__activation' );
70
  if ( ! $ver || $ver != Core::VER ) {
71
- if ( ( ! is_admin() && ! defined( 'LITESPEED_CLI' ) ) || ! $has_delay_conf_tag ) { // Reuse __activation to control the delay conf update
72
- $has_delay_conf_tag || self::update_option( '__activation', Core::VER );
 
 
73
 
74
  $this->set_conf( $this->load_default_vals() );
75
  $this->_try_load_site_options();
@@ -135,13 +137,14 @@ class Conf extends Base {
135
  * Pros: This is to avoid file correction script changed in new versions
136
  * Cons: Conf upgrade won't get file correction if there is new values that are used in file
137
  */
138
- if ( $has_delay_conf_tag ) {
139
  // Check new version @since 2.9.3
140
  Cloud::version_check( 'activate' . ( defined( 'LSCWP_REF' ) ? '_' . LSCWP_REF : '' ) );
141
 
142
  $this->update_confs(); // Files only get corrected in activation or saving settings actions.
143
-
144
- self::delete_option( '__activation' );
 
145
  }
146
  }
147
 
68
  */
69
  $has_delay_conf_tag = self::get_option( '__activation' );
70
  if ( ! $ver || $ver != Core::VER ) {
71
+ if ( ( ! is_admin() && ! defined( 'LITESPEED_CLI' ) ) || ( ! $has_delay_conf_tag || $has_delay_conf_tag == -1 ) ) { // Reuse __activation to control the delay conf update
72
+ if ( ! $has_delay_conf_tag || $has_delay_conf_tag == -1 ) {
73
+ self::update_option( '__activation', Core::VER );
74
+ }
75
 
76
  $this->set_conf( $this->load_default_vals() );
77
  $this->_try_load_site_options();
137
  * Pros: This is to avoid file correction script changed in new versions
138
  * Cons: Conf upgrade won't get file correction if there is new values that are used in file
139
  */
140
+ if ( $has_delay_conf_tag && $has_delay_conf_tag != -1 ) {
141
  // Check new version @since 2.9.3
142
  Cloud::version_check( 'activate' . ( defined( 'LSCWP_REF' ) ? '_' . LSCWP_REF : '' ) );
143
 
144
  $this->update_confs(); // Files only get corrected in activation or saving settings actions.
145
+ }
146
+ if ( $has_delay_conf_tag != -1 ) {
147
+ self::update_option( '__activation', -1 );
148
  }
149
  }
150
 
src/core.cls.php CHANGED
@@ -79,15 +79,21 @@ class Core extends Root {
79
  add_action( 'after_setup_theme', array( $this, 'init' ) );
80
 
81
  // Check if there is a purge request in queue
82
- if ( $purge_queue = Purge::get_option( Purge::DB_QUEUE ) ) {
 
83
  @header( $purge_queue );
84
  Debug2::debug( '[Core] Purge Queue found&sent: ' . $purge_queue );
85
- Purge::delete_option( Purge::DB_QUEUE );
86
  }
87
- if ( $purge_queue = Purge::get_option( Purge::DB_QUEUE2 ) ) {
 
 
 
 
88
  @header( $purge_queue );
89
  Debug2::debug( '[Core] Purge2 Queue found&sent: ' . $purge_queue );
90
- Purge::delete_option( Purge::DB_QUEUE2 );
 
 
91
  }
92
 
93
  /**
79
  add_action( 'after_setup_theme', array( $this, 'init' ) );
80
 
81
  // Check if there is a purge request in queue
82
+ $purge_queue = Purge::get_option( Purge::DB_QUEUE );
83
+ if ( $purge_queue && $purge_queue != -1 ) {
84
  @header( $purge_queue );
85
  Debug2::debug( '[Core] Purge Queue found&sent: ' . $purge_queue );
 
86
  }
87
+ if ( $purge_queue != -1 ) {
88
+ Purge::update_option( Purge::DB_QUEUE, -1 ); // Use 0 to bypass purge while still enable db update as WP's update_option will check value===false to bypass update
89
+ }
90
+ $purge_queue = Purge::get_option( Purge::DB_QUEUE2 );
91
+ if ( $purge_queue && $purge_queue != -1 ) {
92
  @header( $purge_queue );
93
  Debug2::debug( '[Core] Purge2 Queue found&sent: ' . $purge_queue );
94
+ }
95
+ if ( $purge_queue != -1 ) {
96
+ Purge::update_option( Purge::DB_QUEUE2, -1 );
97
  }
98
 
99
  /**
src/crawler.cls.php CHANGED
@@ -94,7 +94,7 @@ class Crawler extends Root {
94
  * @access public
95
  */
96
  public function clear_disabled_list() {
97
- self::delete_option( 'bypass_list' );
98
 
99
  $msg = __( 'Crawler disabled list is cleared! All crawlers are set to active! ', 'litespeed-cache' );
100
  Admin_Display::note( $msg );
94
  * @access public
95
  */
96
  public function clear_disabled_list() {
97
+ self::update_option( 'bypass_list', array() );
98
 
99
  $msg = __( 'Crawler disabled list is cleared! All crawlers are set to active! ', 'litespeed-cache' );
100
  Admin_Display::note( $msg );
src/css.cls.php CHANGED
@@ -163,7 +163,7 @@ class CSS extends Base {
163
 
164
  $queue_k = ( strlen( $vary ) > 32 ? md5( $vary ) : $vary ) . ' ' . $url_tag;
165
  $this->_queue[ $queue_k ] = array(
166
- 'url' => $request_url,
167
  'user_agent' => substr( $ua, 0, 200 ),
168
  'is_mobile' => $this->_separate_mobile_ccss(),
169
  'is_webp' => $this->cls( 'Media' )->webp_support() ? 1 : 0,
@@ -246,7 +246,7 @@ class CSS extends Base {
246
 
247
  $queue_k = ( strlen( $vary ) > 32 ? md5( $vary ) : $vary ) . ' ' . $url_tag;
248
  $this->_queue[ $queue_k ] = array(
249
- 'url' => $request_url,
250
  'user_agent' => substr( $ua, 0, 200 ),
251
  'is_mobile' => $this->_separate_mobile_ccss(),
252
  'is_webp' => $this->cls( 'Media' )->webp_support() ? 1 : 0,
163
 
164
  $queue_k = ( strlen( $vary ) > 32 ? md5( $vary ) : $vary ) . ' ' . $url_tag;
165
  $this->_queue[ $queue_k ] = array(
166
+ 'url' => apply_filters( 'litespeed_ccss_url', $request_url ),
167
  'user_agent' => substr( $ua, 0, 200 ),
168
  'is_mobile' => $this->_separate_mobile_ccss(),
169
  'is_webp' => $this->cls( 'Media' )->webp_support() ? 1 : 0,
246
 
247
  $queue_k = ( strlen( $vary ) > 32 ? md5( $vary ) : $vary ) . ' ' . $url_tag;
248
  $this->_queue[ $queue_k ] = array(
249
+ 'url' => apply_filters( 'litespeed_ucss_url', $request_url ),
250
  'user_agent' => substr( $ua, 0, 200 ),
251
  'is_mobile' => $this->_separate_mobile_ccss(),
252
  'is_webp' => $this->cls( 'Media' )->webp_support() ? 1 : 0,
src/data.cls.php CHANGED
@@ -24,6 +24,9 @@ class Data extends Root {
24
  '4.3' => array(
25
  'litespeed_update_4_3',
26
  ),
 
 
 
27
  );
28
 
29
  private $_db_site_updater = array(
@@ -192,6 +195,9 @@ class Data extends Root {
192
  */
193
  private function _get_upgrade_lock() {
194
  $is_upgrading = get_option( 'litespeed.data.upgrading' );
 
 
 
195
  if ( $is_upgrading && time() - $is_upgrading < 3600 ) {
196
  return $is_upgrading;
197
  }
@@ -220,7 +226,7 @@ class Data extends Root {
220
  */
221
  private function _set_upgrade_lock( $lock ) {
222
  if ( ! $lock ) {
223
- delete_option( 'litespeed.data.upgrading' );
224
  }
225
  else {
226
  update_option( 'litespeed.data.upgrading', time() );
@@ -466,38 +472,60 @@ class Data extends Root {
466
  $url_id = $url_row[ 'id' ];
467
  }
468
 
469
- $q = "SELECT * FROM `$tb_url_file` WHERE url_id=%d AND vary=%s AND type=%d";
470
  $file_row = $wpdb->get_row( $wpdb->prepare( $q, array( $url_id, $vary, $type ) ), ARRAY_A );
471
- if ( ! $file_row ) {
472
- $q = "INSERT INTO `$tb_url_file` SET url_id=%d, vary=%s, filename=%s, type=%d";
473
- $wpdb->query( $wpdb->prepare( $q, array( $url_id, $vary, $filecon_md5, $type ) ) );
474
- return;
475
- }
476
 
477
  // Check if has previous file or not
478
  if ( $file_row[ 'filename' ] == $filecon_md5 ) {
479
  return;
480
  }
481
 
482
- $q = "UPDATE `$tb_url_file` SET filename=%s WHERE id=%d";
483
- $wpdb->query( $wpdb->prepare( $q, array( $filecon_md5, $file_row[ 'id' ] ) ) );
484
-
485
- // Purge this URL to avoid cache copy of same URL w/ diff QS
486
- $this->cls( 'Purge' )->purge_url( Utility::make_relative( $request_url ) ?: '/', true, true );
487
 
488
- // Check if has other records used this file or not
489
- $file_to_del = $path . '/' . $file_row[ 'filename' ] . '.' . ( $file_type == 'js' ? 'js' : 'css' );
490
-
491
- $q = "SELECT id FROM `$tb_url_file` WHERE filename = %s LIMIT 1";
492
- if ( file_exists( $file_to_del ) && ! $wpdb->get_var( $wpdb->prepare( $q, $file_row[ 'filename' ] ) ) ) {
493
- // Safe to delete
494
- Debug2::debug( '[Data] Delete no more used file ' . $file_to_del );
495
-
496
- // Clear related lscache first to avoid cache copy of same URL w/ diff QS
497
- // Purge::add( Tag::TYPE_MIN . '.' . $file_row[ 'filename' ] . '.' . $file_type );
498
 
499
- unlink( $file_to_del );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
500
  }
 
 
 
501
  }
502
 
503
  /**
24
  '4.3' => array(
25
  'litespeed_update_4_3',
26
  ),
27
+ '4.4.4-b1' => array(
28
+ 'litespeed_update_4_4_4',
29
+ ),
30
  );
31
 
32
  private $_db_site_updater = array(
195
  */
196
  private function _get_upgrade_lock() {
197
  $is_upgrading = get_option( 'litespeed.data.upgrading' );
198
+ if ( ! $is_upgrading ) {
199
+ $this->_set_upgrade_lock( false ); // set option value to existed to avoid repeated db query next time
200
+ }
201
  if ( $is_upgrading && time() - $is_upgrading < 3600 ) {
202
  return $is_upgrading;
203
  }
226
  */
227
  private function _set_upgrade_lock( $lock ) {
228
  if ( ! $lock ) {
229
+ update_option( 'litespeed.data.upgrading', -1 );
230
  }
231
  else {
232
  update_option( 'litespeed.data.upgrading', time() );
472
  $url_id = $url_row[ 'id' ];
473
  }
474
 
475
+ $q = "SELECT * FROM `$tb_url_file` WHERE url_id=%d AND vary=%s AND type=%d AND expired=0";
476
  $file_row = $wpdb->get_row( $wpdb->prepare( $q, array( $url_id, $vary, $type ) ), ARRAY_A );
 
 
 
 
 
477
 
478
  // Check if has previous file or not
479
  if ( $file_row[ 'filename' ] == $filecon_md5 ) {
480
  return;
481
  }
482
 
483
+ // If the new $filecon_md5 is marked as expired by previous records, clear those records
484
+ $q = "DELETE FROM `$tb_url_file` WHERE filename = %s AND expired > 0";
485
+ $wpdb->query( $wpdb->prepare( $q, $filecon_md5 ) );
 
 
486
 
487
+ // Check if there is any other record used the same filename or not
488
+ $q = "SELECT id FROM `$tb_url_file` WHERE filename = %s AND expired = 0 AND id != %d LIMIT 1";
489
+ if ( $wpdb->get_var( $wpdb->prepare( $q, array( $file_row[ 'filename' ], $file_row[ 'id' ] ) ) ) ) {
490
+ $q = "UPDATE `$tb_url_file` SET filename=%s WHERE id=%d";
491
+ $wpdb->query( $wpdb->prepare( $q, array( $filecon_md5, $file_row[ 'id' ] ) ) );
492
+ return;
493
+ }
 
 
 
494
 
495
+ // New record needed
496
+ $q = "INSERT INTO `$tb_url_file` SET url_id=%d, vary=%s, filename=%s, type=%d, expired = 0";
497
+ $wpdb->query( $wpdb->prepare( $q, array( $url_id, $vary, $filecon_md5, $type ) ) );
498
+
499
+ // Mark existing rows as expired
500
+ if ( $file_row ) {
501
+ $q = "UPDATE `$tb_url_file` SET expired=%d WHERE id=%d";
502
+ $expired = time() + 86400 * apply_filters( 'litespeed_url_file_expired_days', 20 );
503
+ $wpdb->query( $wpdb->prepare( $q, array( $expired, $file_row[ 'id' ] ) ) );
504
+
505
+ // Also check if has other files expired already to be deleted
506
+ $q = "SELECT * FROM `$tb_url_file` WHERE url_id = %d AND expired BETWEEN 1 AND %d";
507
+ $q = $wpdb->prepare( $q, array( $url_id, time() ) );
508
+ $list = $wpdb->get_results( $q, ARRAY_A );
509
+ if ( $list ) {
510
+ foreach ( $list as $v ) {
511
+ $file_to_del = $path . '/' . $v[ 'filename' ] . '.' . ( $file_type == 'js' ? 'js' : 'css' );
512
+ if ( file_exists( $file_to_del ) ) {
513
+ // Safe to delete
514
+ Debug2::debug( '[Data] Delete expired unused file: ' . $file_to_del );
515
+
516
+ // Clear related lscache first to avoid cache copy of same URL w/ diff QS
517
+ // Purge::add( Tag::TYPE_MIN . '.' . $file_row[ 'filename' ] . '.' . $file_type );
518
+
519
+ unlink( $file_to_del );
520
+ }
521
+ }
522
+ $q = "DELETE FROM `$tb_url_file` WHERE url_id = %d AND expired BETWEEN 1 AND %d";
523
+ $wpdb->query( $wpdb->prepare( $q, array( $url_id, time() ) ) );
524
+ }
525
  }
526
+
527
+ // Purge this URL to avoid cache copy of same URL w/ diff QS
528
+ // $this->cls( 'Purge' )->purge_url( Utility::make_relative( $request_url ) ?: '/', true, true );
529
  }
530
 
531
  /**
src/data.upgrade.func.php CHANGED
@@ -13,6 +13,24 @@ use LiteSpeed\Conf;
13
  use LiteSpeed\Admin_Display;
14
  use LiteSpeed\File;
15
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  /**
17
  * Drop cssjs table and rm cssjs folder
18
  * @since 4.3
13
  use LiteSpeed\Admin_Display;
14
  use LiteSpeed\File;
15
 
16
+ /**
17
+ * Add expired to url_file table
18
+ * @since 4.4.4
19
+ */
20
+ function litespeed_update_4_4_4() {
21
+ global $wpdb;
22
+ Debug2::debug( "[Data] Upgrade url_file table" );
23
+ $tb_exists = $wpdb->get_var( 'SHOW TABLES LIKE "' . $wpdb->prefix . 'litespeed_url_file"' );
24
+ if ( $tb_exists ) {
25
+ $q = 'ALTER TABLE `' . $wpdb->prefix . 'litespeed_url_file`
26
+ ADD COLUMN `expired` int(11) NOT NULL DEFAULT 0,
27
+ ADD KEY `filename_2` (`filename`,`expired`),
28
+ ADD KEY `url_id` (`url_id`,`expired`)
29
+ ';
30
+ $wpdb->query( $q );
31
+ }
32
+ }
33
+
34
  /**
35
  * Drop cssjs table and rm cssjs folder
36
  * @since 4.3
src/data_structure/url_file.sql CHANGED
@@ -1,9 +1,12 @@
1
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
2
  `url_id` bigint(20) NOT NULL,
3
- `vary` varchar(32) NOT NULL DEFAULT '' COMMENT 'md5 of final vary',
4
- `filename` varchar(32) NOT NULL DEFAULT '' COMMENT 'md5 of file content',
5
  `type` tinyint(4) NOT NULL COMMENT 'css=1,js=2,ccss=3,ucss=4',
 
6
  PRIMARY KEY (`id`),
7
  KEY `filename` (`filename`),
8
  KEY `type` (`type`),
9
- KEY `url_id_2` (`url_id`,`vary`,`type`)
 
 
1
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
2
  `url_id` bigint(20) NOT NULL,
3
+ `vary` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'md5 of final vary',
4
+ `filename` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT 'md5 of file content',
5
  `type` tinyint(4) NOT NULL COMMENT 'css=1,js=2,ccss=3,ucss=4',
6
+ `expired` int(11) NOT NULL DEFAULT 0,
7
  PRIMARY KEY (`id`),
8
  KEY `filename` (`filename`),
9
  KEY `type` (`type`),
10
+ KEY `url_id_2` (`url_id`,`vary`,`type`),
11
+ KEY `filename_2` (`filename`,`expired`),
12
+ KEY `url_id` (`url_id`,`expired`)
src/gui.cls.php CHANGED
@@ -185,7 +185,7 @@ class GUI extends Base {
185
  break;
186
  }
187
 
188
- $promo_tag = $_GET[ 'promo_tag' ];
189
 
190
  if ( empty( $_instance->_promo_list[ $promo_tag ] ) ) {
191
  break;
@@ -231,7 +231,11 @@ class GUI extends Base {
231
  * @return boolean
232
  */
233
  public static function has_msg_ruleconflict() {
234
- return self::get_option( Admin_Display::DB_DISMISS_MSG ) == Admin_Display::RULECONFLICT_ON;
 
 
 
 
235
  }
236
 
237
  /**
@@ -242,7 +246,12 @@ class GUI extends Base {
242
  * @return boolean
243
  */
244
  public static function has_whm_msg() {
245
- return self::get_option( self::WHM_MSG ) == self::WHM_MSG_VAL;
 
 
 
 
 
246
  }
247
 
248
  /**
@@ -252,7 +261,7 @@ class GUI extends Base {
252
  * @access public
253
  */
254
  public static function dismiss_whm() {
255
- self::delete_option( self::WHM_MSG );
256
  }
257
 
258
  /**
185
  break;
186
  }
187
 
188
+ $promo_tag = sanitize_key( $_GET[ 'promo_tag' ] );
189
 
190
  if ( empty( $_instance->_promo_list[ $promo_tag ] ) ) {
191
  break;
231
  * @return boolean
232
  */
233
  public static function has_msg_ruleconflict() {
234
+ $db_dismiss_msg = self::get_option( Admin_Display::DB_DISMISS_MSG );
235
+ if ( ! $db_dismiss_msg ) {
236
+ self::update_option( Admin_Display::DB_DISMISS_MSG, -1 );
237
+ }
238
+ return $db_dismiss_msg == Admin_Display::RULECONFLICT_ON;
239
  }
240
 
241
  /**
246
  * @return boolean
247
  */
248
  public static function has_whm_msg() {
249
+ $val = self::get_option( self::WHM_MSG );
250
+ if ( ! $val ) {
251
+ self::dismiss_whm();
252
+ return false;
253
+ }
254
+ return $val == self::WHM_MSG_VAL;
255
  }
256
 
257
  /**
261
  * @access public
262
  */
263
  public static function dismiss_whm() {
264
+ self::update_option( self::WHM_MSG, -1 );
265
  }
266
 
267
  /**
src/htaccess.cls.php CHANGED
@@ -525,7 +525,9 @@ class Htaccess extends Root {
525
  $id = Base::O_CACHE_LOGIN_COOKIE;
526
  $vary_cookies = $cfg[ $id ] ? array( $cfg[ $id ] ) : array();
527
  if ( LITESPEED_SERVER_TYPE === 'LITESPEED_SERVER_OLS' ) { // Need to keep this due to different behavior of OLS when handling response vary header @Sep/22/2018
528
- $vary_cookies[] = ',wp-postpass_' . COOKIEHASH;
 
 
529
  $vary_cookies = apply_filters( 'litespeed_vary_cookies', $vary_cookies ); // todo: test if response vary header can work in latest OLS, drop the above two lines
530
  }
531
  // frontend and backend
525
  $id = Base::O_CACHE_LOGIN_COOKIE;
526
  $vary_cookies = $cfg[ $id ] ? array( $cfg[ $id ] ) : array();
527
  if ( LITESPEED_SERVER_TYPE === 'LITESPEED_SERVER_OLS' ) { // Need to keep this due to different behavior of OLS when handling response vary header @Sep/22/2018
528
+ if ( defined( 'COOKIEHASH' ) ) {
529
+ $vary_cookies[] = ',wp-postpass_' . COOKIEHASH;
530
+ }
531
  $vary_cookies = apply_filters( 'litespeed_vary_cookies', $vary_cookies ); // todo: test if response vary header can work in latest OLS, drop the above two lines
532
  }
533
  // frontend and backend
src/optimize.cls.php CHANGED
@@ -806,6 +806,9 @@ class Optimize extends Base {
806
  if ( ! empty( $attrs[ 'data-no-optimize' ] ) ) {
807
  continue;
808
  }
 
 
 
809
  if ( ! empty( $attrs[ 'type' ] ) && $attrs[ 'type' ] != 'text/javascript' ) {
810
  continue;
811
  }
806
  if ( ! empty( $attrs[ 'data-no-optimize' ] ) ) {
807
  continue;
808
  }
809
+ if ( ! empty( $attrs[ 'data-cfasync' ] ) && $attrs[ 'data-cfasync' ] === 'false' ) {
810
+ continue;
811
+ }
812
  if ( ! empty( $attrs[ 'type' ] ) && $attrs[ 'type' ] != 'text/javascript' ) {
813
  continue;
814
  }
src/purge.cls.php CHANGED
@@ -284,6 +284,10 @@ class Purge extends Base {
284
  * @access private
285
  */
286
  private function _purge_all_cssjs( $silence = false ) {
 
 
 
 
287
  $this->_purge_all_lscache( $silence ); // Purge CSSJS must purge lscache too to avoid 404
288
 
289
  do_action( 'litespeed_purged_all_cssjs' );
284
  * @access private
285
  */
286
  private function _purge_all_cssjs( $silence = false ) {
287
+ if ( defined( 'LITESPEED_DID_send_headers' ) ) {
288
+ Debug2::debug( "❌ Bypassed cssjs delete as header sent (lscache purge after this point will fail)" );
289
+ return;
290
+ }
291
  $this->_purge_all_lscache( $silence ); // Purge CSSJS must purge lscache too to avoid 404
292
 
293
  do_action( 'litespeed_purged_all_cssjs' );
src/report.cls.php CHANGED
@@ -47,9 +47,9 @@ class Report extends Base {
47
  $report_con = $this->generate_environment_report();
48
 
49
  // Generate link
50
- $link = ! empty( $_POST[ 'link' ] ) ? $_POST[ 'link' ] : '';
51
 
52
- $notes = ! empty( $_POST[ 'notes' ] ) ? $_POST[ 'notes' ] : '';
53
 
54
  $data = array(
55
  'env' => $report_con,
47
  $report_con = $this->generate_environment_report();
48
 
49
  // Generate link
50
+ $link = ! empty( $_POST[ 'link' ] ) ? esc_url( $_POST[ 'link' ] ) : '';
51
 
52
+ $notes = ! empty( $_POST[ 'notes' ] ) ? esc_html( $_POST[ 'notes' ] ) : '';
53
 
54
  $data = array(
55
  'env' => $report_con,
src/router.cls.php CHANGED
@@ -188,8 +188,9 @@ class Router extends Base {
188
  */
189
  $rest_prefix = function_exists( 'rest_get_url_prefix' ) ? rest_get_url_prefix() : apply_filters( 'rest_url_prefix', 'wp-json' );
190
  if (
191
- strpos( $_SERVER[ 'REQUEST_URI' ], $rest_prefix . '/wp/v2/media' ) !== false
192
- && strpos( $_SERVER[ 'HTTP_REFERER' ], 'wp-admin') !== false
 
193
  ) {
194
  Debug2::debug( '[Router] CDN bypassed: wp-json on admin page' );
195
  $can = false;
@@ -624,6 +625,10 @@ class Router extends Base {
624
  if ( ! isset( self::$_ip ) ) {
625
  self::$_ip = self::get_ip();
626
  }
 
 
 
 
627
  // $uip = explode('.', $_ip);
628
  // if(empty($uip) || count($uip) != 4) Return false;
629
  // foreach($ip_list as $key => $ip) $ip_list[$key] = explode('.', trim($ip));
@@ -644,16 +649,16 @@ class Router extends Base {
644
  */
645
  public static function get_ip() {
646
  $_ip = '';
647
- if ( function_exists( 'apache_request_headers' ) ) {
648
- $apache_headers = apache_request_headers();
649
- $_ip = ! empty( $apache_headers['True-Client-IP'] ) ? $apache_headers['True-Client-IP'] : false;
650
- if ( ! $_ip ) {
651
- $_ip = ! empty( $apache_headers['X-Forwarded-For'] ) ? $apache_headers['X-Forwarded-For'] : false;
652
- $_ip = explode( ',', $_ip );
653
- $_ip = $_ip[ 0 ];
654
- }
655
 
656
- }
657
 
658
  if ( ! $_ip ) {
659
  $_ip = ! empty( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : false;
188
  */
189
  $rest_prefix = function_exists( 'rest_get_url_prefix' ) ? rest_get_url_prefix() : apply_filters( 'rest_url_prefix', 'wp-json' );
190
  if (
191
+ ! empty( $_SERVER[ 'REQUEST_URI' ] ) &&
192
+ strpos( $_SERVER[ 'REQUEST_URI' ], $rest_prefix . '/wp/v2/media' ) !== false &&
193
+ strpos( $_SERVER[ 'HTTP_REFERER' ], 'wp-admin') !== false
194
  ) {
195
  Debug2::debug( '[Router] CDN bypassed: wp-json on admin page' );
196
  $can = false;
625
  if ( ! isset( self::$_ip ) ) {
626
  self::$_ip = self::get_ip();
627
  }
628
+
629
+ if ( ! self::$_ip ) {
630
+ return false;
631
+ }
632
  // $uip = explode('.', $_ip);
633
  // if(empty($uip) || count($uip) != 4) Return false;
634
  // foreach($ip_list as $key => $ip) $ip_list[$key] = explode('.', trim($ip));
649
  */
650
  public static function get_ip() {
651
  $_ip = '';
652
+ // if ( function_exists( 'apache_request_headers' ) ) {
653
+ // $apache_headers = apache_request_headers();
654
+ // $_ip = ! empty( $apache_headers['True-Client-IP'] ) ? $apache_headers['True-Client-IP'] : false;
655
+ // if ( ! $_ip ) {
656
+ // $_ip = ! empty( $apache_headers['X-Forwarded-For'] ) ? $apache_headers['X-Forwarded-For'] : false;
657
+ // $_ip = explode( ',', $_ip );
658
+ // $_ip = $_ip[ 0 ];
659
+ // }
660
 
661
+ // }
662
 
663
  if ( ! $_ip ) {
664
  $_ip = ! empty( $_SERVER['REMOTE_ADDR'] ) ? $_SERVER['REMOTE_ADDR'] : false;
thirdparty/nextgengallery.cls.php CHANGED
@@ -72,7 +72,7 @@ class NextGenGallery
72
  public static function update_image()
73
  {
74
  if ( isset( $_REQUEST[ 'gallery_id' ] ) ) {
75
- do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $_REQUEST[ 'gallery_id' ] ) ;
76
  return ;
77
  }
78
 
@@ -81,19 +81,19 @@ class NextGenGallery
81
  $task_list = json_decode( $task_list, true ) ;
82
 
83
  if ( ! empty( $task_list[ 0 ][ 'query' ][ 'id' ] ) ) {
84
- do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $task_list[ 0 ][ 'query' ][ 'id' ] ) ;
85
  return ;
86
  }
87
  }
88
 
89
  if ( isset($_POST['id']) ) {
90
- $id = $_POST['id'] ;
91
  }
92
  elseif ( isset($_POST['image']) ) {
93
- $id = $_POST['image'] ;
94
  }
95
  elseif ( isset($_GET['pid']) ) {
96
- $id = $_GET['pid'] ;
97
  }
98
  else {
99
  error_log('LiteSpeed_Cache hit ngg_ajax_image_save with no post image id.') ;
@@ -114,7 +114,7 @@ class NextGenGallery
114
  public static function delete_image()
115
  {
116
  if ( isset($_GET['gid']) ) {
117
- do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . $_GET['gid'] );
118
  }
119
  }
120
 
72
  public static function update_image()
73
  {
74
  if ( isset( $_REQUEST[ 'gallery_id' ] ) ) {
75
+ do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . sanitize_key( $_REQUEST[ 'gallery_id' ] ) );
76
  return ;
77
  }
78
 
81
  $task_list = json_decode( $task_list, true ) ;
82
 
83
  if ( ! empty( $task_list[ 0 ][ 'query' ][ 'id' ] ) ) {
84
+ do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . sanitize_key( $task_list[ 0 ][ 'query' ][ 'id' ] ) );
85
  return ;
86
  }
87
  }
88
 
89
  if ( isset($_POST['id']) ) {
90
+ $id = (int)$_POST['id'] ;
91
  }
92
  elseif ( isset($_POST['image']) ) {
93
+ $id = (int)$_POST['image'] ;
94
  }
95
  elseif ( isset($_GET['pid']) ) {
96
+ $id = (int)$_GET['pid'] ;
97
  }
98
  else {
99
  error_log('LiteSpeed_Cache hit ngg_ajax_image_save with no post image id.') ;
114
  public static function delete_image()
115
  {
116
  if ( isset($_GET['gid']) ) {
117
+ do_action( 'litespeed_purge', self::CACHETAG_GALLERIES . sanitize_key( $_GET['gid'] ) );
118
  }
119
  }
120
 
tpl/crawler/summary.tpl.php CHANGED
@@ -97,7 +97,7 @@ if($seconds > 0):
97
  <?php if ( $summary[ 'end_reason' ] ) : ?>
98
  <p class='litespeed-desc'>
99
  <b><?php echo __( 'Ended reason', 'litespeed-cache' ); ?>:</b>
100
- <?php echo $summary[ 'end_reason' ]; ?>
101
  </p>
102
  <?php endif; ?>
103
 
97
  <?php if ( $summary[ 'end_reason' ] ) : ?>
98
  <p class='litespeed-desc'>
99
  <b><?php echo __( 'Ended reason', 'litespeed-cache' ); ?>:</b>
100
+ <?php echo esc_html( $summary[ 'end_reason' ] ); ?>
101
  </p>
102
  <?php endif; ?>
103
 
tpl/dash/dashboard.tpl.php CHANGED
@@ -404,7 +404,7 @@ $placeholder_queue_count = count( $this->load_queue( 'lqip' ) );
404
  <?php else: ?>
405
  <span class="litespeed-label-danger litespeed-label-dashboard">OFF</span>
406
  <?php endif; ?>
407
- <?php echo $title; ?>
408
  </p>
409
  <?php endforeach; ?>
410
  </div>
@@ -437,7 +437,7 @@ $placeholder_queue_count = count( $this->load_queue( 'lqip' ) );
437
  <?php echo __( 'Last generated', 'litespeed-cache' ) . ': <code>' . Utility::readable_time( $css_summary[ 'last_request_ccss' ] ) . '</code>'; ?>
438
  </p>
439
  <p>
440
- <?php echo __( 'Time to execute previous request', 'litespeed-cache' ) . ': <code>' . $css_summary[ 'last_spent_ccss' ] . 's</code>'; ?>
441
  </p>
442
  <?php endif; ?>
443
 
@@ -470,7 +470,7 @@ $placeholder_queue_count = count( $this->load_queue( 'lqip' ) );
470
  <?php echo __( 'Last generated', 'litespeed-cache' ) . ': <code>' . Utility::readable_time( $css_summary[ 'last_request_ucss' ] ) . '</code>'; ?>
471
  </p>
472
  <p>
473
- <?php echo __( 'Time to execute previous request', 'litespeed-cache' ) . ': <code>' . $css_summary[ 'last_spent_ucss' ] . 's</code>'; ?>
474
  </p>
475
  <?php endif; ?>
476
 
@@ -503,7 +503,7 @@ $placeholder_queue_count = count( $this->load_queue( 'lqip' ) );
503
  <?php echo __( 'Last generated', 'litespeed-cache' ) . ': <code>' . Utility::readable_time( $placeholder_summary[ 'last_request' ] ) . '</code>'; ?>
504
  </p>
505
  <p>
506
- <?php echo __( 'Time to execute previous request', 'litespeed-cache' ) . ': <code>' . $placeholder_summary[ 'last_spent' ] . 's</code>'; ?>
507
  </p>
508
  <?php endif; ?>
509
 
@@ -534,7 +534,7 @@ $placeholder_queue_count = count( $this->load_queue( 'lqip' ) );
534
  <code><?php echo count( Crawler::cls()->list_crawlers() );?></code> <?php echo __( 'Crawler(s)', 'litespeed-cache' ); ?>
535
  </p>
536
  <p>
537
- <?php echo __( 'Currently active crawler', 'litespeed-cache' ); ?>: <code><?php echo $crawler_summary[ 'curr_crawler' ] ?></code>
538
  </p>
539
 
540
  <?php if ( $crawler_summary[ 'curr_crawler_beginning_time' ] ) : ?>
@@ -554,13 +554,13 @@ $placeholder_queue_count = count( $this->load_queue( 'lqip' ) );
554
  <?php if ( $crawler_summary[ 'end_reason' ] ) : ?>
555
  <p class='litespeed-desc'>
556
  <b><?php echo __( 'Ended reason', 'litespeed-cache' ); ?>:</b>
557
- <?php echo $crawler_summary[ 'end_reason' ]; ?>
558
  </p>
559
  <?php endif; ?>
560
 
561
  <?php if ( $crawler_summary[ 'last_crawled' ] ) : ?>
562
  <p class='litespeed-desc'>
563
- <?php echo sprintf(__('<b>Last crawled:</b> %s item(s)', 'litespeed-cache'), $crawler_summary[ 'last_crawled' ] ); ?>
564
  </p>
565
  <?php endif; ?>
566
 
404
  <?php else: ?>
405
  <span class="litespeed-label-danger litespeed-label-dashboard">OFF</span>
406
  <?php endif; ?>
407
+ <?php echo esc_html( $title ); ?>
408
  </p>
409
  <?php endforeach; ?>
410
  </div>
437
  <?php echo __( 'Last generated', 'litespeed-cache' ) . ': <code>' . Utility::readable_time( $css_summary[ 'last_request_ccss' ] ) . '</code>'; ?>
438
  </p>
439
  <p>
440
+ <?php echo __( 'Time to execute previous request', 'litespeed-cache' ) . ': <code>' . esc_html( $css_summary[ 'last_spent_ccss' ] ) . 's</code>'; ?>
441
  </p>
442
  <?php endif; ?>
443
 
470
  <?php echo __( 'Last generated', 'litespeed-cache' ) . ': <code>' . Utility::readable_time( $css_summary[ 'last_request_ucss' ] ) . '</code>'; ?>
471
  </p>
472
  <p>
473
+ <?php echo __( 'Time to execute previous request', 'litespeed-cache' ) . ': <code>' . esc_html( $css_summary[ 'last_spent_ucss' ] ) . 's</code>'; ?>
474
  </p>
475
  <?php endif; ?>
476
 
503
  <?php echo __( 'Last generated', 'litespeed-cache' ) . ': <code>' . Utility::readable_time( $placeholder_summary[ 'last_request' ] ) . '</code>'; ?>
504
  </p>
505
  <p>
506
+ <?php echo __( 'Time to execute previous request', 'litespeed-cache' ) . ': <code>' . esc_html( $placeholder_summary[ 'last_spent' ] ) . 's</code>'; ?>
507
  </p>
508
  <?php endif; ?>
509
 
534
  <code><?php echo count( Crawler::cls()->list_crawlers() );?></code> <?php echo __( 'Crawler(s)', 'litespeed-cache' ); ?>
535
  </p>
536
  <p>
537
+ <?php echo __( 'Currently active crawler', 'litespeed-cache' ); ?>: <code><?php echo esc_html( $crawler_summary[ 'curr_crawler' ] ); ?></code>
538
  </p>
539
 
540
  <?php if ( $crawler_summary[ 'curr_crawler_beginning_time' ] ) : ?>
554
  <?php if ( $crawler_summary[ 'end_reason' ] ) : ?>
555
  <p class='litespeed-desc'>
556
  <b><?php echo __( 'Ended reason', 'litespeed-cache' ); ?>:</b>
557
+ <?php echo esc_html( $crawler_summary[ 'end_reason' ] ); ?>
558
  </p>
559
  <?php endif; ?>
560
 
561
  <?php if ( $crawler_summary[ 'last_crawled' ] ) : ?>
562
  <p class='litespeed-desc'>
563
+ <?php echo sprintf(__('<b>Last crawled:</b> %d item(s)', 'litespeed-cache'), $crawler_summary[ 'last_crawled' ] ); ?>
564
  </p>
565
  <?php endif; ?>
566
 
tpl/dash/network_dash.tpl.php CHANGED
@@ -77,9 +77,9 @@ foreach ( $blogs as $blog_id ) {
77
  <div class="litespeed-dashboard-stats">
78
  <h3><?php echo ( $svc == 'img_optm' ? __('Fast Queue Usage','litespeed-cache') : __( 'Usage', 'litespeed-cache' ) ); ?></h3>
79
  <p>
80
- <strong><?php echo $used; ?></strong>
81
  <?php if( $used != $quota ) { ?>
82
- <span class="litespeed-desc"> of <?php echo $quota; ?></span>
83
  <?php } ?>
84
  </p>
85
  </div>
@@ -87,8 +87,8 @@ foreach ( $blogs as $blog_id ) {
87
  </div>
88
  <?php if ( $pag_total > 0 ) { ?>
89
  <p class="litespeed-dashboard-stats-payg" data-balloon-pos="up" aria-label="<?php echo __('Pay as You Go','litespeed-cache'); ?>">
90
- <?php echo __('PAYG Balance','litespeed-cache'); ?>: <strong><?php echo $pag_bal; ?></strong>
91
- <button class="litespeed-info-button" data-balloon-pos="up" aria-label="<?php echo __('This Month Usage','litespeed-cache'); ?>: <?php echo $pag_used;?>">
92
  <span class="dashicons dashicons-info"></span>
93
  <span class="screen-reader-text"><?php echo __( 'Pay as You Go Usage Statistics', 'litespeed-cache' );?></span>
94
  </button>
@@ -97,7 +97,7 @@ foreach ( $blogs as $blog_id ) {
97
 
98
  <?php if ( $svc == 'img_optm' ) { ?>
99
  <p class="litespeed-dashboard-stats-total">
100
- <?php echo __('Total Usage','litespeed-cache'); ?>: <strong><?php echo $total_used; ?> / ∞</strong>
101
  <button class="litespeed-info-button" data-balloon-pos="up" aria-label="<?php echo __('Total images optimized in this month','litespeed-cache'); ?>">
102
  <span class="dashicons dashicons-info"></span>
103
  </button>
77
  <div class="litespeed-dashboard-stats">
78
  <h3><?php echo ( $svc == 'img_optm' ? __('Fast Queue Usage','litespeed-cache') : __( 'Usage', 'litespeed-cache' ) ); ?></h3>
79
  <p>
80
+ <strong><?php echo esc_html( $used ); ?></strong>
81
  <?php if( $used != $quota ) { ?>
82
+ <span class="litespeed-desc"> of <?php echo esc_html( $quota ); ?></span>
83
  <?php } ?>
84
  </p>
85
  </div>
87
  </div>
88
  <?php if ( $pag_total > 0 ) { ?>
89
  <p class="litespeed-dashboard-stats-payg" data-balloon-pos="up" aria-label="<?php echo __('Pay as You Go','litespeed-cache'); ?>">
90
+ <?php echo __('PAYG Balance','litespeed-cache'); ?>: <strong><?php echo esc_html( $pag_bal ); ?></strong>
91
+ <button class="litespeed-info-button" data-balloon-pos="up" aria-label="<?php echo __('This Month Usage','litespeed-cache'); ?>: <?php echo esc_html( $pag_used );?>">
92
  <span class="dashicons dashicons-info"></span>
93
  <span class="screen-reader-text"><?php echo __( 'Pay as You Go Usage Statistics', 'litespeed-cache' );?></span>
94
  </button>
97
 
98
  <?php if ( $svc == 'img_optm' ) { ?>
99
  <p class="litespeed-dashboard-stats-total">
100
+ <?php echo __('Total Usage','litespeed-cache'); ?>: <strong><?php echo esc_html( $total_used ); ?> / ∞</strong>
101
  <button class="litespeed-info-button" data-balloon-pos="up" aria-label="<?php echo __('Total images optimized in this month','litespeed-cache'); ?>">
102
  <span class="dashicons dashicons-info"></span>
103
  </button>
tpl/img_optm/summary.tpl.php CHANGED
@@ -63,7 +63,7 @@ if ( ! empty( $img_count[ 'img.' . Img_Optm::STATUS_ERR_FETCH ] ) ) {
63
  </h3>
64
 
65
  <p>
66
- <?php echo sprintf( __( 'You can request a maximum of %s images at once.', 'litespeed-cache' ), '<strong>' . $allowance . '</strong>' ); ?>
67
  </p>
68
 
69
  <?php if ( $wet_limit ) : ?>
@@ -194,7 +194,7 @@ if ( ! empty( $img_count[ 'img.' . Img_Optm::STATUS_ERR_FETCH ] ) ) {
194
  </p>
195
  <?php if ( $optm_summary[ 'bk_summary' ][ 'count' ] ) : ?>
196
  <p>
197
- <?php echo __( 'Files', 'litespeed-cache' ) . ': <code>' . $optm_summary[ 'bk_summary' ][ 'count' ] . '</code>'; ?>
198
  </p>
199
  <p>
200
  <?php echo __( 'Total', 'litespeed-cache' ) . ': <code>' . Utility::real_size( $optm_summary[ 'bk_summary' ][ 'sum' ] ) . '</code>'; ?>
63
  </h3>
64
 
65
  <p>
66
+ <?php echo sprintf( __( 'You can request a maximum of %s images at once.', 'litespeed-cache' ), '<strong>' . intval( $allowance ) . '</strong>' ); ?>
67
  </p>
68
 
69
  <?php if ( $wet_limit ) : ?>
194
  </p>
195
  <?php if ( $optm_summary[ 'bk_summary' ][ 'count' ] ) : ?>
196
  <p>
197
+ <?php echo __( 'Files', 'litespeed-cache' ) . ': <code>' . intval( $optm_summary[ 'bk_summary' ][ 'count' ] ) . '</code>'; ?>
198
  </p>
199
  <p>
200
  <?php echo __( 'Total', 'litespeed-cache' ) . ': <code>' . Utility::real_size( $optm_summary[ 'bk_summary' ][ 'sum' ] ) . '</code>'; ?>
tpl/inc/check_cache_disabled.php CHANGED
@@ -37,7 +37,7 @@ if ( $reasons ) :
37
  <ul class="litespeed-list">
38
  <?php foreach ( $reasons as $v ) : ?>
39
  <li>
40
- <?php echo $v[ 'title' ] ; ?>
41
 
42
  <a href="<?php echo $v[ 'link' ] ; ?>" target="_blank" class="litespeed-learn-more"><?php echo __( 'Learn More', 'litespeed-cache' ) ; ?></a>
43
  </li>
37
  <ul class="litespeed-list">
38
  <?php foreach ( $reasons as $v ) : ?>
39
  <li>
40
+ <?php echo esc_html( $v[ 'title' ] ); ?>
41
 
42
  <a href="<?php echo $v[ 'link' ] ; ?>" target="_blank" class="litespeed-learn-more"><?php echo __( 'Learn More', 'litespeed-cache' ) ; ?></a>
43
  </li>
tpl/page_optm/settings_css.tpl.php CHANGED
@@ -104,7 +104,7 @@ $ucss_queue = $this->load_queue( 'ucss' );
104
  <?php endif; ?>
105
  <?php if ( ! is_array( $v ) ) continue; ?>
106
  <?php if ( ! empty( $v[ '_status' ] ) ) : ?><span class="litespeed-success"><?php endif; ?>
107
- <?php echo $v[ 'url' ]; ?>
108
  <?php if ( ! empty( $v[ '_status' ] ) ) : ?></span><?php endif; ?>
109
  <?php if ( $pos = strpos( $k, ' ' ) ) echo ' (' . __( 'Vary Group', 'litespeed-cache' ) . ':' . substr( $k, 0, $pos ) . ')'; ?>
110
  <?php if ( $v[ 'is_mobile' ] ) echo ' <span data-balloon-pos="up" aria-label="mobile">📱</span>'; ?>
@@ -214,7 +214,7 @@ $ucss_queue = $this->load_queue( 'ucss' );
214
  <?php endif; ?>
215
  <?php if ( ! is_array( $v ) ) continue; ?>
216
  <?php if ( ! empty( $v[ '_status' ] ) ) : ?><span class="litespeed-success"><?php endif; ?>
217
- <?php echo $v[ 'url' ]; ?>
218
  <?php if ( ! empty( $v[ '_status' ] ) ) : ?></span><?php endif; ?>
219
  <?php if ( $pos = strpos( $k, ' ' ) ) echo ' (' . __( 'Vary Group', 'litespeed-cache' ) . ':' . substr( $k, 0, $pos ) . ')'; ?>
220
  <?php if ( $v[ 'is_mobile' ] ) echo ' <span data-balloon-pos="up" aria-label="mobile">📱</span>'; ?>
104
  <?php endif; ?>
105
  <?php if ( ! is_array( $v ) ) continue; ?>
106
  <?php if ( ! empty( $v[ '_status' ] ) ) : ?><span class="litespeed-success"><?php endif; ?>
107
+ <?php echo esc_html( $v[ 'url' ] ); ?>
108
  <?php if ( ! empty( $v[ '_status' ] ) ) : ?></span><?php endif; ?>
109
  <?php if ( $pos = strpos( $k, ' ' ) ) echo ' (' . __( 'Vary Group', 'litespeed-cache' ) . ':' . substr( $k, 0, $pos ) . ')'; ?>
110
  <?php if ( $v[ 'is_mobile' ] ) echo ' <span data-balloon-pos="up" aria-label="mobile">📱</span>'; ?>
214
  <?php endif; ?>
215
  <?php if ( ! is_array( $v ) ) continue; ?>
216
  <?php if ( ! empty( $v[ '_status' ] ) ) : ?><span class="litespeed-success"><?php endif; ?>
217
+ <?php echo esc_html( $v[ 'url' ] ); ?>
218
  <?php if ( ! empty( $v[ '_status' ] ) ) : ?></span><?php endif; ?>
219
  <?php if ( $pos = strpos( $k, ' ' ) ) echo ' (' . __( 'Vary Group', 'litespeed-cache' ) . ':' . substr( $k, 0, $pos ) . ')'; ?>
220
  <?php if ( $v[ 'is_mobile' ] ) echo ' <span data-balloon-pos="up" aria-label="mobile">📱</span>'; ?>