X7ROOT File Manager
Current Path:
/home/katmhsmi/public_html/wp-content/plugins/w3-total-cache
home
/
katmhsmi
/
public_html
/
wp-content
/
plugins
/
w3-total-cache
/
📁
..
📄
Base_Page_Settings.php
(6.82 KB)
📄
BrowserCache_ConfigLabels.php
(10.36 KB)
📄
BrowserCache_Core.php
(3.19 KB)
📄
BrowserCache_Environment.php
(31.64 KB)
📄
BrowserCache_Environment_Apache.php
(3.38 KB)
📄
BrowserCache_Environment_LiteSpeed.php
(8.41 KB)
📄
BrowserCache_Environment_Nginx.php
(22.25 KB)
📄
BrowserCache_Page.php
(3.28 KB)
📄
BrowserCache_Page_View_QuickReference.php
(2.58 KB)
📄
BrowserCache_Page_View_SectionSecurity.php
(61.6 KB)
📄
BrowserCache_Plugin.php
(15.11 KB)
📄
BrowserCache_Plugin_Admin.php
(1.33 KB)
📄
Cache.php
(4.52 KB)
📄
CacheFlush.php
(7.88 KB)
📄
CacheFlush_Locally.php
(12.6 KB)
📄
CacheGroups_Plugin_Admin.php
(7.98 KB)
📄
CacheGroups_Plugin_Admin_View.js
(17.23 KB)
📄
CacheGroups_Plugin_Admin_View.php
(15.17 KB)
📄
Cache_Apc.php
(7.75 KB)
📄
Cache_Apcu.php
(7.77 KB)
📄
Cache_Base.php
(6.49 KB)
📄
Cache_Eaccelerator.php
(7.58 KB)
📄
Cache_File.php
(21.25 KB)
📄
Cache_File_Cleaner.php
(2.69 KB)
📄
Cache_File_Cleaner_Generic.php
(4.05 KB)
📄
Cache_File_Cleaner_Generic_HardDelete.php
(1.05 KB)
📄
Cache_File_Generic.php
(12.54 KB)
📄
Cache_Memcache.php
(14.32 KB)
📄
Cache_Memcached.php
(18.13 KB)
📄
Cache_Memcached_Stats.php
(3.52 KB)
📄
Cache_Nginx_Memcached.php
(13.55 KB)
📄
Cache_Redis.php
(13.31 KB)
📄
Cache_Wincache.php
(12.72 KB)
📄
Cache_Xcache.php
(11.55 KB)
📄
CdnEngine.php
(2.54 KB)
📄
CdnEngine_Azure.php
(12.65 KB)
📄
CdnEngine_Azure_MI.php
(12.28 KB)
📄
CdnEngine_Azure_MI_Utility.php
(18.19 KB)
📄
CdnEngine_Base.php
(16.37 KB)
📄
CdnEngine_CloudFront.php
(12.38 KB)
📄
CdnEngine_Ftp.php
(21.08 KB)
📄
CdnEngine_GoogleDrive.php
(24.14 KB)
📄
CdnEngine_Mirror.php
(2.46 KB)
📄
CdnEngine_Mirror_Akamai.php
(3.52 KB)
📄
CdnEngine_Mirror_Att.php
(293 B)
📄
CdnEngine_Mirror_BunnyCdn.php
(4.3 KB)
📄
CdnEngine_Mirror_CloudFront.php
(10.48 KB)
📄
CdnEngine_Mirror_Cotendo.php
(3.72 KB)
📄
CdnEngine_Mirror_Edgecast.php
(4.46 KB)
📄
CdnEngine_Mirror_RackSpaceCdn.php
(6.57 KB)
📄
CdnEngine_RackSpaceCloudFiles.php
(12.01 KB)
📄
CdnEngine_S3.php
(17.55 KB)
📄
CdnEngine_S3_Compatible.php
(10.36 KB)
📄
Cdn_AdminActions.php
(16.81 KB)
📄
Cdn_AdminNotes.php
(13.71 KB)
📄
Cdn_BunnyCdn_Api.php
(15.67 KB)
📄
Cdn_BunnyCdn_Page.php
(7.4 KB)
📄
Cdn_BunnyCdn_Page_View.js
(7.36 KB)
📄
Cdn_BunnyCdn_Page_View.php
(3.6 KB)
📄
Cdn_BunnyCdn_Page_View_Purge_Urls.php
(2.06 KB)
📄
Cdn_BunnyCdn_Popup.php
(10.83 KB)
📄
Cdn_BunnyCdn_Popup_View_Configured.php
(864 B)
📄
Cdn_BunnyCdn_Popup_View_Deauthorize.php
(2.15 KB)
📄
Cdn_BunnyCdn_Popup_View_Deauthorized.php
(1.54 KB)
📄
Cdn_BunnyCdn_Popup_View_Intro.php
(1.83 KB)
📄
Cdn_BunnyCdn_Popup_View_Pull_Zones.php
(5.16 KB)
📄
Cdn_BunnyCdn_Widget.php
(2.25 KB)
📄
Cdn_BunnyCdn_Widget_View.css
(1.26 KB)
📄
Cdn_BunnyCdn_Widget_View_Authorized.php
(1.9 KB)
📄
Cdn_BunnyCdn_Widget_View_Unauthorized.php
(6.1 KB)
📄
Cdn_CacheFlush.php
(2.64 KB)
📄
Cdn_ConfigLabels.php
(5.43 KB)
📄
Cdn_Core.php
(32.83 KB)
📄
Cdn_Core_Admin.php
(27.08 KB)
📄
Cdn_Environment.php
(19.29 KB)
📄
Cdn_Environment_LiteSpeed.php
(5.19 KB)
📄
Cdn_Environment_Nginx.php
(3.92 KB)
📄
Cdn_GeneralPage_View.php
(4.05 KB)
📄
Cdn_GoogleDrive_AdminActions.php
(3.53 KB)
📄
Cdn_GoogleDrive_Page.php
(2.03 KB)
📄
Cdn_GoogleDrive_Page_View.js
(488 B)
📄
Cdn_GoogleDrive_Page_View.php
(1.36 KB)
📄
Cdn_GoogleDrive_Popup_AuthReturn.php
(1.61 KB)
📄
Cdn_GoogleDrive_Popup_AuthReturn_View.php
(1.66 KB)
📄
Cdn_Page.php
(3.5 KB)
📄
Cdn_Page_View_Fsd_HeaderActions.php
(760 B)
📄
Cdn_Plugin.php
(43.77 KB)
📄
Cdn_Plugin_Admin.php
(7.3 KB)
📄
Cdn_RackSpaceCdn_AdminActions.php
(1.28 KB)
📄
Cdn_RackSpaceCdn_Page.php
(2.05 KB)
📄
Cdn_RackSpaceCdn_Page_View.js
(4.28 KB)
📄
Cdn_RackSpaceCdn_Page_View.php
(5.22 KB)
📄
Cdn_RackSpaceCdn_Popup.php
(21.49 KB)
📄
Cdn_RackSpaceCdn_Popup_View_ConfigureDomains.php
(1.87 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Intro.php
(1.71 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Regions.php
(1.76 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Service_Actualize.php
(2.04 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Service_Create.php
(4.41 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Service_Created.php
(2.48 KB)
📄
Cdn_RackSpaceCdn_Popup_View_Services.php
(1.99 KB)
📄
Cdn_RackSpaceCloudFiles_Page.php
(1.67 KB)
📄
Cdn_RackSpaceCloudFiles_Page_View.js
(681 B)
📄
Cdn_RackSpaceCloudFiles_Page_View.php
(4.91 KB)
📄
Cdn_RackSpaceCloudFiles_Popup.php
(7.62 KB)
📄
Cdn_RackSpaceCloudFiles_Popup_View_Containers.php
(2.06 KB)
📄
Cdn_RackSpaceCloudFiles_Popup_View_Intro.php
(1.71 KB)
📄
Cdn_RackSpaceCloudFiles_Popup_View_Regions.php
(1.78 KB)
📄
Cdn_RackSpace_Api_CaCert-example.pem
(195.74 KB)
📄
Cdn_RackSpace_Api_Cdn.php
(10.72 KB)
📄
Cdn_RackSpace_Api_CloudFiles.php
(8.37 KB)
📄
Cdn_RackSpace_Api_CloudFilesCdn.php
(8.48 KB)
📄
Cdn_RackSpace_Api_Tokens.php
(6.78 KB)
📄
Cdn_Util.php
(6.73 KB)
📄
Cdnfsd_BunnyCdn_Engine.php
(2.03 KB)
📄
Cdnfsd_BunnyCdn_Page.php
(683 B)
📄
Cdnfsd_BunnyCdn_Page_View.js
(3.92 KB)
📄
Cdnfsd_BunnyCdn_Page_View.php
(3.72 KB)
📄
Cdnfsd_BunnyCdn_Popup.php
(10.39 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Configured.php
(1.3 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Deauthorize.php
(2.17 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Deauthorized.php
(1.56 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Intro.php
(1.85 KB)
📄
Cdnfsd_BunnyCdn_Popup_View_Pull_Zones.php
(5.57 KB)
📄
Cdnfsd_CacheFlush.php
(8.25 KB)
📄
Cdnfsd_CloudFront_Engine.php
(3.38 KB)
📄
Cdnfsd_CloudFront_Page.php
(741 B)
📄
Cdnfsd_CloudFront_Page_View.js
(2.73 KB)
📄
Cdnfsd_CloudFront_Page_View.php
(2.04 KB)
📄
Cdnfsd_CloudFront_Popup.php
(15.46 KB)
📄
Cdnfsd_CloudFront_Popup_View_Distribution.php
(3.34 KB)
📄
Cdnfsd_CloudFront_Popup_View_Distributions.php
(1.72 KB)
📄
Cdnfsd_CloudFront_Popup_View_Intro.php
(1.65 KB)
📄
Cdnfsd_CloudFront_Popup_View_Success.php
(976 B)
📄
Cdnfsd_Core.php
(1.96 KB)
📄
Cdnfsd_GeneralPage_View.php
(4.02 KB)
📄
Cdnfsd_Plugin.php
(1.98 KB)
📄
Cdnfsd_Plugin_Admin.php
(2.63 KB)
📄
Cdnfsd_TransparentCDN_Engine.php
(7.97 KB)
📄
Cdnfsd_TransparentCDN_Page.php
(1.36 KB)
📄
Cdnfsd_TransparentCDN_Page_View.js
(1.36 KB)
📄
Cdnfsd_TransparentCDN_Page_View.php
(2.33 KB)
📄
Cdnfsd_Util.php
(834 B)
📄
Cli.php
(17.33 KB)
📄
Config.php
(16.8 KB)
📄
ConfigCache.php
(4.67 KB)
📄
ConfigCompiler.php
(17.87 KB)
📄
ConfigDbStorage.php
(15.87 KB)
📄
ConfigKeys.php
(69.92 KB)
📄
ConfigSettingsTabs.php
(1.18 KB)
📄
ConfigSettingsTabsKeys.php
(19.62 KB)
📄
ConfigState.php
(6.08 KB)
📄
ConfigStateNote.php
(1.94 KB)
📄
ConfigUtil.php
(3.45 KB)
📄
DbCache_ConfigLabels.php
(1.22 KB)
📄
DbCache_Core.php
(2.05 KB)
📄
DbCache_Environment.php
(6.41 KB)
📄
DbCache_Page.php
(1.1 KB)
📄
DbCache_Plugin.php
(9.62 KB)
📄
DbCache_Plugin_Admin.php
(5.08 KB)
📄
DbCache_Wpdb.php
(1.63 KB)
📄
DbCache_WpdbBase.php
(346 B)
📄
DbCache_WpdbInjection.php
(7.15 KB)
📄
DbCache_WpdbInjection_QueryCaching.php
(26.05 KB)
📄
DbCache_WpdbLegacy.php
(22.42 KB)
📄
DbCache_WpdbNew.php
(22.24 KB)
📄
Dispatcher.php
(8.21 KB)
📄
Enterprise_CacheFlush_MakeSnsEvent.php
(7.47 KB)
📄
Enterprise_Dbcache_WpdbInjection_Cluster.php
(30.32 KB)
📄
Enterprise_SnsBase.php
(3.07 KB)
📄
Enterprise_SnsServer.php
(5.17 KB)
📄
Extension_AlwaysCached_AdminActions.php
(2.36 KB)
📄
Extension_AlwaysCached_Environment.php
(2.87 KB)
📄
Extension_AlwaysCached_Page.php
(4 KB)
📄
Extension_AlwaysCached_Page_Queue_View.php
(3.14 KB)
📄
Extension_AlwaysCached_Page_View.js
(7.26 KB)
📄
Extension_AlwaysCached_Page_View.php
(2.51 KB)
📄
Extension_AlwaysCached_Page_View_BoxCron.php
(2.92 KB)
📄
Extension_AlwaysCached_Page_View_BoxFlushAll.php
(3.28 KB)
📄
Extension_AlwaysCached_Page_View_BoxQueue.php
(4.35 KB)
📄
Extension_AlwaysCached_Page_View_Exclusions.php
(1.11 KB)
📄
Extension_AlwaysCached_Plugin.php
(12.1 KB)
📄
Extension_AlwaysCached_Plugin_Admin.php
(3.06 KB)
📄
Extension_AlwaysCached_Queue.php
(10.22 KB)
📄
Extension_AlwaysCached_Worker.php
(2.93 KB)
📄
Extension_Amp_Page_View.php
(1.26 KB)
📄
Extension_Amp_Plugin.php
(11.1 KB)
📄
Extension_Amp_Plugin_Admin.php
(2.19 KB)
📄
Extension_CloudFlare_AdminActions.php
(1.57 KB)
📄
Extension_CloudFlare_Api.php
(12.19 KB)
📄
Extension_CloudFlare_Cdn_Page_View.php
(625 B)
📄
Extension_CloudFlare_GeneralPage_View.php
(3.05 KB)
📄
Extension_CloudFlare_Page.php
(4.32 KB)
📄
Extension_CloudFlare_Page_View.js
(1.15 KB)
📄
Extension_CloudFlare_Page_View.php
(27.38 KB)
📄
Extension_CloudFlare_Plugin.php
(15.19 KB)
📄
Extension_CloudFlare_Plugin_Admin.php
(14.13 KB)
📄
Extension_CloudFlare_Popup.php
(4.21 KB)
📄
Extension_CloudFlare_Popup_View_Intro.php
(1.75 KB)
📄
Extension_CloudFlare_Popup_View_Zones.php
(2.09 KB)
📄
Extension_CloudFlare_SettingsForUi.php
(4.84 KB)
📄
Extension_CloudFlare_View_Dashboard.js
(730 B)
📄
Extension_CloudFlare_Widget.php
(4.63 KB)
📄
Extension_CloudFlare_Widget_Logo.png
(6.96 KB)
📄
Extension_CloudFlare_Widget_View.css
(683 B)
📄
Extension_CloudFlare_Widget_View.php
(1.65 KB)
📄
Extension_FragmentCache_Api.php
(7.01 KB)
📄
Extension_FragmentCache_Core.php
(3.38 KB)
📄
Extension_FragmentCache_Environment.php
(1.41 KB)
📄
Extension_FragmentCache_GeneralPage.php
(1.27 KB)
📄
Extension_FragmentCache_GeneralPage_View.php
(2.47 KB)
📄
Extension_FragmentCache_Page.php
(697 B)
📄
Extension_FragmentCache_Page_View.php
(5.25 KB)
📄
Extension_FragmentCache_Plugin.php
(8.21 KB)
📄
Extension_FragmentCache_Plugin_Admin.php
(8.91 KB)
📄
Extension_FragmentCache_WpObjectCache.php
(16.92 KB)
📄
Extension_Genesis_Page.php
(409 B)
📄
Extension_Genesis_Page_View.php
(11.11 KB)
📄
Extension_Genesis_Plugin.php
(14.46 KB)
📄
Extension_Genesis_Plugin_Admin.php
(5.45 KB)
📄
Extension_ImageService_Api.php
(11.99 KB)
📄
Extension_ImageService_Cron.php
(6.49 KB)
📄
Extension_ImageService_Environment.php
(4.6 KB)
📄
Extension_ImageService_Page_View.php
(8.41 KB)
📄
Extension_ImageService_Plugin.php
(1.44 KB)
📄
Extension_ImageService_Plugin_Admin.css
(2.34 KB)
📄
Extension_ImageService_Plugin_Admin.js
(17.37 KB)
📄
Extension_ImageService_Plugin_Admin.php
(42.7 KB)
📄
Extension_ImageService_Widget.js
(6.17 KB)
📄
Extension_ImageService_Widget.php
(3.34 KB)
📄
Extension_ImageService_Widget_View.php
(1.59 KB)
📄
Extension_NewRelic_AdminActions.php
(1.11 KB)
📄
Extension_NewRelic_AdminNotes.php
(2.11 KB)
📄
Extension_NewRelic_Api.php
(4.03 KB)
📄
Extension_NewRelic_Core.php
(1.33 KB)
📄
Extension_NewRelic_GeneralPage.php
(1.53 KB)
📄
Extension_NewRelic_GeneralPage_View.php
(2.84 KB)
📄
Extension_NewRelic_Page.php
(1.35 KB)
📄
Extension_NewRelic_Page_View_Apm.php
(12.87 KB)
📄
Extension_NewRelic_Plugin.php
(7.09 KB)
📄
Extension_NewRelic_Plugin_Admin.php
(8.08 KB)
📄
Extension_NewRelic_Popup.php
(3.96 KB)
📄
Extension_NewRelic_Popup_View.js
(1.72 KB)
📄
Extension_NewRelic_Popup_View_Intro.php
(1.37 KB)
📄
Extension_NewRelic_Popup_View_ListApplications.php
(1.93 KB)
📄
Extension_NewRelic_Service.php
(21.65 KB)
📄
Extension_NewRelic_Widget.php
(10.48 KB)
📄
Extension_NewRelic_Widget_View.css
(1.37 KB)
📄
Extension_NewRelic_Widget_View.js
(2.42 KB)
📄
Extension_NewRelic_Widget_View_Apm.php
(2.91 KB)
📄
Extension_NewRelic_Widget_View_Browser.php
(436 B)
📄
Extension_NewRelic_Widget_View_NotConfigured.php
(233 B)
📄
Extension_Swarmify_AdminActions.php
(793 B)
📄
Extension_Swarmify_Core.php
(748 B)
📄
Extension_Swarmify_Page.php
(708 B)
📄
Extension_Swarmify_Page_View.php
(2.78 KB)
📄
Extension_Swarmify_Plugin.php
(4.63 KB)
📄
Extension_Swarmify_Plugin_Admin.php
(2.63 KB)
📄
Extension_WordPressSeo_Plugin.php
(1.39 KB)
📄
Extension_WordPressSeo_Plugin_Admin.php
(5.25 KB)
📄
Extension_Wpml_Plugin.php
(1.34 KB)
📄
Extension_Wpml_Plugin_Admin.php
(7.45 KB)
📄
Extensions_AdminActions.php
(943 B)
📄
Extensions_Page.php
(4.06 KB)
📄
Extensions_Plugin_Admin.php
(9.66 KB)
📄
Extensions_Util.php
(4.43 KB)
📄
FeatureShowcase_Plugin_Admin.php
(29.1 KB)
📄
FeatureShowcase_Plugin_Admin_View.php
(2.82 KB)
📄
Generic_AdminActions_Config.php
(6.61 KB)
📄
Generic_AdminActions_Default.php
(21.84 KB)
📄
Generic_AdminActions_Flush.php
(10.57 KB)
📄
Generic_AdminActions_Test.php
(6.15 KB)
📄
Generic_AdminNotes.php
(13.88 KB)
📄
Generic_ConfigLabels.php
(2.33 KB)
📄
Generic_Environment.php
(6.67 KB)
📄
Generic_Faq.php
(2.27 KB)
📄
Generic_GeneralPage_View_ShowEdge.js
(314 B)
📄
Generic_Page_About.php
(503 B)
📄
Generic_Page_Dashboard.php
(1.66 KB)
📄
Generic_Page_Dashboard_View.css
(6.34 KB)
📄
Generic_Page_General.php
(2.88 KB)
📄
Generic_Page_Install.php
(913 B)
📄
Generic_Page_PurgeLog.php
(2.81 KB)
📄
Generic_Page_PurgeLog_View.php
(2.97 KB)
📄
Generic_Plugin.php
(23.04 KB)
📄
Generic_Plugin_Admin.php
(48.87 KB)
📄
Generic_Plugin_AdminCompatibility.php
(3.98 KB)
📄
Generic_Plugin_AdminNotices.css
(188 B)
📄
Generic_Plugin_AdminNotices.js
(1.66 KB)
📄
Generic_Plugin_AdminNotices.php
(12.12 KB)
📄
Generic_Plugin_AdminRowActions.php
(2.43 KB)
📄
Generic_Plugin_Admin_View_Faq.php
(1007 B)
📄
Generic_Plugin_Survey.php
(4.8 KB)
📄
Generic_WidgetAccount.php
(1.05 KB)
📄
Generic_WidgetAccount_View.php
(2.1 KB)
📄
Generic_WidgetBoldGrid.php
(1.97 KB)
📄
Generic_WidgetBoldGrid_AdminActions.php
(912 B)
📄
Generic_WidgetBoldGrid_Logo.svg
(4.28 KB)
📄
Generic_WidgetBoldGrid_View.js
(625 B)
📄
Generic_WidgetBoldGrid_View.php
(872 B)
📄
Generic_WidgetPartners.php
(1.08 KB)
📄
Generic_WidgetPartners_View.php
(1.66 KB)
📄
Generic_WidgetServices.php
(1.66 KB)
📄
Generic_WidgetServices_View.php
(501 B)
📄
Generic_WidgetSettings.php
(1.05 KB)
📄
Generic_WidgetSettings_View.php
(3.37 KB)
📄
Generic_WidgetSpreadTheWord.js
(879 B)
📄
Generic_WidgetSpreadTheWord_Plugin.php
(2.03 KB)
📄
Generic_WidgetSpreadTheWord_View.php
(579 B)
📄
Generic_WidgetStats.js
(3.3 KB)
📄
Generic_WidgetStats.php
(4.84 KB)
📄
LICENSE
(17.67 KB)
📄
Licensing_AdminActions.php
(4.22 KB)
📄
Licensing_Core.php
(6.28 KB)
📄
Licensing_Plugin_Admin.php
(16.65 KB)
📄
Minify_AutoCss.php
(8.83 KB)
📄
Minify_AutoJs.php
(9.68 KB)
📄
Minify_ConfigLabels.php
(8.66 KB)
📄
Minify_ContentMinifier.php
(10.24 KB)
📄
Minify_Core.php
(7.42 KB)
📄
Minify_Environment.php
(26.91 KB)
📄
Minify_Environment_LiteSpeed.php
(977 B)
📄
Minify_Extract.php
(2.8 KB)
📄
Minify_GeneralPage_View_ShowHelp.js
(1.12 KB)
📄
Minify_GeneralPage_View_ShowHelpForce.js
(51 B)
📄
Minify_HelpPopup_View.php
(5.01 KB)
📄
Minify_MinifiedFileRequestHandler.php
(32.87 KB)
📄
Minify_Page.php
(18.45 KB)
📄
Minify_Plugin.php
(41.75 KB)
📄
Minify_Plugin_Admin.php
(11.97 KB)
📄
Mobile_Base.php
(6.85 KB)
📄
Mobile_Redirect.php
(1.85 KB)
📄
Mobile_Referrer.php
(2.4 KB)
📄
Mobile_UserAgent.php
(971 B)
📄
ModuleStatus.php
(4.37 KB)
📄
ObjectCache_ConfigLabels.php
(1.25 KB)
📄
ObjectCache_DiskPopup.js
(2.41 KB)
📄
ObjectCache_DiskPopup_View.php
(1.77 KB)
📄
ObjectCache_Environment.php
(6.79 KB)
📄
ObjectCache_Page.php
(560 B)
📄
ObjectCache_Page_View_PurgeLog.php
(1.01 KB)
📄
ObjectCache_Plugin.php
(6.54 KB)
📄
ObjectCache_Plugin_Admin.php
(6.97 KB)
📄
ObjectCache_WpObjectCache.php
(10.17 KB)
📄
ObjectCache_WpObjectCache_Regular.php
(34.11 KB)
📄
PageSpeed_Api.php
(12.16 KB)
📄
PageSpeed_Data.php
(37.19 KB)
📄
PageSpeed_Instructions.php
(43.29 KB)
📄
PageSpeed_Page.php
(8.76 KB)
📄
PageSpeed_Page_View.css
(6.21 KB)
📄
PageSpeed_Page_View.js
(9.48 KB)
📄
PageSpeed_Page_View.php
(2.08 KB)
📄
PageSpeed_Page_View_FromAPI.php
(7.65 KB)
📄
PageSpeed_Widget.php
(7.03 KB)
📄
PageSpeed_Widget_View.css
(2.62 KB)
📄
PageSpeed_Widget_View.js
(2.08 KB)
📄
PageSpeed_Widget_View.php
(1.09 KB)
📄
PageSpeed_Widget_View_FromApi.php
(3.71 KB)
📄
PgCache_ConfigLabels.php
(5.82 KB)
📄
PgCache_ContentGrabber.php
(70.95 KB)
📄
PgCache_Environment.php
(51.72 KB)
📄
PgCache_Flush.php
(16.32 KB)
📄
PgCache_Page.php
(1.6 KB)
📄
PgCache_Page_View.js
(553 B)
📄
PgCache_Plugin.php
(14.22 KB)
📄
PgCache_Plugin_Admin.php
(14.49 KB)
📄
PgCache_QsExempts.php
(1.88 KB)
📄
Root_AdminActions.php
(3.05 KB)
📄
Root_AdminActivation.php
(6.52 KB)
📄
Root_AdminMenu.php
(8.37 KB)
📄
Root_Environment.php
(7.81 KB)
📄
Root_Loader.php
(6.94 KB)
📄
SetupGuide_Plugin_Admin.php
(48.8 KB)
📄
Support_AdminActions.php
(6.14 KB)
📄
Support_Page.php
(3.08 KB)
📄
Support_Page_View_DoneContent.php
(353 B)
📄
Support_Page_View_PageContent.php
(1.39 KB)
📄
SystemOpCache_AdminActions.php
(1.18 KB)
📄
SystemOpCache_Core.php
(2.48 KB)
📄
SystemOpCache_GeneralPage_View.php
(2.27 KB)
📄
SystemOpCache_Plugin_Admin.php
(3.3 KB)
📄
UsageStatistics_AdminActions.php
(1.14 KB)
📄
UsageStatistics_Core.php
(3.39 KB)
📄
UsageStatistics_GeneralPage.php
(1.6 KB)
📄
UsageStatistics_GeneralPage_View.php
(6.18 KB)
📄
UsageStatistics_Page.php
(8.4 KB)
📄
UsageStatistics_Page_DbRequests_View.php
(1.79 KB)
📄
UsageStatistics_Page_ObjectCacheLog_View.php
(1.97 KB)
📄
UsageStatistics_Page_PageCacheRequests_View.php
(1.86 KB)
📄
UsageStatistics_Page_View.css
(1.68 KB)
📄
UsageStatistics_Page_View.js
(17.42 KB)
📄
UsageStatistics_Page_View.php
(17.13 KB)
📄
UsageStatistics_Page_View_Ad.php
(688 B)
📄
UsageStatistics_Page_View_Disabled.php
(610 B)
📄
UsageStatistics_Page_View_Free.php
(635 B)
📄
UsageStatistics_Page_View_NoDebugMode.php
(615 B)
📄
UsageStatistics_Plugin.php
(2.89 KB)
📄
UsageStatistics_Plugin_Admin.php
(5.65 KB)
📄
UsageStatistics_Source_AccessLog.php
(17.47 KB)
📄
UsageStatistics_Source_DbQueriesLog.php
(6.04 KB)
📄
UsageStatistics_Source_ObjectCacheLog.php
(5.57 KB)
📄
UsageStatistics_Source_PageCacheLog.php
(6.11 KB)
📄
UsageStatistics_Source_Wpdb.php
(3.49 KB)
📄
UsageStatistics_Sources.php
(5.41 KB)
📄
UsageStatistics_Sources_Apc.php
(3.39 KB)
📄
UsageStatistics_Sources_Memcached.php
(4.58 KB)
📄
UsageStatistics_Sources_Redis.php
(4.69 KB)
📄
UsageStatistics_StorageReader.php
(2.81 KB)
📄
UsageStatistics_StorageWriter.php
(14.38 KB)
📄
UserExperience_DeferScripts_Extension.php
(7.04 KB)
📄
UserExperience_DeferScripts_Mutator.php
(2.78 KB)
📄
UserExperience_DeferScripts_Page_View.php
(3.91 KB)
📄
UserExperience_DeferScripts_Script.js
(373 B)
📄
UserExperience_Emoji_Extension.php
(3.04 KB)
📄
UserExperience_GeneralPage.php
(1.72 KB)
📄
UserExperience_GeneralPage_View.php
(8.21 KB)
📄
UserExperience_LazyLoad_GoogleMaps_GoogleMapsEasy.php
(3.89 KB)
📄
UserExperience_LazyLoad_GoogleMaps_WPGoogleMapPlugin.php
(2.14 KB)
📄
UserExperience_LazyLoad_GoogleMaps_WPGoogleMaps.php
(3.94 KB)
📄
UserExperience_LazyLoad_Mutator.php
(9.18 KB)
📄
UserExperience_LazyLoad_Mutator_Picture.php
(2.52 KB)
📄
UserExperience_LazyLoad_Mutator_Unmutable.php
(2.88 KB)
📄
UserExperience_LazyLoad_Page_View.php
(6.46 KB)
📄
UserExperience_LazyLoad_Plugin.php
(9.17 KB)
📄
UserExperience_OEmbed_Extension.php
(795 B)
📄
UserExperience_Page.php
(527 B)
📄
UserExperience_Page_View.php
(695 B)
📄
UserExperience_Plugin_Admin.php
(3.49 KB)
📄
UserExperience_Plugin_Jquery.php
(1.4 KB)
📄
UserExperience_Preload_Requests_Extension.php
(6.15 KB)
📄
UserExperience_Preload_Requests_Page_View.php
(8.18 KB)
📄
UserExperience_Remove_CssJs_Extension.php
(6.79 KB)
📄
UserExperience_Remove_CssJs_Mutator.php
(4.45 KB)
📄
UserExperience_Remove_CssJs_Page_View.js
(10.2 KB)
📄
UserExperience_Remove_CssJs_Page_View.php
(14.59 KB)
📄
Util_Activation.php
(9.89 KB)
📄
Util_Admin.php
(25.03 KB)
📄
Util_AttachToActions.php
(7.65 KB)
📄
Util_Bus.php
(832 B)
📄
Util_ConfigLabel.php
(1.57 KB)
📄
Util_Content.php
(3.03 KB)
📄
Util_Debug.php
(6.38 KB)
📄
Util_DebugPurgeLog_Reader.php
(3.36 KB)
📄
Util_Environment.php
(42.46 KB)
📄
Util_Environment_Exception.php
(719 B)
📄
Util_Environment_Exceptions.php
(1.42 KB)
📄
Util_File.php
(13.11 KB)
📄
Util_Http.php
(5.87 KB)
📄
Util_Installed.php
(4.24 KB)
📄
Util_Mime.php
(2.9 KB)
📄
Util_PageSpeed.php
(33.92 KB)
📄
Util_PageUrls.php
(32.57 KB)
📄
Util_Request.php
(3.52 KB)
📄
Util_Rule.php
(13.83 KB)
📄
Util_Theme.php
(3.87 KB)
📄
Util_Ui.php
(83.11 KB)
📄
Util_UsageStatistics.php
(13.6 KB)
📄
Util_Widget.php
(7.88 KB)
📄
Util_WpFile.php
(16.48 KB)
📄
Util_WpFile_FilesystemChmodException.php
(1.66 KB)
📄
Util_WpFile_FilesystemCopyException.php
(1.79 KB)
📄
Util_WpFile_FilesystemMkdirException.php
(1.14 KB)
📄
Util_WpFile_FilesystemModifyException.php
(2.35 KB)
📄
Util_WpFile_FilesystemOperationException.php
(1.29 KB)
📄
Util_WpFile_FilesystemRmException.php
(1.14 KB)
📄
Util_WpFile_FilesystemRmdirException.php
(1.19 KB)
📄
Util_WpFile_FilesystemWriteException.php
(1.57 KB)
📄
Util_WpmuBlogmap.php
(8.06 KB)
📄
Varnish_Flush.php
(18.57 KB)
📄
Varnish_Plugin.php
(3.2 KB)
📁
extension-example
📁
inc
📄
index.html
(0 B)
📁
ini
📁
languages
📁
lib
📄
press.txt
(45.78 KB)
📁
pub
📄
readme.txt
(76.49 KB)
📁
vendor
📄
w3-total-cache-api.php
(22.29 KB)
📄
w3-total-cache-old-php.php
(1.25 KB)
📄
w3-total-cache.php
(2.83 KB)
📁
wp-content
Editing: Cdn_Core_Admin.php
<?php /** * File: Cdn_Core_Admin.php * * @package W3TC */ namespace W3TC; /** * Class Cdn_Core_Admin * * W3 Total Cache CDN Plugin * * phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore * phpcs:disable WordPress.PHP.NoSilencedErrors.Discouraged * phpcs:disable WordPress.PHP.DiscouragedPHPFunctions.serialize_unserialize * phpcs:disable WordPress.WP.GlobalVariablesOverride.Prohibited * phpcs:disable WordPress.DB.DirectDatabaseQuery * phpcs:disable WordPress.DB.PreparedSQL.NotPrepared */ class Cdn_Core_Admin { /** * Config * * @var Config */ private $_config = null; /** * Constructor for the Cdn_Core_Admin class. * * Initializes the configuration by dispatching the configuration object. * * @return void */ public function __construct() { $this->_config = Dispatcher::config(); } /** * Purges the CDN files associated with an attachment. * * This method retrieves the files associated with the given attachment ID and purges them from the CDN. * * @param int $attachment_id The ID of the attachment to purge. * @param array $results Reference to an array that will store the purge results. * * @return bool True on success, false on failure. */ public function purge_attachment( $attachment_id, &$results ) { $common = Dispatcher::component( 'Cdn_Core' ); $files = $common->get_attachment_files( $attachment_id ); return $common->purge( $files, $results ); } /** * Updates the queue entry with the latest error message. * * This method updates the `last_error` field and the `date` for a specific queue item. * * @param int $queue_id The ID of the queue item to update. * @param string $last_error The error message to store. * * @return int|false The number of affected rows, or false on failure. */ public function queue_update( $queue_id, $last_error ) { global $wpdb; $sql = sprintf( 'UPDATE %s SET last_error = "%s", date = NOW() WHERE id = %d', $wpdb->base_prefix . W3TC_CDN_TABLE_QUEUE, esc_sql( $last_error ), $queue_id ); return $wpdb->query( $sql ); } /** * Deletes a queue item from the database. * * This method removes a specific queue entry identified by its ID. * * @param int $queue_id The ID of the queue item to delete. * * @return int|false The number of affected rows, or false on failure. */ public function queue_delete( $queue_id ) { global $wpdb; $sql = sprintf( 'DELETE FROM %s WHERE id = %d', $wpdb->base_prefix . W3TC_CDN_TABLE_QUEUE, $queue_id ); return $wpdb->query( $sql ); } /** * Empties the queue based on a command. * * This method deletes all queue entries that match the specified command. * * @param int $command The command identifier to filter the queue entries. * * @return int|false The number of affected rows, or false on failure. */ public function queue_empty( $command ) { global $wpdb; $sql = sprintf( 'DELETE FROM %s WHERE command = %d', $wpdb->base_prefix . W3TC_CDN_TABLE_QUEUE, $command ); return $wpdb->query( $sql ); } /** * Retrieves a list of queue items from the database. * * This method fetches queue entries, optionally limiting the number of results returned. * * @param int|null $limit The maximum number of queue entries to retrieve, or null for no limit. * * @return array An associative array of queue items, grouped by command. */ public function queue_get( $limit = null ) { global $wpdb; $sql = sprintf( 'SELECT * FROM %s%s ORDER BY date', $wpdb->base_prefix, W3TC_CDN_TABLE_QUEUE ); if ( $limit ) { $sql .= sprintf( ' LIMIT %d', $limit ); } $results = $wpdb->get_results( $sql ); $queue = array(); if ( $results ) { foreach ( (array) $results as $result ) { $queue[ $result->command ][] = $result; } } return $queue; } /** * Processes items in the queue and performs the respective CDN actions. * * This method processes the queued commands (upload, delete, or purge) and interacts with the CDN to perform * the necessary operations on the files. The results are handled accordingly, updating the queue. * * @param int $limit The maximum number of items to process from the queue. * * @return int The number of items successfully processed. */ public function queue_process( $limit ) { $items = 0; $commands = $this->queue_get( $limit ); $force_rewrite = $this->_config->get_boolean( 'cdn.force.rewrite' ); if ( count( $commands ) ) { $common = Dispatcher::component( 'Cdn_Core' ); $cdn = $common->get_cdn(); foreach ( $commands as $command => $queue ) { $files = array(); $results = array(); $map = array(); foreach ( $queue as $result ) { $files[] = $common->build_file_descriptor( $result->local_path, $result->remote_path ); $map[ $result->local_path ] = $result->id; ++$items; } switch ( $command ) { case W3TC_CDN_COMMAND_UPLOAD: foreach ( $files as $file ) { $local_file_name = $file['local_path']; $remote_file_name = $file['remote_path']; if ( ! file_exists( $local_file_name ) ) { Dispatcher::create_file_for_cdn( $local_file_name ); } } $cdn->upload( $files, $results, $force_rewrite ); foreach ( $results as $result ) { if ( W3TC_CDN_RESULT_OK === $result['result'] ) { Dispatcher::on_cdn_file_upload( $result['local_path'] ); } } break; case W3TC_CDN_COMMAND_DELETE: $cdn->delete( $files, $results ); break; case W3TC_CDN_COMMAND_PURGE: $cdn->purge( $files, $results ); break; } foreach ( $results as $result ) { if ( W3TC_CDN_RESULT_OK === $result['result'] ) { $this->queue_delete( $map[ $result['local_path'] ] ); } else { $this->queue_update( $map[ $result['local_path'] ], $result['error'] ); } } } } return $items; } /** * Exports library attachments to a CDN. * * This method retrieves a list of attachment files and their metadata from the WordPress database, processes * each attachment to generate a file descriptor, and uploads the files to a Content Delivery Network (CDN). * It also handles pagination via the limit and offset parameters and updates the provided count and total values * with the number of results and the total attachment count respectively. * * @param int $limit The number of attachments to retrieve. If set to 0, no limit is applied. * @param int $offset The offset for retrieving attachments. Defaults to 0. * @param int $count The variable to store the number of attachments retrieved. * @param int $total The variable to store the total number of attachments. * @param array $results The variable to store the results of the upload process. * @param int $timeout_time The timeout duration for the upload request in seconds. Defaults to 0 (no timeout). * * @return void */ public function export_library( $limit, $offset, &$count, &$total, &$results, $timeout_time = 0 ) { global $wpdb; $count = 0; $total = 0; $upload_info = Util_Http::upload_info(); if ( $upload_info ) { $sql = sprintf( 'SELECT pm.meta_value AS file, pm2.meta_value AS metadata FROM %sposts AS p LEFT JOIN %spostmeta AS pm ON p.ID = pm.post_ID AND pm.meta_key = "_wp_attached_file" LEFT JOIN %spostmeta AS pm2 ON p.ID = pm2.post_ID AND pm2.meta_key = "_wp_attachment_metadata" WHERE p.post_type = "attachment" AND (pm.meta_value IS NOT NULL OR pm2.meta_value IS NOT NULL) GROUP BY p.ID ORDER BY p.ID', $wpdb->prefix, $wpdb->prefix, $wpdb->prefix ); if ( $limit ) { $sql .= sprintf( ' LIMIT %d', $limit ); if ( $offset ) { $sql .= sprintf( ' OFFSET %d', $offset ); } } $posts = $wpdb->get_results( $sql ); if ( $posts ) { $count = count( $posts ); $total = $this->get_attachments_count(); $files = array(); $common = Dispatcher::component( 'Cdn_Core' ); foreach ( $posts as $post ) { $post_files = array(); if ( $post->file ) { $file = $common->normalize_attachment_file( $post->file ); $local_file = $upload_info['basedir'] . '/' . $file; $remote_file = ltrim( $upload_info['baseurlpath'] . $file, '/' ); $post_files[] = $common->build_file_descriptor( $local_file, $remote_file ); } if ( $post->metadata ) { $metadata = @unserialize( $post->metadata ); $post_files = array_merge( $post_files, $common->get_metadata_files( $metadata ) ); } $post_files = apply_filters( 'w3tc_cdn_add_attachment', $post_files ); $files = array_merge( $files, $post_files ); } $common = Dispatcher::component( 'Cdn_Core' ); $common->upload( $files, false, $results, $timeout_time ); } } } /** * Import external files into the media library. * * This method processes posts with links or images, checking if the external files exist in the media library. * If the files do not exist, it downloads or copies them to the server, inserts them as attachments, and updates * the post content to reference the new media URLs. Logs the results of the import process. * * phpcs:disable WordPress.Arrays.MultipleStatementAlignment * * @param int $limit The number of posts to process. * @param int $offset The offset for the posts to process. * @param int $count The number of posts processed. * @param int $total The total number of posts to import. * @param array $results An array to hold the results of the import process, including file paths and errors. * * @return void */ public function import_library( $limit, $offset, &$count, &$total, &$results ) { global $wpdb; $count = 0; $total = 0; $results = array(); $upload_info = Util_Http::upload_info(); $uploads_use_yearmonth_folders = get_option( 'uploads_use_yearmonth_folders' ); $document_root = Util_Environment::document_root(); @set_time_limit( $this->_config->get_integer( 'timelimit.cdn_import' ) ); if ( $upload_info ) { /** * Search for posts with links or images */ $sql = sprintf( 'SELECT ID, post_content, post_date FROM %sposts WHERE post_status = "publish" AND (post_type = "post" OR post_type = "page") AND (post_content LIKE "%%src=%%" OR post_content LIKE "%%href=%%")', $wpdb->prefix ); if ( $limit ) { $sql .= sprintf( ' LIMIT %d', $limit ); if ( $offset ) { $sql .= sprintf( ' OFFSET %d', $offset ); } } $posts = $wpdb->get_results( $sql ); if ( $posts ) { $count = count( $posts ); $total = $this->get_import_posts_count(); $regexp = '~(' . $this->get_regexp_by_mask( $this->_config->get_string( 'cdn.import.files' ) ) . ')$~'; $config_state = Dispatcher::config_state(); $import_external = $config_state->get_boolean( 'cdn.import.external' ); foreach ( $posts as $post ) { $matches = null; $replaced = array(); $attachments = array(); $post_content = $post->post_content; /** * Search for all link and image sources */ if ( preg_match_all( '~(href|src)=[\'"]?([^\'"<>\s]+)[\'"]?~', $post_content, $matches, PREG_SET_ORDER ) ) { foreach ( $matches as $match ) { list( $search, $attribute, $origin ) = $match; /** * Check if $search is already replaced */ if ( isset( $replaced[ $search ] ) ) { continue; } $error = ''; $result = false; $src = Util_Environment::normalize_file_minify( $origin ); $dst = ''; /** * Check if file exists in the library */ if ( stristr( $origin, $upload_info['baseurl'] ) === false ) { /** * Check file extension */ $check_src = $src; if ( Util_Environment::is_url( $check_src ) ) { $qpos = strpos( $check_src, '?' ); if ( false !== $qpos ) { $check_src = substr( $check_src, 0, $qpos ); } } if ( preg_match( $regexp, $check_src ) ) { /** * Check for already uploaded attachment */ if ( isset( $attachments[ $src ] ) ) { list( $dst, $dst_url ) = $attachments[ $src ]; $result = true; } else { if ( $uploads_use_yearmonth_folders ) { $upload_subdir = gmdate( 'Y/m', strtotime( $post->post_date ) ); $upload_dir = sprintf( '%s/%s', $upload_info['basedir'], $upload_subdir ); $upload_url = sprintf( '%s/%s', $upload_info['baseurl'], $upload_subdir ); } else { $upload_subdir = ''; $upload_dir = $upload_info['basedir']; $upload_url = $upload_info['baseurl']; } $src_filename = pathinfo( $src, PATHINFO_FILENAME ); $src_extension = pathinfo( $src, PATHINFO_EXTENSION ); /** * Get available filename */ for ( $i = 0; ; $i++ ) { $dst = sprintf( '%s/%s%s%s', $upload_dir, $src_filename, ( $i ? $i : '' ), ( $src_extension ? '.' . $src_extension : '' ) ); if ( ! file_exists( $dst ) ) { break; } } $dst_basename = basename( $dst ); $dst_url = sprintf( '%s/%s', $upload_url, $dst_basename ); $dst_path = ltrim( str_replace( $document_root, '', Util_Environment::normalize_path( $dst ) ), '/' ); if ( $upload_subdir ) { Util_File::mkdir( $upload_subdir, 0777, $upload_info['basedir'] ); } $download_result = false; /** * Check if file is remote URL */ if ( Util_Environment::is_url( $src ) ) { /** * Download file */ if ( $import_external ) { $download_result = Util_Http::download( $src, $dst ); if ( ! $download_result ) { $error = 'Unable to download file'; } } else { $error = 'External file import is disabled'; } } else { /** * Otherwise copy file from local path */ $src_path = $document_root . '/' . urldecode( $src ); if ( file_exists( $src_path ) ) { $download_result = @copy( $src_path, $dst ); if ( ! $download_result ) { $error = 'Unable to copy file'; } } else { $error = 'Source file doesn\'t exists'; } } /** * Check if download or copy was successful */ if ( $download_result ) { $title = $dst_basename; $guid = ltrim( $upload_info['baseurlpath'] . $title, ',' ); $mime_type = Util_Mime::get_mime_type( $dst ); $GLOBALS['wp_rewrite'] = new \WP_Rewrite(); /** * Insert attachment */ $id = wp_insert_attachment( array( 'post_mime_type' => $mime_type, 'guid' => $guid, 'post_title' => $title, 'post_content' => '', 'post_parent' => $post->ID, ), $dst ); if ( ! is_wp_error( $id ) ) { /** * Generate attachment metadata and upload to CDN */ require_once ABSPATH . 'wp-admin/includes/image.php'; wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $dst ) ); $attachments[ $src ] = array( $dst, $dst_url, ); $result = true; } else { $error = 'Unable to insert attachment'; } } } /** * If attachment was successfully created then replace links */ if ( $result ) { $replace = sprintf( '%s="%s"', $attribute, $dst_url ); // replace $search with $replace. $post_content = str_replace( $search, $replace, $post_content ); $replaced[ $search ] = $replace; $error = 'OK'; } } else { $error = 'File type rejected'; } } else { $error = 'File already exists in the media library'; } /** * Add new entry to the log file */ $results[] = array( 'src' => $src, 'dst' => $dst_path, 'result' => $result, 'error' => $error, ); } } /** * If post content was chenged then update DB */ if ( $post_content !== $post->post_content ) { wp_update_post( array( 'ID' => $post->ID, 'post_content' => $post_content, ) ); } } } } } /** * Renames domain URLs in post content. * * This method searches for URLs in published posts and pages that match a given set of domain names, and renames * them with the new base URL. The renaming process involves identifying `src` and `href` attributes within post * content and replacing any matched URLs that reference the old domain with the new base URL, updating the post * content accordingly. * * @param array $names An array of domain names to be renamed. * @param int $limit The maximum number of posts to process at once (optional). * @param int $offset The offset for pagination (optional). * @param int $count The number of posts processed. * @param int $total The total number of posts that require renaming. * @param array $results An array of results showing old and new URLs with status. * * @return void */ public function rename_domain( $names, $limit, $offset, &$count, &$total, &$results ) { global $wpdb; @set_time_limit( $this->_config->get_integer( 'timelimit.domain_rename' ) ); $count = 0; $total = 0; $results = array(); $upload_info = Util_Http::upload_info(); foreach ( $names as $index => $name ) { $names[ $index ] = str_ireplace( 'www.', '', $name ); } if ( $upload_info ) { $sql = sprintf( 'SELECT ID, post_content, post_date FROM %sposts WHERE post_status = "publish" AND (post_type = "post" OR post_type = "page") AND (post_content LIKE "%%src=%%" OR post_content LIKE "%%href=%%")', $wpdb->prefix ); if ( $limit ) { $sql .= sprintf( ' LIMIT %d', $limit ); if ( $offset ) { $sql .= sprintf( ' OFFSET %d', $offset ); } } $posts = $wpdb->get_results( $sql ); if ( $posts ) { $count = count( $posts ); $total = $this->get_rename_posts_count(); $names_quoted = array_map( array( '\W3TC\Util_Environment', 'preg_quote' ), $names ); foreach ( $posts as $post ) { $matches = null; $post_content = $post->post_content; $regexp = '~(href|src)=[\'"]?(https?://(www\.)?(' . implode( '|', $names_quoted ) . ')' . Util_Environment::preg_quote( $upload_info['baseurlpath'] ) . '([^\'"<>\s]+))[\'"]~'; if ( preg_match_all( $regexp, $post_content, $matches, PREG_SET_ORDER ) ) { foreach ( $matches as $match ) { $old_url = $match[2]; $new_url = sprintf( '%s/%s', $upload_info['baseurl'], $match[5] ); $post_content = str_replace( $old_url, $new_url, $post_content ); $results[] = array( 'old' => $old_url, 'new' => $new_url, 'result' => true, 'error' => 'OK', ); } } if ( $post_content !== $post->post_content ) { wp_update_post( array( 'ID' => $post->ID, 'post_content' => $post_content, ) ); } } } } } /** * Retrieves the count of attachments in the WordPress database. * * This method queries the WordPress database to count the number of attachments that are stored in the posts table, * ensuring that there is an associated `_wp_attached_file` or `_wp_attachment_metadata` meta key. This is useful for * tracking the number of media files stored in the system. * * @return int The total number of attachments. */ public function get_attachments_count() { global $wpdb; $sql = sprintf( 'SELECT COUNT(DISTINCT p.ID) FROM %sposts AS p LEFT JOIN %spostmeta AS pm ON p.ID = pm.post_ID AND pm.meta_key = "_wp_attached_file" LEFT JOIN %spostmeta AS pm2 ON p.ID = pm2.post_ID AND pm2.meta_key = "_wp_attachment_metadata" WHERE p.post_type = "attachment" AND (pm.meta_value IS NOT NULL OR pm2.meta_value IS NOT NULL)', $wpdb->prefix, $wpdb->prefix, $wpdb->prefix ); return $wpdb->get_var( $sql ); } /** * Retrieves the count of posts and pages that contain media references (e.g., `src` or `href` attributes). * * This method counts the number of posts and pages in the WordPress database that have `src` or `href` attributes * in their content, which typically indicate the presence of media (e.g., images, links, or other assets). * * @return int The total number of posts and pages with media references. */ public function get_import_posts_count() { global $wpdb; $sql = sprintf( 'SELECT COUNT(*) FROM %sposts WHERE post_status = "publish" AND (post_type = "post" OR post_type = "page") AND (post_content LIKE "%%src=%%" OR post_content LIKE "%%href=%%")', $wpdb->prefix ); return $wpdb->get_var( $sql ); } /** * Retrieves the count of posts and pages that require domain renaming based on media references. * * This method is essentially a shortcut to `get_import_posts_count()` and returns the number of posts and pages * that need their URLs updated during a domain rename operation. * * @return int The total number of posts and pages to be renamed. */ public function get_rename_posts_count() { return $this->get_import_posts_count(); } /** * Generates a regular expression pattern based on a given mask. * * This method takes a mask (e.g., wildcard pattern) and converts it into a valid regular expression, where `*` * and `?` are replaced by patterns that match any sequence of characters. This allows for more flexible matching * of domain names or other patterns within content. * * @param string $mask The mask to convert into a regular expression. * * @return string The generated regular expression pattern. */ public function get_regexp_by_mask( $mask ) { $mask = trim( $mask ); $mask = Util_Environment::preg_quote( $mask ); $mask = str_replace( array( '\*', '\?', ';', ), array( '@ASTERISK@', '@QUESTION@', '|', ), $mask ); $regexp = str_replace( array( '@ASTERISK@', '@QUESTION@', ), array( '[^\\?\\*:\\|"<>]*', '[^\\?\\*:\\|"<>]', ), $mask ); return $regexp; } /** * Adds custom actions to the media row in the WordPress admin interface. * * This method adds a custom action link to the media file row in the WordPress admin, allowing an admin user to * purge the media file from the CDN. The link includes a nonce for security purposes. * * @param array $actions An array of existing action links for the media. * @param WP_Post $post The current post object representing the media item. * * @return array The updated array of action links. */ public function media_row_actions( $actions, $post ) { $actions = array_merge( $actions, array( 'cdn_purge' => sprintf( '<a href="%s">' . __( 'Purge from CDN', 'w3-total-cache' ) . '</a>', wp_nonce_url( sprintf( 'admin.php?page=w3tc_dashboard&w3tc_cdn_purge_attachment&attachment_id=%d', $post->ID ), 'w3tc' ) ), ) ); return $actions; } /** * Checks if the CDN is running based on the current configuration. * * This method verifies the CDN engine configuration and ensures that all necessary * settings (like API keys, buckets, domains, etc.) are provided and valid. It checks * for different CDN engines, including FTP, S3, Cloudflare (CF), Azure, and others. * The method returns true if the CDN is correctly configured and operational, * and false otherwise. * * @return bool True if the CDN is running, false otherwise. */ public function is_running() { /** * CDN */ $running = true; /** * Check CDN settings */ $cdn_engine = $this->_config->get_string( 'cdn.engine' ); switch ( true ) { case ( 'ftp' === $cdn_engine && ! count( $this->_config->get_array( 'cdn.ftp.domain' ) ) ): $running = false; break; case ( 's3' === $cdn_engine && ( '' === $this->_config->get_string( 'cdn.s3.key' ) || '' === $this->_config->get_string( 'cdn.s3.secret' ) || '' === $this->_config->get_string( 'cdn.s3.bucket' ) ) ): $running = false; break; case ( 'cf' === $cdn_engine && ( '' === $this->_config->get_string( 'cdn.cf.key' ) || '' === $this->_config->get_string( 'cdn.cf.secret' ) || '' === $this->_config->get_string( 'cdn.cf.bucket' ) || ( '' === $this->_config->get_string( 'cdn.cf.id' ) && ! count( $this->_config->get_array( 'cdn.cf.cname' ) ) ) ) ): $running = false; break; case ( 'cf2' === $cdn_engine && ( '' === $this->_config->get_string( 'cdn.cf2.key' ) || '' === $this->_config->get_string( 'cdn.cf2.secret' ) || ( '' === $this->_config->get_string( 'cdn.cf2.id' ) && ! count( $this->_config->get_array( 'cdn.cf2.cname' ) ) ) ) ): $running = false; break; case ( 'rscf' === $cdn_engine && ( '' === $this->_config->get_string( 'cdn.rscf.user' ) || '' === $this->_config->get_string( 'cdn.rscf.key' ) || '' === $this->_config->get_string( 'cdn.rscf.container' ) || ! count( $this->_config->get_array( 'cdn.rscf.cname' ) ) ) ): $running = false; break; case ( 'azure' === $cdn_engine && ( '' === $this->_config->get_string( 'cdn.azure.user' ) || '' === $this->_config->get_string( 'cdn.azure.key' ) || '' === $this->_config->get_string( 'cdn.azure.container' ) ) ): $running = false; break; case ( 'azuremi' === $cdn_engine && ( '' === $this->_config->get_string( 'cdn.azuremi.user' ) || '' === $this->_config->get_string( 'cdn.azuremi.clientid' ) || '' === $this->_config->get_string( 'cdn.azuremi.container' ) ) ): $running = false; break; case ( 'mirror' === $cdn_engine && ! count( $this->_config->get_array( 'cdn.mirror.domain' ) ) ): $running = false; break; case ( 'cotendo' === $cdn_engine && ! count( $this->_config->get_array( 'cdn.cotendo.domain' ) ) ): $running = false; break; case ( 'edgecast' === $cdn_engine && ! count( $this->_config->get_array( 'cdn.edgecast.domain' ) ) ): $running = false; break; case ( 'att' === $cdn_engine && ! count( $this->_config->get_array( 'cdn.att.domain' ) ) ): $running = false; break; case ( 'akamai' === $cdn_engine && ! count( $this->_config->get_array( 'cdn.akamai.domain' ) ) ): $running = false; break; } return $running; } }
Upload File
Create Folder