LiteSpeed Cache - Version 3.1

Version Description

  • May 20 2020 =
  • Network Added Debug settings to network level when on network.
  • Purge Network now can purge all.
  • Network Fixed issue where saving the network primary site settings failed.
  • Network Moved Beta Test to network level when on network.
  • Cache Fixed issue in admin where new post editor was wrongly cached for non-admin roles. (@TEKFused)
  • Data Fixed issue with crawler & img_optm table creation failure. (@berdini @piercand)
  • Core Improved plugin activation compatibility on Windows 10 #224 (@greenphp)
  • Core Improved compatibility for .htaccess path search.
  • Object Catch RedisException. (@elparts)
  • Fixed Script URI issue in 3.0.9 #223 (@aonsyed)
  • Image Optimize Show thumbnail size set list in image optimization summary. (@Johnny Nguyen)
  • Debug Parameters will now be logged.
Download this release

Release Info

Developer hailite
Plugin Icon 128x128 LiteSpeed Cache
Version 3.1
Comparing to
See all releases

Code changes from version 3.0.9 to 3.1

data/const.network_default.ini CHANGED
@@ -97,6 +97,38 @@ counts
97
  plugins'
98
 
99
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  ;; -------------------------------------------------- ;;
101
  ;; -------------- Image Optm ----------------- ;;
102
  ;; -------------------------------------------------- ;;
97
  plugins'
98
 
99
 
100
+ ;; -------------------------------------------------- ;;
101
+ ;; -------------- Debug ----------------- ;;
102
+ ;; -------------------------------------------------- ;;
103
+
104
+ ; O_DEBUG_DISABLE_ALL
105
+ debug-disable_all = false
106
+
107
+ ; O_DEBUG
108
+ debug = false
109
+
110
+ ; O_DEBUG_IPS
111
+ debug-ips = '127.0.0.1'
112
+
113
+ ; O_DEBUG_LEVEL
114
+ debug-level = false
115
+
116
+ ; O_DEBUG_FILESIZE
117
+ debug-filesize = 3
118
+
119
+ ; O_DEBUG_COOKIE
120
+ debug-cookie = false
121
+
122
+ ; O_DEBUG_COLLAPS_QS
123
+ debug-collaps_qs = false
124
+
125
+ ; O_DEBUG_INC
126
+ debug-inc = ''
127
+
128
+ ; O_DEBUG_EXC
129
+ debug-exc = ''
130
+
131
+
132
  ;; -------------------------------------------------- ;;
133
  ;; -------------- Image Optm ----------------- ;;
134
  ;; -------------------------------------------------- ;;
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 3.0.9\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
7
- "POT-Creation-Date: 2020-05-13 17:35:43+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -182,8 +182,8 @@ msgid "Server variable(s) %s available to override this setting."
182
  msgstr ""
183
 
184
  #: src/admin-display.cls.php:1083 src/doc.cls.php:38 tpl/cdn/manage.tpl.php:66
185
- #: tpl/dash/dashboard.tpl.php:46 tpl/img_optm/summary.tpl.php:56
186
- #: tpl/img_optm/summary.tpl.php:96 tpl/inc/check_cache_disabled.php:42
187
  msgid "Learn More"
188
  msgstr ""
189
 
@@ -314,7 +314,7 @@ msgstr ""
314
  msgid "Sync credit allowance with Cloud Server successfully."
315
  msgstr ""
316
 
317
- #: src/conf.cls.php:711
318
  msgid "Changed setting successfully."
319
  msgstr ""
320
 
@@ -666,11 +666,11 @@ msgstr ""
666
  msgid "Cloudflare"
667
  msgstr ""
668
 
669
- #: src/gui.cls.php:713 tpl/img_optm/summary.tpl.php:169
670
  msgid "Remove all previous unfinished image optimization requests."
671
  msgstr ""
672
 
673
- #: src/gui.cls.php:714 tpl/img_optm/summary.tpl.php:171
674
  msgid "Clean Up Unfinished Data"
675
  msgstr ""
676
 
@@ -696,17 +696,17 @@ msgstr ""
696
  msgid "Update %s now"
697
  msgstr ""
698
 
699
- #: src/htaccess.cls.php:364
700
  msgid "Mobile Agent Rules"
701
  msgstr ""
702
 
703
- #: src/htaccess.cls.php:846
704
  msgid ""
705
  "<p>Please add/replace the following codes into the beginning of %1$s:</p> "
706
  "%2$s"
707
  msgstr ""
708
 
709
- #: src/htaccess.cls.php:916
710
  msgid "File Saved."
711
  msgstr ""
712
 
@@ -747,7 +747,7 @@ msgid "Optimized image file expired and was cleared."
747
  msgstr ""
748
 
749
  #: src/img-optm.cls.php:872
750
- msgid "Pulled image md5 dismatched"
751
  msgstr ""
752
 
753
  #: src/img-optm.cls.php:916
@@ -755,7 +755,7 @@ msgid "Optimized WebP file expired and was cleared."
755
  msgstr ""
756
 
757
  #: src/img-optm.cls.php:933
758
- msgid "Pulled WebP image md5 dismatched"
759
  msgstr ""
760
 
761
  #: src/img-optm.cls.php:989
@@ -1835,7 +1835,7 @@ msgstr ""
1835
  msgid "Dismiss this notice"
1836
  msgstr ""
1837
 
1838
- #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 3.0.9) #-#-#-#-#
1839
  #. Plugin Name of the plugin/theme
1840
  #: tpl/banner/new_version.php:59 tpl/banner/new_version_dev.tpl.php:12
1841
  #: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
@@ -2877,7 +2877,7 @@ msgstr ""
2877
  msgid "Blacklist"
2878
  msgstr ""
2879
 
2880
- #: tpl/crawler/blacklist.tpl.php:22 tpl/img_optm/summary.tpl.php:194
2881
  msgid "Total"
2882
  msgstr ""
2883
 
@@ -3374,7 +3374,7 @@ msgstr ""
3374
  msgid "Current closest Cloud server is %s.&#10;Click to redetect."
3375
  msgstr ""
3376
 
3377
- #: tpl/dash/dashboard.tpl.php:202 tpl/img_optm/summary.tpl.php:51
3378
  #: tpl/page_optm/settings_css.tpl.php:121
3379
  #: tpl/page_optm/settings_media.tpl.php:172
3380
  msgid "Are you sure to redetect the closest cloud server for this service?"
@@ -3396,7 +3396,7 @@ msgstr ""
3396
  msgid "Images Requested"
3397
  msgstr ""
3398
 
3399
- #: tpl/dash/dashboard.tpl.php:322 tpl/img_optm/summary.tpl.php:326
3400
  msgid "Last Request"
3401
  msgstr ""
3402
 
@@ -3818,11 +3818,11 @@ msgid ""
3818
  "images."
3819
  msgstr ""
3820
 
3821
- #: tpl/img_optm/settings.tpl.php:66 tpl/img_optm/summary.tpl.php:220
3822
  msgid "This is irreversible."
3823
  msgstr ""
3824
 
3825
- #: tpl/img_optm/settings.tpl.php:67 tpl/img_optm/summary.tpl.php:221
3826
  msgid "You will be unable to Revert Optimization once the backups are deleted!"
3827
  msgstr ""
3828
 
@@ -3863,207 +3863,211 @@ msgstr ""
3863
  msgid "The image compression quality setting of WordPress out of 100."
3864
  msgstr ""
3865
 
3866
- #: tpl/img_optm/summary.tpl.php:51 tpl/page_optm/settings_css.tpl.php:121
3867
  #: tpl/page_optm/settings_media.tpl.php:172
3868
  msgid "Current closest Cloud server is %s.&#10; Click to redetect."
3869
  msgstr ""
3870
 
3871
- #: tpl/img_optm/summary.tpl.php:55
3872
  msgid "Optimize images with our cloud server"
3873
  msgstr ""
3874
 
3875
- #: tpl/img_optm/summary.tpl.php:60
3876
  msgid "You can request a maximum of %s images at once."
3877
  msgstr ""
3878
 
3879
- #: tpl/img_optm/summary.tpl.php:65
3880
  msgid ""
3881
  "To make sure our server can communicate with your server without any issues "
3882
  "and everything works fine, for the few first requests the amount images "
3883
  "allowed in single request is limited."
3884
  msgstr ""
3885
 
3886
- #: tpl/img_optm/summary.tpl.php:66
3887
  msgid "Current limit is"
3888
  msgstr ""
3889
 
3890
- #: tpl/img_optm/summary.tpl.php:78
3891
  msgid "Gather Image Data"
3892
  msgstr ""
3893
 
3894
- #: tpl/img_optm/summary.tpl.php:78
3895
  msgid "Send Optimization Request"
3896
  msgstr ""
3897
 
3898
- #: tpl/img_optm/summary.tpl.php:81
3899
  msgid "Only press the button if the pull cron job is disabled."
3900
  msgstr ""
3901
 
3902
- #: tpl/img_optm/summary.tpl.php:81
3903
  msgid "Images will be pulled automatically if the cron job is running."
3904
  msgstr ""
3905
 
3906
- #: tpl/img_optm/summary.tpl.php:88
3907
  msgid "Pull Images"
3908
  msgstr ""
3909
 
3910
- #: tpl/img_optm/summary.tpl.php:94
3911
  msgid "Optimization Status"
3912
  msgstr ""
3913
 
3914
- #: tpl/img_optm/summary.tpl.php:111
3915
  msgid ""
3916
  "After LiteSpeed's Image Optimization Server finishes optimization, it will "
3917
  "notify your site to pull the optimized images."
3918
  msgstr ""
3919
 
3920
- #: tpl/img_optm/summary.tpl.php:112
3921
  msgid "This process is automatic."
3922
  msgstr ""
3923
 
3924
- #: tpl/img_optm/summary.tpl.php:127
3925
  msgid "Last pull initiated by cron at %s."
3926
  msgstr ""
3927
 
3928
- #: tpl/img_optm/summary.tpl.php:176
3929
  msgid "Storage Optimization"
3930
  msgstr ""
3931
 
3932
- #: tpl/img_optm/summary.tpl.php:180
3933
  msgid "A backup of each image is saved before it is optimized."
3934
  msgstr ""
3935
 
3936
- #: tpl/img_optm/summary.tpl.php:187
3937
  msgid "Last calculated"
3938
  msgstr ""
3939
 
3940
- #: tpl/img_optm/summary.tpl.php:191 tpl/img_optm/summary.tpl.php:232
3941
  msgid "Files"
3942
  msgstr ""
3943
 
3944
- #: tpl/img_optm/summary.tpl.php:202
3945
  msgid "Calculate Original Image Storage"
3946
  msgstr ""
3947
 
3948
- #: tpl/img_optm/summary.tpl.php:209
3949
  msgid "Calculate Backups Disk Space"
3950
  msgstr ""
3951
 
3952
  #: tpl/img_optm/summary.tpl.php:217
 
 
 
 
3953
  msgid "Delete all backups of the original images"
3954
  msgstr ""
3955
 
3956
- #: tpl/img_optm/summary.tpl.php:229
3957
  #: tpl/page_optm/settings_discussion.tpl.php:51
3958
  msgid "Last ran"
3959
  msgstr ""
3960
 
3961
- #: tpl/img_optm/summary.tpl.php:235
3962
  msgid "Saved"
3963
  msgstr ""
3964
 
3965
- #: tpl/img_optm/summary.tpl.php:239
3966
  msgid "Are you sure to remove all image backups?"
3967
  msgstr ""
3968
 
3969
- #: tpl/img_optm/summary.tpl.php:240
3970
  msgid "Remove Original Image Backups"
3971
  msgstr ""
3972
 
3973
- #: tpl/img_optm/summary.tpl.php:251
3974
  msgid "Image Information"
3975
  msgstr ""
3976
 
3977
- #: tpl/img_optm/summary.tpl.php:260 tpl/img_optm/summary.tpl.php:287
3978
  msgid "Images total"
3979
  msgstr ""
3980
 
3981
- #: tpl/img_optm/summary.tpl.php:264 tpl/img_optm/summary.tpl.php:291
3982
  msgid "What is a group?"
3983
  msgstr ""
3984
 
3985
- #: tpl/img_optm/summary.tpl.php:266 tpl/img_optm/summary.tpl.php:293
3986
  msgid "What is an image group?"
3987
  msgstr ""
3988
 
3989
- #: tpl/img_optm/summary.tpl.php:271
3990
  msgid "Images not yet gathered"
3991
  msgstr ""
3992
 
3993
- #: tpl/img_optm/summary.tpl.php:274
3994
  msgid "Congratulations, all gathered!"
3995
  msgstr ""
3996
 
3997
- #: tpl/img_optm/summary.tpl.php:298
3998
  msgid "Images not yet requested"
3999
  msgstr ""
4000
 
4001
- #: tpl/img_optm/summary.tpl.php:301
4002
  msgid "Congratulations, all requested!"
4003
  msgstr ""
4004
 
4005
- #: tpl/img_optm/summary.tpl.php:308
4006
  msgid ""
4007
  "Scan for any new unoptimized image thumbnail sizes and resend necessary "
4008
  "image optimization requests."
4009
  msgstr ""
4010
 
4011
- #: tpl/img_optm/summary.tpl.php:309
4012
  msgid "Rescan New Thumbnails"
4013
  msgstr ""
4014
 
4015
- #: tpl/img_optm/summary.tpl.php:317
4016
  msgid "Optimization Summary"
4017
  msgstr ""
4018
 
4019
- #: tpl/img_optm/summary.tpl.php:320
4020
  msgid "Total Reduction"
4021
  msgstr ""
4022
 
4023
- #: tpl/img_optm/summary.tpl.php:323
4024
  msgid "Images Pulled"
4025
  msgstr ""
4026
 
4027
- #: tpl/img_optm/summary.tpl.php:330
4028
  msgid "Results can be checked in <a %s>Media Library</a>."
4029
  msgstr ""
4030
 
4031
- #: tpl/img_optm/summary.tpl.php:336
4032
  msgid "Optimization Tools"
4033
  msgstr ""
4034
 
4035
- #: tpl/img_optm/summary.tpl.php:339
4036
  msgid ""
4037
  "You can quickly switch between using original (unoptimized versions) and "
4038
  "optimized image files. It will affect all images on your website, both "
4039
  "regular and webp versions if available."
4040
  msgstr ""
4041
 
4042
- #: tpl/img_optm/summary.tpl.php:344
4043
  msgid "Use original images (unoptimized) on your site"
4044
  msgstr ""
4045
 
4046
- #: tpl/img_optm/summary.tpl.php:345
4047
  msgid "Use Original Files"
4048
  msgstr ""
4049
 
4050
- #: tpl/img_optm/summary.tpl.php:348
4051
  msgid "Switch back to using optimized images on your site"
4052
  msgstr ""
4053
 
4054
- #: tpl/img_optm/summary.tpl.php:349
4055
  msgid "Use Optimized Files"
4056
  msgstr ""
4057
 
4058
- #: tpl/img_optm/summary.tpl.php:357
4059
  msgid "Are you sure to destroy all optimized images?"
4060
  msgstr ""
4061
 
4062
- #: tpl/img_optm/summary.tpl.php:358
4063
  msgid "Destroy All Optimization Data"
4064
  msgstr ""
4065
 
4066
- #: tpl/img_optm/summary.tpl.php:362
4067
  msgid ""
4068
  "Remove all previous image optimization requests/results, revert completed "
4069
  "optimizations, and delete all optimization files."
@@ -4874,19 +4878,19 @@ msgstr ""
4874
  msgid "Report"
4875
  msgstr ""
4876
 
4877
- #: tpl/toolbox/entry.tpl.php:20 tpl/toolbox/settings-debug.tpl.php:10
4878
  msgid "Debug Settings"
4879
  msgstr ""
4880
 
4881
- #: tpl/toolbox/entry.tpl.php:21
4882
  msgid "Log View"
4883
  msgstr ""
4884
 
4885
- #: tpl/toolbox/entry.tpl.php:22
4886
  msgid "Beta Test"
4887
  msgstr ""
4888
 
4889
- #: tpl/toolbox/entry.tpl.php:28
4890
  msgid "LiteSpeed Cache Toolbox"
4891
  msgstr ""
4892
 
2
  # This file is distributed under the same license as the LiteSpeed Cache package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: LiteSpeed Cache 3.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/litespeed-cache\n"
7
+ "POT-Creation-Date: 2020-05-20 12:46:18+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
182
  msgstr ""
183
 
184
  #: src/admin-display.cls.php:1083 src/doc.cls.php:38 tpl/cdn/manage.tpl.php:66
185
+ #: tpl/dash/dashboard.tpl.php:46 tpl/img_optm/summary.tpl.php:57
186
+ #: tpl/img_optm/summary.tpl.php:97 tpl/inc/check_cache_disabled.php:42
187
  msgid "Learn More"
188
  msgstr ""
189
 
314
  msgid "Sync credit allowance with Cloud Server successfully."
315
  msgstr ""
316
 
317
+ #: src/conf.cls.php:721
318
  msgid "Changed setting successfully."
319
  msgstr ""
320
 
666
  msgid "Cloudflare"
667
  msgstr ""
668
 
669
+ #: src/gui.cls.php:713 tpl/img_optm/summary.tpl.php:170
670
  msgid "Remove all previous unfinished image optimization requests."
671
  msgstr ""
672
 
673
+ #: src/gui.cls.php:714 tpl/img_optm/summary.tpl.php:172
674
  msgid "Clean Up Unfinished Data"
675
  msgstr ""
676
 
696
  msgid "Update %s now"
697
  msgstr ""
698
 
699
+ #: src/htaccess.cls.php:365
700
  msgid "Mobile Agent Rules"
701
  msgstr ""
702
 
703
+ #: src/htaccess.cls.php:847
704
  msgid ""
705
  "<p>Please add/replace the following codes into the beginning of %1$s:</p> "
706
  "%2$s"
707
  msgstr ""
708
 
709
+ #: src/htaccess.cls.php:917
710
  msgid "File Saved."
711
  msgstr ""
712
 
747
  msgstr ""
748
 
749
  #: src/img-optm.cls.php:872
750
+ msgid "Pulled image md5 does not match the notified image md5."
751
  msgstr ""
752
 
753
  #: src/img-optm.cls.php:916
755
  msgstr ""
756
 
757
  #: src/img-optm.cls.php:933
758
+ msgid "Pulled WebP image md5 does not match the notified WebP image md5."
759
  msgstr ""
760
 
761
  #: src/img-optm.cls.php:989
1835
  msgid "Dismiss this notice"
1836
  msgstr ""
1837
 
1838
+ #. #-#-#-#-# litespeed-cache.pot (LiteSpeed Cache 3.1) #-#-#-#-#
1839
  #. Plugin Name of the plugin/theme
1840
  #: tpl/banner/new_version.php:59 tpl/banner/new_version_dev.tpl.php:12
1841
  #: tpl/cache/more_settings_tip.tpl.php:15 tpl/inc/admin_footer.php:8
2877
  msgid "Blacklist"
2878
  msgstr ""
2879
 
2880
+ #: tpl/crawler/blacklist.tpl.php:22 tpl/img_optm/summary.tpl.php:195
2881
  msgid "Total"
2882
  msgstr ""
2883
 
3374
  msgid "Current closest Cloud server is %s.&#10;Click to redetect."
3375
  msgstr ""
3376
 
3377
+ #: tpl/dash/dashboard.tpl.php:202 tpl/img_optm/summary.tpl.php:52
3378
  #: tpl/page_optm/settings_css.tpl.php:121
3379
  #: tpl/page_optm/settings_media.tpl.php:172
3380
  msgid "Are you sure to redetect the closest cloud server for this service?"
3396
  msgid "Images Requested"
3397
  msgstr ""
3398
 
3399
+ #: tpl/dash/dashboard.tpl.php:322 tpl/img_optm/summary.tpl.php:337
3400
  msgid "Last Request"
3401
  msgstr ""
3402
 
3818
  "images."
3819
  msgstr ""
3820
 
3821
+ #: tpl/img_optm/settings.tpl.php:66 tpl/img_optm/summary.tpl.php:231
3822
  msgid "This is irreversible."
3823
  msgstr ""
3824
 
3825
+ #: tpl/img_optm/settings.tpl.php:67 tpl/img_optm/summary.tpl.php:232
3826
  msgid "You will be unable to Revert Optimization once the backups are deleted!"
3827
  msgstr ""
3828
 
3863
  msgid "The image compression quality setting of WordPress out of 100."
3864
  msgstr ""
3865
 
3866
+ #: tpl/img_optm/summary.tpl.php:52 tpl/page_optm/settings_css.tpl.php:121
3867
  #: tpl/page_optm/settings_media.tpl.php:172
3868
  msgid "Current closest Cloud server is %s.&#10; Click to redetect."
3869
  msgstr ""
3870
 
3871
+ #: tpl/img_optm/summary.tpl.php:56
3872
  msgid "Optimize images with our cloud server"
3873
  msgstr ""
3874
 
3875
+ #: tpl/img_optm/summary.tpl.php:61
3876
  msgid "You can request a maximum of %s images at once."
3877
  msgstr ""
3878
 
3879
+ #: tpl/img_optm/summary.tpl.php:66
3880
  msgid ""
3881
  "To make sure our server can communicate with your server without any issues "
3882
  "and everything works fine, for the few first requests the amount images "
3883
  "allowed in single request is limited."
3884
  msgstr ""
3885
 
3886
+ #: tpl/img_optm/summary.tpl.php:67
3887
  msgid "Current limit is"
3888
  msgstr ""
3889
 
3890
+ #: tpl/img_optm/summary.tpl.php:79
3891
  msgid "Gather Image Data"
3892
  msgstr ""
3893
 
3894
+ #: tpl/img_optm/summary.tpl.php:79
3895
  msgid "Send Optimization Request"
3896
  msgstr ""
3897
 
3898
+ #: tpl/img_optm/summary.tpl.php:82
3899
  msgid "Only press the button if the pull cron job is disabled."
3900
  msgstr ""
3901
 
3902
+ #: tpl/img_optm/summary.tpl.php:82
3903
  msgid "Images will be pulled automatically if the cron job is running."
3904
  msgstr ""
3905
 
3906
+ #: tpl/img_optm/summary.tpl.php:89
3907
  msgid "Pull Images"
3908
  msgstr ""
3909
 
3910
+ #: tpl/img_optm/summary.tpl.php:95
3911
  msgid "Optimization Status"
3912
  msgstr ""
3913
 
3914
+ #: tpl/img_optm/summary.tpl.php:112
3915
  msgid ""
3916
  "After LiteSpeed's Image Optimization Server finishes optimization, it will "
3917
  "notify your site to pull the optimized images."
3918
  msgstr ""
3919
 
3920
+ #: tpl/img_optm/summary.tpl.php:113
3921
  msgid "This process is automatic."
3922
  msgstr ""
3923
 
3924
+ #: tpl/img_optm/summary.tpl.php:128
3925
  msgid "Last pull initiated by cron at %s."
3926
  msgstr ""
3927
 
3928
+ #: tpl/img_optm/summary.tpl.php:177
3929
  msgid "Storage Optimization"
3930
  msgstr ""
3931
 
3932
+ #: tpl/img_optm/summary.tpl.php:181
3933
  msgid "A backup of each image is saved before it is optimized."
3934
  msgstr ""
3935
 
3936
+ #: tpl/img_optm/summary.tpl.php:188
3937
  msgid "Last calculated"
3938
  msgstr ""
3939
 
3940
+ #: tpl/img_optm/summary.tpl.php:192 tpl/img_optm/summary.tpl.php:243
3941
  msgid "Files"
3942
  msgstr ""
3943
 
3944
+ #: tpl/img_optm/summary.tpl.php:203
3945
  msgid "Calculate Original Image Storage"
3946
  msgstr ""
3947
 
3948
+ #: tpl/img_optm/summary.tpl.php:210
3949
  msgid "Calculate Backups Disk Space"
3950
  msgstr ""
3951
 
3952
  #: tpl/img_optm/summary.tpl.php:217
3953
+ msgid "Thumbnail Size Set"
3954
+ msgstr ""
3955
+
3956
+ #: tpl/img_optm/summary.tpl.php:228
3957
  msgid "Delete all backups of the original images"
3958
  msgstr ""
3959
 
3960
+ #: tpl/img_optm/summary.tpl.php:240
3961
  #: tpl/page_optm/settings_discussion.tpl.php:51
3962
  msgid "Last ran"
3963
  msgstr ""
3964
 
3965
+ #: tpl/img_optm/summary.tpl.php:246
3966
  msgid "Saved"
3967
  msgstr ""
3968
 
3969
+ #: tpl/img_optm/summary.tpl.php:250
3970
  msgid "Are you sure to remove all image backups?"
3971
  msgstr ""
3972
 
3973
+ #: tpl/img_optm/summary.tpl.php:251
3974
  msgid "Remove Original Image Backups"
3975
  msgstr ""
3976
 
3977
+ #: tpl/img_optm/summary.tpl.php:262
3978
  msgid "Image Information"
3979
  msgstr ""
3980
 
3981
+ #: tpl/img_optm/summary.tpl.php:271 tpl/img_optm/summary.tpl.php:298
3982
  msgid "Images total"
3983
  msgstr ""
3984
 
3985
+ #: tpl/img_optm/summary.tpl.php:275 tpl/img_optm/summary.tpl.php:302
3986
  msgid "What is a group?"
3987
  msgstr ""
3988
 
3989
+ #: tpl/img_optm/summary.tpl.php:277 tpl/img_optm/summary.tpl.php:304
3990
  msgid "What is an image group?"
3991
  msgstr ""
3992
 
3993
+ #: tpl/img_optm/summary.tpl.php:282
3994
  msgid "Images not yet gathered"
3995
  msgstr ""
3996
 
3997
+ #: tpl/img_optm/summary.tpl.php:285
3998
  msgid "Congratulations, all gathered!"
3999
  msgstr ""
4000
 
4001
+ #: tpl/img_optm/summary.tpl.php:309
4002
  msgid "Images not yet requested"
4003
  msgstr ""
4004
 
4005
+ #: tpl/img_optm/summary.tpl.php:312
4006
  msgid "Congratulations, all requested!"
4007
  msgstr ""
4008
 
4009
+ #: tpl/img_optm/summary.tpl.php:319
4010
  msgid ""
4011
  "Scan for any new unoptimized image thumbnail sizes and resend necessary "
4012
  "image optimization requests."
4013
  msgstr ""
4014
 
4015
+ #: tpl/img_optm/summary.tpl.php:320
4016
  msgid "Rescan New Thumbnails"
4017
  msgstr ""
4018
 
4019
+ #: tpl/img_optm/summary.tpl.php:328
4020
  msgid "Optimization Summary"
4021
  msgstr ""
4022
 
4023
+ #: tpl/img_optm/summary.tpl.php:331
4024
  msgid "Total Reduction"
4025
  msgstr ""
4026
 
4027
+ #: tpl/img_optm/summary.tpl.php:334
4028
  msgid "Images Pulled"
4029
  msgstr ""
4030
 
4031
+ #: tpl/img_optm/summary.tpl.php:341
4032
  msgid "Results can be checked in <a %s>Media Library</a>."
4033
  msgstr ""
4034
 
4035
+ #: tpl/img_optm/summary.tpl.php:347
4036
  msgid "Optimization Tools"
4037
  msgstr ""
4038
 
4039
+ #: tpl/img_optm/summary.tpl.php:350
4040
  msgid ""
4041
  "You can quickly switch between using original (unoptimized versions) and "
4042
  "optimized image files. It will affect all images on your website, both "
4043
  "regular and webp versions if available."
4044
  msgstr ""
4045
 
4046
+ #: tpl/img_optm/summary.tpl.php:355
4047
  msgid "Use original images (unoptimized) on your site"
4048
  msgstr ""
4049
 
4050
+ #: tpl/img_optm/summary.tpl.php:356
4051
  msgid "Use Original Files"
4052
  msgstr ""
4053
 
4054
+ #: tpl/img_optm/summary.tpl.php:359
4055
  msgid "Switch back to using optimized images on your site"
4056
  msgstr ""
4057
 
4058
+ #: tpl/img_optm/summary.tpl.php:360
4059
  msgid "Use Optimized Files"
4060
  msgstr ""
4061
 
4062
+ #: tpl/img_optm/summary.tpl.php:368
4063
  msgid "Are you sure to destroy all optimized images?"
4064
  msgstr ""
4065
 
4066
+ #: tpl/img_optm/summary.tpl.php:369
4067
  msgid "Destroy All Optimization Data"
4068
  msgstr ""
4069
 
4070
+ #: tpl/img_optm/summary.tpl.php:373
4071
  msgid ""
4072
  "Remove all previous image optimization requests/results, revert completed "
4073
  "optimizations, and delete all optimization files."
4878
  msgid "Report"
4879
  msgstr ""
4880
 
4881
+ #: tpl/toolbox/entry.tpl.php:23 tpl/toolbox/settings-debug.tpl.php:10
4882
  msgid "Debug Settings"
4883
  msgstr ""
4884
 
4885
+ #: tpl/toolbox/entry.tpl.php:24
4886
  msgid "Log View"
4887
  msgstr ""
4888
 
4889
+ #: tpl/toolbox/entry.tpl.php:25
4890
  msgid "Beta Test"
4891
  msgstr ""
4892
 
4893
+ #: tpl/toolbox/entry.tpl.php:32
4894
  msgid "LiteSpeed Cache Toolbox"
4895
  msgstr ""
4896
 
litespeed-cache.php CHANGED
@@ -14,7 +14,7 @@
14
  * Plugin Name: LiteSpeed Cache
15
  * Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration
16
  * Description: High-performance page caching and site optimization from LiteSpeed
17
- * Version: 3.0.9
18
  * Author: LiteSpeed Technologies
19
  * Author URI: https://www.litespeedtech.com
20
  * License: GPLv3
@@ -44,7 +44,7 @@ if ( class_exists( 'LiteSpeed\Core' ) || defined( 'LSCWP_DIR' ) ) {
44
  return;
45
  }
46
 
47
- ! defined( 'LSCWP_V' ) && define( 'LSCWP_V', '3.0.9' );
48
 
49
  ! defined( 'LSCWP_CONTENT_DIR' ) && define( 'LSCWP_CONTENT_DIR', WP_CONTENT_DIR ) ;
50
  ! defined( 'LSCWP_DIR' ) && define( 'LSCWP_DIR', __DIR__ . '/' ) ;// Full absolute path '/var/www/html/***/wp-content/plugins/litespeed-cache/' or MU
14
  * Plugin Name: LiteSpeed Cache
15
  * Plugin URI: https://www.litespeedtech.com/products/cache-plugins/wordpress-acceleration
16
  * Description: High-performance page caching and site optimization from LiteSpeed
17
+ * Version: 3.1
18
  * Author: LiteSpeed Technologies
19
  * Author URI: https://www.litespeedtech.com
20
  * License: GPLv3
44
  return;
45
  }
46
 
47
+ ! defined( 'LSCWP_V' ) && define( 'LSCWP_V', '3.1' );
48
 
49
  ! defined( 'LSCWP_CONTENT_DIR' ) && define( 'LSCWP_CONTENT_DIR', WP_CONTENT_DIR ) ;
50
  ! defined( 'LSCWP_DIR' ) && define( 'LSCWP_DIR', __DIR__ . '/' ) ;// Full absolute path '/var/www/html/***/wp-content/plugins/litespeed-cache/' or MU
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: LiteSpeedTech
3
  Tags: caching, optimize, performance, pagespeed, seo, speed, image optimize, compress, object cache, redis, memcached, database cleaner
4
  Requires at least: 4.0
5
  Tested up to: 5.4.1
6
- Stable tag: 3.0.9
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl.html
9
 
@@ -244,6 +244,20 @@ The vast majority of plugins and themes are compatible with LiteSpeed Cache. The
244
 
245
  == Changelog ==
246
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
  = 3.0.9 - May 13 2020 =
248
  * **Purge** Comment cache can be successfully purged now.
249
  * **Data** Better MySQL charset support for crawler/image optimize table creation. (@Roshan Jonah)
3
  Tags: caching, optimize, performance, pagespeed, seo, speed, image optimize, compress, object cache, redis, memcached, database cleaner
4
  Requires at least: 4.0
5
  Tested up to: 5.4.1
6
+ Stable tag: 3.1
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl.html
9
 
244
 
245
  == Changelog ==
246
 
247
+ = 3.1 - May 20 2020 =
248
+ * 🌱**Network** Added Debug settings to network level when on network.
249
+ * 🐞**Purge** Network now can purge all.
250
+ * 🐞**Network** Fixed issue where saving the network primary site settings failed.
251
+ * **Network** Moved Beta Test to network level when on network.
252
+ * 🐞**Cache** Fixed issue in admin where new post editor was wrongly cached for non-admin roles. (@TEKFused)
253
+ * 🐞**Data** Fixed issue with crawler & img_optm table creation failure. (@berdini @piercand)
254
+ * 🐞**Core** Improved plugin activation compatibility on Windows 10 #224 (@greenphp)
255
+ * **Core** Improved compatibility for .htaccess path search.
256
+ * **Object** Catch RedisException. (@elparts)
257
+ * Fixed Script URI issue in 3.0.9 #223 (@aonsyed)
258
+ * **Image Optimize** Show thumbnail size set list in image optimization summary. (@Johnny Nguyen)
259
+ * **Debug** Parameters will now be logged.
260
+
261
  = 3.0.9 - May 13 2020 =
262
  * **Purge** Comment cache can be successfully purged now.
263
  * **Data** Better MySQL charset support for crawler/image optimize table creation. (@Roshan Jonah)
src/admin-settings.cls.php CHANGED
@@ -223,7 +223,7 @@ class Admin_Settings extends Base
223
  case self::O_CRAWLER_EXC_CPT:
224
  if ( $data ) {
225
  $data = Utility::sanitize_lines( $data );
226
- $ori = array_diff( get_post_types( '', 'names' ), array( 'post', 'page' ) );
227
  $data = array_intersect( $data, $ori );
228
  }
229
  break;
223
  case self::O_CRAWLER_EXC_CPT:
224
  if ( $data ) {
225
  $data = Utility::sanitize_lines( $data );
226
+ $ori = array_diff( get_post_types(), array( 'post', 'page' ) );
227
  $data = array_intersect( $data, $ori );
228
  }
229
  break;
src/admin.cls.php CHANGED
@@ -70,9 +70,10 @@ class Admin extends Instance
70
  * @since 1.0.0
71
  * @access public
72
  */
73
- public function admin_init()
74
- {
75
- $this->_proceed_admin_action() ;
 
76
 
77
  // Terminate if user doesn't have the access to settings
78
  if( is_network_admin() ) {
@@ -96,8 +97,6 @@ class Admin extends Instance
96
 
97
  do_action( 'litspeed_after_admin_init' ) ;
98
 
99
- Control::set_nocache( 'Admin page' ) ;
100
-
101
  if ( Router::esi_enabled() ) {
102
  add_action( 'in_widget_form', array( $this->display, 'show_widget_edit' ), 100, 3 ) ;
103
  add_filter( 'widget_update_callback', __NAMESPACE__ . '\Admin_Settings::validate_widget_save', 10, 4 ) ;
70
  * @since 1.0.0
71
  * @access public
72
  */
73
+ public function admin_init() {
74
+ Control::set_nocache( 'Admin page' );
75
+
76
+ $this->_proceed_admin_action();
77
 
78
  // Terminate if user doesn't have the access to settings
79
  if( is_network_admin() ) {
97
 
98
  do_action( 'litspeed_after_admin_init' ) ;
99
 
 
 
100
  if ( Router::esi_enabled() ) {
101
  add_action( 'in_widget_form', array( $this->display, 'show_widget_edit' ), 100, 3 ) ;
102
  add_filter( 'widget_update_callback', __NAMESPACE__ . '\Admin_Settings::validate_widget_save', 10, 4 ) ;
src/base.cls.php CHANGED
@@ -583,6 +583,17 @@ class Base extends Instance
583
  self::O_OBJECT_GLOBAL_GROUPS => array(),
584
  self::O_OBJECT_NON_PERSISTENT_GROUPS => array(),
585
 
 
 
 
 
 
 
 
 
 
 
 
586
  self::O_IMG_OPTM_WEBP_REPLACE => false,
587
 
588
  self::O_MISC_HTACCESS_FRONT => '',
@@ -1046,6 +1057,10 @@ class Base extends Instance
1046
  {
1047
  $summary = self::get_option( '_summary', array() );
1048
 
 
 
 
 
1049
  if ( ! $field ) {
1050
  return $summary;
1051
  }
583
  self::O_OBJECT_GLOBAL_GROUPS => array(),
584
  self::O_OBJECT_NON_PERSISTENT_GROUPS => array(),
585
 
586
+ // Debug
587
+ self::O_DEBUG_DISABLE_ALL => false,
588
+ self::O_DEBUG => false,
589
+ self::O_DEBUG_IPS => array(),
590
+ self::O_DEBUG_LEVEL => false,
591
+ self::O_DEBUG_FILESIZE => 0,
592
+ self::O_DEBUG_COOKIE => false,
593
+ self::O_DEBUG_COLLAPS_QS => false,
594
+ self::O_DEBUG_INC => array(),
595
+ self::O_DEBUG_EXC => array(),
596
+
597
  self::O_IMG_OPTM_WEBP_REPLACE => false,
598
 
599
  self::O_MISC_HTACCESS_FRONT => '',
1057
  {
1058
  $summary = self::get_option( '_summary', array() );
1059
 
1060
+ if ( ! is_array( $summary ) ) {
1061
+ $summary = array();
1062
+ }
1063
+
1064
  if ( ! $field ) {
1065
  return $summary;
1066
  }
src/conf.cls.php CHANGED
@@ -431,6 +431,18 @@ class Conf extends Base
431
  return $instance->_options[ $id ];
432
  }
433
 
 
 
 
 
 
 
 
 
 
 
 
 
434
  defined( 'LSCWP_LOG' ) && Debug2::debug( '[Conf] Invalid option ID ' . $id );
435
 
436
  return null;
@@ -575,9 +587,7 @@ class Conf extends Base
575
  * @since 3.0
576
  * @access public
577
  */
578
- public function network_update( $id, $val )
579
- {
580
-
581
  if ( ! array_key_exists( $id, self::$_default_site_options ) ) {
582
  defined( 'LSCWP_LOG' ) && Debug2::debug( '[Conf] Invalid network option ID ' . $id );
583
  return ;
431
  return $instance->_options[ $id ];
432
  }
433
 
434
+ if ( isset( $instance->_site_options[ $id ] ) ) {
435
+ if ( ! $ori ) {
436
+ $val = $instance->const_overwritten( $id );
437
+ if ( $val !== null ) {
438
+ defined( 'LSCWP_LOG' ) && Debug2::debug( '[Conf] 🏛️ const option ' . $id . '=' . var_export( $val, true ) ) ;
439
+ return $val;
440
+ }
441
+ }
442
+
443
+ return $instance->_site_options[ $id ];
444
+ }
445
+
446
  defined( 'LSCWP_LOG' ) && Debug2::debug( '[Conf] Invalid option ID ' . $id );
447
 
448
  return null;
587
  * @since 3.0
588
  * @access public
589
  */
590
+ public function network_update( $id, $val ) {
 
 
591
  if ( ! array_key_exists( $id, self::$_default_site_options ) ) {
592
  defined( 'LSCWP_LOG' ) && Debug2::debug( '[Conf] Invalid network option ID ' . $id );
593
  return ;
src/data_structure/crawler.sql CHANGED
@@ -4,5 +4,5 @@
4
  `reason` text NOT NULL COMMENT 'response code, comma separated',
5
  `mtime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
6
  PRIMARY KEY (`id`),
7
- KEY `url` (`url`(765)),
8
  KEY `res` (`res`)
4
  `reason` text NOT NULL COMMENT 'response code, comma separated',
5
  `mtime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
6
  PRIMARY KEY (`id`),
7
+ KEY `url` (`url`(191)),
8
  KEY `res` (`res`)
src/data_structure/crawler_blacklist.sql CHANGED
@@ -4,5 +4,5 @@
4
  `reason` text NOT NULL COMMENT 'Reason for blacklist, comma separated',
5
  `mtime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
6
  PRIMARY KEY (`id`),
7
- KEY `url` (`url`(765)),
8
  KEY `res` (`res`)
4
  `reason` text NOT NULL COMMENT 'Reason for blacklist, comma separated',
5
  `mtime` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
6
  PRIMARY KEY (`id`),
7
+ KEY `url` (`url`(191)),
8
  KEY `res` (`res`)
src/data_structure/img_optming.sql CHANGED
@@ -6,4 +6,4 @@
6
  PRIMARY KEY (`id`),
7
  KEY `post_id` (`post_id`),
8
  KEY `optm_status` (`optm_status`),
9
- KEY `src` (`src`(765))
6
  PRIMARY KEY (`id`),
7
  KEY `post_id` (`post_id`),
8
  KEY `optm_status` (`optm_status`),
9
+ KEY `src` (`src`(191))
src/debug2.cls.php CHANGED
@@ -401,7 +401,7 @@ class Debug2 extends Instance
401
  {
402
  $msg = '' ;
403
 
404
- $trace = version_compare( PHP_VERSION, '5.4.0', '<' ) ? debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS ) : debug_backtrace( DEBUG_BACKTRACE_IGNORE_ARGS, $backtrace_limit + 3 ) ;
405
  for ( $i=2 ; $i <= $backtrace_limit + 2 ; $i++ ) {// 0st => _backtrace_info(), 1st => push()
406
  if ( empty( $trace[ $i ][ 'class' ] ) ) {
407
  if ( empty( $trace[ $i ][ 'file' ] ) ) {
@@ -410,11 +410,25 @@ class Debug2 extends Instance
410
  $log = "\n" . $trace[ $i ][ 'file' ] ;
411
  }
412
  else {
413
- if ( $trace[$i]['class'] == 'Debug2' ) {
414
  continue ;
415
  }
416
 
417
- $log = str_replace('Core', 'LSC', $trace[$i]['class']) . $trace[$i]['type'] . $trace[$i]['function'] . '()' ;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
418
  }
419
  if ( ! empty( $trace[$i-1]['line'] ) ) {
420
  $log .= '@' . $trace[$i-1]['line'] ;
401
  {
402
  $msg = '' ;
403
 
404
+ $trace = version_compare( PHP_VERSION, '5.4.0', '<' ) ? debug_backtrace() : debug_backtrace( false, $backtrace_limit + 3 );
405
  for ( $i=2 ; $i <= $backtrace_limit + 2 ; $i++ ) {// 0st => _backtrace_info(), 1st => push()
406
  if ( empty( $trace[ $i ][ 'class' ] ) ) {
407
  if ( empty( $trace[ $i ][ 'file' ] ) ) {
410
  $log = "\n" . $trace[ $i ][ 'file' ] ;
411
  }
412
  else {
413
+ if ( $trace[$i]['class'] == __CLASS__ ) {
414
  continue ;
415
  }
416
 
417
+ $args = '';
418
+ if ( ! empty( $trace[ $i ][ 'args' ] ) ) {
419
+ foreach ( $trace[ $i ][ 'args' ] as $v ) {
420
+ if ( is_array( $v ) ) {
421
+ $v = 'ARRAY';
422
+ }
423
+ if ( is_string( $v ) || is_numeric( $v ) ) {
424
+ $args .= $v . ',';
425
+ }
426
+ }
427
+
428
+ $args = substr( $args, 0, -1 );
429
+ }
430
+
431
+ $log = str_replace('Core', 'LSC', $trace[$i]['class']) . $trace[$i]['type'] . $trace[$i]['function'] . '(' . $args . ')';
432
  }
433
  if ( ! empty( $trace[$i-1]['line'] ) ) {
434
  $log .= '@' . $trace[$i-1]['line'] ;
src/htaccess.cls.php CHANGED
@@ -178,26 +178,27 @@ class Htaccess extends Instance
178
  *
179
  * As dirname() strips the ending '/', paths passed in must exclude the final '/'
180
  *
181
- * If can't find, return false
182
- *
183
  * @since 1.0.11
184
  * @access private
185
- * @param string $start_path The first directory level to search.
186
- * @return string The deepest path where .htaccess exists, False if not.
187
  */
188
- private function _htaccess_search( $start_path )
189
- {
190
  while ( ! file_exists( $start_path . '/.htaccess' ) ) {
191
  if ( $start_path === '/' || ! $start_path ) {
192
- return false ;
 
 
 
 
193
  }
194
- if ( ! empty( $_SERVER[ 'DOCUMENT_ROOT' ] ) && $start_path === $_SERVER[ 'DOCUMENT_ROOT' ] ) {
195
- return false ;
 
196
  }
197
- $start_path = dirname( $start_path ) ;
 
198
  }
199
 
200
- return $start_path ;
201
  }
202
 
203
  /**
178
  *
179
  * As dirname() strips the ending '/', paths passed in must exclude the final '/'
180
  *
 
 
181
  * @since 1.0.11
182
  * @access private
 
 
183
  */
184
+ private function _htaccess_search( $start_path ) {
 
185
  while ( ! file_exists( $start_path . '/.htaccess' ) ) {
186
  if ( $start_path === '/' || ! $start_path ) {
187
+ return false;
188
+ }
189
+
190
+ if ( ! empty( $_SERVER[ 'DOCUMENT_ROOT' ] ) && wp_normalize_path( $start_path ) === wp_normalize_path( $_SERVER[ 'DOCUMENT_ROOT' ] ) ) {
191
+ return false;
192
  }
193
+
194
+ if ( dirname( $start_path ) === $start_path ) {
195
+ return false;
196
  }
197
+
198
+ $start_path = dirname( $start_path );
199
  }
200
 
201
+ return $start_path;
202
  }
203
 
204
  /**
src/img-optm.cls.php CHANGED
@@ -860,7 +860,7 @@ class Img_Optm extends Base
860
  file_put_contents( $local_file . '.tmp', $response[ 'body' ] );
861
 
862
  if ( ! file_exists( $local_file . '.tmp' ) || ! filesize( $local_file . '.tmp' ) || md5_file( $local_file . '.tmp' ) !== $server_info[ 'ori_md5' ] ) {
863
- Debug2::debug( '[Img_Optm] ❌ Failed to pull optimized img: file md5 dismatch [url] ' . $server_info[ 'server' ] . '/' . $server_info[ 'ori' ] . ' [server_md5] ' . $server_info[ 'ori_md5' ] );
864
 
865
  // Update status to failed
866
  $q = "UPDATE `$this->_table_img_optm` SET optm_status = %d WHERE id = %d ";
@@ -869,7 +869,7 @@ class Img_Optm extends Base
869
  $q = "DELETE FROM `$this->_table_img_optming` WHERE id = %d ";
870
  $wpdb->query( $wpdb->prepare( $q, $row_img->id ) );
871
 
872
- $msg = __( 'Pulled image md5 dismatched', 'litespeed-cache' );
873
  Admin_Display::error( $msg );
874
  return;
875
  }
@@ -921,7 +921,7 @@ class Img_Optm extends Base
921
  file_put_contents( $local_file . '.webp', $response[ 'body' ] );
922
 
923
  if ( ! file_exists( $local_file . '.webp' ) || ! filesize( $local_file . '.webp' ) || md5_file( $local_file . '.webp' ) !== $server_info[ 'webp_md5' ] ) {
924
- Debug2::debug( '[Img_Optm] ❌ Failed to pull optimized webp img: file md5 dismatch, server md5: ' . $server_info[ 'webp_md5' ] );
925
 
926
  // update status to failed
927
  $q = "UPDATE `$this->_table_img_optm` SET optm_status = %d WHERE id = %d ";
@@ -930,7 +930,7 @@ class Img_Optm extends Base
930
  $q = "DELETE FROM `$this->_table_img_optming` WHERE id = %d ";
931
  $wpdb->query( $wpdb->prepare( $q, $row_img->id ) );
932
 
933
- $msg = __( 'Pulled WebP image md5 dismatched', 'litespeed-cache' );
934
  Admin_Display::error( $msg );
935
  return;
936
  }
860
  file_put_contents( $local_file . '.tmp', $response[ 'body' ] );
861
 
862
  if ( ! file_exists( $local_file . '.tmp' ) || ! filesize( $local_file . '.tmp' ) || md5_file( $local_file . '.tmp' ) !== $server_info[ 'ori_md5' ] ) {
863
+ Debug2::debug( '[Img_Optm] ❌ Failed to pull optimized img: file md5 mismatch [url] ' . $server_info[ 'server' ] . '/' . $server_info[ 'ori' ] . ' [server_md5] ' . $server_info[ 'ori_md5' ] );
864
 
865
  // Update status to failed
866
  $q = "UPDATE `$this->_table_img_optm` SET optm_status = %d WHERE id = %d ";
869
  $q = "DELETE FROM `$this->_table_img_optming` WHERE id = %d ";
870
  $wpdb->query( $wpdb->prepare( $q, $row_img->id ) );
871
 
872
+ $msg = __( 'Pulled image md5 does not match the notified image md5.', 'litespeed-cache' );
873
  Admin_Display::error( $msg );
874
  return;
875
  }
921
  file_put_contents( $local_file . '.webp', $response[ 'body' ] );
922
 
923
  if ( ! file_exists( $local_file . '.webp' ) || ! filesize( $local_file . '.webp' ) || md5_file( $local_file . '.webp' ) !== $server_info[ 'webp_md5' ] ) {
924
+ Debug2::debug( '[Img_Optm] ❌ Failed to pull optimized webp img: file md5 mismatch, server md5: ' . $server_info[ 'webp_md5' ] );
925
 
926
  // update status to failed
927
  $q = "UPDATE `$this->_table_img_optm` SET optm_status = %d WHERE id = %d ";
930
  $q = "DELETE FROM `$this->_table_img_optming` WHERE id = %d ";
931
  $wpdb->query( $wpdb->prepare( $q, $row_img->id ) );
932
 
933
+ $msg = __( 'Pulled WebP image md5 does not match the notified WebP image md5.', 'litespeed-cache' );
934
  Admin_Display::error( $msg );
935
  return;
936
  }
src/object-cache.cls.php CHANGED
@@ -485,7 +485,11 @@ class Object_Cache
485
  $ttl = $expire ?: $this->_cfg_life ;
486
 
487
  if ( $this->_oc_driver == 'Redis' ) {
488
- $res = $this->_conn->setEx( $key, $ttl, $data ) ;
 
 
 
 
489
  }
490
  else {
491
  $res = $this->_conn->set( $key, $data, $ttl ) ;
485
  $ttl = $expire ?: $this->_cfg_life ;
486
 
487
  if ( $this->_oc_driver == 'Redis' ) {
488
+ try {
489
+ $res = $this->_conn->setEx( $key, $ttl, $data ) ;
490
+ } catch ( \RedisException $ex ) {
491
+ throw new \Exception( $ex->getMessage(), $ex->getCode(), $ex );
492
+ }
493
  }
494
  else {
495
  $res = $this->_conn->set( $key, $data, $ttl ) ;
src/router.cls.php CHANGED
@@ -39,7 +39,7 @@ class Router extends Instance
39
 
40
  const TYPE = 'litespeed_type';
41
 
42
- private static $_esi_enabled ;
43
  private static $_is_ajax ;
44
  private static $_is_logged_in ;
45
  private static $_ip ;
@@ -521,7 +521,6 @@ class Router extends Instance
521
  }
522
  return ;
523
 
524
- case self::ACTION_PURGE:
525
  case self::ACTION_PLACEHOLDER:
526
  case self::ACTION_AVATAR:
527
  case self::ACTION_IMG_OPTM:
@@ -541,11 +540,12 @@ class Router extends Instance
541
  }
542
  return ;
543
 
 
544
  case self::ACTION_DEBUG2:
545
  if ( $_can_network_option || $_can_option ) {
546
- self::$_action = $action ;
547
  }
548
- return ;
549
 
550
  case Core::ACTION_DISMISS:
551
  /**
@@ -654,28 +654,32 @@ class Router extends Instance
654
  */
655
  public static function serve_static()
656
  {
 
 
 
 
657
  if ( strpos( $_SERVER[ 'SCRIPT_URI' ], LITESPEED_STATIC_URL . '/' ) !== 0 ) {
658
- return ;
659
  }
660
 
661
- $path = substr( $_SERVER[ 'SCRIPT_URI' ], strlen( LITESPEED_STATIC_URL . '/' ) ) ;
662
- $path = explode( '/', $path, 2 ) ;
663
 
664
  if ( empty( $path[ 0 ] ) || empty( $path[ 1 ] ) ) {
665
- return ;
666
  }
667
 
668
  switch ( $path[ 0 ] ) {
669
  case 'avatar' :
670
- Avatar::get_instance()->serve_satic( $path[ 1 ] ) ;
671
- break ;
672
 
673
  case 'cssjs' :
674
- Optimize::get_instance()->serve_satic( $path[ 1 ] ) ;
675
- break ;
676
 
677
  default :
678
- break ;
679
  }
680
 
681
  }
39
 
40
  const TYPE = 'litespeed_type';
41
 
42
+ private static $_esi_enabled;
43
  private static $_is_ajax ;
44
  private static $_is_logged_in ;
45
  private static $_ip ;
521
  }
522
  return ;
523
 
 
524
  case self::ACTION_PLACEHOLDER:
525
  case self::ACTION_AVATAR:
526
  case self::ACTION_IMG_OPTM:
540
  }
541
  return ;
542
 
543
+ case self::ACTION_PURGE:
544
  case self::ACTION_DEBUG2:
545
  if ( $_can_network_option || $_can_option ) {
546
+ self::$_action = $action;
547
  }
548
+ return;
549
 
550
  case Core::ACTION_DISMISS:
551
  /**
654
  */
655
  public static function serve_static()
656
  {
657
+ if ( empty( $_SERVER[ 'SCRIPT_URI' ] ) ) {
658
+ return;
659
+ }
660
+
661
  if ( strpos( $_SERVER[ 'SCRIPT_URI' ], LITESPEED_STATIC_URL . '/' ) !== 0 ) {
662
+ return;
663
  }
664
 
665
+ $path = substr( $_SERVER[ 'SCRIPT_URI' ], strlen( LITESPEED_STATIC_URL . '/' ) );
666
+ $path = explode( '/', $path, 2 );
667
 
668
  if ( empty( $path[ 0 ] ) || empty( $path[ 1 ] ) ) {
669
+ return;
670
  }
671
 
672
  switch ( $path[ 0 ] ) {
673
  case 'avatar' :
674
+ Avatar::get_instance()->serve_satic( $path[ 1 ] );
675
+ break;
676
 
677
  case 'cssjs' :
678
+ Optimize::get_instance()->serve_satic( $path[ 1 ] );
679
+ break;
680
 
681
  default :
682
+ break;
683
  }
684
 
685
  }
src/task.cls.php CHANGED
@@ -91,14 +91,14 @@ class Task extends Instance
91
  public static function try_clean( $id )
92
  {
93
  // Clean v2's leftover cron ( will remove in v3.1 )
94
- foreach ( wp_get_ready_cron_jobs() as $hooks ) {
95
- foreach ( $hooks as $hook => $v ) {
96
- if ( strpos( $hook, 'litespeed_' ) === 0 && ( substr( $hook, -8 ) === '_trigger' || strpos( $hook, 'litespeed_task_' ) !== 0 ) ) {
97
- Debug2::debug( '⏰ Cron clear legacy [hook] ' . $hook );
98
- wp_clear_scheduled_hook( $hook );
99
- }
100
- }
101
- }
102
 
103
  if ( $id && ! empty( self::$_triggers[ $id ] ) ) {
104
  if ( ! Conf::val( $id ) || ( $id == Base::O_CRAWLER && ! Router::can_crawl() ) ) {
91
  public static function try_clean( $id )
92
  {
93
  // Clean v2's leftover cron ( will remove in v3.1 )
94
+ // foreach ( wp_get_ready_cron_jobs() as $hooks ) {
95
+ // foreach ( $hooks as $hook => $v ) {
96
+ // if ( strpos( $hook, 'litespeed_' ) === 0 && ( substr( $hook, -8 ) === '_trigger' || strpos( $hook, 'litespeed_task_' ) !== 0 ) ) {
97
+ // Debug2::debug( '⏰ Cron clear legacy [hook] ' . $hook );
98
+ // wp_clear_scheduled_hook( $hook );
99
+ // }
100
+ // }
101
+ // }
102
 
103
  if ( $id && ! empty( self::$_triggers[ $id ] ) ) {
104
  if ( ! Conf::val( $id ) || ( $id == Base::O_CRAWLER && ! Router::can_crawl() ) ) {
tpl/crawler/settings-sitemap.tpl.php CHANGED
@@ -102,7 +102,7 @@ $this->form_action();
102
  <div class="litespeed-callout notice notice-warning inline">
103
  <h4><?php echo __('Available Custom Post Type','litespeed-cache'); ?></h4>
104
  <p>
105
- <?php echo implode('<br />', array_diff(get_post_types( '', 'names' ), array('post', 'page'))); ?>
106
  </p>
107
  </div>
108
  </div>
102
  <div class="litespeed-callout notice notice-warning inline">
103
  <h4><?php echo __('Available Custom Post Type','litespeed-cache'); ?></h4>
104
  <p>
105
+ <?php echo implode('<br />', array_diff(get_post_types(), array('post', 'page'))); ?>
106
  </p>
107
  </div>
108
  </div>
tpl/img_optm/summary.tpl.php CHANGED
@@ -1,6 +1,7 @@
1
  <?php
2
  namespace LiteSpeed;
3
  defined( 'WPINC' ) || exit;
 
4
 
5
  $closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_IMG_OPTM );
6
  $usage_cloud = Cloud::get_summary( 'usage.' . Cloud::SVC_IMG_OPTM );
@@ -212,6 +213,16 @@ if ( ! empty( $img_count[ 'img.' . Img_Optm::STATUS_ERR_FETCH ] ) ) {
212
 
213
  </div>
214
 
 
 
 
 
 
 
 
 
 
 
215
  <hr class="litespeed-hr-with-space">
216
  <div>
217
  <h4><?php echo __( 'Delete all backups of the original images', 'litespeed-cache' ) ; ?></h4>
1
  <?php
2
  namespace LiteSpeed;
3
  defined( 'WPINC' ) || exit;
4
+ global $_wp_additional_image_sizes;
5
 
6
  $closest_server = Cloud::get_summary( 'server.' . Cloud::SVC_IMG_OPTM );
7
  $usage_cloud = Cloud::get_summary( 'usage.' . Cloud::SVC_IMG_OPTM );
213
 
214
  </div>
215
 
216
+ <div>
217
+ <h4><?php echo __( 'Thumbnail Size Set', 'litespeed-cache' ) ; ?></h4>
218
+ <div class="litespeed-desc litespeed-left20">
219
+ <?php foreach ( $_wp_additional_image_sizes as $title => $size ) {
220
+ echo "<div>$title ( " . ( $size[ 'width' ] ? $size[ 'width' ] . 'px' : '*' ) . ' x ' . ( $size[ 'height' ] ? $size[ 'height' ] . 'px' : '*' ) . ' )</div>';
221
+ } ; ?>
222
+ </div>
223
+
224
+ </div>
225
+
226
  <hr class="litespeed-hr-with-space">
227
  <div>
228
  <h4><?php echo __( 'Delete all backups of the original images', 'litespeed-cache' ) ; ?></h4>
tpl/toolbox/entry.tpl.php CHANGED
@@ -17,10 +17,14 @@ if ( ! $this->_is_multisite || $this->_is_network_admin ) {
17
  if ( ! $this->_is_network_admin ) {
18
  $menu_list[ 'heartbeat' ] = __( 'Heartbeat', 'litespeed-cache' ); // todo: will add this to network level later
19
  $menu_list[ 'report' ] = __( 'Report', 'litespeed-cache' );
 
 
 
20
  $menu_list[ 'settings-debug' ] = __( 'Debug Settings', 'litespeed-cache' );
21
  $menu_list[ 'log_viewer' ] = __( 'Log View', 'litespeed-cache' );
22
  $menu_list[ 'beta_test' ] = __( 'Beta Test', 'litespeed-cache' );
23
  }
 
24
  ?>
25
 
26
  <div class="wrap">
17
  if ( ! $this->_is_network_admin ) {
18
  $menu_list[ 'heartbeat' ] = __( 'Heartbeat', 'litespeed-cache' ); // todo: will add this to network level later
19
  $menu_list[ 'report' ] = __( 'Report', 'litespeed-cache' );
20
+ }
21
+
22
+ if ( ! $this->_is_multisite || $this->_is_network_admin ) {
23
  $menu_list[ 'settings-debug' ] = __( 'Debug Settings', 'litespeed-cache' );
24
  $menu_list[ 'log_viewer' ] = __( 'Log View', 'litespeed-cache' );
25
  $menu_list[ 'beta_test' ] = __( 'Beta Test', 'litespeed-cache' );
26
  }
27
+
28
  ?>
29
 
30
  <div class="wrap">
tpl/toolbox/settings-debug.tpl.php CHANGED
@@ -2,7 +2,7 @@
2
  namespace LiteSpeed ;
3
  defined( 'WPINC' ) || exit ;
4
 
5
- $this->form_action() ;
6
  ?>
7
 
8
 
2
  namespace LiteSpeed ;
3
  defined( 'WPINC' ) || exit ;
4
 
5
+ $this->form_action( $this->_is_network_admin ? Router::ACTION_SAVE_SETTINGS_NETWORK : false );
6
  ?>
7
 
8