WP Fastest Cache - Version 0.8.6.6

Version Description

  • to make compatible with the new rules of wordpress
  • [FEATURE] Database Cleanup
  • to decode URLs in non-latin languages for singleDeleteCache()
  • to change the method of the premium update Details
Download this release

Release Info

Developer emrevona
Plugin Icon 128x128 WP Fastest Cache
Version 0.8.6.6
Comparing to
See all releases

Version 0.8.6.6

Files changed (100) hide show
  1. css/buycredit.css +661 -0
  2. css/dialog.css +266 -0
  3. css/flaticon.css +67 -0
  4. css/fonts/db/.DS_Store +0 -0
  5. css/fonts/db/Flaticon.eot +0 -0
  6. css/fonts/db/Flaticon.svg +98 -0
  7. css/fonts/db/Flaticon.ttf +0 -0
  8. css/fonts/db/Flaticon.woff +0 -0
  9. css/fonts/statics/flaticon.eot +0 -0
  10. css/fonts/statics/flaticon.svg +3 -0
  11. css/fonts/statics/flaticon.ttf +0 -0
  12. css/fonts/statics/flaticon.woff +0 -0
  13. css/index.html +1 -0
  14. css/style.css +560 -0
  15. css/toolbar.css +21 -0
  16. images/blue-check.png +0 -0
  17. images/button-back-green.png +0 -0
  18. images/cancel.png +0 -0
  19. images/close-wiz-sprite.png +0 -0
  20. images/dollar.png +0 -0
  21. images/download.png +0 -0
  22. images/error.png +0 -0
  23. images/facebook-like-xxl.png +0 -0
  24. images/icon-24x24.png +0 -0
  25. images/icon-32x32.png +0 -0
  26. images/icon-left.png +0 -0
  27. images/icon.png +0 -0
  28. images/index.html +1 -0
  29. images/info.png +0 -0
  30. images/label-bg.png +0 -0
  31. images/loader-statics.gif +0 -0
  32. images/loader.gif +0 -0
  33. images/loading-circle.gif +0 -0
  34. images/maxcdn.png +0 -0
  35. images/no-image.gif +0 -0
  36. images/othercdn.png +0 -0
  37. images/photoncdn.png +0 -0
  38. images/read-more.png +0 -0
  39. images/rocket.png +0 -0
  40. images/search_reset.jpg +0 -0
  41. images/success.png +0 -0
  42. images/tinymce-wpfcnot.jpg +0 -0
  43. inc/admin-toolbar.php +85 -0
  44. inc/admin.php +2071 -0
  45. inc/cache.php +830 -0
  46. inc/css-utilities.php +643 -0
  47. inc/index.html +1 -0
  48. inc/js-utilities.php +305 -0
  49. index.html +1 -0
  50. js/button.js +59 -0
  51. js/cdn/cdn.js +299 -0
  52. js/db.js +106 -0
  53. js/dialog.js +44 -0
  54. js/dialog_new.js +142 -0
  55. js/index.html +1 -0
  56. js/lang/cn.js +138 -0
  57. js/lang/de.js +118 -0
  58. js/lang/es.js +62 -0
  59. js/lang/fi.js +119 -0
  60. js/lang/fr.js +68 -0
  61. js/lang/index.html +1 -0
  62. js/lang/it.js +62 -0
  63. js/lang/ja.js +132 -0
  64. js/lang/nl.js +117 -0
  65. js/lang/pl.js +115 -0
  66. js/lang/pt.js +236 -0
  67. js/lang/ro.js +115 -0
  68. js/lang/ru.js +159 -0
  69. js/lang/sv.js +113 -0
  70. js/lang/tr.js +124 -0
  71. js/lang/ukr.js +51 -0
  72. js/language.js +42 -0
  73. js/schedule.js +65 -0
  74. js/toolbar.js +62 -0
  75. languages/index.html +0 -0
  76. languages/wp-fastest-cache-tr_TR.mo +0 -0
  77. languages/wp-fastest-cache-tr_TR.po +76 -0
  78. languages/wp-fastest-cache.pot +73 -0
  79. readme.txt +675 -0
  80. templates/buttons.html +21 -0
  81. templates/cdn/file_types.php +30 -0
  82. templates/cdn/maxcdn.php +73 -0
  83. templates/cdn/other.php +73 -0
  84. templates/cdn/photon.php +78 -0
  85. templates/cdn/specify_sources.php +65 -0
  86. templates/download.html +42 -0
  87. templates/exclude.php +492 -0
  88. templates/htaccess.html +43 -0
  89. templates/lazy_load.php +88 -0
  90. templates/newpost.php +92 -0
  91. templates/nginx_gzip.php +55 -0
  92. templates/permission_error.html +31 -0
  93. templates/preload.php +85 -0
  94. templates/timeout.php +599 -0
  95. templates/update_error.html +42 -0
  96. templates/update_now.php +72 -0
  97. templates/update_success.html +31 -0
  98. templates/update_success.php +31 -0
  99. templates/updatepost.php +93 -0
  100. wpFastestCache.php +1753 -0
css/buycredit.css ADDED
@@ -0,0 +1,661 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ .fakeHeader{/*padding-bottom:5px*/}.fakeHeader h1,
3
+ .fakeHeader .title-h1{display:none}header
4
+ .subContent{width:960px;margin:0
5
+ auto;padding-top:32px;padding-bottom:18px}#container{width:960px;margin:0
6
+ auto;padding-bottom:70px;position:relative}.mainContent{float:left;width:570px;padding:25px
7
+ 30px 30px 30px;background-color:#fff;margin-bottom:70px}.rtl
8
+ .mainContent{float:right}.sideContent{width:240px;padding:10px
9
+ 30px 15px 30px;float:right;background-color:#fff;margin-bottom:70px;z-index:9;position:relative;top:auto;left:auto;margin-left:0;border:1px
10
+ solid white}.rtl
11
+ .sideContent{float:left;margin-right:0}#frameContent{width:100%}@media only screen and (min-width: 768px) and (max-width: 959px){body{min-width:768px;height:auto;background-image: -ms-linear-gradient(top, #FFF 0%, #F3F8FA 100%);background-image: -moz-linear-gradient(top, #FFF 0%, #F3F8FA 100%);background-image: -o-linear-gradient(top, #FFF 0%, #F3F8FA 100%);background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #FFFFFF), color-stop(1, #F3F8FA));background-image: -webkit-linear-gradient(top, #FFF 0%, #F3F8FA 100%);background-image:linear-gradient(top, #FFF 0%, #F3F8FA 100%)}header
12
+
13
+ .subContent{width:720px}#container{width:720px}.mainContent{width:390px}.sideContent{width:180px}}@media only screen and (max-width: 767px){html,body{background:#fff;height:auto}body{min-width:0}header{display:none}.fakeHeader{display:block;width:auto;height:100%;margin-bottom:10px;padding-top:0}.rtl
14
+ .fakeHeader{float:right}.fakeHeader h1,
15
+ .fakeHeader .title-h1{display:block}.fakeHeader h1,
16
+ .fakeHeader h2,
17
+ .fakeHeader h3,
18
+ .fakeHeader h4,
19
+ .fakeHeader h5,
20
+ .fakeHeader h6,
21
+ .fakeHeader .title-h1,
22
+ .fakeHeader .title-h2,
23
+ .fakeHeader .title-h3,
24
+ .fakeHeader .title-h4,
25
+ .fakeHeader .title-h5,
26
+ .fakeHeader .title-h6{margin-bottom:0}header
27
+ .subContent{width:auto}#container{width:320px;padding-bottom:30px}.mainContent{width:280px;padding:19px
28
+ 20px 20px 20px;margin-top:1px;margin-bottom:20px}.rtl
29
+ .mainContent{float:none}.sideContent{float:none;width:100%;padding:0;padding-bottom:20px;margin:0}.rtl
30
+ .sideContent{float:none}}.fixme{_position:absolute;top:0;_top:expression(eval(document.body.scrollTop))}footer{z-index:10}#orderDetails{position:relative;opacity:0;filter:alpha(opacity=0)}#orderDetails
31
+ table{width:100%}#orderDetails table tfoot
32
+ tr.totalRow{background-color:#fff}#orderDetails table.highlight tfoot
33
+ tr.totalRow{background-color:#8cdbf8}#orderDetails table th,
34
+ #orderDetails table
35
+ td{height:18px;padding-top:15px;padding-bottom:15px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#e7f1f5;border-collapse:separate;color:#333534;font-size:16px;line-height:20px;font-weight:400;vertical-align:top}#orderDetails table
36
+ th{padding-right:10px;text-align:left}.rtl #orderDetails table
37
+ th{padding-left:10px;padding-right:0;text-align:right}#orderDetails table
38
+ td{text-align:right}.rtl #orderDetails table
39
+ td{text-align:left}#orderDetails table thead tr
40
+ th{padding-top:14px;padding-right:0;padding-bottom:5px;line-height:24px;border-bottom:none}.rtl #orderDetails table thead tr
41
+ th{padding-left:0}#orderDetails table thead tr.totalRow
42
+ .yourOrder{font-size:24px;font-weight:400}* html #orderDetails table thead tr th
43
+ .yourOrder{float:left}*:first-child+html #orderDetails table thead tr th
44
+ .yourOrder{float:left}#orderDetails table thead tr th
45
+ .orderNumber{display:block;clear:left;padding-top:4px;padding-bottom:4px;font-size:16px;line-height:16px;font-weight:400}#orderDetails table thead tr th
46
+ .changeOrder{float:right;padding:10px
47
+ 0 0 0;font-size:16px;line-height:16px;font-weight:400}.rtl #orderDetails table thead tr th
48
+ .changeOrder{float:left}#orderDetails table thead tr th .changeOrder
49
+ a{font-weight:400}#orderDetails table thead tr th
50
+ span.totalPrice{display:none;opacity:0;filter:alpha(opacity=0)}#orderDetails
51
+ .toggleOrder{display:none}.vatRowHidden{display:none}#orderDetails table tfoot tr th,
52
+ #orderDetails table tfoot tr
53
+ td{border-bottom:none;font-weight:600}#orderDetails table tr.totalRow th .title-h3
54
+ .icon{display:none}#orderDetails table tr.discountRow th,
55
+ #orderDetails table tr.discountRow td,
56
+ #orderDetails table tr.extraProductRow th,
57
+ #orderDetails table tr.extraProductRow
58
+ td{color:#EC008C}#orderDetails table tfoot
59
+ tr.vatMessageRow{display:none}#orderDetails
60
+ .sideMessage{display:none;position:absolute;top:auto;right:0;left:0;width:180px;margin:14px
61
+ 0 0 -1px;padding:13px
62
+ 30px;background-color:#D9F3FD;font-size:14px;line-height:18px;font-weight:400;text-align:left;z-index:100;border:1px
63
+ solid white}.rtl #orderDetails
64
+ .sideMessage{text-align:right}#orderDetails .sideMessage
65
+ .arrow{position:absolute;top: -11px;left:0;width:18px;height:12px;z-index: -190;background:url("../images/icons/icons-sprite.png") no-repeat;background-position: -90px 0}.sideMessage .arrow::before,
66
+ .contextNotification .arrow::before{content:"";display:block;width:14px;height:14px;background-color:#d9f3fd;border-color:#d9f3fd;border-style:solid;border-left-width:1px;border-top-width:1px;border-right-width:0px;border-bottom-width:0px;top:22px;position:relative;-webkit-transform:translate(2px, -16px) rotate(45deg) skew(10deg, 10deg);-moz-transform:translate(2px, -16px) rotate(45deg) skew(10deg, 10deg);-ms-transform:translate(2px, -16px) rotate(45deg) skew(10deg, 10deg);-o-transform:translate(2px, -16px) rotate(45deg) skew(10deg, 10deg);transform:translate(2px, -16px) rotate(45deg) skew(10deg, 10deg);border-right-width:0px;border-bottom-width:0px;z-index: -100}.vatTooltip{width:18px;height:18px;display:inline-block;margin:1px
67
+ 8px 3px 8px;vertical-align:middle;overflow:hidden;border:1px
68
+ solid white;border-radius:15px;cursor:pointer}.vatTooltip:hover{border-width:2px;margin:0px
69
+ 7px 2px 7px}button.vatTooltip{background-color:transparent;padding:0;width:20px;height:20px}button.vatTooltip:hover{width:22px;height:22px}button.vatTooltip::-moz-focus-inner{border:0;padding:0}.vatTooltip:before{content:url("../images/icons/icons-sprite.png")}.vatTooltip{*background:url("../images/icons/icons-sprite.png") no-repeat}.rtl
70
+ .vatTooltip{margin:0
71
+ 7px 2px 7px}.vatTooltip:hover:before{left: -18px;position:relative}.vatTooltip:hover{*background-position: -18px 0}.vatTooltip:active:before,.vatTooltip.visible:before{left: -36px}.vatTooltip:active,.vatTooltip.visible{*background-position: -36px 0}@media only screen and (min-width: 768px) and (max-width: 959px){#orderDetails table th,
72
+ #orderDetails table
73
+ td{font-size:14px}#orderDetails table thead tr
74
+ th{padding-bottom:9px}#orderDetails table thead tr th
75
+ .changeOrder{clear:left;float:left;padding:3px
76
+ 0 0 0}.rtl #orderDetails table thead tr th
77
+ .changeOrder{clear:right;float:right}#orderDetails table tfoot
78
+ tr.changeOrder{display:none}#orderDetails
79
+ .sideMessage{width:120px}}@media only screen and (max-width: 767px){#orderDetails{}#orderDetails
80
+ table{border-bottom:1px solid #c5d9e1;border-collapse:separate;background-color:#e7f1f5}#orderDetails table thead
81
+ tr.totalRow{background-color:#e7f1f5}#orderDetails.css3 table thead
82
+ tr.totalRow{-webkit-transition:background-color 0.5s ease-in-out;-moz-transition:background-color 0.5s ease-in-out;-ms-transition:background-color 0.5s ease-in-out;-o-transition:background-color 0.5s ease-in-out;transition:background-color 0.5s ease-in-out;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}#orderDetails table.highlight thead
83
+ tr.totalRow{background-color:#8cdbf8}#orderDetails.css3 table.highlight thead
84
+ tr.totalRow{-webkit-transition:background-color 0.2s ease-in-out;-moz-transition:background-color 0.2s ease-in-out;-ms-transition:background-color 0.2s ease-in-out;-o-transition:background-color 0.2s ease-in-out;transition:background-color 0.2s ease-in-out;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}#orderDetails table.open.highlight thead
85
+ tr.totalRow{background-color:#e7f1f5}#orderDetails table tfoot tr.totalRow,
86
+ #orderDetails table.highlight tfoot
87
+ tr.totalRow{background-color:#e7f1f5}#orderDetails table.highlight tfoot
88
+ tr.totalRow{background-color:#8cdbf8}#orderDetails table tr th,
89
+ #orderDetails table tr
90
+ td{height:24px;padding-top:6px;padding-bottom:6px;font-size:18px;line-height:24px;border:none}#orderDetails table
91
+ th{padding-right:5px;padding-left:20px}.rtl #orderDetails table
92
+ th{padding-left:5px;padding-right:20px}#orderDetails table thead
93
+ th{padding-right:20px}.rtl #orderDetails table thead
94
+ th{padding-left:20px}#orderDetails table
95
+ td{padding-right:20px}.rtl #orderDetails table
96
+ td{padding-left:20px}#orderDetails table thead tr th,
97
+ #orderDetails table thead tr
98
+ td{padding-top:10px;padding-right:20px;padding-bottom:9px;font-size:18px;font-weight:600;line-height:24px}.rtl #orderDetails table thead tr th,
99
+ .rtl #orderDetails table thead tr
100
+ td{padding-left:20px}#orderDetails table thead tr.totalRow
101
+ .yourOrder{font-size:18px;font-weight:600}#orderDetails table thead tr.totalRow th .yourOrder .icon:before{content:url("../images/icons/icons-sprite.png");left: -91px;top: -129px;position:relative}#orderDetails table thead tr.totalRow th .yourOrder
102
+ .icon{overflow:hidden;display:inline-block;width:14px;height:7px;margin:10px
103
+ 0 0 6px;vertical-align:top;*background:url("../images/icons/icons-sprite.png") no-repeat -92px -129px}.rtl #orderDetails table thead tr.totalRow th .yourOrder
104
+ .icon{margin:10px
105
+ 6px 0 0}#orderDetails table.open tr.totalRow th .yourOrder .icon:before{content:url("../images/icons/icons-sprite.png");left: -210px;top: -129px;position:relative}#orderDetails table.open tr.totalRow th .yourOrder
106
+ .icon{background-position: -211px -129px}#orderDetails table thead tr th
107
+ .orderNumber{float:right}.rtl #orderDetails table thead tr th
108
+ .orderNumber{float:left}#orderDetails table thead tr th
109
+ .changeOrder{display:none}#orderDetails table thead tr th
110
+ span.totalPrice{display:inline-block;float:right}.rtl #orderDetails table thead tr th
111
+ span.totalPrice{float:left}#orderDetails table thead tr th
112
+ span.totalPrice{opacity:1}#orderDetails.css3 table thead tr th
113
+ span.totalPrice{filter:alpha(opacity=100);-webkit-transition:opacity 0.4s ease-in-out;-moz-transition:opacity 0.4s ease-in-out;-ms-transition:opacity 0.4s ease-in-out;-o-transition:opacity 0.4s ease-in-out;transition:opacity 0.4s ease-in-out;-webkit-transition-delay:0.2s;-moz-transition-delay:0.2s;-ms-transition-delay:0.2s;-o-transition-delay:0.2s;transition-delay:0.2s}#orderDetails table.open thead tr th
114
+ span.totalPrice{opacity:0;filter:alpha(opacity=0)}#orderDetails.css3 table.open thead tr th
115
+ span.totalPrice{-webkit-transition:opacity 0.4s ease-in-out;-moz-transition:opacity 0.4s ease-in-out;-ms-transition:opacity 0.4s ease-in-out;-o-transition:opacity 0.4s ease-in-out;transition:opacity 0.4s ease-in-out;-webkit-transition-delay:0.1s;-moz-transition-delay:0.1s;-ms-transition-delay:0.1s;-o-transition-delay:0.1s;transition-delay:0.1s}#orderDetails table tbody,
116
+ #orderDetails table
117
+ tfoot{opacity:0;filter:alpha(opacity=0)}#orderDetails.css3 table tbody,
118
+ #orderDetails.css3 table
119
+ tfoot{-webkit-transition:opacity 0.3s ease-in-out;-moz-transition:opacity 0.3s ease-in-out;-ms-transition:opacity 0.3s ease-in-out;-o-transition:opacity 0.3s ease-in-out;transition:opacity 0.3s ease-in-out;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}#orderDetails table tbody tr th,
120
+ #orderDetails table tbody tr td,
121
+ #orderDetails table tfoot tr th,
122
+ #orderDetails table tfoot tr
123
+ td{height:0px;line-height:0px;padding-top:0px;padding-bottom:0px;overflow:hidden}#orderDetails.css3 table tbody tr th,
124
+ #orderDetails.css3 table tbody tr td,
125
+ #orderDetails.css3 table tfoot tr th,
126
+ #orderDetails.css3 table tfoot tr
127
+ td{-webkit-transition:height 0.3s, line-height 0.3s, padding-top 0.3s, padding-bottom 0.3s ease-in-out;-moz-transition:height 0.3s, line-height 0.3s, padding-top 0.3s, padding-bottom 0.3s ease-in-out;-ms-transition:height 0.3s, line-height 0.3s, padding-top 0.3s, padding-bottom 0.3s ease-in-out;-o-transition:height 0.3s, line-height 0.3s, padding-top 0.3s, padding-bottom 0.3s ease-in-out;transition:height 0.3s, line-height 0.3s, padding-top 0.3s, padding-bottom 0.3s ease-in-out;-webkit-transition-delay:0.2s;-moz-transition-delay:0.2s;-ms-transition-delay:0.2s;-o-transition-delay:0.2s;transition-delay:0.2s;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}#orderDetails table tbody.android2 tr th,
128
+ #orderDetails table tbody.android2 tr td,
129
+ #orderDetails table tfoot.android2 tr th,
130
+ #orderDetails table tfoot.android2 tr
131
+ td{display:none}#orderDetails table.open tbody,
132
+ #orderDetails table.open
133
+ tfoot{opacity:1;filter:alpha(opacity=100)}#orderDetails.css3 table.open tbody,
134
+ #orderDetails.css3 table.open
135
+ tfoot{-webkit-transition:opacity 0.2s ease-in-out;-moz-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;-o-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;-webkit-transition-delay:0.3s;-moz-transition-delay:0.3s;-ms-transition-delay:0.3s;-o-transition-delay:0.3s;transition-delay:0.3s;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}#orderDetails table.open tbody tr th,
136
+ #orderDetails table.open tbody tr td,
137
+ #orderDetails table.open tfoot tr th,
138
+ #orderDetails table.open tfoot tr
139
+ td{height:24px;line-height:24px;padding-top:6px}#orderDetails.css3 table.open tbody tr th,
140
+ #orderDetails.css3 table.open tbody tr td,
141
+ #orderDetails.css3 table.open tfoot tr th,
142
+ #orderDetails.css3 table.open tfoot tr
143
+ td{-webkit-transition:height 0.3s, line-height 0.3s ease-in-out;-moz-transition:height 0.3s, line-height 0.3s ease-in-out;-ms-transition:height 0.3s, line-height 0.3s ease-in-out;-o-transition:height 0.3s, line-height 0.3s ease-in-out;transition:height 0.3s, line-height 0.3s ease-in-out;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}#orderDetails table.open tbody.android2 tr th,
144
+ #orderDetails table.open tbody.android2 tr td,
145
+ #orderDetails table.open tfoot.android2 tr th,
146
+ #orderDetails table.open tfoot.android2 tr
147
+ td{display:table-cell}#orderDetails table.open tbody tr th,
148
+ #orderDetails table.open tbody tr
149
+ td{padding-bottom:6px}#orderDetails table.open tfoot tr th,
150
+ #orderDetails table.open tfoot tr
151
+ td{padding-bottom:10px}#orderDetails table tfoot
152
+ tr.vatMessageRow{display:table-row}#orderDetails table tfoot tr.vatMessageRow
153
+ td{padding-left:20px;font-size:12px;font-weight:normal;text-align:left}.rtl #orderDetails table tfoot tr.vatMessageRow
154
+ td{text-align:right}#orderDetails table.open tfoot tr.vatMessageRow
155
+ td{line-height:18px}#orderDetails table tfoot tr.changeOrder
156
+ td{padding:0
157
+ 20px;font-size:14px;text-align:left}#orderDetails table.open tfoot tr.orderDetails
158
+ td{line-height:14px}.toggleOrder{display:block !important;position:absolute;background:transparent;border:0;top:0;left:0;width:100%;height:45px;outline-width:0;outline:none;z-index:998}button.toggleOrder::-moz-focus-inner{border:0;padding:0}button.toggleOrder:focus{border:2px
159
+ solid #c5d9e1}#orderDetails
160
+ .sideMessage{position:relative;width:auto;height:100%;margin: -15px 20px 25px}#orderDetails .sideMessage
161
+ .arrow{position:absolute;z-index:999}#orderDetails
162
+ .currencySelector{display:none}.vatTooltip{display:none}}body{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}footer
163
+ p{margin:0}p.dummyContent{font-size:14px;line-height:35px;color:#8BACDA}strong,b{font-weight:bold}small{font-size:0.79em}iframe{width:100%;overflow-y:hidden}.floatl{float:left}.floatr{float:right}.hidden{display:none}.noTablet{display:block}.noMobile{display:block}.mobile
164
+ .noMobile{display:none !important}.noDesktop{display:none}.pageView{display:none}#loader{height:280px;background-repeat:no-repeat;background-position:50% 50%}#overlayBg{display:none;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background-color:#e7f1f5;opacity:0.9;filter:alpha(opacity=90);z-index:997}.overlayHiddenContent{display:none !important}.overlayMessage{display:none;position:absolute;top:200px;left:50%;width:296px;padding:28px
165
+ 34px;margin:0
166
+ 0 0 -180px;background-color:#fff;z-index:998;border:1px
167
+ solid white}p.notification{position:relative;margin-bottom:35px;padding:14px
168
+ 22px 16px 60px;overflow:hidden;border:1px
169
+ solid white}.rtl
170
+ p.notification{padding:14px
171
+ 60px 16px 22px}.notification.alert{background-color:#fcdcde}.notification.warning{background-color:#ffeed9}.notification.success{background-color:#ecf5d9}.notification.info{background-color:#d9f3fd}.notification strong,
172
+ .notification
173
+ b{display:block}.notification
174
+ .icon{display:block;height:25px;width:27px;position:absolute;left:16px;overflow:hidden}.notification
175
+ .icon{*background:url("../images/backgrounds/misc-elements-sprite.png") no-repeat}.notification .icon:before{content:url("../images/backgrounds/misc-elements-sprite.png");position:relative;left: -34px}.rtl .notification
176
+ .icon{right:16px}.notification.alert .icon:before{top: -191px}.notification.warning .icon:before{top: -220px}.notification.info .icon:before{top: -248px}.notification.success .icon:before{left:0px;top: -248px}.notification.alert
177
+ .icon{*background-position: -34px -191px}.notification.warning
178
+ .icon{*background-position: -34px -220px}.notification.info
179
+ .icon{*background-position: -34px -248px}.notification.success
180
+ .icon{*background-position: -64px -248px}.messageContainer
181
+ p{position:relative;margin-bottom:19px;padding-left:60px;padding-top:4px;font-weight:200;font-size:24px;line-height:30px;min-height:37px}.rtl .messageContainer
182
+ p{padding-left:0;padding-right:60px}.messageContainer p
183
+ strong{font-weight:600}.messageContainer
184
+ .last{margin-bottom:43px}.messageContainer
185
+ .icon{display:block;position:absolute;left:0;top:0;width:41px;height:41px;overflow:hidden}.messageContainer
186
+ .icon{*background:url("../images/backgrounds/misc-elements-sprite.png") no-repeat}.messageContainer .icon:before{content:url("../images/backgrounds/misc-elements-sprite.png");position:relative;left: -19px}.rtl .messageContainer
187
+ .icon{left:auto;right:0}* html .messageContainer
188
+ .icon{margin-left: -60px}.messageContainer .successful .icon:before{top: -444px}.messageContainer .email .icon:before{top: -485px}.messageContainer .pending .icon:before{top: -526px}.messageContainer .error .icon:before{top: -567px}.messageContainer .successful
189
+ .icon{*background-position: -19px -444px}.messageContainer .email
190
+ .icon{*background-position: -19px -485px}.messageContainer .pending
191
+ .icon{*background-position: -19px -526px}.messageContainer .error
192
+ .icon{*background-position: -19px -567px}.messageContainer
193
+ .button{float:right}.pagination{height:100%;overflow:hidden}.pagination
194
+ .next{float:left;text-align:left;margin-right:30px}.rtl .pagination
195
+ .next{float:left;text-align:left}.pagination
196
+ .prev{float:left;text-align:left}.rtl .pagination
197
+ .prev{float:right;text-align:right}.confirmationChild
198
+ .extraMargin{margin-bottom:27px}.confirmationParent
199
+ .messageContainer{margin-bottom:41px}.confirmationParent
200
+ iframe{width:100%}.confirmationParent
201
+ .pagination{padding-top:26px}.confirmationChild
202
+ body{background-color:#e7f1f5;padding:30px;padding-top:22px;color:#333534}.confirmationChild
203
+ p.highlight{font-size:16px;font-weight:600;margin-bottom:23px}.confirmationChild
204
+ table{line-height:24px;margin-bottom:22px}.confirmationChild table tr
205
+ td{font-weight:600}.confirmationChild table tr td:first-child{width:240px;font-weight:400}.currencySelectMobile{display:none}.currencySelect .fieldRow.inline
206
+ select{padding-right:0px;margin-bottom:20px}.currencySelect select,
207
+ .currencySelect .fieldRow.inline
208
+ select{width:240px}.currencySelect
209
+ .inline{width:202px}@media only screen and (max-width: 959px){.messageContainer
210
+ .icon{width:35px;height:35px}.messageContainer .icon:before{left: -25px}.messageContainer .successful .icon:before{top: -608px}.messageContainer .email .icon:before{top: -643px}.messageContainer .pending .icon:before{top: -678px}.messageContainer .error .icon:before{top: -713px}.messageContainer .successful
211
+ .icon{*background-position: -25px -608px}.messageContainer .email
212
+ .icon{*background-position: -25px -643px}.messageContainer .pending
213
+ .icon{*background-position: -25px -678px}.messageContainer .error
214
+ .icon{*background-position: -25px -713px}}@media only screen and (min-width: 768px) and (max-width: 959px){.noDesktop{display:block}.noMobile{display:block}.noTablet{display:none}.messageContainer
215
+ p{padding-left:48px;font-size:18px;line-height:24px}.rtl .messageContainer
216
+ p{padding-left:0px;padding-right:48px}.currencySelect .customSelectElement,
217
+ .currencySelect
218
+ .styledSelect{width:180px}.currencySelect select,
219
+ .currencySelect .fieldRow.inline
220
+ select{width:180px}.currencySelect
221
+ .inline{width:142px}}@media only screen and (max-width: 767px){.noDesktop{display:block}.noTablet{display:block}.noMobile{display:none}header{display:none}#loader{height:200px;width:280px;background-size:60px}.overlayMessage{left:20px;right:20px;width:auto;padding:20px
222
+ 12px;margin:0}.currencySelect{display:none}.currencySelectMobile{display:block}.currencySelectMobile select,
223
+ .currencySelectMobile .fieldRow.inline
224
+ select{width:75px}.currencySelectMobile
225
+ .fieldRow{float:right;margin-bottom:20px}.rtl .currencySelectMobile
226
+ .fieldRow{float:left;margin-bottom:20px}.currencySelectMobile
227
+ .styledSelect{width:75px !important;margin-right:4px}.rtl .currencySelectMobile
228
+ .styledSelect{margin-left:4px}.rtl .currencySelectMobile
229
+ span.styledSelect.inline{padding-left:0}p.notification{padding:13px
230
+ 22px 13px 45px}.notification
231
+ .icon{left:11px}.messageContainer
232
+ p{min-height:31px;margin-bottom:13px;padding-left:47px;font-size:14px;font-weight:400;line-height:16px}.rtl .messageContainer
233
+ p{padding-left:0;padding-right:47px}.messageContainer{margin-bottom:20px;clear:both}.messageContainer p strong,
234
+ .messageContainer p
235
+ b{font-weight:400}.messageContainer
236
+ .last{margin-bottom:21px}.messageContainer
237
+ a.button{float:none}.pagination{padding:0;display:table;width:100%}.pagination .next,
238
+ .rtl .pagination
239
+ .next{display:table-header-group;text-align:auto;float:none !important;width:100%}.pagination .prev,
240
+ .rtl .pagination
241
+ .prev{display:table-row-group;text-align:auto;width:100%;margin-top:13px;margin-bottom:18px}.pagination .prev:first-child{margin-top:13px;margin-bottom:18px}.confirmationParent
242
+ .messageContainer{margin-bottom:28px}.confirmationParent .messageContainer
243
+ p{font-weight:400}.confirmationParent
244
+ iframe{width:100%}.confirmationParent .orderDetails
245
+ table{width:100%;color:#333534;margin-bottom:21px}.confirmationParent .orderDetails
246
+ thead{font-size:18px}.confirmationParent .orderDetails
247
+ .total{font-weight:600}.confirmationParent .orderDetails td,
248
+ .confirmationParent .orderDetails
249
+ th{border-top:1px solid #e7f1f5;padding:11px
250
+ 0}.confirmationParent .orderDetails thead td,
251
+ .confirmationParent .orderDetails thead
252
+ th{border-top:none}.confirmationParent .orderDetails
253
+ th{text-align:left}.confirmationParent .orderDetails
254
+ td{text-align:right}.confirmationParent .orderDetails
255
+ .discountRow{color:#EC008C}.confirmationParent
256
+ .pagination{padding-top:26px}.confirmationParent
257
+ .sideContent{display:none}.mobile.confirmationChild
258
+ body{background-color:#e7f1f5;padding:12px;padding-top:22px;padding-bottom:24px;color:#333534}.mobile.confirmationChild
259
+ p.highlight{font-size:14px}.mobile.confirmationChild
260
+ .extraMargin{margin-bottom:0}.mobile.confirmationChild
261
+ table{line-height:24px;margin-bottom:22px}.mobile.confirmationChild table tr
262
+ td{font-weight:600;display:block}.confirmationChild table tr td:first-child{width:240px;font-weight:400}}.fieldRow.correctInput .icon,
263
+ .fieldRow.error
264
+ .icon{overflow:hidden}.fieldRow.correctInput .icon:before{content:url("../images/backgrounds/misc-elements-sprite.png");left: -33px;top: -2px;position:relative;float:left}.fieldRow.error .icon:before{content:url("../images/backgrounds/misc-elements-sprite.png");left: -33px;top: -61px;position:relative}.fieldRow.error .inlineError
265
+ .icon{position:absolute;display:block;left: -1px;top: -2px;float:left}.fieldRow.error .inlineError .icon:before{content:url("../images/backgrounds/misc-elements-sprite.png");left: -33px;top: -61px;position:relative}.radioList label
266
+ .icon{overflow:hidden}.radioList label .icon:before{left:16px;top: -68px;content:url("../images//label-bg.png");position:relative}.fieldRow.radioList.correctInput label .icon:before{left:16px;top: -68px;content:url("../images//label-bg.png");position:relative}.fieldRow.radioList.correctInput label.checked .icon:before{left:16px;top:0;content:url("../images//label-bg.png");position:relative}.radioList label.checked .icon:before{left:16px;top:0;content:url("../images//label-bg.png");position:relative}.checkbox label
267
+ .icon{overflow:hidden}.checkbox label .icon:before{top: -265px;content:url("../images//label-bg.png");position:relative}.checkbox.hover .icon:before,
268
+ .checkbox.focus .icon:before{top: -300px;content:url("../images//label-bg.png")}.checkbox label.checked .icon:before{top: -265px;left: -30px;content:url("../images//label-bg.png")}.checkbox.hover label.checked .icon:before,
269
+ .checkbox.focus label.checked .icon:before{top: -300px;left: -30px;content:url("../images//label-bg.png")}.checkbox.error label .icon:before{top: -395px;left:0;content:url("../images//label-bg.png")}.checkbox.error.hover label .icon:before,
270
+ .checkbox.error.focus label .icon:before{top: -427px;left:0;content:url("../images//label-bg.png")}.dropdownArrow{position:absolute;display:block;width:100%;text-align:right}.dropdownArrow:before{content:url("../images/backgrounds/misc-elements-sprite.png");right:4px;top: -61px;position:relative;width:100%}span.hasLogo .dropdownArrow:before,
271
+ span.hasFlag .dropdownArrow:before{content:url("../images/backgrounds/misc-elements-sprite.png")}.currencySelect .styledSelect.inline .dropdownArrow:before{content:url("../images/backgrounds/misc-elements-sprite.png")}.currencySelectMobile .styledSelect.inline .dropdownArrow:before{top: -61px;content:url("../images/backgrounds/misc-elements-sprite.png")}
272
+ @media only screen and (max-width: 767px){.radioList label .icon:before{left:16px;top: -202px}.radioList label.checked .icon:before{left:16px;top: -142px;position:relative}}button{font-family:inherit}.fieldRow
273
+ label{padding-bottom:8px}.shortInputsWrapper{padding-bottom:20px;overflow:hidden}.shortInputsWrapper
274
+ label{margin-bottom:0}.fieldRow{position:relative;padding:0
275
+ 0 20px 0;clear:both;z-index:5}.fieldRow.genericMessageContainer{position:absolute;display:none;z-index:11}.fieldRow.genericMessageContainer.error
276
+ .arrow{display:block;left:9px;top:0}.fieldRow.genericMessageContainer.error
277
+ .message.error{display:block;left:29px;top:0}.fieldRow.genericMessageContainer.tip
278
+ .arrow{display:block;left:10px;top:0}.fieldRow.genericMessageContainer.tip
279
+ .message.tip{display:block;left:29px;top:0}.shortInputsWrapper.error
280
+ .fieldRow{padding:0}.fieldRow.select{min-height:61px}.fieldRow.active{z-index:10}.fieldRow:last-child{}.fieldRow
281
+ label{display:block;float:none}.fieldRow
282
+ input{position:relative;width:253px;height:33px;line-height:33px;padding:1px
283
+ 10px;border:1px
284
+ solid #00AFF0;margin:1px;font-size:14px;background:transparent;outline:none}.fieldRow input:focus,
285
+ .fieldRow input:hover{border:2px
286
+ solid #00AFF0;margin:0}.error input:focus,
287
+ .error input:hover{margin:0;border:2px
288
+ solid #E81123}.correctInput input:focus,
289
+ .correctInput input:hover,
290
+ .shortInput.correctInput input:focus,
291
+ .shortInput.correctInput input:hover{margin:0;border:2px
292
+ solid #00AFF0}.sideContent .fieldRow:last-child{}.shortInput
293
+ input{width:70px}.error input,
294
+ .correctInput
295
+ input{width:228px;padding:1px
296
+ 35px 1px 10px}.rtl .error input,
297
+ .rtl .correctInput
298
+ input{width:228px;padding:1px
299
+ 10px 1px 35px}.shortInput.error input,
300
+ .shortInput.correctInput
301
+ input{width:46px}.fieldRow
302
+ .icon{position:absolute;width:30px;height:30px;top:32px;*background-image:url("../images/backgrounds/misc-elements-sprite.png")}.fieldRow
303
+ .icon{left:242px}.rtl .fieldRow
304
+ .icon{right:242px}.fieldRow.shortInput
305
+ .icon{left:61px}.fieldRow.shortInput
306
+ .icon{right:61px}.fieldRow.error .icon,
307
+ .fieldRow.correctInput
308
+ .icon{display:inline}form .correctInput
309
+ .icon{background-position: -33px -2px}form .shortInput.correctInput
310
+ .icon{background-position: -32px -2px}form .error
311
+ .icon{background-position: -34px -62px}form .error
312
+ input{border:1px
313
+ solid #E81123}form .disabled
314
+ input{cursor:not-allowed;color:#BDD1DC;border:1px
315
+ solid #e4eef2 !important;margin:0}.fieldRow .message,
316
+ .shortInputsWrapper
317
+ .message{display:none;position:absolute;min-width:270px;padding:7px
318
+ 19px 10px;line-height:18px;zoom:1;z-index:2;overflow:hidden}.fieldRow
319
+ .message{left:300px;top:26px}.rtl .fieldRow
320
+ .message{right:300px}.fieldRow .message strong,
321
+ .shortInputsWrapper .message
322
+ strong{font-weight:600}.fieldRow .message strong,
323
+ .fieldRow .message span,
324
+ .shortInputsWrapper .message
325
+ strong{display:block;padding-bottom:6px}.fieldRow .message span:last-child{padding-bottom:0}.fieldRow.shortInput
326
+ .message{left:120px}.fieldRow.select.shortInput
327
+ .message{left:140px}.rtl .fieldRow.shortInput
328
+ .message{right:120px}.rtl .fieldRow.select.shortInput
329
+ .message{right:140px}.fieldRow.inlineSelect{float:left;margin-right:29px}.mobile
330
+ .fieldRow.inlineSelect{padding-bottom:0}.shortInputsWrapper
331
+ .fieldRow{padding-bottom:0}.shortInputsWrapper.shortInputerror{padding-bottom:20px}.mobile
332
+ .shortInputsWrapper.shortInputerror{padding-bottom:0}.fieldRow.noClear{clear:none}.fieldRow.noRightMargin{margin-right:0}.fieldRow
333
+ .arrow{position:absolute;width:30px;height:30px;top:25px;background-image:url("../images/backgrounds/misc-elements-sprite.png");background-position:0 0;display:none}.fieldRow .arrow::before{content:"";display:block;width:14px;height:14px;background-color:#d9f3fD;border-color:#d9f3fd;border-style:solid;border-left-width:1px;border-top-width:1px;border-right-width:0px;border-bottom-width:0px;left:25px;top:13px;position:relative;-webkit-transform:translate(-12px, 0px) rotate(-45deg) skew(10deg, 10deg);-moz-transform:translate(-12px, 0px) rotate(-45deg) skew(10deg, 10deg);-ms-transform:translate(-12px, 0px) rotate(-45deg) skew(10deg, 10deg);-o-transform:translate(-12px, 0px) rotate(-45deg) skew(10deg, 10deg);transform:translate(-12px, 0px) rotate(-45deg) skew(10deg, 10deg);z-index:3}.rtl .fieldRow.shortInput.error
334
+ .arrow{right:96px}.rtl .fieldRow.shortInput.tip
335
+ .arrow{right:97px}.fieldRow.select.shortInput.error
336
+ .arrow{background-position: -32px -85px;left:120px}.rtl .fieldRow.select.shortInput.error
337
+ .arrow{background-position: -2px -85px}.fieldRow.shortInput.tip
338
+ .arrow{background-position: -32px -115px}.fieldRow.error
339
+ .message.error{display:none;background-color:#F6D8DC;min-width:230px;padding:10px
340
+ 20px 11px 20px}.fieldRow.error .arrow::before{background-color:#F6D8DC;border-color:#F6D8DC}.select.error
341
+ .message.error{padding:9px
342
+ 20px 10px 20px}.fieldRow.combinedError{display:none}.fieldRow.active.combinedError{display:block}.fieldRow.error
343
+ .arrow{display:none;background-position: -32px -85px;left:280px}.fieldRow.short.error .arrow,
344
+ .fieldRow.shortInput.error
345
+ .arrow{left:100px}.fieldRow.dualInput.error
346
+ .arrow{left:280px}.rtl .fieldRow.short.error
347
+ .arrow{right:99px}.rtl .fieldRow.dualInput.error
348
+ .arrow{right:280px}.rtl .fieldRow.select.short.error
349
+ .arrow{right:116px}.rtl .fieldRow.select.dualInput.error
350
+ .arrow{right:277px}.rtl .fieldRow.error
351
+ .arrow{display:none;background-position: -2px -85px;right:277px}.fieldRow.error.active .message.error,
352
+ .fieldRow.error.active
353
+ .arrow{display:block}.fieldRow.tip
354
+ .message.tip{background-color:#D9F3FD;min-width:230px;padding:9px
355
+ 20px 10px 20px;display:none}.fieldRow.tip
356
+ .arrow{background-position: -32px -115px;left:280px;display:none}.rtl .fieldRow.tip
357
+ .arrow{background-position: -2px -115px;right:277px;display:none}.fieldRow.tip.active
358
+ .arrow{display:block}.fieldRow.tip.active
359
+ .message.tip{display:block}.radioList{font-weight:600;font-size:36px !important;padding-bottom:0px}.radioList
360
+ li.radioLink{height:23px;padding-top:6px;line-height:23px}.radioList .radioLink
361
+ a{padding:0;font-size:16px;line-height:23px;font-weight:400;vertical-align:top}.radioList
362
+ label{position:relative;display:block;min-height:71px;line-height:71px;padding:0
363
+ 10px 0 60px;border-bottom:solid 1px #e7f1f5;cursor:pointer;cursor:hand;background-color:#fff;font-weight:400;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.rtl .radioList
364
+ label{padding:0
365
+ 60px 0 10px}.radioList
366
+ ul{padding-left:2px;padding-right:2px;padding-top:1px;padding-bottom:1px}.radioList
367
+ ul.focus{padding:0px}.radioList ul.focus li
368
+ label{border-color:#e4eef2;border-style:solid}.radioList ul.focus li
369
+ label{border-width:0px 2px 1px 2px}.radioList ul.focus li.first
370
+ label{border-width:2px 2px 1px 2px;border-bottom-color:#E7F1F5}.radioList ul.focus li.last
371
+ label{border-width:0px 2px 2px 2px;border-bottom-color:#E7F1F5}.radioList ul.focus li.one
372
+ label{border-width:2px 2px 2px 2px;border-bottom-color:#E7F1F5}.radioList ul.focus li.radioLink
373
+ a{border:none;padding-left:2px}.rtl .radioList ul.focus li.radioLink
374
+ a{padding-right:2px}.radioList ul.focus
375
+ li.radioLink{padding-top:5px;padding-bottom:1px}.radioList
376
+ label.hover{background-color:#e4eef2}.radioList label.disabled:hover{background-color:white}.radioList label.disabled
377
+ .logo{border-color:#e4eef2}.radioList label.disabled
378
+ .logo{cursor:not-allowed;filter:alpha(opacity=40);opacity:0.4}.radioList label.disabled
379
+ span.discount{cursor:not-allowed;filter:alpha(opacity=40);opacity:0.4}.radioList label.disabled .text,
380
+ .radioList label.disabled
381
+ .description{color:#BDD1DC}*html .radioList
382
+ label{height:10px}.radioList label.disabled
383
+ .radioUnavailable{float:right;margin-top: -30px;font-size:12px;line-height:19px;color:#E82E46;padding-bottom:5px}.paymentMethods
384
+ label{padding-left:166px}.rtl .paymentMethods
385
+ label{padding-right:166px}.radioList label
386
+ input{position:absolute;border:none;top:50%;left: -2000px;margin-top: -15px}.rtl .radioList label
387
+ input{right: -2000px;display:none;display:block\0/}*:first-child+html.rtl .radioList label
388
+ input{display:none !important}.radioList label
389
+ .icon{position:absolute;top:50%;left:0;width:60px;height:70px;margin: -36px 0 0 0;*background:url("../images//label-bg.png") no-repeat 16px -68px}.rtl .radioList label
390
+ .icon{right:0}.radioList label.special
391
+ .discount{padding-right:140px;background-image:url("../images/backgrounds/radio-special.png");background-repeat:no-repeat;background-position:140px 50%}.rtl .radioList label.special
392
+ .discount{padding-right:140px;background-position: -130px 50%}.radioList label.special
393
+ span.discount{position:absolute;display:table-cell;top:0;right:0;width:130px;height:100%;color:#fff}.rtl .radioList label.special
394
+ span.discount{left:0;right:auto}.radioList label.special span.discount
395
+ span{position:absolute;top:50%;*top:35px;right:0;display:block;width:95px;height:36px;margin: -18px 0 0 0;padding:0
396
+ 10px 0 0;font-size:36px;line-height:36px;font-weight:400;text-align:right}.rtl .radioList label.special span.discount
397
+ span{right:auto;left:0;padding:0
398
+ 0 0 10px;text-align:left}.radioList
399
+ label.checked{background-color:#00aff0;color:#fff}.radioList label.checked
400
+ .icon{*background-position:16px 0}.radioList
401
+ label.disabled{cursor:not-allowed}.radioList label.disabled
402
+ .icon{cursor:not-allowed;background-position: -28px -68px}.radioList ul li:first-child
403
+ label{border-top:solid 1px #e7f1f5}.paymentMethods
404
+ .logo{position:absolute;display:block;top:50%;left:60px;width:83px;max-width:83px;max-height:47px;height:47px;line-height:47px;margin: -24px 0 0 0;border:1px
405
+ solid #00aff0;background-color:#fff;overflow:hidden;background-position:50% 50%;background-repeat:no-repeat}.rtl .paymentMethods
406
+ .logo{right:61px}.paymentMethods label.hover
407
+ .logo{margin: -25px 0 0 -1px;border-width:2px}.rtl .paymentMethods label.hover
408
+ .logo{margin: -25px -1px 0 0}.paymentMethods label.disabled:hover
409
+ .logo{margin: -24px 0 0 0;border-width:1px}.paymentMethods .logo
410
+ img{display:inline-block;width:100%;vertical-align:text-bottom;-ms-interpolation-mode:bicubic}.withDescription span.text,
411
+ .withDescription
412
+ span.description{display:block;line-height:20px;font-size:16px;font-weight:600;color:#666;overflow:hidden;text-overflow:ellipsis}.withDescription
413
+ span.text{padding-top:12px;color:#333534}.withDescription
414
+ span.description{padding-bottom:12px}.withDescription .checked span.text,
415
+ .withDescription .checked
416
+ span.description{color:#fff}#termsOfService{display:none}.checkbox{position:relative}.checkbox input,
417
+ .error .checkbox
418
+ input{position:absolute;top:0;left: -2000px;vertical-align:top}.rtl .checkbox input,
419
+ .rtl .error .checkbox
420
+ input{right: -2000px;display:none;display:block\0/}*:first-child+html.rtl .checkbox
421
+ input{display:none !important}.checkbox
422
+ label{width:auto;font-size:16px;padding-left:35px;overflow:hidden}.rtl .checkbox
423
+ label{padding-right:35px}.checkbox
424
+ label.disabled{cursor:not-allowed;color:#BDD1DC}.checkbox label
425
+ .icon{position:absolute;top:0;left:0;float:left;width:25px;height:25px;margin:0
426
+ 0 0 0;*background:url("../images//label-bg.png") no-repeat 0 -265px}.rtl .checkbox label
427
+ .icon{right:0;float:right}.checkbox label.checked
428
+ .icon{*background-position: -30px -265px}.checkbox.error label
429
+ .icon{*background-position:0 -395px}.checkbox.error.hover label .icon,
430
+ .checkbox.error.focus label
431
+ .icon{*background-position:0 -427px}.checkbox label.disabled
432
+ .icon{*background-position:0 -265px}.checkbox.hover label .icon,
433
+ .checkbox.focus label
434
+ .icon{*background-position: -0 -300px}.checkbox.hover label.checked .icon,
435
+ .checkbox.focus label.checked
436
+ .icon{*background-position: -30px -300px}.checkbox label.disabled .icon,
437
+ .checkbox.hover label.disabled
438
+ .icon{*background-position: -60px -265px}.checkbox.checked label.disabled
439
+ .icon{*background-position: -90px -265px}.checkbox label
440
+ strong{display:block;padding:2px
441
+ 0 5px;font-weight:600;font-size:16px}.checkbox label
442
+ .text{font-weight:400;font-size:16px;line-height:20px}.checkbox
443
+ .inlineError{display:none}.checkbox.error
444
+ .inlineError{padding-left:35px;color:#e81123;display:block;padding-top:3px;position:relative}.rtl .checkbox.error
445
+ .inlineError{padding-left:0px;padding-right:35px}select.customSelectElement{position:relative;float:left;z-index:10;width:269px;height:35px;line-height:35px;margin:1px;z-index:10;opacity:0;-moz-opacity:0;filter:alpha(opacity=0);-khtml-appearance:none}.rtl
446
+ select.customSelectElement{float:right}*html .error
447
+ select{color:#f00}select.short{width:119px}.fieldRow.inline
448
+ select{width:auto}select[disabled=disabled]{cursor:not-allowed}span.styledSelect{position:absolute;top:auto;float:left;left:0;width:242px;padding-right:25px;height:33px;line-height:33px;text-indent:11px;*background:#fff url("../images/backgrounds/misc-elements-sprite.png") no-repeat right -273px;cursor:default;z-index:1;border:solid 1px #00aff0;font-size:16px;font-weight:400;overflow:hidden;margin:1px;white-space:nowrap;text-overflow:ellipsis}.rtl
449
+ span.styledSelect{float:right;right:0;background-position: -31px -273px}span.styledSelect.short{width:92px}.short
450
+ .customSelectElement{width:92px}span.styledSelect.inline{display:inline-block;font-size:16px;padding-right:35px;border:2px
451
+ solid #fff;color:#00aff0}.rtl
452
+ span.styledSelect.inline{padding-right:0;padding-left:35px}.fieldRow.inline.hover
453
+ span.styledSelect{text-decoration:underline;border:1px
454
+ solid #fff;margin:2px}.fieldRow.inline.active
455
+ span.styledSelect{margin:1px;border:solid 2px #00aff0}span.hasLogo,span.hasFlag{text-indent:60px}.hasLogo .logo, .hasFlag
456
+ .flag{display:block;position:absolute;top:4px;height:23px;border:1px
457
+ solid #A2C5D3}.hasFlag .flag:before{content:url("../images/flags/country-flags-37x23.png");left: -60px}.hasFlag
458
+ .flag{*background-image:url("../images/flags/country-flags-37x23.png");left:9px;width:37px;overflow:hidden}.hasLogo
459
+ .logo{background-size:100% 100%;background-repeat:no-repeat;left:7px;width:41px}.rtl .hasLogo
460
+ .logo{right:12px}.fieldRow .styledSelect.active,
461
+ .fieldRow
462
+ .styledSelect.hover{margin:0;border:solid 2px #00aff0}.fieldRow .styledSelect.inline.active,
463
+ .fieldRow
464
+ .styledSelect.inline.hover{margin:1px}.fieldRow.error .styledSelect.active,
465
+ .fieldRow.error
466
+ .styledSelect.hover{margin:0;border:solid 2px #e81123}.error
467
+ span.styledSelect{border:1px
468
+ solid #e81123;background-position:right -371px;margin:1px}.rtl .error
469
+ span.styledSelect{background-position: -8px -401px}.disabled
470
+ span.styledSelect{border:1px
471
+ solid #e4eef2;background-position:right -340px;color:#BDD1DC}.rtl .disabled
472
+ span.styledSelect{background-position: -31px -340px}.short.disabled
473
+ span.styledSelect{border:1px
474
+ solid #e4eef2;color:#BDD1DC}.dualInput.short span.styledSelect,
475
+ .dualInput.short
476
+ select{width:130px;top:0}.dualInput .second,
477
+ .dualInput
478
+ .first{position:absolute}.dualInput
479
+ .second{left:143px}.rtl .dualInput
480
+ select{float:none}.rtl .dualInput
481
+ .second{right:138px}@media only screen and (min-width: 768px){.fieldRow
482
+ .message{border:1px
483
+ solid #d9f3fD}.fieldRow.error
484
+ .message{border:1px
485
+ solid #F6D8DC}}@media only screen and (max-width: 767px){.fieldRow.inline.hover
486
+ span.styledSelect{text-decoration:underline;border:1px
487
+ solid #fff;margin:1px}.radioList
488
+ li.radioLink{height:24px;padding-top:19px;line-height:24px}.radioList ul.focus
489
+ li.radioLink{padding-top:18px}.radioList{padding-bottom:18px;font-size:24px;color:#333534}.radioList
490
+ label{min-height:57px;line-height:57px;padding-left:61px}.rtl .radioList
491
+ label{padding-right:61px}.radioList label
492
+ .icon{width:52px;height:56px;margin-top: -28px;*background-position:16px -202px}.radioList label.checked
493
+ .icon{*background-position:16px -142px}.radioList label.disabled
494
+ .icon{background-position: -27px -202px}.radioList
495
+ label.special{padding-right:80px}.rtl .radioList
496
+ label.special{padding-left:80px;padding-right:61px}.radioList label.special
497
+ span.discount{width:80px;background-image:url("../images/backgrounds/radio-special-mobile.png")}.rtl .radioList label.special
498
+ span.discount{background-position: -80px 50%}.radioList label.special span.discount
499
+ span{width:65px;height:24px;margin: -12px 0 0 0;padding:0
500
+ 5px 0 0;font-size:22px;line-height:24px;font-weight:600}.rtl .radioList label.special span.discount
501
+ span{padding:0
502
+ 0 0 5px}.paymentMethods
503
+ label{min-height:61px;padding-left:117px}.rtl .paymentMethods
504
+ label{padding-right:117px}.paymentMethods label
505
+ .logo{left:52px;width:54px;height:37px;line-height:37px;margin-top: -19px}.rtl .paymentMethods label
506
+ .logo{right:52px;left:auto}.paymentMethods label.hover .logo,
507
+ .rtl .paymentMethods label.hover
508
+ .logo{margin-top: -20px}.paymentMethods label.disabled.hover .logo,
509
+ .rtl .paymentMethods label.disabled.hover
510
+ .logo{margin-top: -19px}.paymentMethods label .logo
511
+ img{display:inline-block;vertical-align:text-bottom}.withDescription span.text,
512
+ .withDescription
513
+ span.description{font-size:14px}.fieldRow .tip,
514
+ .tip .arrow,
515
+ .error
516
+ .arrow{display:none !important}.fieldRow .message,
517
+ .shortInputsWrapper
518
+ .message{width:auto;position:relative;left:0;top:10px;clear:both;margin-top:1px;margin-bottom:10px;padding:0;background:none !important;color:#e81123}.rtl .fieldRow .message,
519
+ .rtl .shortInputsWrapper
520
+ .message{right:0}.fieldRow .message
521
+ strong{padding-bottom:0}.fieldRow.shortInput .message,
522
+ .fieldRow.shortInput.error
523
+ .arrow{left:0}.rtl .fieldRow.shortInput .message,
524
+ .rtl .fieldRow.shortInput.error
525
+ .arrow{right:0}.fieldRow.error
526
+ .message.error{padding-left:0;padding-top:0;width:auto;display:block;padding:0;width:100%;visibility:visible;opacity:1}.fieldRow.select
527
+ span.error.message{display:none}.fieldRow.select.error
528
+ span.error.message{display:block}.fieldRow.shortInput.error
529
+ .arrow{background-position: -177px -147px}.fieldRow.shortInput.tip
530
+ .arrow{background-position: -177px -166px}.fieldRow.select.shortInput
531
+ .message{left:auto}.checkbox{}form .checkbox
532
+ input{position:absolute;left: -2000px;margin:0;padding:0}.rtl form .checkbox
533
+ input{right: -2000px}.checkbox
534
+ label{font-size:18px;line-height:21px}.checkbox label
535
+ .icon{background-position:0px -336px}.checkbox label.checked
536
+ .icon{background-position: -30px -336px}.checkbox.error label
537
+ .icon{background-position:0 -460px}.checkbox.error.hover label .icon,
538
+ .checkbox.error.focus label
539
+ .icon{background-position:0px -488px}.checkbox label.disabled
540
+ .icon{background-position:0 -265px}.checkbox.hover label .icon,
541
+ .checkbox.focus label
542
+ .icon{background-position: -0px -367px}.checkbox.hover label.checked .icon,
543
+ .checkbox.focus label.checked
544
+ .icon{background-position: -30px -367px}.checkbox label.disabled .icon,
545
+ .checkbox.hover label.disabled
546
+ .icon{background-position: -60px -336px}.checkbox.checked label.disabled
547
+ .icon{background-position: -90px -336px}.checkbox label
548
+ strong{padding:2px
549
+ 0 5px 0;font-size:14px;line-height:16px}.checkbox label
550
+ .text{font-size:14px;line-height:16px}.fieldRow .customSelectElement,
551
+ .fieldRow
552
+ .styledSelect{width:242px;padding-right:0;margin:1px}.fieldRow.error
553
+ .styledSelect{margin:1px}.fieldRow.short .customSelectElement,
554
+ .fieldRow.short .styledSelect,{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;-ms-box-sizing:inherit;box-sizing:inherit;height:33px;width:100%}.fieldRow.inline .customSelectElement,
555
+ .fieldRow.inline
556
+ .styledSelect{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;-ms-box-sizing:content-box;box-sizing:content-box;height:33px;margin:0px;padding-right:0px;width:100%}.fieldRow.inline.active
557
+ span.styledSelect{margin:0px}.fieldRow.short.active .styledSelect,{margin:0px}.fieldRow.short.error .styledSelect:active{margin:1px}.mobile
558
+ .genericMessageContainer{display:none}.shortInputsWrapper{padding-bottom:20px}.shortInputerror{padding-bottom:0}.fieldRow
559
+ .combinedError{margin-top:35px}}.rtl .radioList label .icon:before{top: -68px;left:77px}.rtl .radioList label.checked .icon:before{top:0px;left:77px}.rtl
560
+ h2.yourOrder{float:right}.rtl
561
+ .dropdownArrow{text-align:left}.rtl .dropdownArrow:before{right:auto;left: -32px}.rtl .checkbox .icon:before{direction:rtl;top: -265px}.rtl .checkbox label .icon:before{right:auto;left:95px}.rtl .checkbox label.checked .icon:before{right:auto;left:65px}.rtl .checkbox.hover .icon:before, .checkbox.focus .icon:before{top: -300px}.rtl .messageContainer .icon:before{left:0}.rtl button.tooltip:before{left:282px}.rtl button.tooltip:hover:before, .rtl button.tooltip:focus:before{left:264px}.rtl button.tooltip:active:before{left:246px}.rtl .tooltip-message .arrow::before{transform:translate(20px, -16px) rotate(45deg) skew(10deg, 10deg);-o-transform:translate(20px, -16px) rotate(45deg) skew(10deg, 10deg);-ms-transform:translate(20px, -16px) rotate(45deg) skew(10deg, 10deg);-moz-transform:translate(20px, -16px) rotate(45deg) skew(10deg, 10deg);-webkit-transform:translate(20px, -16px) rotate(45deg) skew(10deg, 10deg)}.rtl .messageContainer
562
+ p{padding-left:0;padding-right:60px}.rtl
563
+ .errorIcon{left:auto;right:0}.rtl .vatTooltip:before{position:relative;left:282px;top:0px}.rtl .vatTooltip:hover, .rtl .vatTooltip:focus{margin: -1px 6px 1px 6px}.rtl .vatTooltip:hover:before, .rtl .vatTooltip:focus:before{left:264px;top:0}@media only screen and (max-width: 959px){.rtl .messageContainer .icon:before{left:0}}@media only screen and (max-width: 767px){.rtl .radioList label
564
+ .icon{margin: -36px 0 0 0}.rtl #orderDetails table.open tr.totalRow th .yourOrder .icon:before{left:auto;right: -75px}.rtl #orderDetails table thead tr.totalRow th .yourOrder .icon:before{left:auto;right: -165px}}.logo,.GLOBAL-COLLECT-OFFLINE{background-image:url("../images/methods/GLOBAL-COLLECT-OFFLINE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-OFFLINE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-OFFLINE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.AMEX-SKYPE{background-image:url("../images/methods/AMEX-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/AMEX-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/AMEX-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-BPH-MONEYBOOKERS{background-image:url("../images/methods/BANK-BPH-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-BPH-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-BPH-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-FORTIS-MONEYBOOKERS{background-image:url("../images/methods/BANK-FORTIS-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-FORTIS-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-FORTIS-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-ING-MONEYBOOKERS{background-image:url("../images/methods/BANK-ING-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-ING-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-ING-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-INVEST-MONEYBOOKERS{background-image:url("../images/methods/BANK-INVEST-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-INVEST-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-INVEST-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-KREDYT-MONEYBOOKERS{background-image:url("../images/methods/BANK-KREDYT-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-KREDYT-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-KREDYT-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-LUKAS-MONEYBOOKERS{background-image:url("../images/methods/BANK-LUKAS-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-LUKAS-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-LUKAS-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-MILLENIUM-MONEYBOOKERS{background-image:url("../images/methods/BANK-MILLENIUM-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-MILLENIUM-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-MILLENIUM-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-NORDEA-MONEYBOOKERS{background-image:url("../images/methods/BANK-NORDEA-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-NORDEA-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-NORDEA-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-OCHRONY-MONEYBOOKERS{background-image:url("../images/methods/BANK-OCHRONY-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-OCHRONY-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-OCHRONY-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-PEKAO-MONEYBOOKERS{background-image:url("../images/methods/BANK-PEKAO-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-PEKAO-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-PEKAO-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-PKO-BP-MONEYBOOKERS{background-image:url("../images/methods/BANK-PKO-BP-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-PKO-BP-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-PKO-BP-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-ZACHODNI-WBK-MONEYBOOKERS{background-image:url("../images/methods/BANK-ZACHODNI-WBK-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-ZACHODNI-WBK-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-ZACHODNI-WBK-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BGZ-INTEGRUM-MONEYBOOKERS{background-image:url("../images/methods/BGZ-INTEGRUM-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BGZ-INTEGRUM-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BGZ-INTEGRUM-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.CARTEBLEUE-SKYPE{background-image:url("../images/methods/CARTEBLEUE-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CARTEBLEUE-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CARTEBLEUE-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.CASHU{background-image:url("../images/methods/CASHU.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CASHU.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CASHU.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.CB-SKYPE{background-image:url("../images/methods/CB-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CB-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CB-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.CITYBANK-MONEYBOOKERS{background-image:url("../images/methods/CITYBANK-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CITYBANK-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CITYBANK-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.DEUTCHEBANK-MONEYBOOKERS{background-image:url("../images/methods/DEUTCHEBANK-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/DEUTCHEBANK-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/DEUTCHEBANK-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.DINERS-SKYPE{background-image:url("../images/methods/DINERS-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/DINERS-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/DINERS-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.EBETALNING-SSL{background-image:url("../images/methods/EBETALNING-SSL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/EBETALNING-SSL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/EBETALNING-SSL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.ECMC-SKYPE{background-image:url("../images/methods/ECMC-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/ECMC-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/ECMC-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.ELV-MONEYBOOKERS{background-image:url("../images/methods/ELV-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/ELV-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/ELV-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.ENETS-SSL{background-image:url("../images/methods/ENETS-SSL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/ENETS-SSL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/ENETS-SSL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-EPS-AT{background-image:url("../images/methods/GLOBAL-COLLECT-EPS-AT.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-EPS-AT.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-EPS-AT.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-GIRO{background-image:url("../images/methods/GLOBAL-COLLECT-GIRO.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-GIRO.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-GIRO.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-BOLETO{background-image:url("../images/methods/GLOBAL-COLLECT-BOLETO.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-BOLETO.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-BOLETO.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-IDEAL{background-image:url("../images/methods/GLOBAL-COLLECT-IDEAL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-IDEAL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-IDEAL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-ING-BE{background-image:url("../images/methods/GLOBAL-COLLECT-ING-BE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-ING-BE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-ING-BE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-PAYSAFE{background-image:url("../images/methods/GLOBAL-COLLECT-PAYSAFE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-PAYSAFE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-PAYSAFE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-SOFORT{background-image:url("../images/methods/GLOBAL-COLLECT-SOFORT.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-SOFORT.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-SOFORT.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-WEBMONEY{background-image:url("../images/methods/GLOBAL-COLLECT-WEBMONEY.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-WEBMONEY.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-WEBMONEY.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.HANSABANK-SSL{background-image:url("../images/methods/HANSABANK-SSL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/HANSABANK-SSL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/HANSABANK-SSL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.INTELIGO-MONEYBOOKERS{background-image:url("../images/methods/INTELIGO-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/INTELIGO-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/INTELIGO-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.JCB-SKYPE{background-image:url("../images/methods/JCB-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/JCB-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/JCB-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.MACH-PAYBYMOBILE,.MACH-PAYBYMOBILE-US{background-image:url("../images/methods/MCB.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MCB.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MCB.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.MAESTRO-MONEYBOOKERS{background-image:url("../images/methods/MAESTRO-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MAESTRO-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MAESTRO-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.MBANK-MONEYBOOKERS{background-image:url("../images/methods/MBANK-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MBANK-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MBANK-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.MONEYBOOKERS{background-image:url("../images/methods/MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.MULTIBANK-MONEYBOOKERS{background-image:url("../images/methods/MULTIBANK-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MULTIBANK-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MULTIBANK-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.PAYBYCASH{background-image:url("../images/methods/PAYBYCASH.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYBYCASH.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYBYCASH.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.PAYPAL{background-image:url("../images/methods/PAYPAL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYPAL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYPAL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.PAYPALBA{background-image:url("../images/methods/PAYPAL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYPAL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYPAL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.PAYPALPAP{background-image:url("../images/methods/PAYPAL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYPAL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYPAL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.POLI-MONEYBOOKERS{background-image:url("../images/methods/POLI-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/POLI-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/POLI-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.QIWI-SSL{background-image:url("../images/methods/QIWI-SSL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/QIWI-SSL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/QIWI-SSL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.SMODE{background-image:url("../images/methods/SMODE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/SMODE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/SMODE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.UHISBANK-SSL{background-image:url("../images/methods/UHISBANK-SSL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/UHISBANK-SSL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/UHISBANK-SSL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.UKASH{background-image:url("../images/methods/UKASH.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/UKASH.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/UKASH.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.VISA-SKYPE{background-image:url("../images/methods/VISA-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/VISA-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/VISA-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.VISA-SSL{background-image:url("../images/methods/VISA-SSL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/VISA-SSL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/VISA-SSL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.YANDEX-MONEY{background-image:url("../images/methods/YANDEX-MONEY.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/YANDEX-MONEY.png', sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/YANDEX-MONEY.png', sizingMethod='scale')";-ms-interpolation-mode:bicubic}.contextNotification{text-align:left;background:#E7F1F5;padding:20px}.contextNotification
565
+ .arrow{margin-top: -27px;width:18px;height:12px;display:inline-block;position:absolute;background:url("../common/images/icons-sprite.png") no-repeat -128px 0;right:40px;z-index:10}.sideContent
566
+ tr.alertRow{position:absolute;margin-top: -15px;z-index:11}.sideContent tr.alertRow .contextNotification
567
+ .arrow{right:15px;margin-top: -32px;background:url("../common/images/icons-sprite.png") no-repeat -90px 0}.sideContent
568
+ .contextNotification{background:#D9F3FD}.sideContent .contextNotification
569
+ p{font-size:14px}.contextNotification.tablet,.contextNotification.mobile{display:none}.contextNotification.desktop{display:block}.contextNotification.desktop.hidden{display:none}@media only screen and (min-width: 768px) and (max-width: 959px){.contextNotification.desktop,.contextNotification.mobile{display:none}.contextNotification.tablet{display:block}.contextNotification.tablet.hidden{display:none}}@media only screen and (max-width: 767px){.contextNotification.desktop,.contextNotification.tablet{display:none}.contextNotification.mobile{margin: -25px 0 20px 0;display:block}.contextNotification.mobile.hidden{display:none}}@-moz-keyframes
570
+ spin{from{top:0;left:0}to{top: -5040px;left:0}}@-webkit-keyframes
571
+ spin{from{top:0;left:0}to{top: -5040px;left:0}}@-o-keyframes
572
+ spin{from{top:0;left:0}to{top: -5040px;left:0}}@-ms-keyframes
573
+ spin{from{top:0;left:0}to{top: -5040px;left:0}}@keyframes
574
+ spin{from{top:0;left:0}to{top: -5040px;left:0}}@-moz-keyframes
575
+ spinMobile{from{top:0;left:0}to{top: -4032px;left:0}}@-webkit-keyframes
576
+ spinMobile{from{top:0;left:0}to{top: -4032px;left:0}}@-o-keyframes
577
+ spinMobile{from{top:0;left:0}to{top: -4032px;left:0}}@-ms-keyframes
578
+ spinMobile{from{top:0;left:0}to{top: -4032px;left:0}}@keyframes
579
+ spinMobile{from{top:0;left:0}to{top: -4032px;left:0}}.spinner{height:280px !important;margin:auto;overflow:hidden;position:relative;width:280px !important}.spinnerText{position:relative;text-align:center;top:210px}.spinner.white
580
+ .spinnerText{color:#FFF}.spinner.blue
581
+ .spinnerText{color:#333534;outline:none}.spinner.pngSequence{overflow:visible}.spinnerPosition{position:absolute;margin:60px
582
+ 80px;width:120px;height:120px}.spinnerMask{overflow:hidden}.spinnerMask.spin .spinnerSprite:before{-moz-animation:spin 1.6s steps(42) infinite;-webkit-animation:spin 1.6s steps(42) infinite;-o-animation:spin 1.6s steps(42) infinite;-ms-animation:spin 1.6s steps(42) infinite;animation:spin 1.6s steps(42) infinite;width:120px;height:120px}.spinnerSprite{position:relative;vertical-align:top;width:120px;height:120px}.white
583
+ .spinnerSprite{*background:url("../images/spinner/spinner-large-white.png") no-repeat}.white .spinnerSprite:before{display:inline-block;content:url("../images/spinner/spinner-large-white.png");position:relative}.blue
584
+ .spinnerSprite{*background:url("../images/spinner/spinner-large-blue.png") no-repeat}.blue .spinnerSprite:before{display:inline-block;content:url("../images/spinner/spinner-large-blue.png");position:relative}@media only screen and (max-width: 767px){.spinner{-moz-box-sizing:border-box;box-sizing:border-box;height:240px !important;width:240px !important}.spinnerAnimation{height:440px;left: -130px;top: -130px;-webkit-transform:scale(0.4);-moz-transform:scale(0.4);-o-transform:scale(0.4);transform:scale(0.4)}.spinnerPosition{margin:50px
585
+ 70px;width:96px;height:96px}.spinnerMask.spin .spinnerSprite:before{-moz-animation:spinMobile 1.6s steps(42) infinite;-webkit-animation:spinMobile 1.6s steps(42) infinite;-o-animation:spinMobile 1.6s steps(42) infinite;-ms-animation:spinMobile 1.6s steps(42) infinite;animation:spinMobile 1.6s steps(42) infinite;width:96px;height:96px}.spinnerSprite{width:96px;height:96px}.white
586
+ .spinnerSprite{*background:url("../images/spinner/spinner-small-white.png") no-repeat}.white .spinnerSprite:before{content:url("../images/spinner/spinner-small-white.png")}.blue
587
+ .spinnerSprite{*background:url("../images/spinner/spinner-small-blue.png") no-repeat}.blue .spinnerSprite:before{content:url("../images/spinner/spinner-small-blue.png")}.spinnerText{top:180px}}#Overlay-bg{display:none;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background-color:#e7f1f5;opacity:0.9;filter:alpha(opacity=90);z-index:997}.Overlay-hidden-content{display:none !important}.Overlay-message{display:none;position:absolute;top:200px;left:50%;width:296px;padding:28px
588
+ 34px;margin:0
589
+ 0 0 -180px;background-color:#fff;z-index:998;border:2px
590
+ solid white}@media only screen and (max-width: 767px){.Overlay-message{left:20px;right:20px;width:auto;padding:20px
591
+ 12px;margin:0}}.invisible, body.errorPage
592
+ .sideContent{opacity:0;height:0;padding:0}h3.title-h3{margin-bottom:25px}.mainContent{padding-top:18px}.checkbox label
593
+ strong{font-weight:400}@media only screen and (max-width: 767px){#container,.mainContent{width:100%}header#skypeCredit{display:none}.mainContent{padding:0}.pageView{margin:1px
594
+ 20px 20px 20px}#loader{width:100%;margin:0
595
+ auto}.currencySelectMobile
596
+ .fieldRow.select{min-height:41px;margin-bottom:0px}.wpfc-btn.primaryCta.disabled{margin-left:0}.wpfc-btn,.wpfc-btn.small,.wpfc-btn.disabled{display:block !important;max-width:100% !important}h2.yourOrder{float:left;margin-bottom:0px !important}h3.title-h3{margin-top:20px}.fakeHeader h3, .fakeHeader .title-h3{margin-bottom:5px}}button.tooltip{background:transparent;padding:0;width:20px;height:20px;vertical-align:middle;border:solid 1px #FFF;border-radius:15px;cursor:pointer;overflow:hidden;margin:0px
597
+ 5px}button.tooltip:before{position:relative;content:url("../images/icons/icons-sprite.png");left:0}button.tooltip:hover:before,button.tooltip:focus:before{left: -18px}button.tooltip:active:before{left: -36px}button.tooltip::-moz-focus-inner{border:0;padding:0}#label-checkbox-autoRecharge
598
+ strong{display:block;position:relative}.tooltip-message{display:none;position:relative;top:auto;right:0;left:0;margin:8px
599
+ 0 0 0;padding:0;background-color:#D9F3FD;font-size:14px;line-height:18px;font-weight:400;text-align:left;z-index:100}.tooltip-message>span{display:block;padding:13px
600
+ 30px}.tooltip-message.visible{display:block}.tooltip-message
601
+ .arrow{display:block;position:absolute;top: -12px;width:18px;height:12px;z-index: -190;background:url("../images/icons/icons-sprite.png") no-repeat;background-position: -90px 0}.tooltip-message .arrow::before{content:"";display:block;width:14px;height:14px;background-color:#D9F3FD;border-color:#D9F3FD;border-style:solid;border-left-width:1px;border-top-width:1px;border-right-width:0px;border-bottom-width:0px;top:22px;right:20px;position:relative;-webkit-transform:translate(-23px, -16px) rotate(45deg) skew(10deg, 10deg);-moz-transform:translate(-23px, -16px) rotate(45deg) skew(10deg, 10deg);-ms-transform:translate(-23px, -16px) rotate(45deg) skew(10deg, 10deg);-o-transform:translate(-23px, -16px) rotate(45deg) skew(10deg, 10deg);transform:translate(-23px, -16px) rotate(45deg) skew(10deg, 10deg);border-right-width:0px;border-bottom-width:0px;z-index: -100}
602
+
603
+ #wpfc-shop-modal{
604
+ position: absolute;
605
+ display: block;
606
+ background: url("../images/loader.gif") no-repeat scroll center center #ffffff;
607
+
608
+ color: #333534;
609
+ }
610
+
611
+ .wpfc-btn.primaryCta {
612
+ background-color: #7fba00;
613
+ border-color: #7fba00;
614
+ }
615
+
616
+ .wpfc-btn {
617
+ color: white;
618
+ font-weight: 400;
619
+ font-size: 20px;
620
+ display: inline-block;
621
+ height: 100%;
622
+ cursor: pointer;
623
+ overflow: visible;
624
+ text-decoration: none;
625
+ line-height: 24px;
626
+ letter-spacing: -0.01em;
627
+ -webkit-border-radius: 50px;
628
+ -webkit-font-smoothing: subpixel-antialiased;
629
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
630
+ -moz-border-radius: 50px;
631
+ border-radius: 50px;
632
+ border: 0;
633
+ position: relative;
634
+ border-width: 2px;
635
+ border-style: solid;
636
+ padding: 8px 0 11px 0;
637
+ background-color: #FFF;
638
+ cursor: hand;
639
+ word-wrap: break-word;
640
+ word-break: break-word;
641
+ -ms-word-break: break-word;
642
+ text-align: center;
643
+ margin: 2px;
644
+ }
645
+
646
+ .wpfc-btn > span{
647
+ padding-left: 25px;
648
+ padding-right: 25px;
649
+ }
650
+
651
+ .wpfc-btn.primaryNegativeCta {
652
+ background-color: #FFF;
653
+ color: #333534;
654
+ border-color: #c0dce6
655
+ }
656
+
657
+ .wpfc-btn.primaryDisableCta {
658
+ background-color: #e4eef2;
659
+ color: #333534;
660
+ border-color: #c0dce6
661
+ }
css/dialog.css ADDED
@@ -0,0 +1,266 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ button:focus {outline:0;}
2
+ .window-content-wrapper{
3
+ background-image:-webkit-gradient(linear, left top, left bottom, color-stop(50%, rgb(238,238,238)), color-stop(100%, rgb(219,219,219)));
4
+ background:-webkit-linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%);
5
+ background:-moz-linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%);
6
+ background:-o-linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%);
7
+ background:-ms-linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%);
8
+ background:linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#dbdbdb',GradientType=0 );
9
+ text-shadow:0 0 5px #fff;
10
+ border-bottom:1px solid #ABABAB;
11
+ border-top:1px solid #EEE6E6;
12
+ }
13
+
14
+ .wiz-inp-cont {
15
+ background: none repeat scroll 0 0 rgba(100, 100, 100, 0.1);
16
+ border-radius: 6px;
17
+ display: block;
18
+ margin-top: 24px;
19
+ padding: 12px;
20
+ position: relative;
21
+ }
22
+ .wiz-cont {
23
+ font-family: "Lucida Grande","Lucida Sans","Lucida Sans Unicode",Verdana,Tahoma,sans-serif;
24
+ font-size: 13px;
25
+ line-height: 18px;
26
+ min-height: 80px;
27
+ padding: 22px 28px;
28
+ }
29
+ .wiz-cont h1 {
30
+ font-size: 21px;
31
+ margin: 0 0 12px;
32
+ }
33
+ .wiz-cont p {
34
+ color: #666;
35
+ margin: 0;
36
+ }
37
+ .wiz-input-cont {
38
+ background: none repeat scroll 0 0 rgba(100, 100, 100, 0.1);
39
+ border-radius: 6px;
40
+ margin-top: 24px;
41
+ padding: 12px;
42
+ position: relative;
43
+ }
44
+ .wiz-input-cont label {
45
+ font-weight: bold;
46
+ margin-right: 12px;
47
+ }
48
+ .api-key {
49
+ border: 1px solid #999;
50
+ border-radius: 3px;
51
+ box-shadow: 0 1px 2px #eee inset, 0 1px 0 #ddd;
52
+ font-size: 13px;
53
+ padding: 4px 6px 3px;
54
+ width: 355px;
55
+ }
56
+ .window-buttons-wrapper button {
57
+ margin: 0 4px;
58
+ }
59
+ .wpfc-add-new-timeout-button, .wpfc-add-new-exclude-button, .window-buttons-wrapper button[action="next"], .window-buttons-wrapper button[action="back"], .window-buttons-wrapper button[action="close"] {
60
+ background-color: gray !important;
61
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAABaCAIAAAAU4rCTAAACGUlEQVQ4EQXBQbIkRxEFQH+V0V974Bjo/neaBTJhs6Ir4+GeX79+AQDmr7/+UxChmBawGsq0qxGqoabVVolUa7ZNW8IWpnsraAGzWwogMdsl2khTm9lb2dCqSKddVZRUze6CUIXZriJJW2T2lgLA7F4AQs3uAgBm9xIAmN1SoIrZ3ZY0oqRz74XQUMy9t1ASVfN9X5pGoDr3+5UAwLz3AgDmfS8gtGTufQEAc+9VAmjN3lsIJXTuXgIA8zwHAJDfv38DAObvv/9LRWgTnqRJVJtEdXYrTVOtaqZtahWKTtuCtonW7C6AFmZ3SdKWUNNuxQqFzr2l0UWipr0lJbFbZu8WJFqYuwsAmL1LIUqYuxfChorZvQSoYvZuCQ2VmHtX2iY0jczdCwCYe5eSKCqze0u0TRDz/X5Dk7RNtPP9vtIUoZV53y9QQpnv90XSVqQ67/s/AgDzvhdKAPO+L4FUkbn3AgBm96oKEtX8+e8/AQDzj3/9M0BJMed5QgkV6cxMCS2EOeeEhkrSdj6fIUpUMTMfACDz+flJS0rSMj8zElBSnc/PH9FCQnV+fj6gGkHn8/mAEmDOOQCAOedAIFXmnAMAmHNOKJBo55wDAJhzDkqgZJ5zoJCgc55HklbSNsmccwAAc55HtIRGzHMORKpgnnOiLY8UmfNE0yeBqnmeU6IqCSZPHtp4aBLz5EECgkyeJ4CCzHkeAMD/AViclsCJwxhXAAAAAElFTkSuQmCC') !important;
62
+ background-repeat: repeat-x !important;
63
+ border: 1px solid #777 !important;
64
+ color: #000 !important;
65
+ text-shadow: 0 1px 0 #eee !important;
66
+ }
67
+ .window-buttons-wrapper button[action="finish"]{
68
+ background-repeat:repeat-x !important;
69
+ background-color:green !important;
70
+ background-image:url("../images/button-back-green.png") !important;
71
+ color:#FFF;text-shadow:0 1px 0 rgba(0,0,0,0.4) !important;
72
+ border:1px solid green !important;
73
+ font-weight: bold;
74
+ }
75
+ .icon-right {
76
+ margin: -4px -2px 0 3px;
77
+ position: relative;
78
+ right: -3px;
79
+ top: 1px;
80
+ }
81
+ .big-button {
82
+ -moz-border-bottom-colors: none;
83
+ -moz-border-left-colors: none;
84
+ -moz-border-right-colors: none;
85
+ -moz-border-top-colors: none;
86
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
87
+ border-color: -moz-use-text-color transparent;
88
+ border-image: none;
89
+ border-style: none solid;
90
+ border-width: medium 1px;
91
+ font-size: 11px;
92
+ margin: 0;
93
+ outline: medium none !important;
94
+ overflow: visible;
95
+ padding: 3px 6px;
96
+ text-shadow: 0 1px 0 #e5e5e5, 0 0 5px rgba(255, 255, 255, 0.6);
97
+ width: auto;
98
+ }
99
+ .window-buttons:hover,.wpfc-dialog-buttons:hover{
100
+ border-color:#999;
101
+ background-position:0 -30px;
102
+ }
103
+ .wpfc-dialog-buttons {
104
+ background: url("/images/button-back.png") repeat-x scroll 0 0 rgba(0, 0, 0, 0);
105
+ border: 1px solid #aaa;
106
+ padding: 4px 10px;
107
+ display: none;
108
+ }
109
+ .window-buttons:active,.wpfc-dialog-buttons:active{
110
+ border-color:#666;
111
+ background-position:0 -60px;
112
+ }
113
+ .close-wiz {
114
+ background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAmCAYAAAAm56DSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODNEQTU1N0QyNTZBMTFFMDg0MjhBMzkwREEyOUQ5ODQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODNEQTU1N0UyNTZBMTFFMDg0MjhBMzkwREEyOUQ5ODQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4M0RBNTU3QjI1NkExMUUwODQyOEEzOTBEQTI5RDk4NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4M0RBNTU3QzI1NkExMUUwODQyOEEzOTBEQTI5RDk4NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg4s3CYAAAMbSURBVHjanJbLb0xxFMfvvVOjDaP1aM0U9aqohhARG41IbBoRKwsJCyspO7Eg8QewsGAhsbAikYiVjQVWXinxqCBdmFapR0v1kWI6HZ3re5LvT47jN5OZnuTTzvzu/X3vuef1mzDw2zKwA2wCa9V6H3gF7oMvshDH8d+LoRGpBYfAVvABDIHv6vpikAYt4Am4BrFpn9gicAKM0IM4KG2ybx3Fz0FwVIslwWmQBeNB5dYA1oAz4qETOwxmqhRytpCxuxLhfyOoN0Ii/Bb0q7WY32W9qNbHJERhGDYm8GEn+GFiNAB6wTeQA03gJWMpMZ3rPKJNyD01+NPMTdpWgjf8PEiBnLq+2twvnqblNac8cZBMdarvWmgvH2atUEpMYrMdLPUU8xbw3rNnKsECTJgLEr9brsqVTYJ3LFxrOfEs77kgT/5kYhioGA569uQjptZao4nRSRPDjGfPmBRtCnSAGpOAAlgA5IE97FeJ7y+GQcfttzS/64ANoNX0Xgs3DxuPkp4EZNEBvU4swewtmUU7SQ12QyyOVPs854Vq7Ct4FnOohZ7R0kpqyogU2FrZWE3HsMTNSbZZEwdmijWWZ+t9BNN20pZ6ugjtBtuYHGfS/E/BbV+tWc/qwDGwi/EbpUfOUpzIUod3wCV4lveJSSbPMhlDFYztZv4/BcERLSbz6QK9+FlFNueR4+KhK42uWQgFvF864kjAVpGqXm+EJPX3pBjNAOzm+oxalyndjrGdkcrfQ1e1PQZ31WklvXoTPOQIkkStUPeLd3VSGu2eYC9Xn3soMKHWVnnmX5u85hxPLKRP95sDw9kBsNmzpzYy7+9MSmMfx3RgPOpkT1orJljlSc9pc5n9p22c46fNIzYZlTjFpWVeq+961r1gHP+btBGDa63exOi8iaFv7g2EPJmPmlfN8EBp4MZ+eveZdZU2cZMJctEdKN2eBKRZ1O73RpbjKO1JgEzaiVCNooOeY78SkzBdhVgxUqfLjRLxK2fi7XUR8s2ziMdeh6dc/vkpAB6BB06o3NiW3tvInpzP3xzD7ME+lkbOju0/AgwAGgf5ial8jHIAAAAASUVORK5CYII=') no-repeat scroll 0 0 transparent;
115
+ height: 19px;
116
+ width: 22px;
117
+ cursor: pointer;
118
+ }
119
+ .mm-input-label{
120
+ font-weight: bold;
121
+ vertical-align: middle;
122
+ margin-right: 12px;
123
+ color: black;
124
+ }
125
+ .wiz-inp-readonly-textarea{
126
+ -moz-appearance: textfield;
127
+ -moz-border-bottom-colors: none;
128
+ -moz-border-left-colors: none;
129
+ -moz-border-right-colors: none;
130
+ -moz-border-top-colors: none;
131
+ border-color: #aaaaaa #b0b0b0 #cbcbcb;
132
+ border-image: none;
133
+ border-radius: 3px;
134
+ border-style: solid;
135
+ border-width: 1px;
136
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 1px 0 rgba(255, 255, 255, 0.5);
137
+ font-family: "Lucida Grande",monospace;
138
+ font-size: inherit !important;
139
+ line-height: 14px;
140
+ padding: 4px 6px 3px;
141
+ resize: none;
142
+ white-space: pre;
143
+ background-color: white !important;
144
+ }
145
+ .wiz-bg-img {
146
+ bottom: -40px;
147
+ clip: rect(0pt, 150px, 118px, 0pt);
148
+ height: 150px;
149
+ position: absolute;
150
+ right: 40px;
151
+ width: 150px;
152
+ z-index: -1;
153
+ opacity: 0.25;
154
+ }
155
+
156
+ .buttons-blood {
157
+ background-color: red;
158
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAABaCAIAAAAU4rCTAAACEElEQVQ4EQXBMQElSwFFwTrzerGABGI8YAULJFjAExkuyJHwd/dNX6r63z/+TgKF/vvXPwMAzoCBRudONhpiZ7uTjLbZ2bANEs6FWZhL596BAexcbACxc+/AiLHzbjEy4NytWQLj3M0Yaca5FyPDpvPugsHSzr0EI3Odd9cCwM47mcES594pm7hw7t1iE+D8vlcZJnS+s3tRXLPz+70AI5zvexWzmHbeOyZstM53WAOsnXcXjZA5G3YnsXHuhtgGnM/zAAD641//1KOUovP7P/8GAJw7DMRwdu+KwVadd7OBgZ27CwKzzvdiLIF77l4LjNF5343aRrLz3WyINeu898KIsZ33vTQD4vy+y6UR47z3xdQGOd87w8Bwvu+FTcGc73vBlMH5fa8tQOy872UEhvN931Exmp2f7wsY2Zw/fn1VYBvOz++LGJp1fn6/CAycX9/LZBM4v96vESPm/P5eBrFwvvfd0gBzvu+4CjacH08EKPS3PwEw4vzlsGYxygkt2Sp2niJWDTofaSCwc54wYuQ5nyeQYXROCAp0Tg8ymcd2fjwxHmHW+fHJTEhyPlIMxM6TshWLdT5PRsYTOR9kqlnsPE9GmaLORxqEtPNUWrMnW53PY7R6GDoPEBI6T8UgNOehECyP83kiZnmG82iowOo8gZHp4VTGM6tG52GplpachxVC2Klilmbp/Pg8AID/A42AjXF48qy/AAAAAElFTkSuQmCC') !important;
159
+ background-repeat: repeat-x;
160
+ border: 1px solid #333 !important;
161
+ color: #fff;
162
+ text-shadow: 0 1px 0 #000 !important;
163
+ float: left;
164
+ font-weight: bold;
165
+ }
166
+
167
+ .wpfc-green-button {
168
+ font-weight: bold;
169
+ padding:6px 18px;
170
+ color:#fff;
171
+ font-size:13px;
172
+ border:1px solid #309E1F;
173
+ text-shadow:0 -1px #309E1F;
174
+ cursor:pointer;
175
+
176
+ -moz-border-radius: 3px 3px;
177
+ -webkit-border-radius: 3px 3px;
178
+ border-radius: 3px 3px;
179
+
180
+ -moz-box-shadow: 0 1px #71EF61 inset, 0 1px #dadada;
181
+ -webkit-box-shadow: 0 1px #71EF61 inset, 0 1px #dadada;
182
+ box-shadow: 0 1px #71EF61 inset, 0 1px #dadada;
183
+ background: #39cc28;
184
+ background: -moz-linear-gradient(top, #39cc28 0%, #38bf26 100%);
185
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#39cc28), color-stop(100%,#38bf26));
186
+ background: -webkit-linear-gradient(top, #39cc28 0%,#38bf26 100%);
187
+ background: -o-linear-gradient(top, #39cc28 0%,#38bf26 100%);
188
+ background: -ms-linear-gradient(top, #39cc28 0%,#38bf26 100%);
189
+ background: linear-gradient(top, #39cc28 0%,#38bf26 100%);
190
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#39cc28', endColorstr='#38bf26',GradientType=0 );
191
+ }
192
+
193
+ .wpfc-green-button:hover {
194
+ background: #40db2b;
195
+ background: -moz-linear-gradient(top, #40db2b 0%, #3ecc28 100%);
196
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#40db2b), color-stop(100%,#3ecc28));
197
+ background: -webkit-linear-gradient(top, #40db2b 0%,#3ecc28 100%);
198
+ background: -o-linear-gradient(top, #40db2b 0%,#3ecc28 100%);
199
+ background: -ms-linear-gradient(top, #40db2b 0%,#3ecc28 100%);
200
+ background: linear-gradient(top, #40db2b 0%,#3ecc28 100%);
201
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#40db2b', endColorstr='#3ecc28',GradientType=0 );
202
+ }
203
+ .wpfc-green-button:active {
204
+ -moz-box-shadow: 0 1px #71EF61 inset;
205
+ -webkit-box-shadow: 0 1px #71EF61 inset;
206
+ box-shadow: 0 1px #71EF61 inset;
207
+
208
+ background: #38bf26;
209
+ background: -moz-linear-gradient(top, #38bf26 0%, #39cc28 100%);
210
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#38bf26), color-stop(100%,#39cc28));
211
+ background: -webkit-linear-gradient(top, #38bf26 0%,#39cc28 100%);
212
+ background: -o-linear-gradient(top, #38bf26 0%,#39cc28 100%);
213
+ background: -ms-linear-gradient(top, #38bf26 0%,#39cc28 100%);
214
+ background: linear-gradient(top, #38bf26 0%,#39cc28 100%);
215
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#38bf26', endColorstr='#39cc28',GradientType=0 );
216
+ }
217
+
218
+ .wiz-error-msg{
219
+ color: red;
220
+ font-weight: bold;
221
+ text-align: center;
222
+ padding-left: 22px;
223
+ display: block;
224
+ }
225
+
226
+ #cdn-url-loading{
227
+ background: url("../images/loading-circle.gif") no-repeat;
228
+ width: 20px;
229
+ height: 18px;
230
+ margin-top: 5px;
231
+ float: right;
232
+ display: none;
233
+ }
234
+ .wpfc-checkbox-list {
235
+ margin-top: 24px;
236
+ padding:15px;
237
+ background:rgba(150,150,150,0.2);
238
+
239
+ -moz-border-radius:5px 5px;
240
+ -webkit-border-radius:5px 5px;
241
+ border-radius:5px 5px;
242
+
243
+ background:rgba(150,150,150,0.2);
244
+ background: -ms-linear-gradient(top, rgba(150,150,150,0.2) 0%,rgba(150,150,150,0.2) 100%); /* IE10+ */
245
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#33969696', endColorstr='#33969696',GradientType=0 ); /* IE6-9 */
246
+ }
247
+
248
+ .wpfc-checkbox-list label{
249
+ width:130px;
250
+ display:inline-block;
251
+ margin-top:3px;
252
+ color:#333333;
253
+ }
254
+
255
+ .wpfc-checkbox-list label input {
256
+ margin-right:5px;
257
+ vertical-align:bottom;
258
+ }
259
+
260
+ .wpfc-bottom-note{
261
+ margin-top: 20px !important
262
+ }
263
+
264
+ .wpfc-bottom-note a{
265
+ font-weight: bold;
266
+ }
css/flaticon.css ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @font-face {
2
+ font-family: "Flaticon";
3
+ src: url("fonts/statics/flaticon.eot");
4
+ src: url("fonts/statics/flaticon.eot#iefix") format("embedded-opentype"),
5
+ url("fonts/statics/flaticon.woff") format("woff"),
6
+ url("fonts/statics/flaticon.ttf") format("truetype"),
7
+ url("fonts/statics/flaticon.svg") format("svg");
8
+ font-weight: normal !important;
9
+ font-style: normal !important;
10
+ }
11
+ [class^="flaticon-"]:before, [class*=" flaticon-"]:before,
12
+ [class^="flaticon-"]:after, [class*=" flaticon-"]:after {
13
+ font-family: Flaticon;
14
+ font-size: 40px !important;
15
+ font-style: normal !important;
16
+ color: #ff8900 !important;
17
+ }.flaticon-css4:before {
18
+ content: "\e000";
19
+ }
20
+ .flaticon-desktop1:before {
21
+ content: "\e001";
22
+ }
23
+ .flaticon-js:before {
24
+ content: "\e002";
25
+ }
26
+ .flaticon-smart:before {
27
+ content: "\e003";
28
+ }
29
+
30
+
31
+
32
+
33
+ @font-face {
34
+ font-family: "Flaticon";
35
+ src: url("fonts/db/flaticon.eot");
36
+ src: url("fonts/db/Flaticon.eot?#iefix") format("embedded-opentype"),
37
+ url("fonts/db/Flaticon.woff") format("woff"),
38
+ url("fonts/db/Flaticon.ttf") format("truetype"),
39
+ url("fonts/db/Flaticon.svg#Flaticon") format("svg");
40
+ font-weight: normal;
41
+ font-style: normal;
42
+ }
43
+
44
+ @media screen and (-webkit-min-device-pixel-ratio:0) {
45
+ @font-face {
46
+ font-family: "Flaticon";
47
+ src: url("fonts/db/Flaticon.svg#Flaticon") format("svg");
48
+ }
49
+ }
50
+
51
+ [class^="flaticon-"]:before, [class*=" flaticon-"]:before,
52
+ [class^="flaticon-"]:after, [class*=" flaticon-"]:after {
53
+ font-family: Flaticon;
54
+ line-height: 44px !important;
55
+ font-style: normal !important;
56
+ }
57
+
58
+
59
+ .flaticon-check:before { content: "\f100"; color:#5cab40 !important; font-size: 25px !important;}
60
+ .flaticon-counterclockwise:before { content: "\f101"; font-weight: bold; font-size: 35px !important;}
61
+ .flaticon-draft:before { content: "\f102"; font-size: 35px !important;}
62
+ .flaticon-file:before { content: "\f103"; font-weight: bold; font-size: 35px !important;}
63
+ .flaticon-interface:before { content: "\f104"; font-weight: bold; font-size: 35px !important;}
64
+ .flaticon-pingback:before { content: "\f105"; font-weight: bold; font-size: 35px !important;}
65
+ .flaticon-recycling:before { content: "\f106"; font-weight: bold; font-size: 35px !important;}
66
+ .flaticon-start-settings:before { content: "\f107"; color:#3498db !important; font-size: 30px !important;}
67
+ .flaticon-technology:before { content: "\f108"; font-weight: bold; font-size: 35px !important;}
css/fonts/db/.DS_Store ADDED
Binary file
css/fonts/db/Flaticon.eot ADDED
Binary file
css/fonts/db/Flaticon.svg ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <!--
4
+ 2016-12-28: Created.
5
+ -->
6
+ <svg xmlns="http://www.w3.org/2000/svg">
7
+ <metadata>
8
+ Created by FontForge 20120731 at Wed Dec 28 12:36:45 2016
9
+ By Apache
10
+ Created by Apache with FontForge 2.0 (http://fontforge.sf.net)
11
+ </metadata>
12
+ <defs>
13
+ <font id="Flaticon" horiz-adv-x="512" >
14
+ <font-face
15
+ font-family="Flaticon"
16
+ font-weight="500"
17
+ font-stretch="normal"
18
+ units-per-em="512"
19
+ panose-1="2 0 6 3 0 0 0 0 0 0"
20
+ ascent="448"
21
+ descent="-64"
22
+ bbox="-0 -64.0207 512 448"
23
+ underline-thickness="25.6"
24
+ underline-position="-51.2"
25
+ unicode-range="U+0020-F108"
26
+ />
27
+ <missing-glyph />
28
+ <glyph glyph-name="space" unicode=" " horiz-adv-x="200"
29
+ />
30
+ <glyph glyph-name="uniF107" unicode="&#xf107;"
31
+ d="M128 448l384 -224l-195.2 -108.8v6.39941l-22.3994 6.40039l-19.2002 6.40039v3.19922l19.2002 38.4004l-57.6006 57.5996l-38.3994 -19.1992h-3.2002l-6.40039 19.1992l-6.39941 22.4004h-54.4004v192zM144 112c19.2002 0 32 -12.7998 32 -32s-12.7998 -32 -32 -32
32
+ c-6.40039 0 -12.7998 3.2002 -16 6.40039c-9.59961 3.19922 -16 16 -16 25.5996s6.40039 19.2002 16 25.5996c3.2002 3.2002 9.59961 6.40039 16 6.40039zM288 64l-35.2002 -9.59961c-3.2002 -9.60059 -6.39941 -19.2002 -12.7998 -28.8008l16 -35.1992l-22.4004 -22.4004
33
+ l-32 16c-9.59961 -6.40039 -19.1992 -9.59961 -28.7998 -12.7998l-12.7998 -35.2002h-32l-9.59961 35.2002c-9.60059 3.2002 -19.2002 6.39941 -28.8008 12.7998l-35.1992 -16l-22.4004 22.4004l16 32c-6.40039 9.59961 -9.59961 19.1992 -12.7998 28.7998l-35.2002 12.7998
34
+ v32l35.2002 9.59961c3.2002 9.60059 6.39941 19.2002 12.7998 28.8008l-16 35.1992l22.4004 22.4004l32 -16c9.59961 6.40039 19.1992 9.59961 28.7998 12.7998l12.7998 35.2002h32l12.7998 -35.2002c9.60059 -3.2002 19.2002 -6.39941 28.7998 -12.7998l32 16
35
+ l22.4004 -22.4004l-16 -32c6.40039 -9.59961 9.59961 -19.1992 12.7998 -28.7998l35.2002 -12.7998v-32zM144 16c35.2002 0 64 28.7998 64 64s-28.7998 64 -64 64s-64 -28.7998 -64 -64s28.7998 -64 64 -64z" />
36
+ <glyph glyph-name="uniF101" unicode="&#xf101;"
37
+ d="M289.395 415.319c122.945 0 222.605 -99.9766 222.605 -223.319s-99.6602 -223.319 -222.605 -223.319c-51.7012 0 -99.2793 17.6973 -137.074 47.3604l38.2852 40.9648c27.6592 -20.4141 61.8105 -32.4951 98.7891 -32.4951c92.2139 0 166.955 74.9863 166.955 167.489
38
+ s-74.7412 167.489 -166.955 167.489c-90.3408 0 -163.873 -71.9961 -166.809 -161.912h77.7695l-100.172 -111.659l-100.184 111.659h66.9248c2.96875 120.756 101.393 217.742 222.47 217.742zM269.606 311.83h38.1387v-111.933l70.666 -70.6719l-26.9561 -26.9561
39
+ l-81.8486 81.833v127.728z" />
40
+ <glyph glyph-name="uniF105" unicode="&#xf105;"
41
+ d="M487.319 448c13.8721 0 24.667 -10.7949 24.6738 -24.667v-208.208c0 -13.8789 -10.7812 -24.6738 -24.667 -24.6738h-206.659c-13.8721 0 -24.667 10.7949 -24.667 24.6738v208.201c0 13.8789 10.7881 24.6738 24.667 24.6738h206.652zM345.437 431.036
42
+ c-6.16895 0 -9.24609 -4.62598 -9.25293 -9.25195c0 -4.62695 4.62695 -9.25293 9.25293 -9.25293s9.25293 4.62598 9.25293 9.25293c0 4.62598 -4.62695 9.25195 -9.25293 9.25195zM319.228 431.036c-6.16895 0 -9.25977 -4.62598 -9.25977 -9.25195
43
+ c0 -4.62695 4.62598 -9.25293 9.25977 -9.25293c4.62598 0 9.25293 4.62598 9.25293 9.25293c0 4.62598 -4.62695 9.25195 -9.25293 9.25195zM291.462 431.036c-4.61914 0 -9.24609 -4.62598 -9.25293 -9.25195c0 -4.62695 4.62695 -9.25293 9.25293 -9.25293
44
+ c4.62695 0 9.25293 4.62598 9.25293 9.25293c0 4.62598 -4.62598 9.25195 -9.25293 9.25195zM484.228 235.173v0l-3.11816 166.557c0 7.70996 -6.14844 15.4209 -15.4141 15.4209h-67.8477c-7.70312 0 -15.4141 -6.16797 -15.4141 -15.4209
45
+ c0 -7.71094 0 -7.71094 -15.4141 -7.71094h-67.8467c-7.7041 0 -15.415 -6.16113 -15.415 -15.4141v-143.432c0 -7.7041 6.14844 -15.4072 15.415 -15.4072h169.634c7.71094 0 15.4209 6.1543 15.4209 15.4072zM231.326 192.007c13.8857 0 24.6738 -10.8018 26.209 -24.6738
46
+ v-206.659c0 -13.8857 -10.7949 -24.6738 -24.6738 -24.6738h-208.188c-13.8926 0 -24.6738 10.7881 -24.6738 24.6738v206.659c0 13.8857 10.7812 24.6738 24.6738 24.6738h206.652zM89.457 175.044c-4.63281 0 -9.27344 -4.62695 -9.2666 -9.2666
47
+ c0 -4.62695 4.64062 -9.25293 9.2666 -9.25293c4.62695 0 9.25293 4.62598 9.25293 9.25293c0 4.63965 -4.62598 9.2666 -9.25293 9.2666zM63.2344 175.044c-4.62695 0 -9.25977 -4.62695 -9.25977 -9.2666c0 -4.62695 4.63281 -9.25293 9.25977 -9.25293
48
+ c4.62598 0 9.2666 4.62598 9.2666 9.25293c0 4.63965 -4.64062 9.2666 -9.2666 9.2666zM37.0107 175.044c-6.1748 0 -9.23828 -4.62695 -9.25293 -9.2666c0 -4.62695 4.62695 -9.25293 9.25293 -9.25293c4.62695 0 9.25293 4.62598 9.25293 9.25293
49
+ c0 4.63965 -4.62598 9.2666 -9.25293 9.2666zM228.228 -19.2715v0l-1.54883 166.543c0 7.7041 -6.1543 15.4209 -15.4209 15.4209h-67.8398c-7.71094 0 -15.4219 -6.16797 -15.4219 -15.4209c0 -7.71094 0 -7.71094 -15.4209 -7.71094h-67.8398
50
+ c-7.71094 0 -15.4209 -6.16113 -15.4209 -15.4141v-143.418c0 -7.71777 6.1543 -15.4209 15.4209 -15.4209h168.085c7.71094 0 15.4072 6.16113 15.4072 15.4209zM97.1611 238.271l-15.4219 15.4219l72.4668 72.4727l-23.1182 23.1455l78.6416 16.9502l-16.9639 -77.1133
51
+ l-23.125 21.6035zM414.832 145.729l15.4287 -15.415l-72.4873 -72.4795l23.1455 -23.1318l-78.6553 -16.9707l16.9639 77.1201l23.1318 -21.5898z" />
52
+ <glyph glyph-name="uniF106" unicode="&#xf106;"
53
+ d="M375.736 334.727l36.9531 21.3281l-20.1885 -60.9219l-20.1719 -60.9062l-62.8438 12.9844l-62.8447 12.9844l36.7197 21.1875l-28.5479 49.4531l-55.7666 -96.5938l-92.375 53.3438l86.5469 149.891h0.0166016h123.143h0.03125zM191.236 263.385l51.25 88.7812
54
+ l-36.9385 63.9844h-0.015625l-69.7197 -120.767zM372.25 301.852l2.5625 7.70312l-6.89062 -3.9834l-10.6719 18.4834l-53.1562 92.0947h-73.9053l71.6396 -124.095l10.6719 -18.4834l-6.65625 -3.82812l7.95312 -1.6416l44.25 -9.14062zM425.469 245.773l86.5312 -149.905
55
+ l-0.015625 -0.0166016l-61.5781 -106.672h-118.656v-42.6572l-42.6562 47.9219l-42.6719 47.9375l42.6719 47.9385l42.6562 47.9219v-42.3916h57.0938l-55.75 96.5781zM438.094 10.5234l36.9531 64.001h-143.297h-21.3281v7.67188l-5.40625 -6.06348l-30.0303 -33.75
56
+ l30.0303 -33.75l5.40625 -6.0625v7.95312h21.3281h106.344zM487.359 95.8516l0.015625 0.0166016l-69.7188 120.75l-55.4219 -32l51.25 -88.7666h73.875zM123.156 96.1484h111.532v-106.655h-173.095l-61.5781 106.656l-0.015625 0.0302734l59.3271 102.75l-36.9531 21.3281
57
+ l62.8438 12.9844l62.8438 12.9834l20.1885 -60.9053l20.1719 -60.9209l-36.7188 21.2021zM24.6406 96.1797l36.9531 -64l71.6416 124.079l10.6553 18.4844l6.65625 -3.84375l-2.54688 7.70215l-14.2188 42.8916l-44.2344 -9.1416l-7.95312 -1.64062l6.875 -3.96875
58
+ l-10.6553 -18.4844zM213.344 10.8203v64h-102.5l-36.9375 -63.9844l0.015625 -0.015625h139.422z" />
59
+ <glyph glyph-name="uniF102" unicode="&#xf102;"
60
+ d="M256.209 259.38c0 -9.45117 -7.65137 -17.1025 -17.1182 -17.1025h-153.935c-9.45117 0 -17.1182 7.65137 -17.1182 17.1025c0 9.43457 7.66699 17.0859 17.1182 17.0859h153.935c9.4834 0 17.1182 -7.65137 17.1182 -17.0859zM345.898 269.795l85.8633 -77.0078
61
+ l-182.062 -202.957l-85.832 77.0068zM321.596 187.805l-0.53125 0.466797c-2.04102 1.83203 -4.70898 2.76367 -7.40918 2.61914s-5.27246 -1.36621 -7.05664 -3.3916l-97.71 -108.912c-4.06641 -4.5166 -3.68066 -11.4609 0.835938 -15.5107
62
+ c2.02539 -1.84863 4.67773 -2.79688 7.41016 -2.63672c2.7002 0.161133 5.25586 1.38281 7.07227 3.42383l98.1758 109.46c3.79297 4.19434 3.42383 10.7041 -0.787109 14.4814zM341.88 226.976l-4.83789 -5.40039c-1.78418 -2.02539 -2.73242 -4.69336 -2.60449 -7.41016
63
+ c0.161133 -2.71582 1.38281 -5.27246 3.3916 -7.08789l0.5625 -0.499023c2.04199 -1.81543 4.70996 -2.74805 7.41016 -2.60352c2.73242 0.144531 5.27246 1.36621 7.07227 3.3916l11.7012 13.0352l-8.19727 7.3457c-4.21094 3.79297 -10.7051 3.43945 -14.498 -0.771484z
64
+ M354.176 279.069l21.1045 23.499l85.8311 -77.0068l-21.0879 -23.5zM499.029 267.818l-30.1699 -33.6416l-85.8477 76.9912l30.2178 33.6416c3.96973 4.5 9.64355 7.2002 15.6709 7.52148c6.02832 0.337891 11.9268 -1.75195 16.4111 -5.76953l51.9814 -46.6611
65
+ c9.33887 -8.37402 10.126 -22.7441 1.73633 -32.082zM482.136 283.023l-51.9648 46.6445l-15.0605 -16.748l51.9648 -46.6611zM153.613 55.3604l85.8154 -77.0068l-101.423 -41.5654c-3.90625 -1.5752 -8.37402 -0.820312 -11.5088 2.00879
66
+ c-3.15039 2.84473 -4.3877 7.18457 -3.23047 11.2354zM161.457 28.0039l-11.6055 -40.2959l22.6797 -20.3809l38.7686 15.8486zM132.042 57.6592l-10.0137 -34.751h-76.0742c-21.4102 0 -38.7852 17.3594 -38.7852 38.7695v281.958
67
+ c0 21.4102 17.3594 38.7852 38.7852 38.7852h47.2549v2.79688c0 7.9082 6.41309 14.3047 14.3057 14.3047h11.8945c-0.241211 1.71973 -0.370117 3.77734 -0.370117 5.70605c0 23.5801 19.1758 42.7715 42.7715 42.7715c23.6113 0 42.7705 -19.1914 42.7705 -42.7715
68
+ c0 -1.92871 -0.160156 -3.98633 -0.369141 -5.68945h12.0391c7.9082 0 14.3047 -6.41309 14.3047 -14.3057v-2.79688h46.1309c21.4092 0 38.7686 -17.375 38.7686 -38.7842v-74.4199l-34.2041 -38.126v96.2471c0 11.2354 -9.08105 20.333 -20.3164 20.333h-30.3945v-19.3047
69
+ c0 -7.8916 -6.41309 -14.3047 -14.3057 -14.3047h-108.704c-7.9082 0 -14.3047 6.41309 -14.3047 14.3047v19.3047h-30.957c-11.2354 0 -20.333 -9.11426 -20.333 -20.333v-249.361c0 -11.2676 9.11328 -20.3496 20.333 -20.3496h69.7734v0.0166016zM144.708 405.229
70
+ c0 -1.99316 0.370117 -3.98633 0.980469 -5.70605h32.2275c0.642578 1.71973 0.996094 3.69727 0.996094 5.70605c0 9.43555 -7.66699 17.1182 -17.1016 17.1182c-9.45117 0 -17.1025 -7.68262 -17.1025 -17.1182zM240.28 185.346
71
+ c-0.385742 -0.015625 -0.788086 -0.0478516 -1.18945 -0.0800781h-153.935c-9.45117 0 -17.1182 7.95605 -17.1182 17.3906c0 9.46777 7.66699 17.3916 17.1182 17.3916h153.95c9.32324 0 16.8779 -7.68262 17.1025 -16.9414zM68.0381 145.966
72
+ c0 9.45117 7.66699 17.1025 17.1182 17.1182h135.161l-30.6523 -34.1875h-104.509c-9.45117 0 -17.1182 7.61816 -17.1182 17.0693z" />
73
+ <glyph glyph-name="uniF103" unicode="&#xf103;"
74
+ d="M469.333 88.6611c0 -40.502 -20.2715 -76.3633 -51.1982 -97.9785v-12.0166c0 -23.5342 -19.1494 -42.666 -42.667 -42.666h-290.134c-23.5176 0 -42.667 19.1318 -42.667 42.667v426.666c0.000976562 23.5352 19.1494 42.667 42.667 42.667h221.867
75
+ c1.79199 0 3.44824 -0.545898 4.83008 -1.50195l102.315 -68.1973c2.51172 -1.67578 3.90625 -4.52246 3.78809 -7.44629v-184.215c30.9268 -21.6162 51.1982 -57.4766 51.1982 -97.9785zM315.734 423.509v-18.1758c0 -14.1143 11.4863 -25.6006 25.5996 -25.6006h40.0898z
76
+ M366.935 -12.3096c48.375 8.14746 85.333 50.3105 85.333 100.971h-25.5996v17.0674h24.1699c-8.14648 48.374 -50.3105 85.333 -100.97 85.333v-25.6006h-17.0674v24.1709c-42.5186 -7.16016 -76.2168 -40.6006 -83.7529 -82.9922l40.7803 23.5449l8.5332 -14.7617
77
+ l-59.1191 -34.1338c-1.34961 -0.785156 -2.7998 -1.16113 -4.25 -1.16113c-2.95215 0 -5.82031 1.53613 -7.40723 4.26758l-34.1328 59.1182l14.7793 8.5332l24.1299 -41.791c10.1943 55.5928 59.001 97.8721 117.505 97.8721c18.3135 0 35.6748 -4.14746 51.2012 -11.5449
78
+ v166.085h-59.7314c-23.5176 0 -42.667 19.1318 -42.667 42.667v25.5977h-213.335c-14.1133 0 -25.5996 -11.4854 -25.5996 -25.5996v-426.667c0 -14.1143 11.4863 -25.5996 25.5996 -25.5996h290.134c14.1133 0 25.5996 11.4854 25.5996 25.5996v2.07227
79
+ c-15.5264 -7.39648 -32.8877 -11.5439 -51.2002 -11.5439c-31.915 0 -61.8828 12.4248 -84.4463 34.9697l12.0664 12.0664c19.3203 -19.3193 45.0225 -29.9697 72.3799 -29.9697v25.6006h17.0674v-24.1709zM397.753 151.687l12.3975 -11.7295l-48.4795 -51.2383
80
+ l28.5703 -29.5312l-12.2656 -11.8652l-28.0449 28.9883l-5.86816 -6.20117l-12.3965 11.7295l6.38672 6.75l-6.37988 6.59375l12.2656 11.8662l5.85352 -6.05078z" />
81
+ <glyph glyph-name="uniF104" unicode="&#xf104;"
82
+ d="M358.37 448c84.6719 0 153.562 -68.8896 153.553 -153.562v-119.437c0 -81.8145 -64.3076 -148.887 -145.03 -153.332v-71.1836c0 -5.87793 -3.50586 -11.125 -8.93164 -13.377c-1.80859 -0.742188 -3.69434 -1.10938 -5.5625 -1.10938
83
+ c-3.75391 0 -7.43945 1.47559 -10.2207 4.24902l-16.0039 16.0127c-42.0332 42.0332 -97.9219 65.1787 -157.367 65.1787h-15.1855c-84.6719 0 -153.562 68.8887 -153.562 153.562v119.437c0 84.6719 68.8896 153.562 153.562 153.562h204.749zM494.869 175.002h0.00878906
84
+ v119.437c0 75.2617 -61.2373 136.499 -136.499 136.499h-204.749c-75.2627 0 -136.499 -61.2373 -136.499 -136.499v-119.437c0 -75.2627 61.2363 -136.5 136.499 -136.5h15.1855c64.001 0 124.172 -24.9189 169.43 -70.1768l11.5938 -11.5947v73.2402v8.53125v34.125
85
+ c0 4.70898 3.81348 8.53125 8.53125 8.53125s8.53125 -3.82227 8.53125 -8.53125v-33.6895c71.2871 4.43652 127.968 63.6768 127.968 136.064zM145.09 285.779c-4.70898 0 -8.53125 3.82227 -8.53125 8.53125s3.81348 8.53125 8.53125 8.53125h119.438
86
+ c4.71777 0 8.53125 -3.82227 8.53125 -8.53125s-3.81348 -8.53125 -8.53125 -8.53125h-119.438zM375.433 234.592c4.71777 0 8.53125 -3.82129 8.53125 -8.53125c0 -4.70898 -3.81348 -8.53125 -8.53125 -8.53125h-230.343c-4.71777 0 -8.53125 3.82227 -8.53125 8.53125
87
+ c0 4.70996 3.81348 8.53125 8.53125 8.53125h230.343zM375.433 166.343c4.71777 0 8.53125 -3.82227 8.53125 -8.53125c0 -4.70996 -3.81348 -8.53125 -8.53125 -8.53125h-230.343c-4.71777 0 -8.53125 3.82129 -8.53125 8.53125c0 4.70898 3.81348 8.53125 8.53125 8.53125
88
+ h230.343z" />
89
+ <glyph glyph-name="uniF108" unicode="&#xf108;"
90
+ d="M256 437c113.1 0 198.4 -38.5 198.4 -89.5996v-310.801c0 -51.1992 -85.3008 -89.6992 -198.4 -89.6992s-198.4 38.5996 -198.4 89.6992v310.801c0 51.0996 85.3008 89.5996 198.4 89.5996zM429.9 140.2v59.0996c-33.1006 -27.3994 -97.1006 -45.2002 -173.9 -45.2002
91
+ s-140.7 17.8008 -173.9 45.2002v-59.0996c0 -30.9004 71.4004 -65.2002 173.9 -65.2002s173.9 34.4004 173.9 65.2002zM429.9 243.8v59.1006c-33.1006 -27.4004 -97.1006 -45.2002 -173.9 -45.2002s-140.7 17.7998 -173.9 45.2002v-59.1006
92
+ c0 -30.8994 71.4004 -65.2002 173.9 -65.2002s173.9 34.4004 173.9 65.2002zM256 412.5c-102.5 0 -173.9 -34.2998 -173.9 -65.2002c0 -30.8994 71.4004 -65.2002 173.9 -65.2002s173.9 34.3008 173.9 65.2002c0 30.9004 -71.4004 65.2002 -173.9 65.2002zM256 -28.5
93
+ c102.5 0 173.9 34.2998 173.9 65.2002v59.0996c-33.1006 -27.3994 -97.1006 -45.2002 -173.9 -45.2002s-140.7 17.8008 -173.9 45.2002v-59.0996c0 -30.9004 71.4004 -65.2002 173.9 -65.2002z" />
94
+ <glyph glyph-name="uniF100" unicode="&#xf100;"
95
+ d="M256 448c141.152 0 256 -114.848 256 -256s-114.848 -256 -256 -256s-256 114.848 -256 256s114.848 256 256 256zM256 0c105.888 0 192 86.1123 192 192s-86.1123 192 -192 192s-192 -86.1123 -192 -192s86.1123 -192 192 -192zM361.216 310.464l45.5684 -44.9277
96
+ l-159.776 -161.984c-6.01562 -6.11133 -14.6562 -10.0156 -22.7842 -9.53613c-8.47949 0 -16.6074 3.36035 -22.624 9.37598l-96 96l45.248 45.248l73.2168 -73.248z" />
97
+ </font>
98
+ </defs></svg>
css/fonts/db/Flaticon.ttf ADDED
Binary file
css/fonts/db/Flaticon.woff ADDED
Binary file
css/fonts/statics/flaticon.eot ADDED
Binary file
css/fonts/statics/flaticon.svg ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg"><defs><font id="flaticon" horiz-adv-x="512"><font-face units-per-em="512" ascent="448" descent="-64" x-height="240" cap-height="480"/><missing-glyph horiz-adv-x="512"/><glyph unicode="&#xE000;" glyph-name="css4" horiz-adv-x="512" d="M302.55136507937 9.8173968253968c0.58920634920635 -0.032507936507937 1.1662222222222 -0.085333333333333 1.7635555555556 -0.085333333333333h134.09523809524c15.685079365079 0 28.444444444444 12.763428571429 28.444444444444 28.444444444444v310.85714285714c0 15.681015873016 -12.759365079365 28.444444444444 -28.444444444444 28.444444444444h-134.09523809524 c-0.59326984126984 0 -1.1743492063492 -0.056888888888889 -1.7635555555556 -0.085333333333333V414.50057142857L40.829968253968 379.57079365079v-372.15898412698l261.7213968254 -35.831873015873V9.8173968253968zM302.55136507937 361.0493968254 c0.58107936507936 0.081269841269841 1.1580952380952 0.17473015873016 1.7635555555556 0.17473015873016h134.09523809524c6.7210158730159 0 12.190476190476 -5.4694603174603 12.190476190476 -12.190476190476v-310.85714285714c0 -6.7210158730159 -5.4694603174603 -12.190476190476 -12.190476190476 -12.190476190476h-134.09523809524c-0.60139682539683 0 -1.1824761904762 0.093460317460317 -1.7635555555556 0.18285714285714V361.0493968254 zM106.55288888889 171.16647619048c5.5060317460317 -0.093460317460317 11.641904761905 1.0727619047619 15.27873015873 2.5396825396825l2.807873015873 -15.221841269841c-3.4052063492063 -1.6985396825397 -11.024253968254 -3.4052063492063 -20.825396825397 -3.1410793650794 c-27.237587301587 0.73142857142857 -40.911238095238 18.903365079365 -40.911238095238 42.491936507937c0 28.245333333333 18.744888888889 44.466793650794 42.691047619048 45.104761904762c9.4679365079365 0.24787301587302 16.729396825397 -1.6050793650794 20.024888888889 -3.303619047619l-3.7871746031746 -15.498158730159 c-3.7546666666667 1.5969523809524 -8.9274920634921 3.0313650793651 -15.396571428571 2.9297777777778c-14.303492063492 -0.24787301587302 -25.246476190476 -9.5004444444444 -25.246476190476 -28.135619047619C81.184507936508 182.15822222222 90.489904761905 171.43466666667 106.55288888889 171.16647619048zM157.5740952381 153.90476190476c-9.6995555555556 0.26006349206349 -19.167492063492 3.088253968254 -23.856761904762 5.888l3.823746031746 16.119873015873c5.0874920634921 -2.7875555555556 12.966603174603 -5.6279365079365 21.174857142857 -5.7701587301587 c8.9274920634921 -0.15034920634921 13.681777777778 3.5718095238095 13.681777777778 9.3500952380952c0 5.5060317460317 -4.112253968254 8.6836825396825 -14.445714285714 12.523682539683c-14.08 5.0874920634921 -23.13346031746 13.064126984127 -23.13346031746 25.636571428571 c0 14.762666666667 11.922285714286 26.363936507937 32.056888888889 26.896253968254c9.7848888888889 0.256 17.078857142857 -1.6660317460317 22.316698412698 -3.9212698412698l-4.4617142857143 -16.355555555556c-3.5149206349206 1.6660317460317 -9.744253968254 4.0634920634921 -18.245079365079 3.9212698412698 c-8.4033015873016 -0.13409523809524 -12.45053968254 -4.104126984127 -12.45053968254 -8.6430476190476c0 -5.5791746031746 4.8030476190476 -8.0172698412698 15.920761904762 -12.255492063492c15.437206349206 -5.7457777777778 22.800253968254 -13.970285714286 22.800253968254 -26.587428571429 C192.75987301587 165.71326984127 181.34552380952 153.27085714286 157.5740952381 153.90476190476zM228.87619047619 152.00711111111c-10.532571428571 0.27631746031746 -20.801015873016 3.2304761904762 -25.888507936508 6.160253968254l4.1488253968254 16.770031746032 c5.5141587301587 -2.8972698412698 14.071873015873 -5.863619047619 22.974984126984 -6.0139682539683c9.6914285714286 -0.16660317460317 14.856126984127 3.7140317460317 14.856126984127 9.7239365079365c0 5.7457777777778 -4.4698412698413 9.0615873015873 -15.689142857143 13.064126984127 c-15.270603174603 5.3109841269841 -25.096126984127 13.604571428571 -25.096126984127 26.697142857143c0 15.364063492063 12.938158730159 27.461079365079 34.787555555556 28.038095238095c10.634158730159 0.28444444444444 18.545777777778 -1.7066666666667 24.254984126984 -4.0553650793651l-4.847746031746 -17.054476190476 c-3.831873015873 1.7310476190476 -10.601650793651 4.2219682539683 -19.825777777778 4.071619047619c-9.1184761904762 -0.15034920634921 -13.515174603175 -4.2869841269841 -13.515174603175 -9.0168888888889c0 -5.8107936507937 5.2134603174603 -8.3504761904762 17.277968253968 -12.763428571429 c16.778158730159 -5.9936507936508 24.779174603175 -14.563555555556 24.779174603175 -27.713015873016C267.08926984127 164.27885714286 254.68749206349 151.31631746032 228.87619047619 152.00711111111zM317.85041269841 180.45968253968c0 -4.7949206349206 -0.70704761904762 -9.5695238095238 -1.4181587301587 -14.364444444444c-0.71111111111111 -4.8030476190476 -1.4262857142857 -9.752380952381 -1.4262857142857 -14.547301587302c0 -17.903746031746 10.999873015873 -24.30780952381 25.725968253968 -24.30780952381h3.7262222222222 v9.7686349206349h-3.1898412698413c-9.9352380952381 0 -14.019047619048 5.5019682539683 -14.019047619048 15.420952380952c0 4.2626031746032 0.53638095238095 8.3504761904762 1.2434285714286 12.783746031746c0.71111111111111 4.2463492063492 1.2434285714286 8.6755555555556 1.2434285714286 13.47453968254 c0.18285714285714 11.349333333333 -4.7908571428571 17.387682539683 -12.775619047619 19.342222222222v0.34133333333333c7.9847619047619 2.1333333333333 12.954412698413 7.8181587301587 12.775619047619 19.167492063492c0 4.7786666666667 -0.53231746031746 9.0412698412698 -1.2434285714286 13.47453968254 c-0.70704761904762 4.2626031746032 -1.2434285714286 8.5170793650794 -1.2434285714286 12.596825396825c0 9.5776507936508 3.5433650793651 15.246222222222 14.019047619048 15.246222222222h3.1898412698413v9.7686349206349h-3.7262222222222c-15.075555555556 0 -25.725968253968 -6.920126984127 -25.725968253968 -23.247238095238 c0 -4.9696507936508 0.7151746031746 -9.7605079365079 1.4262857142857 -14.730158730159c0.71111111111111 -4.9533968253968 1.4181587301587 -9.9108571428571 1.4181587301587 -14.888634920635c0 -6.2049523809524 -1.7716825396825 -13.125079365079 -14.364444444444 -13.125079365079v-9.0412698412698 C316.07873015873 193.59695238095 317.85041269841 185.96977777778 317.85041269841 180.45968253968zM420.42107936508 151.54793650794c0 4.7949206349206 -0.71111111111111 9.744253968254 -1.4222222222222 14.547301587302c-0.70704761904762 4.7949206349206 -1.4222222222222 9.5695238095238 -1.4222222222222 14.364444444444c0 5.5060317460317 1.7798095238095 13.133206349206 14.372571428571 13.133206349206v9.0412698412698 c-12.596825396825 0 -14.372571428571 6.920126984127 -14.372571428571 13.125079365079c0 4.9777777777778 0.7151746031746 9.9352380952381 1.4222222222222 14.888634920635c0.71111111111111 4.9696507936508 1.4222222222222 9.7605079365079 1.4222222222222 14.730158730159c0 16.327111111111 -10.825142857143 23.247238095238 -25.900698412698 23.247238095238 h-3.5474285714286v-9.7686349206349h3.1939047619048c10.292825396825 -0.16660317460317 14.014984126984 -5.6685714285714 14.014984126984 -15.246222222222c0 -4.079746031746 -0.7151746031746 -8.3342222222222 -1.2393650793651 -12.596825396825c-0.72330158730159 -4.4373333333333 -1.4303492063492 -8.6999365079365 -1.4303492063492 -13.47453968254 c0 -11.349333333333 4.9696507936508 -17.030095238095 12.779682539683 -19.167492063492v-0.34133333333333c-7.8100317460317 -1.9504761904762 -12.779682539683 -7.9928888888889 -12.779682539683 -19.342222222222c0 -4.8030476190476 0.70704761904762 -9.2281904761905 1.4303492063492 -13.47453968254 c0.52419047619048 -4.4373333333333 1.2393650793651 -8.5252063492063 1.2393650793651 -12.783746031746c0 -9.9189841269841 -4.2626031746032 -15.254349206349 -14.189714285714 -15.420952380952h-3.0191746031746v-9.7686349206349h3.7262222222222 C409.24647619048 127.23606349206 420.42107936508 133.64419047619 420.42107936508 151.54793650794z"/><glyph unicode="&#xE001;" glyph-name="desktop1" horiz-adv-x="512" d="M480 416H32C14.336 416 0 401.664 0 384v-288c0 -17.664 14.336 -32 32 -32h159.968c-0.064 -23.136 -0.992 -53.184 -9.76 -64H175.744C167.04 0 160 -7.2 160 -16 S167.04 -32 175.744 -32h160.48C344.928 -32 352 -24.8 352 -16S344.928 0 336.256 0h-6.432c-8.8 10.816 -9.728 40.864 -9.792 64H480 c17.664 0 32 14.336 32 32V384C512 401.664 497.664 416 480 416zM480 128H32V384h448V128z"/><glyph unicode="&#xE002;" glyph-name="js" horiz-adv-x="512" d="M438.41422222222 377.30336507937h-134.09523809524c-0.59326984126984 0 -1.1743492063492 -0.052825396825397 -1.767619047619 -0.089396825396825V414.32177777778l-261.7213968254 -34.929777777778v-372.16304761905l261.7213968254 -35.82780952381v38.245587301587 c0.59326984126984 -0.044698412698413 1.1662222222222 -0.089396825396825 1.767619047619 -0.089396825396825h134.09523809524c15.681015873016 0 28.444444444444 12.771555555556 28.444444444444 28.444444444444v310.85714285714C466.85866666667 364.53993650794 454.09523809524 377.30336507937 438.41422222222 377.30336507937zM144.86755555556 183.9299047619 c0 -27.904 -12.747174603175 -37.286603174603 -32.881777777778 -36.746158730159c-4.7136507936508 0.12596825396825 -10.849523809524 1.1337142857143 -14.831746031746 2.6656507936508l2.2552380952381 17.363301587302c2.7956825396825 -1.032126984127 6.3959365079365 -1.8041904761905 10.426920634921 -1.8651428571429 c8.6349206349206 -0.15847619047619 14.071873015873 3.9212698412698 14.071873015873 19.009015873016V245.26425396825l20.959492063492 0.54044444444444V183.9299047619zM186.46552380952 145.33485714286c-11.133968253968 0.30069841269841 -22.007873015873 3.5230476190476 -27.412317460317 6.7250793650794l4.3966984126984 18.375111111111 c5.8554920634921 -3.1654603174603 14.896761904762 -6.4121904761905 24.33219047619 -6.5706666666667c10.260317460317 -0.17473015873016 15.721650793651 4.071619047619 15.721650793651 10.65853968254c0 6.2943492063492 -4.7380317460317 9.9108571428571 -16.587174603175 14.303492063492 c-16.180825396825 5.8026666666667 -26.579301587302 14.900825396825 -26.579301587302 29.244952380952c0 16.843174603175 13.698031746032 30.086095238095 36.819301587302 30.699682539683c11.247746031746 0.29257142857143 19.61853968254 -1.8976507936508 25.644698412698 -4.4657777777778l-5.12 -18.667682539683 c-4.0553650793651 1.9017142857143 -11.215238095238 4.632380952381 -20.959492063492 4.4739047619048c-9.6670476190476 -0.16253968253968 -14.32380952381 -4.6892698412698 -14.32380952381 -9.8661587301587c0 -6.3715555555556 5.5385396825397 -9.1509841269841 18.293841269841 -13.990603174603 c17.737142857143 -6.5503492063492 26.189206349206 -15.945142857143 26.189206349206 -30.338031746032C226.87695238095 158.80126984127 213.78031746032 144.61155555556 186.46552380952 145.33485714286zM450.6046984127 38.001777777778c0 -6.7210158730159 -5.4735238095238 -12.190476190476 -12.190476190476 -12.190476190476h-134.09523809524 c-0.59733333333333 0 -1.1824761904762 0.085333333333333 -1.767619047619 0.17473015873016v38.111492063492c3.6327619047619 -6.9932698412698 9.7645714285714 -12.279873015873 17.131682539683 -14.734222222222c7.9319365079365 -2.6372063492063 18.119111111111 -2.3933968253968 25.58780952381 0.60139682539683 c8.96 3.6286984126984 14.210031746032 11.113650793651 15.599746031746 22.247619047619c0.12190476190476 1.1255873015873 0.2031746031746 13.706158730159 0.2031746031746 37.380063492063v35.689650793651H351.20761904762h-9.8417777777778l-0.081269841269841 -35.567746031746l-0.060952380952381 -35.592126984127l-0.44292063492063 -1.6700952380952 c-0.58514285714286 -2.1942857142857 -1.2678095238095 -3.5027301587302 -2.4746666666667 -4.7095873015873c-1.6944761904762 -1.6904126984127 -3.864380952381 -2.3974603174603 -7.4890158730159 -2.4177777777778c-5.1728253968254 -0.02031746031746 -8.2773333333333 2.1699047619048 -11.877587301587 8.3342222222222 c-0.58514285714286 0.96711111111111 -1.1052698412698 1.7554285714286 -1.1702857142857 1.7310476190476c-0.081269841269841 -0.040634920634921 -3.7221587301587 -2.2349206349206 -8.0904126984127 -4.8680634920635l-7.1273650793651 -4.3316825396825V360.86653968254c0.58514285714286 0.085333333333333 1.1580952380952 0.17879365079365 1.767619047619 0.17879365079365 h134.09523809524c6.7169523809524 0 12.190476190476 -5.4694603174603 12.190476190476 -12.190476190476V38.001777777778zM438.28825396825 88.214349206349c1.8732698412698 -3.8846984126984 2.7022222222222 -7.8140952380952 2.7022222222222 -12.840634920635c0 -7.8750476190476 -2.4787301587302 -14.153142857143 -7.5133968253968 -19.009015873016 c-4.7258412698413 -4.5876825396825 -10.829206349206 -7.2858412698413 -18.964317460317 -8.431746031746c-3.2386031746032 -0.44292063492063 -9.5776507936508 -0.4632380952381 -12.958476190476 0c-12.925968253968 1.7310476190476 -22.487365079365 7.7693968253968 -28.606984126984 18.078476190476 c-0.78425396825397 1.2840634920635 -0.94273015873016 1.7066666666667 -0.74361904761905 1.8895238095238c0.32101587301587 0.30069841269841 15.640380952381 9.1387936507937 15.823238095238 9.1387936507937c0.081269841269841 0 0.66234920634921 -0.76393650793651 1.3084444444444 -1.6904126984127 c4.7095873015873 -6.9648253968254 10.569142857143 -10.187174603175 18.415746031746 -10.187174603175c4.6526984126984 0 8.3951746031746 1.2678095238095 10.768253968254 3.6652698412698c0.70704761904762 0.70298412698413 1.4872380952381 1.7513650793651 1.792 2.3730793650794 c1.5481904761905 3.2223492063492 0.86552380952381 7.4280634920635 -1.5928888888889 10.06526984127c-1.9911111111111 2.1333333333333 -5.1159365079365 3.848126984127 -13.507047619048 7.448380952381c-6.1643174603175 2.6575238095238 -9.7239365079365 4.368253968254 -12.340825396825 5.9408253968254 c-10.280634920635 6.2212063492063 -14.896761904762 14.071873015873 -14.896761904762 25.307428571429c0 7.5093333333333 2.3365079365079 13.425777777778 7.2248888888889 18.277587301587c4.7542857142857 4.7095873015873 11.133968253968 7.448380952381 18.740825396825 8.0497777777778 c2.8810158730159 0.22349206349206 3.2833015873016 0.22349206349206 6.3431111111111 -0.02031746031746c6.2415238095238 -0.4632380952381 10.971428571429 -1.9707936507937 15.400634920635 -4.9127619047619c2.3974603174603 -1.5928888888889 5.879873015873 -5.2134603174603 7.8100317460317 -8.1107301587302 c0.91022222222222 -1.3693968253968 1.6538412698413 -2.535619047619 1.6538412698413 -2.6209523809524c0 -0.13815873015873 -14.636698412698 -9.6020317460317 -15.156825396825 -9.8255238095238c-0.16253968253968 -0.056888888888889 -0.62577777777778 0.48355555555556 -1.2515555555556 1.4709841269841 c-0.54450793650794 0.86552380952381 -1.7107301587302 2.2918095238095 -2.6209523809524 3.1776507936508c-2.5559365079365 2.5803174603175 -5.0712380952381 3.584 -8.9559365079365 3.584c-3.4214603174603 0.024380952380952 -5.6360634920635 -0.84114285714286 -7.5459047619048 -2.9175873015873 c-1.3287619047619 -1.4303492063492 -1.9342222222222 -2.8972698412698 -2.0764444444444 -5.0712380952381c-0.15847619047619 -2.7387936507937 0.58920634920635 -4.9330793650794 2.3324444444444 -6.8063492063492c1.8326349206349 -1.9504761904762 4.616126984127 -3.4824126984127 12.905650793651 -7.0420317460317 c10.971428571429 -4.7136507936508 16.469333333333 -7.9725714285714 20.715682539683 -12.279873015873C435.72012698413 92.65980952381 437.00419047619 90.871873015873 438.28825396825 88.214349206349z"/><glyph unicode="&#xE003;" glyph-name="smart" horiz-adv-x="512" d="M356.624 424.664H155.368c-13.352 0 -24.216 -10.464 -24.216 -23.32V-17.36c0 -12.84 10.856 -23.304 24.216 -23.304h201.256 c13.36 0 24.216 10.464 24.216 23.304V401.352C380.84 414.208 369.984 424.664 356.624 424.664zM220.864 388.424h70.264v-4.928h-70.264V388.424zM256 -16.256c-7.472 0 -13.544 6.072 -13.544 13.536c0 7.456 6.072 13.52 13.544 13.52s13.544 -6.072 13.544 -13.52 C269.544 -10.184 263.472 -16.256 256 -16.256zM364.312 34.416H147.712V355.44h216.6V34.416z"/></font></defs></svg>
css/fonts/statics/flaticon.ttf ADDED
Binary file
css/fonts/statics/flaticon.woff ADDED
Binary file
css/index.html ADDED
@@ -0,0 +1 @@
 
1
+ Silence is golden.
css/style.css ADDED
@@ -0,0 +1,560 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* Set the size and font of the tab widget */
2
+ .tabGroup {
3
+ background: none repeat scroll 0 0 #F3F1EB;
4
+ border: 1px solid #DEDBD1;
5
+ padding: 10px;
6
+ width: 750px;
7
+ height: auto;
8
+ float: left;
9
+ }
10
+
11
+ .tabGroup div.questionCon{
12
+ width: 100%;
13
+ float: left;
14
+ padding-top: 5px;
15
+ line-height: 18px;
16
+ }
17
+
18
+ .tabGroup select, .tabGroup label, .tabGroup div {
19
+ font-size: 12px;
20
+
21
+ }
22
+ .tabGroup > label{
23
+ font-weight: normal !important;
24
+ margin-bottom: 0 !important;
25
+ }
26
+
27
+ div.inputCon label{
28
+ font-weight: normal !important;
29
+ margin-bottom: 0 !important;
30
+ }
31
+
32
+ div.questionCon.qsubmit{
33
+ text-align: center;
34
+ }
35
+
36
+ .tabGroup div.questionCon.disabled{
37
+ color: #888;
38
+ }
39
+
40
+ .tabGroup div.question{
41
+ padding-right: 10px;
42
+ float: left;
43
+ text-align: right;
44
+ width: 130px;
45
+ font-weight: normal !important;
46
+ background: none !important;
47
+ }
48
+
49
+ .tabGroup div.inputCon{
50
+ float:left;
51
+ }
52
+
53
+ /* Configure the radio buttons to hide off screen */
54
+ .tabGroup > input[type="radio"] {
55
+ position: absolute;
56
+ left:-100px;
57
+ top:-100px;
58
+ }
59
+
60
+ /* Configure labels to look like tabs */
61
+ .tabGroup > input[type="radio"] + label {
62
+ /* inline-block such that the label can be given dimensions */
63
+ display: inline-block;
64
+
65
+ /* A nice curved border around the tab */
66
+ border: 1px solid #DEDBD1;
67
+ border-radius: 5px 5px 0 0;
68
+ -moz-border-radius: 5px 5px 0 0;
69
+ -webkit-border-radius: 5px 5px 0 0;
70
+
71
+ /* the bottom border is handled by the tab content div */
72
+ border-bottom: 0;
73
+
74
+ /* Padding around tab text */
75
+ padding: 5px 10px;
76
+
77
+ /* Set the background color to default gray (non-selected tab) */
78
+ background-color:#ddd;
79
+ color: black;
80
+ box-shadow: none !important;
81
+ }
82
+
83
+ /* Focused tabs need to be highlighted as such */
84
+ .tabGroup > input[type="radio"]:focus + label {
85
+ border:1px dashed #DEDBD1;
86
+ }
87
+
88
+ /* Checked tabs must be white with the bottom border removed */
89
+ .tabGroup > input[type="radio"]:checked + label {
90
+ background-color:white;
91
+ font-weight: bold;
92
+ border-bottom: 1px solid white;
93
+ margin-bottom: -1px;
94
+ }
95
+
96
+ /* The tab content must fill the widgets size and have a nice border */
97
+ .tabGroup > div {
98
+ display: none;
99
+ border: 1px solid #DEDBD1;
100
+ background-color: white;
101
+ padding: 10px 0px;
102
+ height: auto;
103
+ overflow: auto;
104
+ margin-top: -1px;
105
+
106
+ border-radius: 0 5px 5px 5px;
107
+ -moz-border-radius: 0 5px 5px 5px;
108
+ -webkit-border-radius: 0 5px 5px 5px;
109
+ }
110
+
111
+ /* This matchs tabs displaying to thier associated radio inputs */
112
+ #wpfc-options:checked ~ .tab1, #wpfc-deleteCache:checked ~ .tab2, #wpfc-cacheTimeout:checked ~ .tab3, #wpfc-imageOptimisation:checked ~ .tab4, #wpfc-premium:checked ~ .tab5, #wpfc-exclude:checked ~ .tab6 , #wpfc-cdn:checked ~.tab7, #wpfc-db:checked ~.tab8{
113
+ display: block;
114
+ }
115
+ /* for lef panel */
116
+ #toplevel_page_wpfastestcacheoptions img{
117
+ padding: 0 !important;
118
+ margin-left: 5px !important;
119
+ }
120
+ #toplevel_page_wpfastestcacheoptions div.wp-menu-name{
121
+ margin-left: 0 !important;
122
+ }
123
+ .question:after {
124
+ content: ":";
125
+ }
126
+ .inputCon input[type="checkbox"]{
127
+ margin-right: 5px;
128
+ }
129
+ .get-info {
130
+ float: left;
131
+ padding-left: 10px;
132
+ }
133
+ #rule-help-tip {
134
+ width: 500px;
135
+ background: none repeat scroll 0 0 #FFFFFF;
136
+ border: 1px solid #CCCCCC;
137
+ border-radius: 8px 8px 8px 8px;
138
+ box-shadow: 4px 4px 10px #CCCCCC;
139
+ display: block;
140
+ padding: 10px 10px 0;
141
+ position: absolute;
142
+ }
143
+
144
+ #rule-help-tip h4 {
145
+ color: #6397CB;
146
+ margin-top: 0;
147
+ font-size: 14px;
148
+ letter-spacing: -1px;
149
+ }
150
+ h1.summary-rec {
151
+ border-bottom: 0 none;
152
+ color: #777777;
153
+ font-size: 14px;
154
+ font-weight: normal;
155
+ letter-spacing: normal;
156
+ margin: 0 0 0.5em;
157
+ }
158
+
159
+ .close-window {
160
+ background: url("../images/close-wiz-sprite.png") no-repeat scroll 0 -19px rgba(0, 0, 0, 0);
161
+ height: 19px;
162
+ width: 22px;
163
+ float: right;
164
+ }
165
+ .omni_admin_sidebar {
166
+ float: right;
167
+ font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif;
168
+ font-size: 12px;
169
+ margin-right: 50px;
170
+ width: 222px;
171
+ }
172
+
173
+ .omni_admin_sidebar_section {
174
+ background-color: #F6F6F6;
175
+ border: 1px solid #CCCCCC;
176
+ float: left;
177
+ margin: 0 0 10px;
178
+ padding: 10px;
179
+ width: 200px;
180
+ }
181
+
182
+ .omni_admin_sidebar ul {
183
+ margin: 0;
184
+ padding: 0;
185
+ }
186
+
187
+ .omni_admin_sidebar li {
188
+ font-size: 11px;
189
+ line-height: 16px;
190
+ list-style: disc outside none;
191
+ margin: 5px 0 5px 20px;
192
+ }
193
+
194
+ .omni_admin_sidebar h3 {
195
+ margin: 0 0 10px;
196
+ }
197
+ .success-wpfc, .error-wpfc{
198
+ background-position: 10px center !important;
199
+ padding-bottom: 5px !important;
200
+ padding-top: 5px !important;
201
+ }
202
+ .success-wpfc{
203
+ border-color: #4F8A10 !important;
204
+ color: #4F8A10 !important;
205
+ background: #DFF2BF url("../images/success.png") no-repeat 10px !important;
206
+ }
207
+ .success-wpfc p, .error-wpfc p{
208
+ padding: 2px 2px 2px 40px !important;
209
+ }
210
+ .error-wpfc{
211
+ border-color: #D8000C !important;
212
+ color: #D8000C !important;
213
+ background: #FFBABA url("../images/error.png") no-repeat 10px !important;
214
+ }
215
+ .omni_admin_sidebar_section label {
216
+ font-size: 11px;
217
+ }
218
+
219
+ #vote-us{
220
+ border-color: #D09847;
221
+ background: url("../images/facebook-like-xxl.png") #E39124 no-repeat 103% 130%;
222
+ background-size: 30%;
223
+ cursor: pointer;
224
+ }
225
+
226
+ #wpfc-beta{
227
+ padding-right: 5px;
228
+ font-weight: bold;
229
+ color: red;
230
+ }
231
+
232
+ #deleteCron{
233
+ float:right;
234
+ margin-right:5px;
235
+ padding: 3px;
236
+ }
237
+
238
+ #deleteCron:hover{
239
+ background-color:#FAEBD7;
240
+ }
241
+ form.delete-line{
242
+ height: 100px;
243
+ width: 100%;
244
+ float: left;
245
+ }
246
+ form.delete-line .left{
247
+ width: 25%;
248
+ float: left;
249
+ }
250
+ form.delete-line .right{
251
+ width: 75%;
252
+ float: left;
253
+ }
254
+
255
+ form.delete-line .left .submit{
256
+ padding-top: 0;
257
+ float: left;
258
+ padding-left: 20px;
259
+ }
260
+ form.delete-line .left .submit input{
261
+ height: 65px;
262
+ width: 165px;
263
+ white-space: pre-line !important;
264
+ }
265
+ .revert{
266
+ width:16px;
267
+ height:16px;
268
+ vertical-align: middle;
269
+ margin: auto;
270
+ position:relative;
271
+ cursor:pointer;
272
+
273
+ -moz-border-radius: 3px 3px;
274
+ -webkit-border-radius: 3px 3px;
275
+ border-radius: 3px 3px;
276
+ border:1px solid #aaa;
277
+ background:#ddd;
278
+ padding:3px;
279
+
280
+ background: rgb(255,255,255) url("../images/cancel.png") no-repeat center; /* Old browsers */
281
+ background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(229,229,229,1) 100%) url("../images/cancel.png") no-repeat center; /* FF3.6+ */
282
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,1)), color-stop(100%,rgba(229,229,229,1))) url("../images/cancel.png") no-repeat center; /* Chrome,Safari4+ */
283
+ background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(229,229,229,1) 100%) url("../images/cancel.png") no-repeat center; /* Chrome10+,Safari5.1+ */
284
+ background: -o-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(229,229,229,1) 100%) url("../images/cancel.png") no-repeat center; /* Opera 11.10+ */
285
+ background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(229,229,229,1) 100%) url("../images/cancel.png") no-repeat center; /* IE10+ */
286
+ background: linear-gradient(top, rgba(255,255,255,1) 0%,rgba(229,229,229,1) 100%) no-repeat center; /* W3C */
287
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e5e5e5',GradientType=0 ) url("../images/cancel.png") no-repeat center; /* IE6-9 */
288
+ }
289
+
290
+ .revert:hover{
291
+ border-color:#000;
292
+
293
+ background: rgb(255,255,255) url("../images/cancel.png") no-repeat center; /* Old browsers */
294
+ background: -moz-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(229,229,229,1) 100%) url("../images/cancel.png") no-repeat center; /* FF3.6+ */
295
+ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,1)), color-stop(100%,rgba(229,229,229,1))) url("../images/cancel.png") no-repeat center; /* Chrome,Safari4+ */
296
+ background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(229,229,229,1) 100%) url("../images/cancel.png") no-repeat center; /* Chrome10+,Safari5.1+ */
297
+ background: -o-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(229,229,229,1) 100%) url("../images/cancel.png") no-repeat center; /* Opera 11.10+ */
298
+ background: -ms-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(229,229,229,1) 100%) url("../images/cancel.png") no-repeat center; /* IE10+ */
299
+ background: linear-gradient(top, rgba(255,255,255,1) 0%,rgba(229,229,229,1) 100%) url("../images/cancel.png") no-repeat center; /* W3C */
300
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#e5e5e5',GradientType=0 ) url("../images/cancel.png") no-repeat center; /* IE6-9 */
301
+ }
302
+
303
+ .revert:active{
304
+ background-color: #F5F5F5;
305
+ }
306
+
307
+ #revert-loader{
308
+ display: none;
309
+ background: rgba(255, 255, 255, .7) url(../images/loader.gif) no-repeat center;
310
+ position: fixed;
311
+ top: 0;
312
+ left: 0;
313
+ width: 100%;
314
+ height: 100%;
315
+ z-index: 9998;
316
+ }
317
+ .wpfc-loading-statics{
318
+ background-repeat: no-repeat;
319
+ background-image: url(../images/loader-statics.gif);
320
+ background-position: 0 0;
321
+ }
322
+ div.wpfc-loading-statics{
323
+ height: 16px;
324
+ }
325
+ p.wpfc-loading-statics{
326
+ background-position: 44px 6px;
327
+ height: 27px;
328
+ }
329
+ #wpfc-optimized-statics-reduction:not(.wpfc-loading-statics):after{
330
+ content: " KB";
331
+ }
332
+ #wpfc-statics-right ul li{
333
+ height:35px;
334
+ padding:0;
335
+ margin-bottom:15px;
336
+ width:150px;
337
+ }
338
+ #wpfc-statics-right ul:last-child{
339
+ padding-left: 10px;
340
+ }
341
+ #wpfc-statics-right ul:last-child li{
342
+ width: 220px;
343
+ height: auto;
344
+ }
345
+
346
+ span.deleteicon {
347
+ position: relative;
348
+ }
349
+ span.deleteicon input {
350
+ padding-right: 16px;
351
+ }
352
+ span.deleteicon span {
353
+ position: absolute;
354
+ display: block;
355
+ top: 0px;
356
+ right: 5px;
357
+ width: 16px;
358
+ height: 16px;
359
+ background: url("../images/search_reset.jpg") no-repeat scroll;
360
+ cursor: pointer;
361
+ }
362
+ span.deleteicon span.cleared {
363
+ background: none;
364
+ }
365
+ #wpfc-image-list-filter:-moz-focusring, #wpfc-image-per-page:-moz-focusring {
366
+ color: transparent;
367
+ text-shadow: 0 0 0 #000;
368
+ }
369
+ #buy-image-credit{
370
+ border: 1px solid;
371
+ color: white;
372
+ border-radius: 26px;
373
+ background-color: rgb(61, 207, 60);
374
+ cursor: pointer;
375
+ padding: 5px 15px;
376
+ margin-left: 5px;
377
+ }
378
+ .wpfc-exclude-rule-line{
379
+ float: left;
380
+ width: 100%;
381
+ height: 40px;
382
+ }
383
+ .wpfc-exclude-rule-line-left{
384
+ width: 100px;
385
+ float: left;
386
+ }
387
+ .wpfc-exclude-rule-line-middle{
388
+ /*width: 400px;*/
389
+ float: left;
390
+ }
391
+ .wpfc-exclude-rule-line-add, .wpfc-exclude-rule-line-delete{
392
+ float: left;
393
+ padding-top: 7px;
394
+ cursor: pointer;
395
+ width: 20px;
396
+ }
397
+ .wpfc-exclude-rule-line-delete{
398
+ display: none;
399
+ }
400
+ #integrationDiv {
401
+ display: block;
402
+ font-family: "Lucida Grande","Lucida Sans","Lucida Sans Unicode",Verdana,Tahoma,sans-serif;
403
+ font-size: 13px;
404
+ height: auto;
405
+ line-height: 18px;
406
+ max-height: 395px;
407
+ overflow-x: hidden;
408
+ overflow-y: auto;
409
+ padding: 0;
410
+ }
411
+ .wpfc-timeout-item, .wpfc-exclude-item, .int-item{
412
+ background: url(data:image/gif;base64,R0lGODlhAQAkANUAAAAAAP/////+//38/fb19vX09fDv8Pr6+/n5+vb29/Hx8u/v8Pv8/Pn6+vLz8vv7+vj49/T08/Pz8vLy8f/+/v38/Pn4+PHw8P7+/v39/fv7+/j4+Pf39/b29vPz8/Hx8fDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACEALAAAAAABACQAAAYiwICAgsFkMpUBQ/M4IBqWDYST6BAKhYjHIZkoPp8LaGEIAgA7) repeat-x scroll center bottom transparent !important;
413
+ border: 1px solid #CCCCCC !important;
414
+ }
415
+ .wpfc-timeout-item:hover, .wpfc-exclude-item:hover, .int-item:hover{
416
+ border:1px solid #ccc;
417
+ background:#f5f5f5 none repeat scroll 0 0 !important;
418
+ }
419
+ .int-item, .wpfc-timeout-item, .wpfc-exclude-item {
420
+ border-radius: 6px;
421
+ cursor: pointer;
422
+ margin-bottom: 7px;
423
+ overflow: hidden;
424
+ padding: 12px;
425
+ float: left;
426
+ width: 328.5px;
427
+ }
428
+ .int-item{
429
+ padding: 12px 8px 12px 12px !important;
430
+ }
431
+ .int-item-left{
432
+ margin-right: 7px;
433
+ }
434
+ .int-item:hover {
435
+ background: none repeat scroll 0 0 rgba(135, 135, 135, 0.1);
436
+ }
437
+ .int-item h2 {
438
+ font-size: 14px;
439
+ margin: 0 0 3px;
440
+ }
441
+ .int-item p {
442
+ color: #666;
443
+ font-size: 11px;
444
+ margin: 0;
445
+ position: relative;
446
+ }
447
+ .int-item img {
448
+ float: left;
449
+ margin-right: 12px;
450
+ height: 45px;
451
+ width: 45px;
452
+ }
453
+ .int-item .meta.isConnected{
454
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAACA0lEQVQ4EaVUy23bQBCd4SdAbipB7oC+BVEOVAURO5BLSAWxKohdgZ0KyFRgArEN36wS7A50C2BKmLy30lJriZRiZw7a3bczT2/nQ5UD9lJ+zkQ0V9GBdzOxxUpW1cfi4clju6vuAjyDbBqpfjeRYdf9BqvFdJYWt/WuzytSK/PBUl+uoG6y69h3BsF1bOk3LeqF94n8Zk3Y3LyFkLF4zXSpjNtaS4qLEjBy+C7Lml+jHz7SPZ85VFU8+z/NdMwcO6UsyjvoFmZ2KioXbaya44nYNna4ym1MsJknlp58KO7najII8PxP+WkIpZoH4NEtqw3CMavNtEHQNAxKJc2SdWPjKjAGmumzbJ7TXqEvk+L2nOe+OmA4srb6dPQGwp9I+DmaewyM/bdQiwqH4dBHiCtnnaRQWDI3rCRzt7TVaVL8rhjRlF/yY52ScJZdX63/xP8OEo1LDITLHUCqpcKMf+idulakcw6lVnddAsvCSSEhFN4AD6u9FxpLXDuRTTV6JMmeBwAWrbHVDMrpc5AQAqt0cl+4nKIIsy5CYmyZfyOkc3TJGEfKIlARgR47ohBRmCwWlvGOlBt+vrDMuX+rUVD69Y7xzlpSToiblMOKfdx2hcJkcne2BVwdwuN6z17cTFO+f+sRq5hD/2SPcoXyfuMAxBLlKtHQe7EPXdsEX3p/59e/YUe3GmOE5VkAAAAASUVORK5CYII=") no-repeat scroll 0 0;
455
+ height: 21px;
456
+ width: 21px;
457
+ position: relative;
458
+ top: -8px;
459
+ left: 312px;
460
+ }
461
+ .int-item .meta.success{
462
+ background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAADb0lEQVQ4Ea2VS0iUURTH7+v7dAwnLMhWjURRm4IeOtEmS4VQ6GFNUYFG+UCooDYlBAktCqIXRVEUvaggqVQoNzallGiboKIWvSha5MLSMZ2Z7746Z9JptLEHdQbmu9+95/+7595z7v0oSWOFDUTkFqwKTPQ7Qa7oIkN4kFIzw1r2mhHdrYXt6o/I7p7HTe8fNBA1FkHHdmxoXpHrnzhhCyV2D+PUT+xYD3gHldYmYik5MNAXvXB9ZUtPqlcqlFa1rZgjfFlHBeXLrDbEpgMOqykoKWdEWR1W0aGd54pbnsFQQpGEbutcOcdY3yXhOPNU7KcVpQYyqi0yBVFSPmE0WnlycTOCCcO/iraiyVq5J/4WiNuAAaAO9chBHi9sKBRT8qbucFyxVXsa+/7YDCGSc8q1hFQKkUeJ+yU770UXCxQEApzZPVb9YgPTTGOs7pADg8VK6lbmMIJ6anl9oKAywLL8Q0EmqN+mTfMYGiYHNsxa0zlg1KbzZS0dWulTylNR3EgOnAQPZggSWEfSQMgEeCRTODyC/ZBto02n9syGq0tvfaxuK893MsRexxE+a2ClwEEes8RZlArEtpbqHQaOZZMweHKYSEr5SA9GKs6WNH6oC4cWOBnuKeGKoFY/okIeA+pMFFL4WQNxKHLwq+eVgeMRjBb7OUQoY/FL8Z6va8+Wtr6pvR9aDrPcgOQsVPHRyUUeM5S8QqilFjNIldFPr5Tcfhnvj++HU3NG+DiRnursj3i7L667+6nmQflSSukx7rLpWo4GIgd5jBLZhS+4XAuHG4I6VNu+rvTi6qY+1RfdFx2M74qrWDUexar20DLGxEnhOrMMlFE6Qx6texjaSIm4OpIsyikxnuqF81d5uqTxDgmFOGls1FXhNaWCu4eFw2ablD0cBcbKIGoTG4pkdRtlI7h3aFZDvTl8MnHFlZpwqAz7ajrWz3eFOO644wNRr4GDPJ4zM2cgZ1q2FS4rSpRFggwJYsQH1Vy8IJ9FBaX13BFz8eSMZ1iGkOWGt4+utSbCwzM7wZ1008nMXJJ6meDszMWqgASMt2SYBS8VGYu1D3qf11wuvtcLu0AINrjwtuNtgw4jhqcMCv23QNShHjmoTUCxAdfWcy86tNmTMoxLSRY+DqYxHEc/9Ecd6kfcvmdn5A2e//vmT6L/9Rv1DasAwJ2jW2dLAAAAAElFTkSuQmCC') no-repeat scroll 0 0;
463
+ height: 21px;
464
+ width: 21px;
465
+ position: relative;
466
+ top: -8px;
467
+ left: 312px;
468
+ }
469
+ .int-item .meta.warning{
470
+ background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlpJREFUOBGtlb9vE1EMx+333p3aQg8BAhYoUtOOHahEErEASf+ADjCDkGBjYGPsxsjABgNiAgmGDpVYmkIWlDCEASYKrfixAAKhS9JWee+esSNdiAJpSYKnnJ+/n/Pz2Q7CX+zZOTAZdeakUZM5giSPSuUQcIaA3pH3VQRdcb5efe9ffDj/HFwvAnsdG8XcsQl98AoDbiqFEcEfIewh8J5iDcmtRlK/P12qfunmdCtwo1ic2xeEtw1iISEWdkf2/Fb8rBHBEa01bevGdKn0ml0kYR3op4WFuXFjHiDqU5Z2w4nstwWogCh5te3cpROrqwIGeSF8LmYPBwrvDAoUrSQgOtELR3xqCcAYfehaYMKzg2Qo4tREJ3qD0VX5yPixUMgEQVjTSkWe6zisKa5v4n1sbWveGBXkuOCRTxLm/Xste1/uuZKSGDHPgPI5cWAUAR49wgXRHD9IxvytfQL09Rv4RoP1nqGEeRwbg+DiBQgXFwGDcGAo2Ra0lpfBPnwE0GzmuSVpFib3g56fb9+Itrd6b7b3szFtvV1ZAdxqzBoiXId6I5vUaqCnpgDHJ4bKVPTM4Z7FdQNIFdrZydrHT8CVyyPVlDk8TlQx4FVV8Qj4OAaKf+591b4RChSDPPOM87aKFMZaa+7T9oD1le12kPap8PSBzc366cwMGa2KozS/kSydXXqblJ7KmDqX/LhrXassy2EYE53oHcX3ZL+2KcdLL79bT9dl2wwKTreU6IUjSXVS47X1hgf3siO/FvAcdw76pC7nEifxohN9GtrZp6njf2/+lAuj/kf9ArVlQDDNYNOoAAAAAElFTkSuQmCC') no-repeat scroll 0 0;
471
+ height: 21px;
472
+ width: 21px;
473
+ position: relative;
474
+ top: -8px;
475
+ left: 312px;
476
+ }
477
+ .int-item .app {
478
+ float: left;
479
+ /*padding-right: 10px;*/
480
+ width: 75%;
481
+ }
482
+ .int-item .app .more-info {
483
+ cursor: auto;
484
+ float: none;
485
+ height: auto;
486
+ margin-left: 10px;
487
+ width: auto;
488
+ }
489
+ .int-item .meta {
490
+ font-size: 11px;
491
+ font-weight: bold;
492
+ max-width: 100px;
493
+ text-align: right;
494
+ }
495
+ .int-item .meta .developer {
496
+ color: #333333;
497
+ display: block;
498
+ }
499
+ #wpfc-premium-container{
500
+ overflow: hidden;
501
+ }
502
+ .wpfc-premium-step{
503
+ width: 246px;
504
+ float: left;
505
+ margin-left: 3px;
506
+ }
507
+ .wpfc-premium-step div{
508
+ float: left !important;
509
+ }
510
+ .wpfc-premium-step-header{
511
+ width: 100%;
512
+ background-color: rgb(58, 158, 235);
513
+ padding-top: 12px;
514
+ padding-bottom: 11px;
515
+ text-align: center;
516
+ }
517
+ .wpfc-premium-step-header label{
518
+ font-size: 17pt !important;
519
+ color: white !important;
520
+ font-weight: normal !important;
521
+ margin-bottom: 0 !important;
522
+ }
523
+ .wpfc-premium-step-content{
524
+ font-size: 16px !important;
525
+ line-height: 20px !important;
526
+ padding-top: 25px !important;
527
+ padding-left: 25px !important;
528
+ height: 100px;
529
+ }
530
+ .wpfc-premium-step-footer p{
531
+ font-size: 15px !important;
532
+ }
533
+ .wpfc-premium-step-footer ul li{
534
+ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAUCAYAAACXtf2DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNDgwMTE3NDA3MjA2ODExOEMxNEJENkJCQTMxQTY0OSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowNDA0MUQ4RTAxMjUxMUUzQUNBOEExQjA5MUZCRkI2OCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowNDA0MUQ4RDAxMjUxMUUzQUNBOEExQjA5MUZCRkI2OCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzNDYwOTkyMEYyMDY4MTE4NzFGQ0NDRDhCOTMyRDhEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA0ODAxMTc0MDcyMDY4MTE4QzE0QkQ2QkJBMzFBNjQ5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+U7CKjQAAAX1JREFUeNpiZFj/gYES8D+AH85m3PBREEj1AbEHEO8E4kIWBioBoOEaQGoBEJtDheKB+AcLlQx3AVKrgVgATSqCiQqGRwOpTVgMB4HjlFqQAcRLgJgTi9wXIC6hxIIqIJ6OR74AmACukmtBJRC34pGfDTR8LohBjgVlQNyGR/44EGfCODALhIHYFYj5CBheDMSdeOTvA3EI0PV/kS0wAOKTQLwLShvj0AxyVQ8ew0GRGg40/BmyIMiCSUCsDOWDMstmIFZH0xwHxNMI+C4KaPhpdEGQBWpoYpJAvAWIZaD8UCBeSMDwOKDhm7FJgCyYh0VcBYg3AHENEK8gYHgR0PDFODMisLADZZJj0LggFYDS+kR8CkA++A7ECVCaFJAPxBMJKYIl04tAnEiC4enQxMFArAUgsBKImwmo/woqIYF4FrEuQc/JdUC8DIfat0DsA3UIA7kWwCqKPWhiR4HYBIgPkJoKsFnwB4jDgHg5EL8A4jlA7A3ED8gpFQECDADtslAckBdkiwAAAABJRU5ErkJggg==") no-repeat scroll 0 2px transparent;
535
+ padding: 3px 30px;
536
+ font-size: 15px;
537
+ }
538
+ .wpfc-premium-step-footer{
539
+ padding-left: 25px;
540
+ }
541
+ .wpfc-premium-step-image{
542
+ width: 100%;
543
+ height: 180px;
544
+ text-align: center;
545
+ }
546
+ .wpfc-form-spinner, .wpfc-form-spinner-input-td, .wpfc-form-spinner-number, .wpfc-form-spinner-up, .wpfc-form-spinner-down{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}
547
+
548
+ .exclude_section_clear {
549
+ background: none;
550
+ border-bottom: 1px solid #e6e6e6;
551
+ clear: both;
552
+ float: left;
553
+ marig-left: 1px;
554
+ margin-bottom: 0px;
555
+ margin-top: 16px;
556
+ overflow: auto;
557
+ position: relative;
558
+ width: 97%;
559
+ }
560
+ /* input[type=checkbox]:checked:before { color: #e14d43;} */
css/toolbar.css ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #revert-loader-toolbar{
2
+ display: none;
3
+ background: rgba(255, 255, 255, .7) url('data:image/gif;base64,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') no-repeat center;
4
+ position: fixed;
5
+ top: 0;
6
+ left: 0;
7
+ width: 100%;
8
+ height: 100%;
9
+ z-index: 9998;
10
+ }
11
+ #wp-admin-bar-wpfc-toolbar-parent, #wp-admin-bar-wpfc-toolbar-parent-delete-cache, #wp-admin-bar-wpfc-toolbar-parent-delete-cache-and-minified{
12
+ cursor: pointer;
13
+ }
14
+
15
+ #wp-admin-bar-wpfc-toolbar-parent > .ab-empty-item::before{
16
+ content: url("../images/icon-24x24.png");
17
+ }
18
+
19
+ #wp-admin-bar-wpfc-toolbar-parent .ab-empty-item:hover{
20
+ background-color: #FFA100;
21
+ }
images/blue-check.png ADDED
Binary file
images/button-back-green.png ADDED
Binary file
images/cancel.png ADDED
Binary file
images/close-wiz-sprite.png ADDED
Binary file
images/dollar.png ADDED
Binary file
images/download.png ADDED
Binary file
images/error.png ADDED
Binary file
images/facebook-like-xxl.png ADDED
Binary file
images/icon-24x24.png ADDED
Binary file
images/icon-32x32.png ADDED
Binary file
images/icon-left.png ADDED
Binary file
images/icon.png ADDED
Binary file
images/index.html ADDED
@@ -0,0 +1 @@
 
1
+ Silence is golden.
images/info.png ADDED
Binary file
images/label-bg.png ADDED
Binary file
images/loader-statics.gif ADDED
Binary file
images/loader.gif ADDED
Binary file
images/loading-circle.gif ADDED
Binary file
images/maxcdn.png ADDED
Binary file
images/no-image.gif ADDED
Binary file
images/othercdn.png ADDED
Binary file
images/photoncdn.png ADDED
Binary file
images/read-more.png ADDED
Binary file
images/rocket.png ADDED
Binary file
images/search_reset.jpg ADDED
Binary file
images/success.png ADDED
Binary file
images/tinymce-wpfcnot.jpg ADDED
Binary file
inc/admin-toolbar.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class WpFastestCacheAdminToolbar{
3
+ public function __construct(){}
4
+
5
+ public function add(){
6
+ if(is_admin()){
7
+ add_action('wp_before_admin_bar_render', array($this, "wpfc_tweaked_toolbar_on_admin_panel"));
8
+ add_action('admin_enqueue_scripts', array($this, 'load_toolbar_js'));
9
+ add_action('admin_enqueue_scripts', array($this, 'load_toolbar_css'));
10
+ }else{
11
+ add_action('wp_before_admin_bar_render', array($this, "wpfc_tweaked_toolbar_on_frontpage"));
12
+ add_action('wp_enqueue_scripts', array($this, 'load_toolbar_js'));
13
+ add_action('wp_enqueue_scripts', array($this, 'load_toolbar_css'));
14
+ add_action('wp_footer', array($this, 'print_my_inline_script'));
15
+ }
16
+ }
17
+
18
+ public function load_toolbar_js(){
19
+ wp_enqueue_script("wpfc-toolbar", plugins_url("wp-fastest-cache/js/toolbar.js"), array(), time(), true);
20
+ }
21
+
22
+ public function load_toolbar_css(){
23
+ wp_enqueue_style("wp-fastest-cache-toolbar", plugins_url("wp-fastest-cache/css/toolbar.css"), array(), time(), "all");
24
+ }
25
+
26
+ public function print_my_inline_script() {
27
+ ?>
28
+ <script type="text/javascript">var wpfc_ajaxurl = "<?php echo admin_url( 'admin-ajax.php' );?>";</script>
29
+ <?php
30
+ }
31
+
32
+ public function wpfc_tweaked_toolbar_on_frontpage() {
33
+ global $wp_admin_bar;
34
+
35
+ $wp_admin_bar->add_node(array(
36
+ 'id' => 'wpfc-toolbar-parent',
37
+ 'title' => 'WPFC'
38
+ ));
39
+
40
+ $wp_admin_bar->add_menu( array(
41
+ 'id' => 'wpfc-toolbar-parent-clear-cache-of-this-page',
42
+ 'title' => 'Clear Cache of This Page',
43
+ 'parent'=> 'wpfc-toolbar-parent',
44
+ 'meta' => array("class" => "wpfc-toolbar-child")
45
+ ));
46
+
47
+ $wp_admin_bar->add_menu( array(
48
+ 'id' => 'wpfc-toolbar-parent-delete-cache',
49
+ 'title' => 'Delete Cache',
50
+ 'parent'=> 'wpfc-toolbar-parent',
51
+ 'meta' => array("class" => "wpfc-toolbar-child")
52
+ ));
53
+
54
+ $wp_admin_bar->add_menu( array(
55
+ 'id' => 'wpfc-toolbar-parent-delete-cache-and-minified',
56
+ 'title' => 'Delete Cache and Minified CSS/JS',
57
+ 'parent'=> 'wpfc-toolbar-parent',
58
+ 'meta' => array("class" => "wpfc-toolbar-child")
59
+ ));
60
+ }
61
+
62
+ public function wpfc_tweaked_toolbar_on_admin_panel() {
63
+ global $wp_admin_bar;
64
+
65
+ $wp_admin_bar->add_node(array(
66
+ 'id' => 'wpfc-toolbar-parent',
67
+ 'title' => 'WPFC'
68
+ ));
69
+
70
+ $wp_admin_bar->add_menu( array(
71
+ 'id' => 'wpfc-toolbar-parent-delete-cache',
72
+ 'title' => 'Delete Cache',
73
+ 'parent'=> 'wpfc-toolbar-parent',
74
+ 'meta' => array("class" => "wpfc-toolbar-child")
75
+ ));
76
+
77
+ $wp_admin_bar->add_menu( array(
78
+ 'id' => 'wpfc-toolbar-parent-delete-cache-and-minified',
79
+ 'title' => 'Delete Cache and Minified CSS/JS',
80
+ 'parent'=> 'wpfc-toolbar-parent',
81
+ 'meta' => array("class" => "wpfc-toolbar-child")
82
+ ));
83
+ }
84
+ }
85
+ ?>
inc/admin.php ADDED
@@ -0,0 +1,2071 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class WpFastestCacheAdmin extends WpFastestCache{
3
+ private $adminPageUrl = "wp-fastest-cache/admin/index.php";
4
+ private $systemMessage = array();
5
+ private $options = array();
6
+ private $cronJobSettings;
7
+ private $startTime;
8
+ private $blockCache = false;
9
+
10
+ public function __construct(){
11
+ $this->options = $this->getOptions();
12
+
13
+ //to call like that because on WP Multisite current_user_can() cannot get the user
14
+ add_action('admin_init', array($this, "optionsPageRequest"));
15
+
16
+ $this->setCronJobSettings();
17
+ $this->addButtonOnEditor();
18
+ add_action('admin_enqueue_scripts', array($this, 'addJavaScript'));
19
+ }
20
+
21
+ public function create_auto_cache_timeout($recurrance, $interval){
22
+ $exist_cronjob = false;
23
+ $wpfc_timeout_number = 0;
24
+
25
+ $crons = _get_cron_array();
26
+
27
+ foreach ((array)$crons as $cron_key => $cron_value) {
28
+ foreach ( (array) $cron_value as $hook => $events ) {
29
+ if(preg_match("/^wp\_fastest\_cache(.*)/", $hook, $id)){
30
+ if(!$id[1] || preg_match("/^\_(\d+)$/", $id[1])){
31
+ $wpfc_timeout_number++;
32
+
33
+ foreach ( (array) $events as $event_key => $event ) {
34
+ $schedules = wp_get_schedules();
35
+
36
+ if(isset($event["args"]) && isset($event["args"][0])){
37
+ if($event["args"][0] == '{"prefix":"all","content":"all"}'){
38
+ if($schedules[$event["schedule"]]["interval"] <= $interval){
39
+ $exist_cronjob = true;
40
+ }
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }
47
+ }
48
+
49
+ if(!$exist_cronjob){
50
+ $args = array("prefix" => "all", "content" => "all");
51
+ wp_schedule_event(time(), $recurrance, "wp_fastest_cache_".$wpfc_timeout_number, array(json_encode($args)));
52
+ }
53
+ }
54
+
55
+ public function get_premium_version(){
56
+ $wpfc_premium_version = "";
57
+ if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/wpFastestCachePremium.php")){
58
+ if($data = @file_get_contents(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/wpFastestCachePremium.php")){
59
+ preg_match("/Version:\s*(.+)/", $data, $out);
60
+ if(isset($out[1]) && $out[1]){
61
+ $wpfc_premium_version = trim($out[1]);
62
+ }
63
+ }
64
+ }
65
+ return $wpfc_premium_version;
66
+ }
67
+
68
+ public function addButtonOnEditor(){
69
+ add_action('admin_print_footer_scripts', array($this, 'addButtonOnQuicktagsEditor'));
70
+ add_action('init', array($this, 'myplugin_buttonhooks'));
71
+ }
72
+
73
+ public function checkShortCode($content){
74
+ preg_match("/\[wpfcNOT\]/", $content, $wpfcNOT);
75
+ if(count($wpfcNOT) > 0){
76
+ if(is_single() || is_page()){
77
+ $this->blockCache = true;
78
+ }
79
+ $content = str_replace("[wpfcNOT]", "", $content);
80
+ }
81
+ return $content;
82
+ }
83
+
84
+ public function myplugin_buttonhooks() {
85
+ // Only add hooks when the current user has permissions AND is in Rich Text editor mode
86
+ if (current_user_can( 'manage_options' )) {
87
+ add_filter("mce_external_plugins", array($this, "myplugin_register_tinymce_javascript"));
88
+ add_filter('mce_buttons', array($this, 'myplugin_register_buttons'));
89
+ }
90
+ }
91
+ // Load the TinyMCE plugin : editor_plugin.js (wp2.5)
92
+ public function myplugin_register_tinymce_javascript($plugin_array) {
93
+ $plugin_array['wpfc'] = plugins_url('../js/button.js?v='.time(),__file__);
94
+ return $plugin_array;
95
+ }
96
+
97
+ public function myplugin_register_buttons($buttons) {
98
+ array_push($buttons, 'wpfc');
99
+ return $buttons;
100
+ }
101
+
102
+ public function addButtonOnQuicktagsEditor(){
103
+ if (wp_script_is('quicktags') && current_user_can( 'manage_options' )){ ?>
104
+ <script type="text/javascript">
105
+ if(typeof QTags != "undefined"){
106
+ QTags.addButton('wpfc_not', 'wpfcNOT', '<!--[wpfcNOT]-->', '', '', 'Block caching for this page');
107
+ }
108
+ </script>
109
+ <?php }
110
+ }
111
+
112
+ public function optionsPageRequest(){
113
+ if(!empty($_POST)){
114
+ if(isset($_POST["wpFastestCachePage"])){
115
+ include_once ABSPATH."wp-includes/capabilities.php";
116
+ include_once ABSPATH."wp-includes/pluggable.php";
117
+
118
+ if(is_multisite()){
119
+ $this->systemMessage = array("The plugin does not work with Multisite", "error");
120
+ return 0;
121
+ }
122
+
123
+ if(current_user_can('manage_options')){
124
+ if($_POST["wpFastestCachePage"] == "options"){
125
+ $this->saveOption();
126
+ }else if($_POST["wpFastestCachePage"] == "deleteCache"){
127
+ $this->deleteCache();
128
+ }else if($_POST["wpFastestCachePage"] == "deleteCssAndJsCache"){
129
+ $this->deleteCache(true);
130
+ }else if($_POST["wpFastestCachePage"] == "cacheTimeout"){
131
+ $this->addCacheTimeout();
132
+ }
133
+ }else{
134
+ die("Forbidden");
135
+ }
136
+ }
137
+ }
138
+ }
139
+
140
+ public function addCacheTimeout(){
141
+ if(isset($_POST["wpFastestCacheTimeOut"])){
142
+ if($_POST["wpFastestCacheTimeOut"]){
143
+ if(isset($_POST["wpFastestCacheTimeOutHour"]) && is_numeric($_POST["wpFastestCacheTimeOutHour"])){
144
+ if(isset($_POST["wpFastestCacheTimeOutMinute"]) && is_numeric($_POST["wpFastestCacheTimeOutMinute"])){
145
+ $selected = mktime($_POST["wpFastestCacheTimeOutHour"], $_POST["wpFastestCacheTimeOutMinute"], 0, date("n"), date("j"), date("Y"));
146
+
147
+ if($selected > time()){
148
+ $timestamp = $selected;
149
+ }else{
150
+ if(time() - $selected < 60){
151
+ $timestamp = $selected + 60;
152
+ }else{
153
+ // if selected time is less than now, 24hours is added
154
+ $timestamp = $selected + 24*60*60;
155
+ }
156
+ }
157
+
158
+ wp_clear_scheduled_hook($this->slug());
159
+ wp_schedule_event($timestamp, $_POST["wpFastestCacheTimeOut"], $this->slug());
160
+ }else{
161
+ echo "Minute was not set";
162
+ exit;
163
+ }
164
+ }else{
165
+ echo "Hour was not set";
166
+ exit;
167
+ }
168
+ }else{
169
+ wp_clear_scheduled_hook($this->slug());
170
+ }
171
+ }
172
+ }
173
+
174
+ public function setCronJobSettings(){
175
+ if(wp_next_scheduled($this->slug())){
176
+ $this->cronJobSettings["period"] = wp_get_schedule($this->slug());
177
+ $this->cronJobSettings["time"] = wp_next_scheduled($this->slug());
178
+ }
179
+ }
180
+
181
+ public function addMenuPage(){
182
+ add_action('admin_menu', array($this, 'register_my_custom_menu_page'));
183
+ }
184
+
185
+ public function addJavaScript(){
186
+ wp_enqueue_script("jquery-ui-draggable");
187
+ wp_enqueue_script("jquery-ui-position");
188
+ wp_enqueue_script("wpfc-dialog", plugins_url("wp-fastest-cache/js/dialog.js"), array(), time(), false);
189
+ wp_enqueue_script("wpfc-dialog-new", plugins_url("wp-fastest-cache/js/dialog_new.js"), array(), time(), false);
190
+
191
+
192
+ wp_enqueue_script("wpfc-cdn", plugins_url("wp-fastest-cache/js/cdn/cdn.js"), array(), time(), false);
193
+
194
+
195
+ wp_enqueue_script("wpfc-language", plugins_url("wp-fastest-cache/js/language.js"), array(), time(), false);
196
+ wp_enqueue_script("wpfc-schedule", plugins_url("wp-fastest-cache/js/schedule.js"), array(), time(), true);
197
+ wp_enqueue_script("wpfc-db", plugins_url("wp-fastest-cache/js/db.js"), array(), time(), true);
198
+
199
+
200
+ if(class_exists("WpFastestCacheImageOptimisation")){
201
+ if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/js/statics.js")){
202
+ wp_enqueue_script("wpfc-statics", plugins_url("wp-fastest-cache-premium/pro/js/statics.js"), array(), time(), false);
203
+ }
204
+
205
+ if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/js/premium.js")){
206
+ wp_enqueue_script("wpfc-premium", plugins_url("wp-fastest-cache-premium/pro/js/premium.js"), array(), time(), true);
207
+ }
208
+ }
209
+
210
+ if(isset($this->options->wpFastestCacheLanguage) && $this->options->wpFastestCacheLanguage != "eng"){
211
+ wp_enqueue_script("wpfc-dictionary", plugins_url("wp-fastest-cache/js/lang/".$this->options->wpFastestCacheLanguage.".js"), array(), time(), false);
212
+ }
213
+ }
214
+
215
+ public function saveOption(){
216
+ unset($_POST["wpFastestCachePage"]);
217
+ $data = json_encode($_POST);
218
+ //for optionsPage() $_POST is array and json_decode() converts to stdObj
219
+ $this->options = json_decode($data);
220
+
221
+ $this->systemMessage = $this->modifyHtaccess($_POST);
222
+
223
+ if(isset($this->systemMessage[1]) && $this->systemMessage[1] != "error"){
224
+
225
+ if($message = $this->checkCachePathWriteable()){
226
+
227
+
228
+ if(is_array($message)){
229
+ $this->systemMessage = $message;
230
+ }else{
231
+ if(isset($this->options->wpFastestCachePreload)){
232
+ $this->set_preload();
233
+ }else{
234
+ delete_option("WpFastestCachePreLoad");
235
+ wp_clear_scheduled_hook("wp_fastest_cache_Preload");
236
+ }
237
+
238
+ if(get_option("WpFastestCache")){
239
+ update_option("WpFastestCache", $data);
240
+ }else{
241
+ add_option("WpFastestCache", $data, null, "yes");
242
+ }
243
+ }
244
+ }
245
+ }
246
+ }
247
+
248
+ public function checkCachePathWriteable(){
249
+ $message = array();
250
+
251
+ if(!is_dir($this->getWpContentDir()."/cache/")){
252
+ if (@mkdir($this->getWpContentDir()."/cache/", 0755, true)){
253
+ //
254
+ }else{
255
+ array_push($message, "- /wp-content/cache/ is needed to be created");
256
+ }
257
+ }else{
258
+ if (@mkdir($this->getWpContentDir()."/cache/testWpFc/", 0755, true)){
259
+ rmdir($this->getWpContentDir()."/cache/testWpFc/");
260
+ }else{
261
+ array_push($message, "- /wp-content/cache/ permission has to be 755");
262
+ }
263
+ }
264
+
265
+ if(!is_dir($this->getWpContentDir()."/cache/all/")){
266
+ if (@mkdir($this->getWpContentDir()."/cache/all/", 0755, true)){
267
+ //
268
+ }else{
269
+ array_push($message, "- /wp-content/cache/all/ is needed to be created");
270
+ }
271
+ }else{
272
+ if (@mkdir($this->getWpContentDir()."/cache/all/testWpFc/", 0755, true)){
273
+ rmdir($this->getWpContentDir()."/cache/all/testWpFc/");
274
+ }else{
275
+ array_push($message, "- /wp-content/cache/all/ permission has to be 755");
276
+ }
277
+ }
278
+
279
+ if(count($message) > 0){
280
+ return array(implode("<br>", $message), "error");
281
+ }else{
282
+ return true;
283
+ }
284
+ }
285
+
286
+ public function modifyHtaccess($post){
287
+ $path = ABSPATH;
288
+ if($this->is_subdirectory_install()){
289
+ $path = $this->getABSPATH();
290
+ }
291
+
292
+ if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && preg_match("/iis/i", $_SERVER["SERVER_SOFTWARE"])){
293
+ return array("The plugin does not work with Microsoft IIS. Only with Apache", "error");
294
+ }
295
+
296
+ // if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && preg_match("/nginx/i", $_SERVER["SERVER_SOFTWARE"])){
297
+ // return array("The plugin does not work with Nginx. Only with Apache", "error");
298
+ // }
299
+
300
+ if(!file_exists($path.".htaccess")){
301
+ if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && preg_match("/nginx/i", $_SERVER["SERVER_SOFTWARE"])){
302
+ //
303
+ }else{
304
+ return array("<label>.htaccess was not found</label> <a target='_blank' href='http://www.wpfastestcache.com/warnings/htaccess-was-not-found/'>Read More</a>", "error");
305
+ }
306
+ }
307
+
308
+ if($this->isPluginActive('wp-postviews/wp-postviews.php')){
309
+ $wp_postviews_options = get_option("views_options");
310
+ $wp_postviews_options["use_ajax"] = true;
311
+ update_option("views_options", $wp_postviews_options);
312
+
313
+ if(!WP_CACHE){
314
+ if($wp_config = @file_get_contents(ABSPATH."wp-config.php")){
315
+ $wp_config = str_replace("\$table_prefix", "define('WP_CACHE', true);\n\$table_prefix", $wp_config);
316
+
317
+ if(!@file_put_contents(ABSPATH."wp-config.php", $wp_config)){
318
+ return array("define('WP_CACHE', true); is needed to be added into wp-config.php", "error");
319
+ }
320
+ }else{
321
+ return array("define('WP_CACHE', true); is needed to be added into wp-config.php", "error");
322
+ }
323
+ }
324
+ }
325
+
326
+ $htaccess = @file_get_contents($path.".htaccess");
327
+
328
+ // if(defined('DONOTCACHEPAGE')){
329
+ // return array("DONOTCACHEPAGE <label>constant is defined as TRUE. It must be FALSE</label>", "error");
330
+ // }else
331
+
332
+
333
+ if(!get_option('permalink_structure')){
334
+ return array("You have to set <strong><u><a href='".admin_url()."options-permalink.php"."'>permalinks</a></u></strong>", "error");
335
+ }else if($res = $this->checkSuperCache($path, $htaccess)){
336
+ return $res;
337
+ // }else if($this->isPluginActive('wp-hide-security-enhancer/wp-hide.php')){
338
+ // return array("WP Hide & Security Enhancer needs to be deactived<br>", "error");
339
+ }else if($this->isPluginActive('adrotate/adrotate.php') || $this->isPluginActive('adrotate-pro/adrotate.php')){
340
+ return $this->warningIncompatible("AdRotate");
341
+ }else if($this->isPluginActive('mobilepress/mobilepress.php')){
342
+ return $this->warningIncompatible("MobilePress", array("name" => "WPtouch Mobile", "url" => "https://wordpress.org/plugins/wptouch/"));
343
+ }else if($this->isPluginActive('speed-booster-pack/speed-booster-pack.php')){
344
+ return array("Speed Booster Pack needs to be deactive<br>", "error");
345
+ }else if($this->isPluginActive('cdn-enabler/cdn-enabler.php')){
346
+ return array("CDN Enabler needs to be deactive<br>This plugin has aldready CDN feature", "error");
347
+ }else if($this->isPluginActive('wp-performance-score-booster/wp-performance-score-booster.php')){
348
+ return array("WP Performance Score Booster needs to be deactive<br>This plugin has aldready Gzip, Leverage Browser Caching features", "error");
349
+ }else if($this->isPluginActive('bwp-minify/bwp-minify.php')){
350
+ return array("Better WordPress Minify needs to be deactive<br>This plugin has aldready Minify feature", "error");
351
+ }else if($this->isPluginActive('check-and-enable-gzip-compression/richards-toolbox.php')){
352
+ return array("Check and Enable GZIP compression needs to be deactive<br>This plugin has aldready Gzip feature", "error");
353
+ }else if($this->isPluginActive('gzippy/gzippy.php')){
354
+ return array("GZippy needs to be deactive<br>This plugin has aldready Gzip feature", "error");
355
+ }else if($this->isPluginActive('gzip-ninja-speed-compression/gzip-ninja-speed.php')){
356
+ return array("GZip Ninja Speed Compression needs to be deactive<br>This plugin has aldready Gzip feature", "error");
357
+ }else if($this->isPluginActive('wordpress-gzip-compression/ezgz.php')){
358
+ return array("WordPress Gzip Compression needs to be deactive<br>This plugin has aldready Gzip feature", "error");
359
+ }else if($this->isPluginActive('filosofo-gzip-compression/filosofo-gzip-compression.php')){
360
+ return array("GZIP Output needs to be deactive<br>This plugin has aldready Gzip feature", "error");
361
+ }else if($this->isPluginActive('head-cleaner/head-cleaner.php')){
362
+ return array("Head Cleaner needs to be deactive", "error");
363
+ }else if(is_writable($path.".htaccess")){
364
+ $htaccess = $this->insertLBCRule($htaccess, $post);
365
+ $htaccess = $this->insertGzipRule($htaccess, $post);
366
+ $htaccess = $this->insertRewriteRule($htaccess, $post);
367
+ //$htaccess = preg_replace("/\n+/","\n", $htaccess);
368
+
369
+ file_put_contents($path.".htaccess", $htaccess);
370
+ }else{
371
+ return array("Options have been saved", "success");
372
+ //return array(".htaccess is not writable", "error");
373
+ }
374
+ return array("Options have been saved", "success");
375
+
376
+ }
377
+
378
+ public function warningIncompatible($incompatible, $alternative = false){
379
+ if($alternative){
380
+ return array($incompatible." <label>needs to be deactive</label><br><label>We advise</label> <a id='alternative-plugin' target='_blank' href='".$alternative["url"]."'>".$alternative["name"]."</a>", "error");
381
+ }else{
382
+ return array($incompatible." <label>needs to be deactive</label>", "error");
383
+ }
384
+ }
385
+
386
+ public function insertLBCRule($htaccess, $post){
387
+ if(isset($post["wpFastestCacheLBC"]) && $post["wpFastestCacheLBC"] == "on"){
388
+
389
+
390
+ $data = "# BEGIN LBCWpFastestCache"."\n".
391
+ '<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|x-html|css|xml|js|woff|woff2|ttf|svg|eot)(\.gz)?$">'."\n".
392
+ '<IfModule mod_expires.c>'."\n".
393
+ 'ExpiresActive On'."\n".
394
+ 'ExpiresDefault A0'."\n".
395
+ 'ExpiresByType image/gif A2592000'."\n".
396
+ 'ExpiresByType image/png A2592000'."\n".
397
+ 'ExpiresByType image/jpg A2592000'."\n".
398
+ 'ExpiresByType image/jpeg A2592000'."\n".
399
+ 'ExpiresByType image/ico A2592000'."\n".
400
+ 'ExpiresByType image/svg+xml A2592000'."\n".
401
+ 'ExpiresByType text/css A2592000'."\n".
402
+ 'ExpiresByType text/javascript A2592000'."\n".
403
+ 'ExpiresByType application/javascript A2592000'."\n".
404
+ 'ExpiresByType application/x-javascript A2592000'."\n".
405
+ '</IfModule>'."\n".
406
+ '<IfModule mod_headers.c>'."\n".
407
+ 'Header set Expires "max-age=2592000, public"'."\n".
408
+ 'Header unset ETag'."\n".
409
+ 'Header set Connection keep-alive'."\n".
410
+ 'FileETag None'."\n".
411
+ '</IfModule>'."\n".
412
+ '</FilesMatch>'."\n".
413
+ "# END LBCWpFastestCache"."\n";
414
+
415
+ if(!preg_match("/BEGIN\s*LBCWpFastestCache/", $htaccess)){
416
+ return $data.$htaccess;
417
+ }else{
418
+ return $htaccess;
419
+ }
420
+ }else{
421
+ //delete levere browser caching
422
+ $htaccess = preg_replace("/#\s?BEGIN\s?LBCWpFastestCache.*?#\s?END\s?LBCWpFastestCache/s", "", $htaccess);
423
+ return $htaccess;
424
+ }
425
+ }
426
+
427
+ public function insertGzipRule($htaccess, $post){
428
+ if(isset($post["wpFastestCacheGzip"]) && $post["wpFastestCacheGzip"] == "on"){
429
+ $data = "# BEGIN GzipWpFastestCache"."\n".
430
+ "<IfModule mod_deflate.c>"."\n".
431
+ "AddType x-font/woff .woff"."\n".
432
+ "AddOutputFilterByType DEFLATE image/svg+xml"."\n".
433
+ "AddOutputFilterByType DEFLATE text/plain"."\n".
434
+ "AddOutputFilterByType DEFLATE text/html"."\n".
435
+ "AddOutputFilterByType DEFLATE text/xml"."\n".
436
+ "AddOutputFilterByType DEFLATE text/css"."\n".
437
+ "AddOutputFilterByType DEFLATE text/javascript"."\n".
438
+ "AddOutputFilterByType DEFLATE application/xml"."\n".
439
+ "AddOutputFilterByType DEFLATE application/xhtml+xml"."\n".
440
+ "AddOutputFilterByType DEFLATE application/rss+xml"."\n".
441
+ "AddOutputFilterByType DEFLATE application/javascript"."\n".
442
+ "AddOutputFilterByType DEFLATE application/x-javascript"."\n".
443
+ "AddOutputFilterByType DEFLATE application/x-font-ttf"."\n".
444
+ "AddOutputFilterByType DEFLATE application/vnd.ms-fontobject"."\n".
445
+ "AddOutputFilterByType DEFLATE font/opentype font/ttf font/eot font/otf"."\n".
446
+ "</IfModule>"."\n";
447
+
448
+ if(defined("WPFC_GZIP_FOR_COMBINED_FILES") && WPFC_GZIP_FOR_COMBINED_FILES){
449
+ $data = $data."\n".'<FilesMatch "\d+index\.(css|js)(\.gz)?$">'."\n".
450
+ "# to zip the combined css and js files"."\n\n".
451
+ "RewriteEngine On"."\n".
452
+ "RewriteCond %{HTTP:Accept-encoding} gzip"."\n".
453
+ "RewriteCond %{REQUEST_FILENAME}\.gz -s"."\n".
454
+ "RewriteRule ^(.*)\.(css|js) $1\.$2\.gz [QSA]"."\n\n".
455
+ "# to revent double gzip and give the correct mime-type"."\n\n".
456
+ "RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=FORCE_GZIP]"."\n".
457
+ "RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1,E=FORCE_GZIP]"."\n".
458
+ "Header set Content-Encoding gzip env=FORCE_GZIP"."\n".
459
+ "</FilesMatch>"."\n";
460
+ }
461
+
462
+ $data = $data."# END GzipWpFastestCache"."\n";
463
+
464
+ $htaccess = preg_replace("/\s*\#\s?BEGIN\s?GzipWpFastestCache.*?#\s?END\s?GzipWpFastestCache\s*/s", "", $htaccess);
465
+ return $data.$htaccess;
466
+
467
+ }else{
468
+ //delete gzip rules
469
+ $htaccess = preg_replace("/\s*\#\s?BEGIN\s?GzipWpFastestCache.*?#\s?END\s?GzipWpFastestCache\s*/s", "", $htaccess);
470
+ return $htaccess;
471
+ }
472
+ }
473
+
474
+ public function insertRewriteRule($htaccess, $post){
475
+ if(isset($post["wpFastestCacheStatus"]) && $post["wpFastestCacheStatus"] == "on"){
476
+ $htaccess = preg_replace("/#\s?BEGIN\s?WpFastestCache.*?#\s?END\s?WpFastestCache/s", "", $htaccess);
477
+ $htaccess = $this->getHtaccess().$htaccess;
478
+ }else{
479
+ $htaccess = preg_replace("/#\s?BEGIN\s?WpFastestCache.*?#\s?END\s?WpFastestCache/s", "", $htaccess);
480
+ $this->deleteCache();
481
+ }
482
+
483
+ return $htaccess;
484
+ }
485
+
486
+ public function prefixRedirect(){
487
+ $forceTo = "";
488
+
489
+ if(defined("WPFC_DISABLE_REDIRECTION") && WPFC_DISABLE_REDIRECTION){
490
+ return $forceTo;
491
+ }
492
+
493
+ if(preg_match("/^https:\/\//", home_url())){
494
+ if(preg_match("/^https:\/\/www\./", home_url())){
495
+ $forceTo = "\nRewriteCond %{HTTPS} =on"."\n".
496
+ "RewriteCond %{HTTP_HOST} ^www.".str_replace("www.", "", $_SERVER["HTTP_HOST"])."\n";
497
+ }else{
498
+ $forceTo = "\nRewriteCond %{HTTPS} =on"."\n".
499
+ "RewriteCond %{HTTP_HOST} ^".str_replace("www.", "", $_SERVER["HTTP_HOST"])."\n";
500
+ }
501
+ }else{
502
+ if(preg_match("/^http:\/\/www\./", home_url())){
503
+ $forceTo = "\nRewriteCond %{HTTP_HOST} ^".str_replace("www.", "", $_SERVER["HTTP_HOST"])."\n".
504
+ "RewriteRule ^(.*)$ ".preg_quote(home_url(), "/")."\/$1 [R=301,L]"."\n";
505
+ }else{
506
+ $forceTo = "\nRewriteCond %{HTTP_HOST} ^www.".str_replace("www.", "", $_SERVER["HTTP_HOST"])." [NC]"."\n".
507
+ "RewriteRule ^(.*)$ ".preg_quote(home_url(), "/")."\/$1 [R=301,L]"."\n";
508
+ }
509
+ }
510
+ return $forceTo;
511
+ }
512
+
513
+ public function getHtaccess(){
514
+ $mobile = "";
515
+ $loggedInUser = "";
516
+ $ifIsNotSecure = "";
517
+ $trailing_slash_rule = "";
518
+
519
+ if(isset($_POST["wpFastestCacheMobile"]) && $_POST["wpFastestCacheMobile"] == "on"){
520
+ $mobile = "RewriteCond %{HTTP_USER_AGENT} !^.*(".$this->getMobileUserAgents().").*$ [NC]"."\n";
521
+ }
522
+
523
+ if(isset($_POST["wpFastestCacheLoggedInUser"]) && $_POST["wpFastestCacheLoggedInUser"] == "on"){
524
+ $loggedInUser = "RewriteCond %{HTTP:Cookie} !(wordpress_logged_in|wp_woocommerce_session)"."\n";
525
+ }
526
+
527
+ if(!preg_match("/^https/i", get_option("home"))){
528
+ $ifIsNotSecure = "RewriteCond %{HTTPS} !=on";
529
+ }
530
+
531
+ if($this->is_trailing_slash()){
532
+ $trailing_slash_rule = "RewriteCond %{REQUEST_URI} \/$"."\n";
533
+ }else{
534
+ //toDo
535
+ }
536
+
537
+ $data = "# BEGIN WpFastestCache"."\n".
538
+ "<IfModule mod_rewrite.c>"."\n".
539
+ "RewriteEngine On"."\n".
540
+ "RewriteBase /"."\n".
541
+ $this->ruleForWpContent()."\n".
542
+ $this->prefixRedirect().
543
+ $this->excludeRules()."\n".
544
+ $this->http_condition_rule()."\n".
545
+ "RewriteCond %{HTTP_USER_AGENT} !(".$this->get_excluded_useragent().")"."\n".
546
+ "RewriteCond %{REQUEST_METHOD} !POST"."\n".
547
+ $ifIsNotSecure."\n".
548
+ "RewriteCond %{REQUEST_URI} !(\/){2}$"."\n".
549
+ $trailing_slash_rule.
550
+ "RewriteCond %{QUERY_STRING} !.+"."\n".$loggedInUser.
551
+ "RewriteCond %{HTTP:Cookie} !comment_author_"."\n".
552
+ "RewriteCond %{HTTP:Cookie} !safirmobilswitcher=mobil"."\n".
553
+ 'RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]'."\n".$mobile;
554
+
555
+
556
+ if(ABSPATH == "//"){
557
+ $data = $data."RewriteCond %{DOCUMENT_ROOT}/".WPFC_WP_CONTENT_BASENAME."/cache/all/$1/index.html -f"."\n";
558
+ }else{
559
+ $data = $data."RewriteCond %{DOCUMENT_ROOT}/".WPFC_WP_CONTENT_BASENAME."/cache/all/$1/index.html -f [or]"."\n";
560
+ $data = $data."RewriteCond ".WPFC_WP_CONTENT_DIR."/cache/all/".$this->getRewriteBase(true)."$1/index.html -f"."\n";
561
+ }
562
+
563
+ $data = $data.'RewriteRule ^(.*) "/'.$this->getRewriteBase().WPFC_WP_CONTENT_BASENAME.'/cache/all/'.$this->getRewriteBase(true).'$1/index.html" [L]'."\n";
564
+
565
+ //RewriteRule !/ "/wp-content/cache/all/index.html" [L]
566
+
567
+
568
+ if(class_exists("WpFcMobileCache") && isset($this->options->wpFastestCacheMobileTheme) && $this->options->wpFastestCacheMobileTheme){
569
+ $wpfc_mobile = new WpFcMobileCache();
570
+
571
+ if($this->isPluginActive('wptouch/wptouch.php') || $this->isPluginActive('wptouch-pro/wptouch-pro.php')){
572
+ $wpfc_mobile->set_wptouch(true);
573
+ }else{
574
+ $wpfc_mobile->set_wptouch(false);
575
+ }
576
+
577
+ $data = $data."\n\n\n".$wpfc_mobile->update_htaccess($data);
578
+ }
579
+
580
+ $data = $data."</IfModule>"."\n".
581
+ "<FilesMatch \"\.(html|htm)$\">"."\n".
582
+ "AddDefaultCharset UTF-8"."\n".
583
+ "<ifModule mod_headers.c>"."\n".
584
+ "FileETag None"."\n".
585
+ "Header unset ETag"."\n".
586
+ "Header set Cache-Control \"max-age=0, no-cache, no-store, must-revalidate\""."\n".
587
+ "Header set Pragma \"no-cache\""."\n".
588
+ "Header set Expires \"Mon, 29 Oct 1923 20:30:00 GMT\""."\n".
589
+ "</ifModule>"."\n".
590
+ "</FilesMatch>"."\n".
591
+ "# END WpFastestCache"."\n";
592
+ return preg_replace("/\n+/","\n", $data);
593
+ }
594
+
595
+ public function http_condition_rule(){
596
+ $http_host = preg_replace("/(http(s?)\:)?\/\/(www\d*\.)?/i", "", trim(home_url(), "/"));
597
+
598
+ if(preg_match("/\//", $http_host)){
599
+ $http_host = strstr($http_host, '/', true);
600
+ }
601
+
602
+ if(preg_match("/www\./", home_url())){
603
+ $http_host = "www.".$http_host;
604
+ }
605
+
606
+ return "RewriteCond %{HTTP_HOST} ^".$http_host;
607
+ }
608
+
609
+ public function ruleForWpContent(){
610
+ return "";
611
+ $newContentPath = str_replace(home_url(), "", content_url());
612
+ if(!preg_match("/wp-content/", $newContentPath)){
613
+ $newContentPath = trim($newContentPath, "/");
614
+ return "RewriteRule ^".$newContentPath."/cache/(.*) ".WPFC_WP_CONTENT_DIR."/cache/$1 [L]"."\n";
615
+ }
616
+ return "";
617
+ }
618
+
619
+ public function getRewriteBase($sub = ""){
620
+ if($sub && $this->is_subdirectory_install()){
621
+ $trimedProtocol = preg_replace("/http:\/\/|https:\/\//", "", trim(home_url(), "/"));
622
+ $path = strstr($trimedProtocol, '/');
623
+
624
+ if($path){
625
+ return trim($path, "/")."/";
626
+ }else{
627
+ return "";
628
+ }
629
+ }
630
+
631
+ $url = rtrim(site_url(), "/");
632
+ preg_match("/https?:\/\/[^\/]+(.*)/", $url, $out);
633
+
634
+ if(isset($out[1]) && $out[1]){
635
+ $out[1] = trim($out[1], "/");
636
+
637
+ if(preg_match("/\/".preg_quote($out[1], "/")."\//", WPFC_WP_CONTENT_DIR)){
638
+ return $out[1]."/";
639
+ }else{
640
+ return "";
641
+ }
642
+ }else{
643
+ return "";
644
+ }
645
+ }
646
+
647
+
648
+
649
+ public function checkSuperCache($path, $htaccess){
650
+ if($this->isPluginActive('wp-super-cache/wp-cache.php')){
651
+ return array("WP Super Cache needs to be deactive", "error");
652
+ }else{
653
+ @unlink($path."wp-content/wp-cache-config.php");
654
+
655
+ $message = "";
656
+
657
+ if(is_file($path."wp-content/wp-cache-config.php")){
658
+ $message .= "<br>- be sure that you removed /wp-content/wp-cache-config.php";
659
+ }
660
+
661
+ if(preg_match("/supercache/", $htaccess)){
662
+ $message .= "<br>- be sure that you removed the rules of super cache from the .htaccess";
663
+ }
664
+
665
+ return $message ? array("WP Super Cache cannot remove its own remnants so please follow the steps below".$message, "error") : "";
666
+ }
667
+
668
+ return "";
669
+ }
670
+
671
+ public function check_htaccess(){
672
+ $path = ABSPATH;
673
+
674
+ if($this->is_subdirectory_install()){
675
+ $path = $this->getABSPATH();
676
+ }
677
+
678
+ if(!is_writable($path.".htaccess") && count($_POST) > 0){
679
+ include_once(WPFC_MAIN_PATH."templates/htaccess.html");
680
+
681
+ $htaccess = @file_get_contents($path.".htaccess");
682
+
683
+ if(isset($this->options->wpFastestCacheLBC)){
684
+ $htaccess = $this->insertLBCRule($htaccess, array("wpFastestCacheLBC" => "on"));
685
+ }
686
+ if(isset($this->options->wpFastestCacheGzip)){
687
+ $htaccess = $this->insertGzipRule($htaccess, array("wpFastestCacheGzip" => "on"));
688
+ }
689
+ if(isset($this->options->wpFastestCacheStatus)){
690
+ $htaccess = $this->insertRewriteRule($htaccess, array("wpFastestCacheStatus" => "on"));
691
+ }
692
+
693
+ $htaccess = preg_replace("/\n+/","\n", $htaccess);
694
+
695
+ echo "<noscript id='wpfc-htaccess-data'>".$htaccess."</noscript>";
696
+ echo "<noscript id='wpfc-htaccess-path-data'>".$path.".htaccess"."</noscript>";
697
+ ?>
698
+ <script type="text/javascript">
699
+ jQuery(document).ready(function(){
700
+ Wpfc_New_Dialog.dialog("wpfc-modal-htaccess", {close: "default"}, function(modal){
701
+ jQuery("#" + modal.id).find("label.mm-input-label").html(jQuery("#wpfc-htaccess-path-data").html());
702
+ jQuery("#" + modal.id).find("textarea.wiz-inp-readonly-textarea").html(jQuery("#wpfc-htaccess-data").html());
703
+ });
704
+ });
705
+ </script>
706
+ <?php
707
+ }
708
+
709
+ }
710
+
711
+ public function optionsPage(){
712
+ $this->systemMessage = count($this->systemMessage) > 0 ? $this->systemMessage : $this->getSystemMessage();
713
+
714
+ $wpFastestCacheCombineCss = isset($this->options->wpFastestCacheCombineCss) ? 'checked="checked"' : "";
715
+ $wpFastestCacheGzip = isset($this->options->wpFastestCacheGzip) ? 'checked="checked"' : "";
716
+ $wpFastestCacheCombineJs = isset($this->options->wpFastestCacheCombineJs) ? 'checked="checked"' : "";
717
+ $wpFastestCacheCombineJsPowerFul = isset($this->options->wpFastestCacheCombineJsPowerFul) ? 'checked="checked"' : "";
718
+ $wpFastestCacheRenderBlocking = isset($this->options->wpFastestCacheRenderBlocking) ? 'checked="checked"' : "";
719
+
720
+ $wpFastestCacheRenderBlockingCss = isset($this->options->wpFastestCacheRenderBlockingCss) ? 'checked="checked"' : "";
721
+
722
+ $wpFastestCacheLanguage = isset($this->options->wpFastestCacheLanguage) ? $this->options->wpFastestCacheLanguage : "eng";
723
+
724
+
725
+ $wpFastestCacheLazyLoad = isset($this->options->wpFastestCacheLazyLoad) ? 'checked="checked"' : "";
726
+
727
+
728
+
729
+
730
+ $wpFastestCacheLBC = isset($this->options->wpFastestCacheLBC) ? 'checked="checked"' : "";
731
+ $wpFastestCacheLoggedInUser = isset($this->options->wpFastestCacheLoggedInUser) ? 'checked="checked"' : "";
732
+ $wpFastestCacheMinifyCss = isset($this->options->wpFastestCacheMinifyCss) ? 'checked="checked"' : "";
733
+
734
+ $wpFastestCacheMinifyCssPowerFul = isset($this->options->wpFastestCacheMinifyCssPowerFul) ? 'checked="checked"' : "";
735
+
736
+
737
+ $wpFastestCacheMinifyHtml = isset($this->options->wpFastestCacheMinifyHtml) ? 'checked="checked"' : "";
738
+ $wpFastestCacheMinifyHtmlPowerFul = isset($this->options->wpFastestCacheMinifyHtmlPowerFul) ? 'checked="checked"' : "";
739
+
740
+ $wpFastestCacheMinifyJs = isset($this->options->wpFastestCacheMinifyJs) ? 'checked="checked"' : "";
741
+
742
+ $wpFastestCacheMobile = isset($this->options->wpFastestCacheMobile) ? 'checked="checked"' : "";
743
+ $wpFastestCacheMobileTheme = isset($this->options->wpFastestCacheMobileTheme) ? 'checked="checked"' : "";
744
+ $wpFastestCacheMobileTheme_themename = isset($this->options->wpFastestCacheMobileTheme_themename) ? $this->options->wpFastestCacheMobileTheme_themename : "";
745
+
746
+ $wpFastestCacheNewPost = isset($this->options->wpFastestCacheNewPost) ? 'checked="checked"' : "";
747
+
748
+ $wpFastestCacheRemoveComments = isset($this->options->wpFastestCacheRemoveComments) ? 'checked="checked"' : "";
749
+
750
+
751
+ $wpFastestCachePreload = isset($this->options->wpFastestCachePreload) ? 'checked="checked"' : "";
752
+ $wpFastestCachePreload_homepage = isset($this->options->wpFastestCachePreload_homepage) ? 'checked="checked"' : "";
753
+ $wpFastestCachePreload_post = isset($this->options->wpFastestCachePreload_post) ? 'checked="checked"' : "";
754
+ $wpFastestCachePreload_category = isset($this->options->wpFastestCachePreload_category) ? 'checked="checked"' : "";
755
+ $wpFastestCachePreload_page = isset($this->options->wpFastestCachePreload_page) ? 'checked="checked"' : "";
756
+ $wpFastestCachePreload_number = isset($this->options->wpFastestCachePreload_number) ? $this->options->wpFastestCachePreload_number : 4;
757
+
758
+
759
+ $wpFastestCacheStatus = isset($this->options->wpFastestCacheStatus) ? 'checked="checked"' : "";
760
+ $wpFastestCacheTimeOut = isset($this->cronJobSettings["period"]) ? $this->cronJobSettings["period"] : "";
761
+
762
+ $wpFastestCacheUpdatePost = isset($this->options->wpFastestCacheUpdatePost) ? 'checked="checked"' : "";
763
+ $wpFastestCacheWidgetCache = isset($this->options->wpFastestCacheWidgetCache) ? 'checked="checked"' : "";
764
+ ?>
765
+
766
+ <div class="wrap">
767
+
768
+ <h2>WP Fastest Cache Options</h2>
769
+ <?php if($this->systemMessage){ ?>
770
+ <div style="display:block !important;" class="updated <?php echo $this->systemMessage[1]."-wpfc"; ?>" id="message"><p><?php echo $this->systemMessage[0]; ?></p></div>
771
+ <?php } ?>
772
+ <div class="tabGroup">
773
+ <?php
774
+ $tabs = array(array("id"=>"wpfc-options","title"=>"Settings"),
775
+ array("id"=>"wpfc-deleteCache","title"=>"Delete Cache"),
776
+ array("id"=>"wpfc-cacheTimeout","title"=>"Cache Timeout"));
777
+
778
+ array_push($tabs, array("id"=>"wpfc-imageOptimisation","title"=>"Image Optimization"));
779
+ array_push($tabs, array("id"=>"wpfc-premium","title"=>"Premium"));
780
+ array_push($tabs, array("id"=>"wpfc-exclude","title"=>"Exclude"));
781
+ array_push($tabs, array("id"=>"wpfc-cdn","title"=>"CDN"));
782
+ array_push($tabs, array("id"=>"wpfc-db","title"=>"DB"));
783
+
784
+ foreach ($tabs as $key => $value){
785
+ $checked = "";
786
+
787
+ //tab of "delete css and js" has been removed so there is need to check it
788
+ if(isset($_POST["wpFastestCachePage"]) && $_POST["wpFastestCachePage"] && $_POST["wpFastestCachePage"] == "deleteCssAndJsCache"){
789
+ $_POST["wpFastestCachePage"] = "deleteCache";
790
+ }
791
+
792
+ if(!isset($_POST["wpFastestCachePage"]) && $value["id"] == "wpfc-options"){
793
+ $checked = ' checked="checked" ';
794
+ }else if((isset($_POST["wpFastestCachePage"])) && ("wpfc-".$_POST["wpFastestCachePage"] == $value["id"])){
795
+ $checked = ' checked="checked" ';
796
+ }
797
+ echo '<input '.$checked.' type="radio" id="'.$value["id"].'" name="tabGroup1" style="display:none;">'."\n";
798
+ echo '<label for="'.$value["id"].'">'.$value["title"].'</label>'."\n";
799
+ }
800
+ ?>
801
+ <br>
802
+ <div class="tab1" style="padding-left:10px;">
803
+ <form method="post" name="wp_manager">
804
+ <input type="hidden" value="options" name="wpFastestCachePage">
805
+ <div class="questionCon">
806
+ <div class="question">Cache System</div>
807
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheStatus; ?> id="wpFastestCacheStatus" name="wpFastestCacheStatus"><label for="wpFastestCacheStatus">Enable</label></div>
808
+ </div>
809
+
810
+
811
+ <?php
812
+
813
+ $tester_arr = array(
814
+ "berkatan.com",
815
+ );
816
+
817
+ if(in_array(get_bloginfo('language'), $tester_arr) || in_array(str_replace("www.", "", $_SERVER["HTTP_HOST"]), $tester_arr)){ ?>
818
+ <div class="questionCon">
819
+ <div class="question">Widget Cache</div>
820
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheWidgetCache; ?> id="wpFastestCacheWidgetCache" name="wpFastestCacheWidgetCache"><label for="wpFastestCacheWidgetCache">Reduce the number of SQL queries</label></div>
821
+ </div>
822
+ <?php } ?>
823
+
824
+
825
+
826
+
827
+ <div class="questionCon">
828
+ <div class="question">Preload</div>
829
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCachePreload; ?> id="wpFastestCachePreload" name="wpFastestCachePreload"><label for="wpFastestCachePreload">Create the cache of all the site automatically</label></div>
830
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/features/preload-settings/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
831
+ </div>
832
+
833
+ <?php include(WPFC_MAIN_PATH."templates/update_now.php"); ?>
834
+
835
+ <?php include(WPFC_MAIN_PATH."templates/preload.php"); ?>
836
+
837
+ <div class="questionCon">
838
+ <div class="question">Logged-in Users</div>
839
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheLoggedInUser; ?> id="wpFastestCacheLoggedInUser" name="wpFastestCacheLoggedInUser"><label for="wpFastestCacheLoggedInUser">Don't show the cached version for logged-in users</label></div>
840
+ </div>
841
+
842
+ <div class="questionCon">
843
+ <div class="question">Mobile</div>
844
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheMobile; ?> id="wpFastestCacheMobile" name="wpFastestCacheMobile"><label for="wpFastestCacheMobile">Don't show the cached version for desktop to mobile devices</label></div>
845
+ </div>
846
+
847
+ <?php if(class_exists("WpFastestCachePowerfulHtml")){ ?>
848
+ <div class="questionCon">
849
+ <div class="question">Mobile Theme</div>
850
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheMobileTheme; ?> id="wpFastestCacheMobileTheme" name="wpFastestCacheMobileTheme"><label for="wpFastestCacheMobileTheme">Create cache for mobile theme</label></div>
851
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/premium/mobile-cache/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
852
+ </div>
853
+
854
+ <?php
855
+ $tester_arr_mobile = array(
856
+ "tr-TR",
857
+ "berkatan.com",
858
+ "yenihobiler.com",
859
+ "hobiblogu.com",
860
+ "canliradyodinle.life",
861
+ "canlitvturk.org",
862
+ "haftahaftahamilelik.gen.tr",
863
+ "canliradyodinle.fm"
864
+ );
865
+
866
+ if(in_array(get_bloginfo('language'), $tester_arr_mobile) || in_array(str_replace("www.", "", $_SERVER["HTTP_HOST"]), $tester_arr_mobile)){
867
+ include_once WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/templates/mobile_theme.php";
868
+ }
869
+ ?>
870
+
871
+ <?php }else{ ?>
872
+ <div class="questionCon disabled">
873
+ <div class="question">Mobile Theme</div>
874
+ <div class="inputCon"><input type="checkbox" id="wpFastestCacheMobileTheme"><label for="wpFastestCacheMobileTheme">Create cache for mobile theme</label></div>
875
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/premium/mobile-cache/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
876
+ </div>
877
+ <?php } ?>
878
+
879
+ <div class="questionCon">
880
+ <div class="question">New Post</div>
881
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheNewPost; ?> id="wpFastestCacheNewPost" name="wpFastestCacheNewPost"><label for="wpFastestCacheNewPost">Clear cache files when a post or page is published</label></div>
882
+ </div>
883
+
884
+ <?php include(WPFC_MAIN_PATH."templates/newpost.php"); ?>
885
+
886
+ <div class="questionCon">
887
+ <div class="question">Update Post</div>
888
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheUpdatePost; ?> id="wpFastestCacheUpdatePost" name="wpFastestCacheUpdatePost"><label for="wpFastestCacheUpdatePost">Clear cache files when a post or page is updated</label></div>
889
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/tutorial/to-clear-cache-after-update"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
890
+ </div>
891
+
892
+ <?php include(WPFC_MAIN_PATH."templates/updatepost.php"); ?>
893
+
894
+
895
+ <div class="questionCon">
896
+ <div class="question">Minify HTML</div>
897
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheMinifyHtml; ?> id="wpFastestCacheMinifyHtml" name="wpFastestCacheMinifyHtml"><label for="wpFastestCacheMinifyHtml">You can decrease the size of page</label></div>
898
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/optimization/minify-html/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
899
+ </div>
900
+
901
+ <?php if(class_exists("WpFastestCachePowerfulHtml")){ ?>
902
+ <div class="questionCon">
903
+ <div class="question">Minify HTML Plus</div>
904
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheMinifyHtmlPowerFul; ?> id="wpFastestCacheMinifyHtmlPowerFul" name="wpFastestCacheMinifyHtmlPowerFul"><label for="wpFastestCacheMinifyHtmlPowerFul">More powerful minify html</label></div>
905
+ </div>
906
+ <?php }else{ ?>
907
+ <div class="questionCon disabled">
908
+ <div class="question">Minify HTML Plus</div>
909
+ <div class="inputCon"><input type="checkbox" id="wpFastestCacheMinifyHtmlPowerFul"><label for="wpFastestCacheMinifyHtmlPowerFul">More powerful minify html</label></div>
910
+ </div>
911
+ <?php } ?>
912
+
913
+
914
+
915
+ <div class="questionCon">
916
+ <div class="question">Minify Css</div>
917
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheMinifyCss; ?> id="wpFastestCacheMinifyCss" name="wpFastestCacheMinifyCss"><label for="wpFastestCacheMinifyCss">You can decrease the size of css files</label></div>
918
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/optimization/minify-css/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
919
+ </div>
920
+
921
+
922
+
923
+ <?php if(class_exists("WpFastestCachePowerfulHtml") && method_exists("WpFastestCachePowerfulHtml", "minify_css")){ ?>
924
+ <div class="questionCon">
925
+ <div class="question">Minify Css Plus</div>
926
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheMinifyCssPowerFul; ?> id="wpFastestCacheMinifyCssPowerFul" name="wpFastestCacheMinifyCssPowerFul"><label for="wpFastestCacheMinifyCssPowerFul">More powerful minify css</label></div>
927
+ </div>
928
+ <?php }else{ ?>
929
+ <div class="questionCon disabled">
930
+ <div class="question">Minify Css Plus</div>
931
+ <div class="inputCon"><input type="checkbox" id="wpFastestCacheMinifyCssPowerFul"><label for="wpFastestCacheMinifyCssPowerFul">More powerful minify css</label></div>
932
+ </div>
933
+ <?php } ?>
934
+
935
+
936
+ <div class="questionCon">
937
+ <div class="question">Combine Css</div>
938
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheCombineCss; ?> id="wpFastestCacheCombineCss" name="wpFastestCacheCombineCss"><label for="wpFastestCacheCombineCss">Reduce HTTP requests through combined css files</label></div>
939
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/optimization/combine-js-css-files/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
940
+ </div>
941
+
942
+ <?php if(class_exists("WpFastestCachePowerfulHtml")){ ?>
943
+ <?php if(method_exists("WpFastestCachePowerfulHtml", "minify_js_in_body")){ ?>
944
+ <div class="questionCon">
945
+ <div class="question">Minify Js</div>
946
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheMinifyJs; ?> id="wpFastestCacheMinifyJs" name="wpFastestCacheMinifyJs"><label for="wpFastestCacheMinifyJs">You can decrease the size of js files</label></div>
947
+ </div>
948
+ <?php }else{ ?>
949
+ <div class="questionCon update-needed">
950
+ <div class="question">Minify Js</div>
951
+ <div class="inputCon"><input type="checkbox" id="wpFastestCacheMinifyJs"><label for="wpFastestCacheMinifyJs">You can decrease the size of js files</label></div>
952
+ </div>
953
+ <?php } ?>
954
+ <?php }else{ ?>
955
+ <div class="questionCon disabled">
956
+ <div class="question">Minify Js</div>
957
+ <div class="inputCon"><input type="checkbox" id="wpFastestCacheMinifyJs"><label for="wpFastestCacheMinifyJs">You can decrease the size of js files</label></div>
958
+ </div>
959
+ <?php } ?>
960
+
961
+ <div class="questionCon">
962
+ <div class="question">Combine Js</div>
963
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheCombineJs; ?> id="wpFastestCacheCombineJs" name="wpFastestCacheCombineJs"><label for="wpFastestCacheCombineJs">Reduce HTTP requests through combined js files</label> <b style="color:red;">(header)</b></div>
964
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/optimization/combine-js-css-files/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
965
+ </div>
966
+
967
+ <?php if(class_exists("WpFastestCachePowerfulHtml")){ ?>
968
+ <?php if(method_exists("WpFastestCachePowerfulHtml", "combine_js_in_footer")){ ?>
969
+ <div class="questionCon"> <div class="question">Combine Js Plus</div>
970
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheCombineJsPowerFul; ?> id="wpFastestCacheCombineJsPowerFul" name="wpFastestCacheCombineJsPowerFul">
971
+ <label for="wpFastestCacheCombineJsPowerFul">Reduce HTTP requests through combined js files</label> <b style="color:red;">(footer)</b>
972
+ </div>
973
+ </div>
974
+ <?php }else{ ?>
975
+ <div class="questionCon update-needed">
976
+ <div class="question">Combine Js Plus</div>
977
+ <div class="inputCon"><input type="checkbox" id="wpFastestCacheCombineJsPowerFul"><label for="wpFastestCacheCombineJsPowerFul">Reduce HTTP requests through combined js files</label> <b style="color:red;">(footer)</b></div>
978
+ </div>
979
+ <?php } ?>
980
+ <?php }else{ ?>
981
+ <div class="questionCon disabled">
982
+ <div class="question">Combine Js Plus</div>
983
+ <div class="inputCon"><input type="checkbox" id="wpFastestCacheCombineJsPowerFul"><label for="wpFastestCacheCombineJsPowerFul">Reduce HTTP requests through combined js files</label> <b style="color:red;">(footer)</b></div>
984
+ </div>
985
+ <?php } ?>
986
+
987
+ <div class="questionCon">
988
+ <div class="question">Gzip</div>
989
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheGzip; ?> id="wpFastestCacheGzip" name="wpFastestCacheGzip"><label for="wpFastestCacheGzip">Reduce the size of files sent from your server</label></div>
990
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/optimization/enable-gzip-compression/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
991
+ </div>
992
+
993
+ <?php
994
+ if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && preg_match("/nginx/i", $_SERVER["SERVER_SOFTWARE"])){
995
+ include_once(WPFC_MAIN_PATH."templates/nginx_gzip.php");
996
+ }
997
+ ?>
998
+
999
+ <div class="questionCon">
1000
+ <div class="question">Browser Caching</div>
1001
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheLBC; ?> id="wpFastestCacheLBC" name="wpFastestCacheLBC"><label for="wpFastestCacheLBC">Reduce page load times for repeat visitors</label></div>
1002
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/optimization/leverage-browser-caching/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
1003
+ </div>
1004
+
1005
+ <?php if(class_exists("WpFastestCachePowerfulHtml")){ ?>
1006
+ <?php if(method_exists("WpFastestCachePowerfulHtml", "render_blocking")){ ?>
1007
+ <div class="questionCon">
1008
+ <div class="question">Render Blocking Js</div>
1009
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheRenderBlocking; ?> id="wpFastestCacheRenderBlocking" name="wpFastestCacheRenderBlocking"><label for="wpFastestCacheRenderBlocking">Remove render-blocking JavaScript</label></div>
1010
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/premium/render-blocking-js/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
1011
+ </div>
1012
+ <?php }else{ ?>
1013
+ <div class="questionCon update-needed">
1014
+ <div class="question">Render Blocking Js</div>
1015
+ <div class="inputCon"><input type="checkbox" id="wpFastestCacheRenderBlocking" name="wpFastestCacheRenderBlocking"><label for="wpFastestCacheRenderBlocking">Remove render-blocking JavaScript</label></div>
1016
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/premium/render-blocking-js/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
1017
+ </div>
1018
+ <?php } ?>
1019
+ <?php }else{ ?>
1020
+ <div class="questionCon disabled">
1021
+ <div class="question">Render Blocking Js</div>
1022
+ <div class="inputCon"><input type="checkbox" id="wpFastestCacheRenderBlocking" name="wpFastestCacheRenderBlocking"><label for="wpFastestCacheRenderBlocking">Remove render-blocking JavaScript</label></div>
1023
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/premium/render-blocking-js/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
1024
+ </div>
1025
+ <?php } ?>
1026
+
1027
+ <?php
1028
+
1029
+ $tester_arr = array(
1030
+ // "de-DE",
1031
+ // "es_CL",
1032
+ // "es_AR",
1033
+ // "es_GT",
1034
+ // "es_PE",
1035
+ // "es_VE",
1036
+ // "es_CO",
1037
+ // "es_MX",
1038
+ // "es_ES",
1039
+ // "es-ES",
1040
+ // "fr-FR",
1041
+ // "fr-BE",
1042
+ // "fr-CA",
1043
+ // "fr-FR",
1044
+ // "it-IT",
1045
+ // "ja",
1046
+ // "nl-NL",
1047
+ // "pt-PT",
1048
+ // "pt-BR",
1049
+ "tr-TR",
1050
+ "berkatan.com",
1051
+ "yenihobiler.com",
1052
+ "hobiblogu.com",
1053
+ "pembeportakal.com",
1054
+ "artclinic.org",
1055
+ "rogers-immobilien.de",
1056
+ "polyamory.dating",
1057
+ "mygamer.com",
1058
+ "gingerdomain.com",
1059
+ "topclassprinting.com",
1060
+ "camilazivit.com.br"
1061
+ );
1062
+
1063
+ if(in_array(get_bloginfo('language'), $tester_arr) || in_array(str_replace("www.", "", $_SERVER["HTTP_HOST"]), $tester_arr)){ ?>
1064
+
1065
+ <?php if(class_exists("WpFastestCachePowerfulHtml")){ ?>
1066
+ <?php if(method_exists("WpFastestCachePowerfulHtml", "lazy_load")){ ?>
1067
+ <div class="questionCon">
1068
+ <div class="question">Lazy Load</div>
1069
+ <div class="inputCon"><input type="checkbox" <?php echo $wpFastestCacheLazyLoad; ?> id="wpFastestCacheLazyLoad" name="wpFastestCacheLazyLoad"><label for="wpFastestCacheLazyLoad">Lazy Load</label></div>
1070
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/premium/lazy-load-reduce-http-request-and-page-load-time/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
1071
+ </div>
1072
+ <?php }else{ ?>
1073
+ <div class="questionCon update-needed">
1074
+ <div class="question">Lazy Load</div>
1075
+ <div class="inputCon"><input type="checkbox" id="wpFastestCacheLazyLoad" name="wpFastestCacheLazyLoad"><label for="wpFastestCacheLazyLoad">Lazy Load</label></div>
1076
+ <div class="get-info"><a target="_blank" href="http://www.wpfastestcache.com/premium/lazy-load-reduce-http-request-and-page-load-time/"><img src="<?php echo plugins_url("wp-fastest-cache/images/info.png"); ?>" /></a></div>
1077
+ </div>
1078
+ <?php } ?>
1079
+ <?php } ?>
1080
+
1081
+ <?php } ?>
1082
+
1083
+
1084
+
1085
+ <div class="questionCon">
1086
+ <div class="question">Language</div>
1087
+ <div class="inputCon">
1088
+ <select id="wpFastestCacheLanguage" name="wpFastestCacheLanguage">
1089
+ <option value="cn">中文</option>
1090
+ <option value="de">Deutsch</option>
1091
+ <option value="eng">English</option>
1092
+ <option value="es">Español</option>
1093
+ <option value="fr">Français</option>
1094
+ <option value="it">Italiana</option>
1095
+ <option value="nl">Nederlands</option>
1096
+ <option value="ja">日本語</option>
1097
+ <option value="pl">Polski</option>
1098
+ <option value="pt">Português</option>
1099
+ <option value="ro">Română</option>
1100
+ <option value="ru">Русский</option>
1101
+ <option value="fi">Suomi</option>
1102
+ <option value="sv">Svenska</option>
1103
+ <option value="tr">Türkçe</option>
1104
+ <!-- <option value="ukr">Українська</option> -->
1105
+ </select>
1106
+ </div>
1107
+ </div>
1108
+ <div class="questionCon qsubmit">
1109
+ <div class="submit" style="float: none !important;"><input type="submit" value="Submit" class="button-primary"></div>
1110
+ </div>
1111
+ </form>
1112
+ </div>
1113
+ <div class="tab2">
1114
+ <div id="container-show-hide-logs" style="display:none; float:right; padding-right:20px; cursor:pointer;">
1115
+ <span id="show-delete-log">Show Logs</span>
1116
+ <span id="hide-delete-log" style="display:none;">Hide Logs</span>
1117
+ </div>
1118
+
1119
+ <?php
1120
+ if(class_exists("WpFastestCacheStatics")){
1121
+ $cache_statics = new WpFastestCacheStatics();
1122
+ $cache_statics->statics();
1123
+ }else{
1124
+ ?>
1125
+ <div style="z-index:9999;width: 160px; height: 60px; position: absolute; margin-left: 254px; margin-top: 25px; color: white;">
1126
+ <div style="font-family:sans-serif;font-size:13px;text-align: center; border-radius: 5px; float: left; background-color: rgb(51, 51, 51); color: white; width: 147px; padding: 20px 50px;">
1127
+ <label>Only available in Premium version</label>
1128
+ </div>
1129
+ </div>
1130
+ <div style="opacity:0.3;float: right; padding-right: 20px; cursor: pointer;">
1131
+ <span id="show-delete-log">Show Logs</span>
1132
+ <span id="hide-delete-log" style="display:none;">Hide Logs</span>
1133
+ </div>
1134
+ <h2 style="opacity:0.3;padding-left:20px;padding-bottom:10px;">Cache Statics</h2>
1135
+ <div id="wpfc-cache-statics" style="opacity:0.3;width:100%;float:right;margin:15px 0;">
1136
+ <style type="text/css">
1137
+ #wpfc-cache-statics > div{
1138
+ float: left;
1139
+ width: 24%;
1140
+ text-align: center;
1141
+ }
1142
+ #wpfc-cache-statics > div > p{
1143
+ font-size: 1.3em;
1144
+ font-weight: 600;
1145
+ margin-top: 10px;
1146
+ }
1147
+ #wpfc-cache-statics-desktop, #wpfc-cache-statics-mobile, #wpfc-cache-statics-css {
1148
+ border-right: 1px solid #ddd;
1149
+ }
1150
+ </style>
1151
+ <div id="wpfc-cache-statics-desktop" style="margin-left:1%;">
1152
+ <i class="flaticon-desktop1"></i>
1153
+ <p id="wpfc-cache-statics-desktop-data">12.3Kb / 1 Items</p>
1154
+ </div>
1155
+ <div id="wpfc-cache-statics-mobile">
1156
+ <i class="flaticon-smart"></i>
1157
+ <p id="wpfc-cache-statics-mobile-data">12.4Kb / 1 Items</p>
1158
+ </div>
1159
+ <div id="wpfc-cache-statics-css">
1160
+ <i class="flaticon-css4"></i>
1161
+ <p id="wpfc-cache-statics-css-data">278.2Kb / 9 Items</p>
1162
+ </div>
1163
+ <div id="wpfc-cache-statics-js">
1164
+ <i class="flaticon-js"></i>
1165
+ <p id="wpfc-cache-statics-js-data">338.4Kb / 16 Items</p>
1166
+ </div>
1167
+ </div>
1168
+ <?php
1169
+ }
1170
+ ?>
1171
+ <h2 id="delete-cache-h2" style="padding-left:20px;padding-bottom:10px;">Delete Cache</h2>
1172
+ <form method="post" name="wp_manager" class="delete-line">
1173
+ <input type="hidden" value="deleteCache" name="wpFastestCachePage">
1174
+ <div class="questionCon qsubmit left">
1175
+ <div class="submit"><input type="submit" value="Delete Cache" class="button-primary"></div>
1176
+ </div>
1177
+ <div class="questionCon right">
1178
+ <div style="padding-left:11px;">
1179
+ <label>You can delete all cache files</label><br>
1180
+ <label>Target folder</label> <b><?php echo $this->getWpContentDir(); ?>/cache/all</b>
1181
+ </div>
1182
+ </div>
1183
+ </form>
1184
+ <form method="post" name="wp_manager" class="delete-line" style="height: 120px;">
1185
+ <input type="hidden" value="deleteCssAndJsCache" name="wpFastestCachePage">
1186
+ <div class="questionCon qsubmit left">
1187
+ <div class="submit"><input type="submit" value="Delete Cache and Minified CSS/JS" class="button-primary"></div>
1188
+ </div>
1189
+ <div class="questionCon right">
1190
+ <div style="padding-left:11px;">
1191
+ <label>If you modify any css file, you have to delete minified css files</label><br>
1192
+ <label>All cache files will be removed as well</label><br>
1193
+ <label>Target folder</label> <b><?php echo $this->getWpContentDir(); ?>/cache/all</b><br>
1194
+ <!-- <label>Target folder</label> <b><?php echo $this->getWpContentDir(); ?>/cache/wpfc-mobile-cache</b><br> -->
1195
+ <label>Target folder</label> <b><?php echo $this->getWpContentDir(); ?>/cache/wpfc-minified</b>
1196
+ </div>
1197
+ </div>
1198
+ </form>
1199
+ <?php
1200
+ if(class_exists("WpFastestCacheLogs")){
1201
+ $logs = new WpFastestCacheLogs("delete");
1202
+ $logs->printLogs();
1203
+ }
1204
+ ?>
1205
+ </div>
1206
+ <div class="tab3">
1207
+ <h2 style="padding-bottom:10px;padding-left:20px;float:left;">Timeout Rules</h2>
1208
+
1209
+ <!-- samples start: clones -->
1210
+ <div class="wpfc-timeout-rule-line" style="display:none;">
1211
+ <div class="wpfc-timeout-rule-line-left">
1212
+ <select name="wpfc-timeout-rule-prefix">
1213
+ <option selected="" value=""></option>
1214
+ <option value="all">All</option>
1215
+ <option value="homepage">Home Page</option>
1216
+ <option value="startwith">Start With</option>
1217
+ <option value="contain">Contain</option>
1218
+ <option value="exact">Exact</option>
1219
+ </select>
1220
+ </div>
1221
+ <div class="wpfc-timeout-rule-line-middle">
1222
+ <input type="text" name="wpfc-timeout-rule-content">
1223
+ <input type="text" name="wpfc-timeout-rule-schedule">
1224
+ <input type="text" name="wpfc-timeout-rule-hour">
1225
+ <input type="text" name="wpfc-timeout-rule-minute">
1226
+ </div>
1227
+ </div>
1228
+ <!-- item sample -->
1229
+ <div class="wpfc-timeout-item" tabindex="1" prefix="" content="" schedule="" style="position: relative;display:none;">
1230
+ <div class="app">
1231
+ <div class="wpfc-timeout-item-form-title">Title M</div>
1232
+ <span class="wpfc-timeout-item-details wpfc-timeout-item-url"></span>
1233
+ </div>
1234
+ </div>
1235
+ <!-- samples end -->
1236
+
1237
+ <div style="float:left;margin-top:-37px;padding-left:628px;">
1238
+ <button type="button" class="wpfc-add-new-timeout-button wpfc-dialog-buttons" style="display: inline-block;padding: 4px 10px;">
1239
+ <span>Add New Rule</span>
1240
+ </button>
1241
+ </div>
1242
+
1243
+ <div class="wpfc-timeout-list" style="display: block;width:98%;float:left;">
1244
+
1245
+ </div>
1246
+
1247
+ <?php
1248
+ include(WPFC_MAIN_PATH."templates/timeout.php");
1249
+ ?>
1250
+
1251
+ <form method="post" name="wp_manager">
1252
+ <input type="hidden" value="timeout" name="wpFastestCachePage">
1253
+ <div class="wpfc-timeout-rule-container"></div>
1254
+ </form>
1255
+ <script type="text/javascript">
1256
+
1257
+ <?php
1258
+ $schedules_rules = array();
1259
+ $crons = _get_cron_array();
1260
+
1261
+ foreach ((array)$crons as $cron_key => $cron_value) {
1262
+ foreach ( (array) $cron_value as $hook => $events ) {
1263
+ if(preg_match("/^wp\_fastest\_cache(.*)/", $hook, $id)){
1264
+ if(!$id[1] || preg_match("/^\_(\d+)$/", $id[1])){
1265
+ foreach ( (array) $events as $event_key => $event ) {
1266
+ $tmp_array = array();
1267
+
1268
+ if($id[1]){
1269
+ // new cronjob which is (wp_fastest_cache_d+)
1270
+ $tmp_std = json_decode($event["args"][0]);
1271
+
1272
+ $tmp_array = array("schedule" => $event["schedule"],
1273
+ "prefix" => $tmp_std->prefix,
1274
+ "content" => $tmp_std->content);
1275
+
1276
+ if(isset($tmp_std->hour) && isset($tmp_std->minute)){
1277
+ $tmp_array["hour"] = $tmp_std->hour;
1278
+ $tmp_array["minute"] = $tmp_std->minute;
1279
+ }
1280
+ }else{
1281
+ // old cronjob which is (wp_fastest_cache)
1282
+ $tmp_array = array("schedule" => $event["schedule"],
1283
+ "prefix" => "all",
1284
+ "content" => "all");
1285
+ }
1286
+ }
1287
+
1288
+ array_push($schedules_rules, $tmp_array);
1289
+ }
1290
+ }
1291
+ }
1292
+ }
1293
+
1294
+ echo "WpFcTimeout.schedules = ".json_encode($this->cron_add_minute(array())).";";
1295
+
1296
+ if(count($schedules_rules) > 0){
1297
+ echo "WpFcTimeout.init(".json_encode($schedules_rules).");";
1298
+ }else{
1299
+ echo "WpFcTimeout.init();";
1300
+ } ?>
1301
+ </script>
1302
+ </div>
1303
+ <?php if(class_exists("WpFastestCacheImageOptimisation")){ ?>
1304
+ <div class="tab4">
1305
+ <h2 style="padding-left:20px;padding-bottom:10px;">Optimize Image Tool</h2>
1306
+
1307
+ <?php $xxx = new WpFastestCacheImageOptimisation(); ?>
1308
+ <?php $xxx->statics(); ?>
1309
+ <?php $xxx->imageList(); ?>
1310
+ </div>
1311
+ <?php }else{ ?>
1312
+ <div class="tab4" style="">
1313
+ <div style="z-index:9999;width: 160px; height: 60px; position: absolute; margin-left: 254px; margin-top: 74px; color: white;">
1314
+ <div style="font-family:sans-serif;font-size:13px;text-align: center; border-radius: 5px; float: left; background-color: rgb(51, 51, 51); color: white; width: 147px; padding: 20px 50px;">
1315
+ <label>Only available in Premium version</label>
1316
+ </div>
1317
+ </div>
1318
+ <h2 style="opacity: 0.3;padding-left:20px;padding-bottom:10px;">Optimize Image Tool</h2>
1319
+ <div id="container-show-hide-image-list" style="opacity: 0.3;float: right; padding-right: 20px; cursor: pointer;">
1320
+ <span id="show-image-list">Show Images</span>
1321
+ <span id="hide-image-list" style="display:none;">Hide Images</span>
1322
+ </div>
1323
+ <div style="opacity: 0.3;width:100%;float:left;" id="wpfc-image-static-panel">
1324
+ <div style="float: left; width: 100%;">
1325
+ <div style="float:left;padding-left: 22px;padding-right:15px;">
1326
+ <div style="display: inline-block;">
1327
+ <div style="width: 150px; height: 150px; position: relative; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; background-color: #ffcc00;">
1328
+
1329
+
1330
+ <div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 150px 150px 75px);">
1331
+ <div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-radius: 150px; clip: rect(0px, 75px, 150px, 0px); transform: rotate(109.62deg); background-color: rgb(255, 165, 0); border-spacing: 109.62px;" id="wpfc-pie-chart-little"></div>
1332
+ </div>
1333
+
1334
+
1335
+ <div style="display:none;position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 150px 150px 25px); -webkit-transform: rotate(0deg); transform: rotate(0deg);" id="wpfc-pie-chart-big-container-first">
1336
+ <div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 75px 150px 0px); -webkit-transform: rotate(180deg); transform: rotate(180deg); background-color: #FFA500;"></div>
1337
+ </div>
1338
+ <div style="display:none;position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 150px 150px 75px); -webkit-transform: rotate(180deg); transform: rotate(180deg);" id="wpfc-pie-chart-big-container-second-right">
1339
+ <div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 150px; border-top-left-radius: 150px; border-top-right-radius: 150px; border-bottom-right-radius: 150px; border-bottom-left-radius: 150px; clip: rect(0px 75px 150px 0px); -webkit-transform: rotate(90deg); transform: rotate(90deg); background-color: #FFA500;" id="wpfc-pie-chart-big-container-second-left"></div>
1340
+ </div>
1341
+
1342
+ </div>
1343
+ <div style="width: 114px;height: 114px;margin-top: -133px;background-color: white;margin-left: 18px;position: absolute;border-radius: 150px;">
1344
+ <p style="text-align:center;margin:27px 0 0 0;color: black;">Succeed</p>
1345
+ <p style="text-align: center; font-size: 18px; font-weight: bold; font-family: verdana; margin: -2px 0px 0px; color: black;" id="wpfc-optimized-statics-percent" class="">30.45</p>
1346
+ <p style="text-align:center;margin:0;color: black;">%</p>
1347
+ </div>
1348
+ </div>
1349
+ </div>
1350
+ <div style="float: left;padding-left:12px;" id="wpfc-statics-right">
1351
+ <ul style="list-style: none outside none;float: left;">
1352
+ <li>
1353
+ <div style="background-color: rgb(29, 107, 157);width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
1354
+ <div style="float:left;padding-left:6px;">All</div>
1355
+ <div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 65%; margin-left: 5px;" id="wpfc-optimized-statics-total_image_number" class="">7196</div>
1356
+ </li>
1357
+ <li>
1358
+ <div style="background-color: rgb(29, 107, 157);width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
1359
+ <div style="float:left;padding-left:6px;">Pending</div>
1360
+ <div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 65%; margin-left: 5px;" id="wpfc-optimized-statics-pending" class="">5002</div>
1361
+ </li>
1362
+ <li>
1363
+ <div style="background-color: #FF0000;width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
1364
+ <div style="float:left;padding-left:6px;">Errors</div>
1365
+ <div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 65%; margin-left: 5px;" id="wpfc-optimized-statics-error" class="">3</div>
1366
+ </li>
1367
+ </ul>
1368
+ <ul style="list-style: none outside none;float: left;">
1369
+ <li>
1370
+ <div style="background-color: rgb(61, 207, 60);width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
1371
+ <div style="float:left;padding-left:6px;"><span>Optimized Images</span></div>
1372
+ <div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 65%; margin-left: 5px;" id="wpfc-optimized-statics-optimized" class="">2191</div>
1373
+ </li>
1374
+
1375
+ <li>
1376
+ <div style="background-color: rgb(61, 207, 60);width:15px;height:15px;float:left;margin-top:4px;border-radius:5px;"></div>
1377
+ <div style="float:left;padding-left:6px;"><span>Total Reduction</span></div>
1378
+ <div style="font-size: 14px; font-weight: bold; color: black; float: left; width: 80%; margin-left: 5px;" id="wpfc-optimized-statics-reduction" class="">78400.897</div>
1379
+ </li>
1380
+ <li></li>
1381
+ </ul>
1382
+
1383
+ <ul style="list-style: none outside none;float: left;">
1384
+ <li>
1385
+ <h1 style="margin-top:0;float:left;">Credit: <span style="display: inline-block; height: 16px; width: auto;min-width:25px;" id="wpfc-optimized-statics-credit" class="">9910</span></h1>
1386
+ <span id="buy-image-credit">More</span>
1387
+ </li>
1388
+ <li>
1389
+ <input type="submit" class="button-primary" value="Optimize All" id="wpfc-optimize-images-button" style="width:100%;height:110px;">
1390
+ </li>
1391
+ </ul>
1392
+ </div>
1393
+ </div>
1394
+ </div>
1395
+ </div>
1396
+ <?php } ?>
1397
+ <div class="tab5">
1398
+ <?php
1399
+ if(!get_option("WpFc_api_key")){
1400
+ update_option("WpFc_api_key", md5(microtime(true)));
1401
+ }
1402
+
1403
+ if(!defined('WPFC_API_KEY')){ // for download_error.php
1404
+ define("WPFC_API_KEY", get_option("WpFc_api_key"));
1405
+ }
1406
+ ?>
1407
+ <div id="wpfc-premium-container">
1408
+ <div class="wpfc-premium-step">
1409
+ <div class="wpfc-premium-step-header">
1410
+ <label>Discover Features</label>
1411
+ </div>
1412
+ <div class="wpfc-premium-step-content">
1413
+ In the premium version there are some new features which speed up the sites more.
1414
+ </div>
1415
+ <div class="wpfc-premium-step-image">
1416
+ <img src="<?php echo plugins_url("wp-fastest-cache/images/rocket.png"); ?>">
1417
+ </div>
1418
+ <div class="wpfc-premium-step-footer">
1419
+ <h1 id="new-features-h1">New Features</h1>
1420
+ <ul>
1421
+ <li><a target="_blank" style="text-decoration: none;color: #444;" href="http://www.wpfastestcache.com/premium/image-optimization/">Image Optimization</a></li>
1422
+ <li><a target="_blank" style="text-decoration: none;color: #444;" href="http://www.wpfastestcache.com/premium/mobile-cache/">Mobile Cache</a></li>
1423
+ <li><a target="_blank" style="text-decoration: none;color: #444;" href="http://www.wpfastestcache.com/premium/minify-html-plus/">Minify HTML Plus</a></li>
1424
+ <li><a target="_blank" style="text-decoration: none;color: #444;" href="http://www.wpfastestcache.com/premium/combine-js-plus/">Combine Js Plus</a></li>
1425
+ <li><a target="_blank" style="text-decoration: none;color: #444;" href="http://www.wpfastestcache.com/premium/minify-js/">Minify Js</a></li>
1426
+ <li><a target="_blank" style="text-decoration: none;color: #444;" href="http://www.wpfastestcache.com/premium/delete-cache-logs/">Delete Cache Logs</a></li>
1427
+ <li><a target="_blank" style="text-decoration: none;color: #444;" href="http://www.wpfastestcache.com/premium/cache-statics/">Cache Statics</a></li>
1428
+ </ul>
1429
+ </div>
1430
+ </div>
1431
+ <div class="wpfc-premium-step">
1432
+ <div class="wpfc-premium-step-header">
1433
+ <label>Checkout</label>
1434
+ </div>
1435
+ <div class="wpfc-premium-step-content">
1436
+ You need to pay before downloading the premium version.
1437
+ </div>
1438
+ <div class="wpfc-premium-step-image">
1439
+ <img width="140px" height="140px" src="<?php echo plugins_url("wp-fastest-cache/images/dollar.png"); ?>" />
1440
+ </div>
1441
+ <div class="wpfc-premium-step-footer">
1442
+ <?php
1443
+ if(get_bloginfo('language') == "tr-TR"){
1444
+ $premium_price = "100TL";
1445
+ }else{
1446
+ $premium_price = "$39.99";
1447
+ }
1448
+
1449
+ ?>
1450
+ <h1 style="float:left;" id="just-h1">Just</h1><h1><span style="margin-left:5px;" id="wpfc-premium-price"><?php echo $premium_price; ?></span></h1>
1451
+ <p>The download button will be available after paid. You can buy the premium version now.</p>
1452
+
1453
+ <?php if(!preg_match("/Caiu\s*Na/i", get_bloginfo("name")) && !preg_match("/caiuna/i", $_SERVER["HTTP_HOST"]) && !preg_match("/\.ir$/i", $_SERVER["HTTP_HOST"])){ ?>
1454
+ <?php if(class_exists("WpFastestCachePowerfulHtml")){ ?>
1455
+ <button id="wpfc-buy-premium-button" type="submit" class="wpfc-btn primaryDisableCta" style="width:200px;">
1456
+ <span>Purchased</span>
1457
+ </button>
1458
+ <?php }else{ ?>
1459
+ <form action="http://api.wpfastestcache.net/paypal/buypremium/" method="post">
1460
+ <input type="hidden" name="ip" value="<?php echo $_SERVER["REMOTE_ADDR"]; ?>">
1461
+ <input type="hidden" name="wpfclang" value="<?php echo $this->options->wpFastestCacheLanguage; ?>">
1462
+ <input type="hidden" name="bloglang" value="<?php echo get_bloginfo('language'); ?>">
1463
+ <input type="hidden" name="hostname" value="<?php echo str_replace(array("http://", "www."), "", $_SERVER["HTTP_HOST"]); ?>">
1464
+ <button id="wpfc-buy-premium-button" type="submit" class="wpfc-btn primaryCta" style="width:200px;">
1465
+ <span>Buy</span>
1466
+ </button>
1467
+ </form>
1468
+ <?php } ?>
1469
+ <?php } ?>
1470
+
1471
+
1472
+ </div>
1473
+ </div>
1474
+ <div class="wpfc-premium-step">
1475
+ <div class="wpfc-premium-step-header">
1476
+ <label>Download & Update</label>
1477
+ </div>
1478
+ <div class="wpfc-premium-step-content">
1479
+ You can download and update the premium when you want if you paid.
1480
+ </div>
1481
+ <div class="wpfc-premium-step-image" style="">
1482
+ <img src="<?php echo plugins_url("wp-fastest-cache/images/download.png"); ?>">
1483
+ </div>
1484
+ <div class="wpfc-premium-step-footer">
1485
+ <h1 id="get-now-h1">Get It Now!</h1>
1486
+ <p>Please don't delete the free version. Premium version works with the free version.</p>
1487
+
1488
+
1489
+ <?php if(class_exists("WpFastestCachePowerfulHtml")){ ?>
1490
+ <a href="http://www.wpfastestcache.com/blog/premium-update-before-v1-3-6/">
1491
+ <button id="wpfc-update-premium-button" class="wpfc-btn primaryDisableCta" style="width:200px;">
1492
+ <span data-type="update">Update</span>
1493
+ </button>
1494
+ </a>
1495
+ <?php }else{ ?>
1496
+ <button class="wpfc-btn primaryCta" id="wpfc-download-premium-button" class="wpfc-btn primaryDisableCta" style="width:200px;">
1497
+ <span data-type="download">Download</span>
1498
+ </button>
1499
+
1500
+ <?php include(WPFC_MAIN_PATH."templates/download.html"); ?>
1501
+
1502
+ <script type="text/javascript">
1503
+ jQuery("#wpfc-download-premium-button").click(function(){
1504
+ //jQuery("#revert-loader-toolbar").show();
1505
+
1506
+ Wpfc_New_Dialog.dialog("wpfc-modal-downloaderror", {close: "default"});
1507
+
1508
+ var wpfc_api_url = '<?php echo "http://api.wpfastestcache.net/premium/newdownload/".str_replace(array("http://", "www."), "", $_SERVER["HTTP_HOST"])."/".get_option("WpFc_api_key"); ?>';
1509
+ jQuery("div[id^='wpfc-modal-downloaderror'] a.wpfc-download-now").attr("href", wpfc_api_url);
1510
+
1511
+ // jQuery("body").append(data);
1512
+ // jQuery("#wpfc-download-now").attr("href", wpfc_api_url);
1513
+ // Wpfc_Dialog.dialog("wpfc-modal-downloaderror");
1514
+ // jQuery("#revert-loader-toolbar").hide();
1515
+
1516
+ // jQuery.get("<?php echo plugins_url('wp-fastest-cache/templates'); ?>/download.html", function( data ) {
1517
+ // });
1518
+ });
1519
+ </script>
1520
+ <?php } ?>
1521
+ <!--
1522
+ <button class="wpfc-btn primaryNegativeCta" style="width:200px;">
1523
+ <span>Update</span>
1524
+ <label>(v 1.0)</label>
1525
+ </button>
1526
+ -->
1527
+ </div>
1528
+ </div>
1529
+ </div>
1530
+ </div>
1531
+ <div class="tab6" style="padding-left:20px;">
1532
+ <!-- samples start: clones -->
1533
+ <div class="wpfc-exclude-rule-line" style="display:none;">
1534
+ <div class="wpfc-exclude-rule-line-left">
1535
+ <select name="wpfc-exclude-rule-prefix">
1536
+ <option selected="" value=""></option>
1537
+ <option value="homepage">Home Page</option>
1538
+ <option value="startwith">Start With</option>
1539
+ <option value="contain">Contain</option>
1540
+ <option value="exact">Exact</option>
1541
+ </select>
1542
+ </div>
1543
+ <div class="wpfc-exclude-rule-line-middle">
1544
+ <input type="text" name="wpfc-exclude-rule-content" style="width:390px;">
1545
+ <input type="text" name="wpfc-exclude-rule-type" style="width:90px;">
1546
+ </div>
1547
+ </div>
1548
+ <!-- item sample -->
1549
+ <div class="wpfc-exclude-item" tabindex="1" type="" prefix="" content="" style="position: relative;display:none;">
1550
+ <div class="app">
1551
+ <div class="wpfc-exclude-item-form-title">Title M</div>
1552
+ <span class="wpfc-exclude-item-details wpfc-exclude-item-url"></span>
1553
+ </div>
1554
+ </div>
1555
+ <!-- samples end -->
1556
+
1557
+ <h2 style="padding-bottom:10px;float:left;">Exclude Pages</h2>
1558
+
1559
+ <div style="float:left;margin-top:-37px;padding-left:608px;">
1560
+ <button data-type="page" type="button" class="wpfc-add-new-exclude-button wpfc-dialog-buttons" style="display: inline-block;padding: 4px 10px;">
1561
+ <span>Add New Rule</span>
1562
+ </button>
1563
+ </div>
1564
+
1565
+ <div class="wpfc-exclude-page-list" style="display: block;width:98%;float:left;">
1566
+
1567
+ </div>
1568
+
1569
+ <div class="exclude_section_clear">
1570
+ <div></div>
1571
+ </div>
1572
+
1573
+
1574
+ <h2 style="padding-bottom:10px;float:left;">Exclude User-Agents</h2>
1575
+
1576
+ <div style="float:left;margin-top:-37px;padding-left:608px;">
1577
+ <button data-type="useragent" type="button" class="wpfc-add-new-exclude-button wpfc-dialog-buttons" style="display: inline-block;padding: 4px 10px;">
1578
+ <span>Add New Rule</span>
1579
+ </button>
1580
+ </div>
1581
+
1582
+ <div class="wpfc-exclude-useragent-list" style="display: block;width:98%;float:left;">
1583
+
1584
+ </div>
1585
+
1586
+
1587
+ <div class="exclude_section_clear">
1588
+ <div></div>
1589
+ </div>
1590
+
1591
+
1592
+
1593
+ <h2 style="padding-bottom:10px;float:left;">Exclude Cookies</h2>
1594
+
1595
+ <div style="float:left;margin-top:-37px;padding-left:608px;">
1596
+ <button data-type="cookie" type="button" class="wpfc-add-new-exclude-button wpfc-dialog-buttons" style="display: inline-block;padding: 4px 10px;">
1597
+ <span>Add New Rule</span>
1598
+ </button>
1599
+ </div>
1600
+
1601
+ <div class="wpfc-exclude-cookie-list" style="display: block;width:98%;float:left;">
1602
+
1603
+ </div>
1604
+
1605
+
1606
+ <div class="exclude_section_clear">
1607
+ <div></div>
1608
+ </div>
1609
+
1610
+
1611
+ <h2 style="padding-bottom:10px;float:left;">Exclude CSS</h2>
1612
+
1613
+ <div style="float:left;margin-top:-37px;padding-left:608px;">
1614
+ <button data-type="css" type="button" class="wpfc-add-new-exclude-button wpfc-dialog-buttons" style="display: inline-block;padding: 4px 10px;">
1615
+ <span>Add New Rule</span>
1616
+ </button>
1617
+ </div>
1618
+
1619
+ <div class="wpfc-exclude-css-list" style="display: block;width:98%;float:left;">
1620
+
1621
+ </div>
1622
+
1623
+
1624
+
1625
+ <div class="exclude_section_clear">
1626
+ <div></div>
1627
+ </div>
1628
+
1629
+
1630
+
1631
+ <h2 style="padding-bottom:10px;float:left;">Exclude JS</h2>
1632
+
1633
+ <div style="float:left;margin-top:-37px;padding-left:608px;">
1634
+ <button data-type="js" type="button" class="wpfc-add-new-exclude-button wpfc-dialog-buttons" style="display: inline-block;padding: 4px 10px;">
1635
+ <span>Add New Rule</span>
1636
+ </button>
1637
+ </div>
1638
+
1639
+ <div class="wpfc-exclude-js-list" style="display: block;width:98%;float:left;">
1640
+
1641
+ </div>
1642
+
1643
+
1644
+ <?php
1645
+ include(WPFC_MAIN_PATH."templates/exclude.php");
1646
+ ?>
1647
+
1648
+ <form method="post" name="wp_manager">
1649
+ <input type="hidden" value="exclude" name="wpFastestCachePage">
1650
+ <div class="wpfc-exclude-rule-container"></div>
1651
+ <!-- <div class="questionCon qsubmit">
1652
+ <div class="submit"><input type="submit" class="button-primary" value="Submit"></div>
1653
+ </div> -->
1654
+ </form>
1655
+ <script type="text/javascript">
1656
+
1657
+ <?php
1658
+ if($rules_json = get_option("WpFastestCacheExclude")){
1659
+ ?>WpFcExcludePages.init(<?php echo $rules_json; ?>);<?php
1660
+ }else{
1661
+ ?>WpFcExcludePages.init();<?php
1662
+ }
1663
+ ?>
1664
+ </script>
1665
+ </div>
1666
+
1667
+ <div class="tab7" style="padding-left:20px;">
1668
+ <h2 style="padding-bottom:10px;">CDN Settings</h2>
1669
+ <div>
1670
+ <div class="integration-page" style="display: block;width:98%;float:left;">
1671
+
1672
+ <div wpfc-cdn-name="maxcdn" class="int-item int-item-left">
1673
+ <img src="<?php echo plugins_url("wp-fastest-cache/images/maxcdn.png"); ?>" />
1674
+ <div class="app">
1675
+ <div style="font-weight:bold;font-size:14px;">CDN by MaxCDN</div>
1676
+ <p>Experts in Content Delivery Network Services</p>
1677
+ </div>
1678
+ <div class="meta"></div>
1679
+ </div>
1680
+
1681
+
1682
+ <div wpfc-cdn-name="other" class="int-item">
1683
+ <img src="<?php echo plugins_url("wp-fastest-cache/images/othercdn.png"); ?>" />
1684
+ <div class="app">
1685
+ <div style="font-weight:bold;font-size:14px;">Other CDN Providers</div>
1686
+ <p>You can use any cdn provider.</p>
1687
+ </div>
1688
+ <div class="meta"></div>
1689
+ </div>
1690
+
1691
+ <div wpfc-cdn-name="photon" class="int-item">
1692
+ <img src="<?php echo plugins_url("wp-fastest-cache/images/photoncdn.png"); ?>" />
1693
+ <div class="app">
1694
+ <div style="font-weight:bold;font-size:14px;">CDN by Photon</div>
1695
+ <p>Wordpress Content Delivery Network Services</p>
1696
+ </div>
1697
+ <div class="meta"></div>
1698
+ </div>
1699
+
1700
+ </div>
1701
+ </div>
1702
+ <script type="text/javascript">
1703
+ (function() {
1704
+ <?php
1705
+ $cdn_values = get_option("WpFastestCacheCDN");
1706
+
1707
+ if($cdn_values){
1708
+ $std_obj = json_decode($cdn_values);
1709
+ $cdn_values_arr = array();
1710
+
1711
+ if(is_array($std_obj)){
1712
+ $cdn_values_arr = $std_obj;
1713
+ }else{
1714
+ array_push($cdn_values_arr, $std_obj);
1715
+ }
1716
+
1717
+ foreach ($cdn_values_arr as $cdn_key => $cdn_value) {
1718
+ if($cdn_value->id == "amazonaws" || $cdn_value->id == "keycdn" || $cdn_value->id == "cdn77"){
1719
+ $cdn_value->id = "other";
1720
+ }
1721
+ ?>jQuery("div[wpfc-cdn-name='<?php echo $cdn_value->id;?>']").find("div.meta").addClass("isConnected");<?php
1722
+ }
1723
+ }
1724
+ ?>
1725
+ jQuery("div.integration-page .int-item").click(function(e){
1726
+ jQuery("#revert-loader-toolbar").show();
1727
+ jQuery("div[id='wpfc-modal-maxcdn'], div[id='wpfc-modal-other'], div[id='wpfc-modal-photon']").remove();
1728
+
1729
+ jQuery.ajax({
1730
+ type: 'GET',
1731
+ url: ajaxurl,
1732
+ cache: false,
1733
+ data : {"action": "wpfc_cdn_options_ajax_request"},
1734
+ dataType : "json",
1735
+ success: function(data){
1736
+ if(data.id){
1737
+ if(data.id == "keycdn" || data.id == "cdn77" || data.id == "amazonaws"){
1738
+ data.id = "other";
1739
+ }
1740
+ }
1741
+
1742
+
1743
+ WpfcCDN.init({"id" : jQuery(e.currentTarget).attr("wpfc-cdn-name"),
1744
+ "template_main_url" : "<?php echo plugins_url('wp-fastest-cache/templates/cdn'); ?>",
1745
+ "values" : data
1746
+ });
1747
+
1748
+
1749
+
1750
+ // if(data.id && jQuery(e.currentTarget).attr("wpfc-cdn-name") != data.id){
1751
+ // Wpfc_New_Dialog.dialog("wpfc-modal-onlyonecdn", {close: "default"});
1752
+
1753
+ // Wpfc_New_Dialog.show_button("close");
1754
+
1755
+ // jQuery("#revert-loader-toolbar").hide();
1756
+ // }else{
1757
+ // WpfcCDN.init({"id" : jQuery(e.currentTarget).attr("wpfc-cdn-name"),
1758
+ // "template_main_url" : "<?php echo plugins_url('wp-fastest-cache/templates/cdn'); ?>",
1759
+ // "values" : data
1760
+ // });
1761
+ // }
1762
+ }
1763
+ });
1764
+ });
1765
+ })();
1766
+ </script>
1767
+ </div>
1768
+
1769
+ <div class="tab8" style="padding-left:20px;">
1770
+ <h2 style="padding-bottom:10px;">Database Cleanup</h2>
1771
+ <div>
1772
+
1773
+ <?php if(!$this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ ?>
1774
+ <style type="text/css">
1775
+ div.tab8 h2{
1776
+ opacity: 0.3 !important;
1777
+ }
1778
+ div.tab8 .integration-page{
1779
+ opacity: 0.3 !important;
1780
+ }
1781
+ </style>
1782
+
1783
+ <div style="z-index:9999;width: 160px; height: 60px; position: absolute; margin-left: 230px; margin-top: 25px; color: white;">
1784
+ <div style="font-family:sans-serif;font-size:13px;text-align: center; border-radius: 5px; float: left; background-color: rgb(51, 51, 51); color: white; width: 147px; padding: 20px 50px;">
1785
+ <label>Only available in Premium version</label>
1786
+ </div>
1787
+ </div>
1788
+ <?php } ?>
1789
+
1790
+ <div class="integration-page" style="display: block;width:98%;float:left;">
1791
+
1792
+ <div wpfc-db-name="all_warnings" class="int-item int-item-left">
1793
+ <div style="float:left;width:45px;height:45px;margin-right:12px;">
1794
+ <span class="flaticon-technology"></span>
1795
+ </div>
1796
+ <div class="app db">
1797
+ <div style="font-weight:bold;font-size:14px;">ALL <span class="db-number">(0)</span></div>
1798
+ <p>Run the all options</p>
1799
+ </div>
1800
+ <div class="meta"></div>
1801
+ </div>
1802
+
1803
+ <div wpfc-db-name="post_revisions" class="int-item int-item-right">
1804
+ <div style="float:left;width:45px;height:45px;margin-right:12px;">
1805
+ <span class="flaticon-draft"></span>
1806
+ </div>
1807
+ <div class="app db">
1808
+ <div style="font-weight:bold;font-size:14px;">Post Revisions <span class="db-number">(0)</span></div>
1809
+ <p>Clean the all post revisions</p>
1810
+ </div>
1811
+ <div class="meta"></div>
1812
+ </div>
1813
+
1814
+ <div wpfc-db-name="trashed_contents" class="int-item int-item-left">
1815
+ <div style="float:left;width:45px;height:45px;margin-right:12px;">
1816
+ <span class="flaticon-recycling"></span>
1817
+ </div>
1818
+ <div class="app db">
1819
+ <div style="font-weight:bold;font-size:14px;">Trashed Contents <span class="db-number">(0)</span></div>
1820
+ <p>Clean the all trashed posts & pages</p>
1821
+ </div>
1822
+ <div class="meta"></div>
1823
+ </div>
1824
+
1825
+ <div wpfc-db-name="trashed_spam_comments" class="int-item int-item-right">
1826
+ <div style="float:left;width:45px;height:45px;margin-right:12px;">
1827
+ <span class="flaticon-interface"></span>
1828
+ </div>
1829
+ <div class="app db">
1830
+ <div style="font-weight:bold;font-size:14px;">Trashed & Spam Comments <span class="db-number">(0)</span></div>
1831
+ <p>Clean the all comments from trash & spam</p>
1832
+ </div>
1833
+ <div class="meta"></div>
1834
+ </div>
1835
+
1836
+ <div wpfc-db-name="trackback_pingback" class="int-item int-item-left">
1837
+ <div style="float:left;width:45px;height:45px;margin-right:12px;">
1838
+ <span class="flaticon-pingback"></span>
1839
+ </div>
1840
+ <div class="app db">
1841
+ <div style="font-weight:bold;font-size:14px;">Trackbacks and Pingbacks <span class="db-number">(0)</span></div>
1842
+ <p>Clean the all trackbacks and pingbacks</p>
1843
+ </div>
1844
+ <div class="meta"></div>
1845
+ </div>
1846
+
1847
+ <div wpfc-db-name="transient_options" class="int-item int-item-right">
1848
+ <div style="float:left;width:45px;height:45px;margin-right:12px;">
1849
+ <span class="flaticon-file"></span>
1850
+ </div>
1851
+ <div class="app db">
1852
+ <div style="font-weight:bold;font-size:14px;">Transient Options <span class="db-number">(0)</span></div>
1853
+ <p>Clean the all transient options</p>
1854
+ </div>
1855
+ <div class="meta"></div>
1856
+ </div>
1857
+
1858
+
1859
+
1860
+
1861
+ </div>
1862
+ </div>
1863
+ </div>
1864
+
1865
+ <?php include_once(WPFC_MAIN_PATH."templates/permission_error.html"); ?>
1866
+
1867
+
1868
+
1869
+
1870
+
1871
+
1872
+
1873
+
1874
+
1875
+
1876
+
1877
+
1878
+ </div>
1879
+
1880
+ <div class="omni_admin_sidebar">
1881
+ <div class="omni_admin_sidebar_section" id="vote-us">
1882
+ <h3 style="color: antiquewhite;">Rate Us</h3>
1883
+ <ul>
1884
+ <li><label>If you like it, Please vote and support us.</label></li>
1885
+ </ul>
1886
+ <script>
1887
+ jQuery("#vote-us").click(function(){
1888
+ var win=window.open("http://wordpress.org/support/view/plugin-reviews/wp-fastest-cache?free-counter?rate=5#postform", '_blank');
1889
+ win.focus();
1890
+ });
1891
+ </script>
1892
+ </div>
1893
+ <div class="omni_admin_sidebar_section">
1894
+ <?php if(class_exists("WpFastestCachePowerfulHtml")){ ?>
1895
+ <h3>Premium Support</h3>
1896
+ <ul>
1897
+ <li><label>You can send an email</label> <a target="_blank"><label>fastestcache@gmail.com</label></a></li>
1898
+ </ul>
1899
+ <?php }else{ ?>
1900
+ <h3>Having Issues?</h3>
1901
+ <ul>
1902
+ <li><label>You can create a ticket</label> <a target="_blank" href="http://wordpress.org/support/plugin/wp-fastest-cache"><label>WordPress support forum</label></a></li>
1903
+ <?php
1904
+ if(isset($this->options->wpFastestCacheLanguage) && $this->options->wpFastestCacheLanguage == "tr"){
1905
+ ?>
1906
+ <li><label>R10 Üzerinden Sorabilirsiniz</label> <a target="_blank" href="http://www.r10.net/wordpress/1096868-wp-fastest-cache-wp-en-hizli-ve-en-basit-cache-sistemi.html"><label>R10.net destek başlığı</label></a></li>
1907
+ <?php
1908
+ }
1909
+ ?>
1910
+ </ul>
1911
+ <?php } ?>
1912
+ </div>
1913
+ </div>
1914
+
1915
+ <div id="wpfc-plugin-setup-warning" class="mainContent" style="display:none;border:1px solid black">
1916
+ <div class="pageView"style="display: block;">
1917
+ <div class="fakeHeader">
1918
+ <h3 class="title-h3">Error Occured</h3>
1919
+ </div>
1920
+ <div class="fieldRow active">
1921
+
1922
+ </div>
1923
+ <div class="pagination">
1924
+ <div class="next" style="text-align: center;float: none;">
1925
+ <button class="wpfc-btn primaryCta" id="wpfc-read-tutorial">
1926
+ <span class="label">Continue</span>
1927
+ </button>
1928
+ </div>
1929
+ </div>
1930
+ </div>
1931
+ </div>
1932
+ <script type="text/javascript">
1933
+ var WPFC_SPINNER = {
1934
+ id: false,
1935
+ number: false,
1936
+ init: function(id, number){
1937
+ this.id = id;
1938
+ //this.number = number;
1939
+ this.set_number();
1940
+ this.click_event();
1941
+ },
1942
+ set_number: function(){
1943
+ this.number = jQuery("#" + this.id + " input.wpfc-form-spinner-input").val();
1944
+ this.number = parseInt(this.number);
1945
+ },
1946
+ click_event: function(){
1947
+ var id = this.id;
1948
+ var number = this.number;
1949
+
1950
+ jQuery("#" + this.id + " .wpfc-form-spinner-up, #" + this.id + " .wpfc-form-spinner-down").click(function(e){
1951
+ if(jQuery(this).attr('class').match(/up$/)){
1952
+ number = number + 2;
1953
+ }else if(jQuery(this).attr('class').match(/down$/)){
1954
+ number = number - 2;
1955
+ }
1956
+
1957
+ number = number < 2 ? 2 : number;
1958
+ number = number > 12 ? 12 : number;
1959
+
1960
+ jQuery("#" + id + " .wpfc-form-spinner-number").text(number);
1961
+ jQuery("#" + id + " input.wpfc-form-spinner-input").val(number);
1962
+ });
1963
+ }
1964
+ };
1965
+ </script>
1966
+ <script type="text/javascript">
1967
+ jQuery("#wpFastestCachePreload").click(function(){
1968
+ if(typeof jQuery(this).attr("checked") != "undefined"){
1969
+ if(jQuery("div[id^='wpfc-modal-preload-']").length === 0){
1970
+ Wpfc_New_Dialog.dialog("wpfc-modal-preload", {close: function(){
1971
+ Wpfc_New_Dialog.clone.find("div.window-content input").each(function(){
1972
+ if(typeof jQuery(this).attr("checked") != "undefined"){
1973
+ jQuery("div.tab1 div[template-id='wpfc-modal-preload'] div.window-content input[name='" + jQuery(this).attr("name") + "']").attr("checked", true);
1974
+ }else{
1975
+ jQuery("div.tab1 div[template-id='wpfc-modal-preload'] div.window-content input[name='" + jQuery(this).attr("name") + "']").attr("checked", false);
1976
+ }
1977
+
1978
+ Wpfc_New_Dialog.clone.remove();
1979
+ });
1980
+ }});
1981
+
1982
+ Wpfc_New_Dialog.show_button("close");
1983
+ WPFC_SPINNER.init("wpfc-form-spinner-preload", 6);
1984
+ }
1985
+ }
1986
+ });
1987
+ </script>
1988
+
1989
+ <?php if(!class_exists("WpFastestCacheImageOptimisation")){ ?>
1990
+ <div id="wpfc-premium-tooltip" style="display:none;width: 160px; height: 60px; position: absolute; margin-left: 354px; margin-top: 112px; color: white;">
1991
+ <div style="float:left;width:13px;">
1992
+ <div style="width: 0px; height: 0px; border-top: 6px solid transparent; border-right: 6px solid #333333; border-bottom: 6px solid transparent; float: right; margin-right: 0px; margin-top: 25px;"></div>
1993
+ </div>
1994
+ <div style="font-family:sans-serif;font-size:13px;text-align: center; border-radius: 5px; float: left; background-color: rgb(51, 51, 51); color: white; width: 147px; padding: 10px 0px;">
1995
+ <label>Only available in Premium version</label>
1996
+ </div>
1997
+ </div>
1998
+
1999
+ <script type="text/javascript">
2000
+ jQuery("div.questionCon.disabled").click(function(e){
2001
+ if(typeof window.wpfc.tooltip != "undefined"){
2002
+ clearTimeout(window.wpfc.tooltip);
2003
+ }
2004
+
2005
+ var inputCon = jQuery(e.currentTarget).find(".inputCon");
2006
+ var left = 30;
2007
+
2008
+ jQuery(e.currentTarget).children().each(function(i, child){
2009
+ left = left + jQuery(child).width();
2010
+ });
2011
+
2012
+ jQuery("#wpfc-premium-tooltip").css({"margin-left" : left + "px", "margin-top" : (jQuery(e.currentTarget).offset().top - jQuery(".tab1").offset().top + 25) + "px"});
2013
+ jQuery("#wpfc-premium-tooltip").fadeIn( "slow", function() {
2014
+ window.wpfc.tooltip = setTimeout(function(){ jQuery("#wpfc-premium-tooltip").hide(); }, 1000);
2015
+ });
2016
+ return false;
2017
+ });
2018
+ </script>
2019
+ <?php }else{ ?>
2020
+ <script type="text/javascript">
2021
+ jQuery(".update-needed").click(function(){
2022
+ if(jQuery("div[id^='wpfc-modal-updatenow-']").length === 0){
2023
+ Wpfc_New_Dialog.dialog("wpfc-modal-updatenow", {close: function(){
2024
+ Wpfc_New_Dialog.clone.find("div.window-content input").each(function(){
2025
+ if(jQuery(this).attr("checked")){
2026
+ var id = jQuery(this).attr("action-id");
2027
+ jQuery("div.tab1 div[template-id='wpfc-modal-updatenow'] div.window-content input#" + id).attr("checked", true);
2028
+ }
2029
+ });
2030
+
2031
+ Wpfc_New_Dialog.clone.remove();
2032
+ }});
2033
+
2034
+ Wpfc_New_Dialog.show_button("close");
2035
+ }
2036
+
2037
+ return false;
2038
+ });
2039
+ </script>
2040
+ <?php } ?>
2041
+ <script type="text/javascript">
2042
+ jQuery(document).ready(function() {
2043
+ //if "Mobile Theme" is selected, "Mobile" is selected as well
2044
+ jQuery("#wpFastestCacheMobileTheme").click(function(e){
2045
+ if(jQuery(this).is(':checked')){
2046
+ jQuery("#wpFastestCacheMobile").attr('checked', true);
2047
+ }
2048
+ });
2049
+
2050
+ //if "Mobile Theme" has been selected, "Mobile" option cannot be changed
2051
+ jQuery("#wpFastestCacheMobile").click(function(e){
2052
+ if(jQuery("#wpFastestCacheMobileTheme").is(':checked')){
2053
+ jQuery(this).attr('checked', true);
2054
+ }
2055
+ });
2056
+ });
2057
+ </script>
2058
+ <script>
2059
+ jQuery(document).ready(function() {
2060
+ Wpfclang.init("<?php echo $wpFastestCacheLanguage; ?>");
2061
+ });
2062
+ </script>
2063
+ <?php
2064
+ if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && !preg_match("/iis/i", $_SERVER["SERVER_SOFTWARE"]) && !preg_match("/nginx/i", $_SERVER["SERVER_SOFTWARE"])){
2065
+ if(!isset($_POST["wpFastestCachePage"])){
2066
+ $this->check_htaccess();
2067
+ }
2068
+ }
2069
+ }
2070
+ }
2071
+ ?>
inc/cache.php ADDED
@@ -0,0 +1,830 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class WpFastestCacheCreateCache extends WpFastestCache{
3
+ public $options = array();
4
+ public $cdn;
5
+ private $startTime;
6
+ private $blockCache = false;
7
+ private $err = "";
8
+ public $cacheFilePath = "";
9
+ public $exclude_rules = false;
10
+
11
+ public function __construct(){
12
+ //to fix: PHP Notice: Undefined index: HTTP_USER_AGENT
13
+ $_SERVER['HTTP_USER_AGENT'] = isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT'] ? strip_tags($_SERVER['HTTP_USER_AGENT']) : "Empty User Agent";
14
+
15
+ $this->options = $this->getOptions();
16
+
17
+ $this->set_cdn();
18
+
19
+ $this->set_cache_file_path();
20
+
21
+ $this->set_exclude_rules();
22
+
23
+ $this->set_content_url();
24
+ }
25
+
26
+ public function set_content_url(){
27
+ $content_url = content_url();
28
+
29
+ // Hide My WP
30
+ if($this->isPluginActive('hide_my_wp/hide-my-wp.php')){
31
+ $hide_my_wp = get_option("hide_my_wp");
32
+
33
+ if(isset($hide_my_wp["new_content_path"]) && $hide_my_wp["new_content_path"]){
34
+ $hide_my_wp["new_content_path"] = trim($hide_my_wp["new_content_path"], "/");
35
+ $content_url = str_replace(basename(WPFC_WP_CONTENT_DIR), $hide_my_wp["new_content_path"], $content_url);
36
+ }
37
+ }
38
+
39
+ // WP Hide & Security Enhancer
40
+ if($this->isPluginActive('wp-hide-security-enhancer/wp-hide.php')){
41
+ $wph_settings = get_option("wph_settings");
42
+
43
+ if(isset($wph_settings["module_settings"])){
44
+ if(isset($wph_settings["module_settings"]["new_content_path"]) && $wph_settings["module_settings"]["new_content_path"]){
45
+ $wph_settings["module_settings"]["new_content_path"] = trim($wph_settings["module_settings"]["new_content_path"], "/");
46
+ $content_url = str_replace(basename(WPFC_WP_CONTENT_DIR), $wph_settings["module_settings"]["new_content_path"], $content_url);
47
+ }
48
+ }
49
+ }
50
+
51
+ if (!defined('WPFC_WP_CONTENT_URL')) {
52
+ define("WPFC_WP_CONTENT_URL", $content_url);
53
+ }
54
+ }
55
+
56
+ public function set_exclude_rules(){
57
+ if($json_data = get_option("WpFastestCacheExclude")){
58
+ $this->exclude_rules = json_decode($json_data);
59
+ }
60
+ }
61
+
62
+ public function set_cache_file_path(){
63
+
64
+ if($this->isMobile() && isset($this->options->wpFastestCacheMobile)){
65
+ if(class_exists("WpFcMobileCache") && isset($this->options->wpFastestCacheMobileTheme)){
66
+ $wpfc_mobile = new WpFcMobileCache();
67
+ $this->cacheFilePath = $this->getWpContentDir()."/cache/".$wpfc_mobile->get_folder_name()."".$_SERVER["REQUEST_URI"];
68
+ }
69
+ }else{
70
+ if($this->isPluginActive('gtranslate/gtranslate.php')){
71
+ if(isset($_SERVER["HTTP_X_GT_LANG"])){
72
+ $this->cacheFilePath = $this->getWpContentDir()."/cache/all/".$_SERVER["HTTP_X_GT_LANG"];
73
+ }else if(isset($_SERVER["REDIRECT_URL"])){
74
+ $this->cacheFilePath = $this->getWpContentDir()."/cache/all/".$_SERVER["REDIRECT_URL"];
75
+ }else if(isset($_SERVER["REQUEST_URI"])){
76
+ $this->cacheFilePath = $this->getWpContentDir()."/cache/all/".$_SERVER["REQUEST_URI"];
77
+ }
78
+ }else{
79
+ $this->cacheFilePath = $this->getWpContentDir()."/cache/all/".$_SERVER["REQUEST_URI"];
80
+ }
81
+ }
82
+
83
+ $this->cacheFilePath = $this->cacheFilePath ? rtrim($this->cacheFilePath, "/")."/" : "";
84
+ $this->cacheFilePath = str_replace("/cache/all//", "/cache/all/", $this->cacheFilePath);
85
+
86
+
87
+ if(strlen($_SERVER["REQUEST_URI"]) > 1){ // for the sub-pages
88
+ if(!preg_match("/\.html/i", $_SERVER["REQUEST_URI"])){
89
+ if($this->is_trailing_slash()){
90
+ if(!preg_match("/\/$/", $_SERVER["REQUEST_URI"])){
91
+ $this->cacheFilePath = false;
92
+ }
93
+ }else{
94
+ //toDo
95
+ }
96
+ }
97
+ }
98
+
99
+ if(isset($_COOKIE) && isset($_COOKIE['safirmobilswitcher'])){
100
+ if($_COOKIE['safirmobilswitcher'] == "mobil"){
101
+ $this->cacheFilePath = str_replace("/cache/all/", "/cache/wpfc-mobile-cache/", $this->cacheFilePath);
102
+ }else if($_COOKIE['safirmobilswitcher'] == "masaustu"){
103
+ $this->cacheFilePath = str_replace("/cache/wpfc-mobile-cache/", "/cache/all/", $this->cacheFilePath);
104
+ }
105
+ }
106
+ }
107
+
108
+ public function set_cdn(){
109
+ $cdn_values = get_option("WpFastestCacheCDN");
110
+ if($cdn_values){
111
+ $std_obj = json_decode($cdn_values);
112
+ $arr = array();
113
+
114
+ if(is_array($std_obj)){
115
+ $arr = $std_obj;
116
+ }else{
117
+ array_push($arr, $std_obj);
118
+ }
119
+
120
+ foreach ($arr as $key => &$std) {
121
+ $std->originurl = trim($std->originurl);
122
+ $std->originurl = trim($std->originurl, "/");
123
+ $std->originurl = preg_replace("/http(s?)\:\/\/(www\.)?/i", "", $std->originurl);
124
+
125
+ $std->cdnurl = trim($std->cdnurl);
126
+ $std->cdnurl = trim($std->cdnurl, "/");
127
+
128
+ if(!preg_match("/https\:\/\//", $std->cdnurl)){
129
+ $std->cdnurl = "//".preg_replace("/http(s?)\:\/\/(www\.)?/i", "", $std->cdnurl);
130
+ }
131
+ }
132
+
133
+ $this->cdn = $arr;
134
+ }
135
+ }
136
+
137
+ public function checkShortCode($content){
138
+ if(preg_match("/\[wpfcNOT\]/", $content)){
139
+ if(!is_home() || !is_archive()){
140
+ $this->blockCache = true;
141
+ }
142
+ $content = str_replace("[wpfcNOT]", "", $content);
143
+ }
144
+ return $content;
145
+ }
146
+
147
+ public function createCache(){
148
+ if(isset($this->options->wpFastestCacheStatus)){
149
+
150
+ if(isset($this->options->wpFastestCacheLoggedInUser) && $this->options->wpFastestCacheLoggedInUser == "on"){
151
+ // to check logged-in user
152
+ foreach ((array)$_COOKIE as $cookie_key => $cookie_value){
153
+ if(preg_match("/wordpress_logged_in/i", $cookie_key)){
154
+ return 0;
155
+ }
156
+ }
157
+ }
158
+
159
+ // to check comment author
160
+ foreach ((array)$_COOKIE as $cookie_key => $cookie_value){
161
+ if(preg_match("/comment_author_/i", $cookie_key)){
162
+ return 0;
163
+ }
164
+ }
165
+
166
+ if(preg_match("/\?/", $_SERVER["REQUEST_URI"]) && !preg_match("/\/\?fdx\_switcher\=true/", $_SERVER["REQUEST_URI"])){ // for WP Mobile Edition
167
+ if(preg_match("/\?amp(\=1)?/i", $_SERVER["REQUEST_URI"])){
168
+ //
169
+ }else if(defined('WPFC_CACHE_QUERYSTRING') && WPFC_CACHE_QUERYSTRING){
170
+ //
171
+ }else{
172
+ return 0;
173
+ }
174
+ }
175
+
176
+ if(preg_match("/(".$this->get_excluded_useragent().")/", $_SERVER['HTTP_USER_AGENT'])){
177
+ return 0;
178
+ }
179
+
180
+ if(isset($_SERVER['REQUEST_URI']) && preg_match("/(\/){2}$/", $_SERVER['REQUEST_URI'])){
181
+ return 0;
182
+ }
183
+
184
+ if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == "POST"){
185
+ return 0;
186
+ }
187
+
188
+ if(preg_match("/^https/i", get_option("home")) && !is_ssl()){
189
+ //Must be secure connection
190
+ return 0;
191
+ }
192
+
193
+ if(!preg_match("/^https/i", get_option("home")) && is_ssl()){
194
+ //must be normal connection
195
+ return 0;
196
+ }
197
+
198
+ if(preg_match("/www\./", get_option("home")) && !preg_match("/www\./", $_SERVER['HTTP_HOST'])){
199
+ return 0;
200
+ }
201
+
202
+ if(!preg_match("/www\./", get_option("home")) && preg_match("/www\./", $_SERVER['HTTP_HOST'])){
203
+ return 0;
204
+ }
205
+
206
+ // http://mobiledetect.net/ does not contain the following user-agents
207
+ if(preg_match("/Nokia309|Casper_VIA/i", $_SERVER['HTTP_USER_AGENT'])){
208
+ return 0;
209
+ }
210
+
211
+ if($this->exclude_page()){
212
+ //echo "<!-- Wp Fastest Cache: Exclude Page -->"."\n";
213
+ return 0;
214
+ }
215
+
216
+ if(preg_match("/Empty\sUser\sAgent/i", $_SERVER['HTTP_USER_AGENT'])){ // not to show the cache for command line
217
+ return 0;
218
+ }
219
+
220
+ //to show cache version via php if htaccess rewrite rule does not work
221
+ if($this->cacheFilePath && @file_exists($this->cacheFilePath."index.html")){
222
+ if($content = @file_get_contents($this->cacheFilePath."index.html")){
223
+ $content = $content."<!-- via php -->";
224
+ die($content);
225
+ }
226
+ }else{
227
+ if($this->isMobile()){
228
+ if(class_exists("WpFcMobileCache") && isset($this->options->wpFastestCacheMobileTheme)){
229
+ if(isset($this->options->wpFastestCacheMobileTheme_themename) && $this->options->wpFastestCacheMobileTheme_themename){
230
+ $create_cache = true;
231
+ }else if($this->isPluginActive('wptouch/wptouch.php') || $this->isPluginActive('wptouch-pro/wptouch-pro.php')){
232
+ //to check that user-agent exists in wp-touch's list or not
233
+ if($this->is_wptouch_smartphone()){
234
+ $create_cache = true;
235
+ }else{
236
+ $create_cache = false;
237
+ }
238
+ }else if($this->isPluginActive('any-mobile-theme-switcher/any-mobile-theme-switcher.php')){
239
+ if($this->is_anymobilethemeswitcher_mobile()){
240
+ $create_cache = true;
241
+ }else{
242
+ $create_cache = false;
243
+ }
244
+ }else{
245
+ if((preg_match('/iPhone/', $_SERVER['HTTP_USER_AGENT']) && preg_match('/Mobile/', $_SERVER['HTTP_USER_AGENT'])) || (preg_match('/Android/', $_SERVER['HTTP_USER_AGENT']) && preg_match('/Mobile/', $_SERVER['HTTP_USER_AGENT']))){
246
+ $create_cache = true;
247
+ }else{
248
+ $create_cache = false;
249
+ }
250
+ }
251
+ }else{
252
+ $create_cache = false;
253
+ }
254
+ }else{
255
+ $create_cache = true;
256
+ }
257
+
258
+ if($create_cache){
259
+ $this->startTime = microtime(true);
260
+
261
+ add_action( 'get_footer', array($this, "wp_print_scripts_action"));
262
+
263
+ ob_start(array($this, "callback"));
264
+ }
265
+ }
266
+ }
267
+ }
268
+
269
+ public function wp_print_scripts_action(){
270
+ echo "<!--WPFC_FOOTER_START-->";
271
+ }
272
+
273
+ public function ignored($buffer){
274
+ $list = array(
275
+ "\/wp\-comments\-post\.php",
276
+ "\/sitemap\.xml",
277
+ "\/wp\-login\.php",
278
+ "\/robots\.txt",
279
+ "\/wp\-cron\.php",
280
+ "\/wp\-content",
281
+ "\/wp\-admin",
282
+ "\/wp\-includes",
283
+ "\/index\.php",
284
+ "\/xmlrpc\.php",
285
+ "\/wp\-api\/",
286
+ "leaflet\-geojson\.php",
287
+ "\/clientarea\.php"
288
+ );
289
+ if($this->isPluginActive('woocommerce/woocommerce.php')){
290
+ if(preg_match("/page-id-(\d+)/", $buffer, $page_id)){
291
+ if(function_exists("wc_get_page_id")){
292
+ $woocommerce_ids = array();
293
+
294
+ //wc_get_page_id('product')
295
+ //wc_get_page_id('product-category')
296
+
297
+ array_push($woocommerce_ids, wc_get_page_id('cart'), wc_get_page_id('checkout'), wc_get_page_id('receipt'), wc_get_page_id('confirmation'));
298
+
299
+ if (in_array($page_id[1], $woocommerce_ids)) {
300
+ return true;
301
+ }
302
+ }
303
+ }
304
+
305
+ //"\/product"
306
+ //"\/product-category"
307
+
308
+ array_push($list, "\/cart", "\/checkout", "\/receipt", "\/confirmation", "\/wc-api\/");
309
+ }
310
+
311
+ if(preg_match("/".implode("|", $list)."/i", $_SERVER["REQUEST_URI"])){
312
+ return true;
313
+ }
314
+
315
+ return false;
316
+ }
317
+
318
+ public function exclude_page(){
319
+ $preg_match_rule = "";
320
+ $request_url = trim($_SERVER["REQUEST_URI"], "/");
321
+
322
+ if($this->exclude_rules){
323
+
324
+ foreach((array)$this->exclude_rules as $key => $value){
325
+ $value->type = isset($value->type) ? $value->type : "page";
326
+
327
+ if(isset($value->prefix) && $value->prefix && $value->type == "page"){
328
+ $value->content = trim($value->content);
329
+ $value->content = trim($value->content, "/");
330
+
331
+ if($value->prefix == "homepage"){
332
+ if($request_url == "/" || $request_url == ""){
333
+ return true;
334
+ }
335
+ }else if($value->prefix == "exact"){
336
+ if(strtolower($value->content) == strtolower($request_url)){
337
+ return true;
338
+ }
339
+ }else{
340
+ if($value->prefix == "startwith"){
341
+ $preg_match_rule = "^".preg_quote($value->content, "/");
342
+ }else if($value->prefix == "contain"){
343
+ $preg_match_rule = preg_quote($value->content, "/");
344
+ }
345
+
346
+ if(preg_match("/".$preg_match_rule."/i", $request_url)){
347
+ return true;
348
+ }
349
+ }
350
+ }else if($value->type == "useragent"){
351
+ if(preg_match("/".preg_quote($value->content, "/")."/i", $_SERVER['HTTP_USER_AGENT'])){
352
+ return true;
353
+ }
354
+ }else if($value->type == "cookie"){
355
+ if(preg_match("/".preg_quote($value->content, "/")."/i", $_SERVER['HTTP_COOKIE'])){
356
+ return true;
357
+ }
358
+ }
359
+ }
360
+
361
+ }
362
+ return false;
363
+ }
364
+
365
+ public function is_xml($buffer){
366
+ if(preg_match("/^\s*\<\?xml/i", $buffer)){
367
+ return true;
368
+ }
369
+ return false;
370
+ }
371
+
372
+ public function callback($buffer){
373
+ $buffer = $this->checkShortCode($buffer);
374
+
375
+ // for Wordfence: not to cache 503 pages
376
+ if(defined('DONOTCACHEPAGE') && $this->isPluginActive('wordfence/wordfence.php')){
377
+ if(function_exists("http_response_code") && http_response_code() == 503){
378
+ return $buffer."<!-- DONOTCACHEPAGE is defined as TRUE -->";
379
+ }
380
+ }
381
+
382
+ if(preg_match("/Mediapartners-Google|Google\sWireless\sTranscoder/i", $_SERVER['HTTP_USER_AGENT'])){
383
+ return $buffer;
384
+ }else if($this->is_xml($buffer)){
385
+ return $buffer;
386
+ }else if (is_user_logged_in() || $this->isCommenter()){
387
+ return $buffer;
388
+ } else if(isset($_SERVER["HTTP_ACCEPT"]) && preg_match("/json/i", $_SERVER["HTTP_ACCEPT"])){
389
+ return $buffer;
390
+ }else if(isset($_COOKIE["wptouch-pro-view"])){
391
+ return $buffer."<!-- \$_COOKIE['wptouch-pro-view'] has been set -->";
392
+ }else if($this->checkWoocommerceSession()){
393
+ if($this->checkHtml($buffer)){
394
+ return $buffer;
395
+ }else{
396
+ return $buffer."<!-- \$_COOKIE['wp_woocommerce_session'] has been set -->";
397
+ }
398
+ }else if($this->isPasswordProtected($buffer)){
399
+ return $buffer."<!-- Password protected content has been detected -->";
400
+ }else if($this->isWpLogin($buffer)){
401
+ return $buffer."<!-- wp-login.php -->";
402
+ }else if($this->hasContactForm7WithCaptcha($buffer)){
403
+ return $buffer."<!-- This page was not cached because ContactForm7's captcha -->";
404
+ }else if(is_404()){
405
+ return $buffer;
406
+ }else if($this->ignored($buffer)){
407
+ return $buffer;
408
+ }else if($this->blockCache === true){
409
+ return $buffer."<!-- wpfcNOT has been detected -->";
410
+ }else if(isset($_GET["preview"])){
411
+ return $buffer."<!-- not cached -->";
412
+ }else if($this->checkHtml($buffer)){
413
+ return $buffer."<!-- html is corrupted -->";
414
+ }else if((function_exists("http_response_code")) && (http_response_code() == 301 || http_response_code() == 302)){
415
+ return $buffer;
416
+ }else if(!$this->cacheFilePath){
417
+ return $buffer."<!-- permalink_structure ends with slash (/) but REQUEST_URI does not end with slash (/) -->";
418
+ }else{
419
+ $content = $buffer;
420
+
421
+ if(isset($this->options->wpFastestCacheRenderBlocking) && method_exists("WpFastestCachePowerfulHtml", "render_blocking")){
422
+ if(class_exists("WpFastestCachePowerfulHtml")){
423
+ if(!$this->is_amp($content)){
424
+ $powerful_html = new WpFastestCachePowerfulHtml();
425
+
426
+ if(isset($this->options->wpFastestCacheRenderBlockingCss)){
427
+ $content = $powerful_html->render_blocking($content, true);
428
+ }else{
429
+ $content = $powerful_html->render_blocking($content);
430
+ }
431
+ }
432
+ }
433
+ }
434
+
435
+ if(isset($this->options->wpFastestCacheCombineCss)){
436
+ require_once "css-utilities.php";
437
+ $css = new CssUtilities($this, $content);
438
+ $content = $css->combineCss();
439
+ unset($css);
440
+ }else if(isset($this->options->wpFastestCacheMinifyCss)){
441
+ require_once "css-utilities.php";
442
+ $css = new CssUtilities($this, $content);
443
+ $content = $css->minifyCss();
444
+ unset($css);
445
+ }
446
+
447
+ if(isset($this->options->wpFastestCacheCombineJs) || isset($this->options->wpFastestCacheMinifyJs) || isset($this->options->wpFastestCacheCombineJsPowerFul)){
448
+ require_once "js-utilities.php";
449
+ }
450
+
451
+ if(isset($this->options->wpFastestCacheCombineJs)){
452
+
453
+ $head_new = $this->get_header($content);
454
+
455
+ if($head_new){
456
+ if(isset($this->options->wpFastestCacheMinifyJs) && $this->options->wpFastestCacheMinifyJs){
457
+ $js = new JsUtilities($this, $head_new, true);
458
+ }else{
459
+ $js = new JsUtilities($this, $head_new);
460
+ }
461
+
462
+ $tmp_head = $js->combine_js();
463
+
464
+ $content = str_replace($head_new, $tmp_head, $content);
465
+
466
+ unset($r);
467
+ unset($js);
468
+ unset($tmp_head);
469
+ unset($head_new);
470
+ }
471
+ }
472
+
473
+ if(class_exists("WpFastestCachePowerfulHtml")){
474
+ if(!isset($powerful_html)){
475
+ $powerful_html = new WpFastestCachePowerfulHtml();
476
+ }
477
+
478
+ $powerful_html->set_html($content);
479
+
480
+ if(isset($this->options->wpFastestCacheCombineJsPowerFul) && method_exists("WpFastestCachePowerfulHtml", "combine_js_in_footer")){
481
+ if(isset($this->options->wpFastestCacheMinifyJs) && $this->options->wpFastestCacheMinifyJs){
482
+ $content = $powerful_html->combine_js_in_footer($this, true);
483
+ }else{
484
+ $content = $powerful_html->combine_js_in_footer($this);
485
+ }
486
+ }
487
+
488
+ if(isset($this->options->wpFastestCacheRemoveComments)){
489
+ $content = $powerful_html->remove_head_comments();
490
+ }
491
+
492
+ if(isset($this->options->wpFastestCacheMinifyHtmlPowerFul)){
493
+ $content = $powerful_html->minify_html();
494
+ }
495
+
496
+ if(isset($this->options->wpFastestCacheMinifyJs) && method_exists("WpFastestCachePowerfulHtml", "minify_js_in_body")){
497
+ $content = $powerful_html->minify_js_in_body($this, $this->exclude_rules);
498
+ }
499
+ }
500
+
501
+ if($this->err){
502
+ return $buffer."<!-- ".$this->err." -->";
503
+ }else{
504
+ $content = $this->cacheDate($content);
505
+ $content = $this->minify($content);
506
+
507
+ if($this->cdn){
508
+ $content = preg_replace_callback("/(srcset|src|href|data-lazyload)\=[\'\"]([^\'\"]+)[\'\"]/i", array($this, 'cdn_replace_urls'), $content);
509
+ // url()
510
+ $content = preg_replace_callback("/(url)\(([^\)]+)\)/i", array($this, 'cdn_replace_urls'), $content);
511
+ // {"concatemoji":"http:\/\/your_url.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.7"}
512
+ $content = preg_replace_callback("/\{\"concatemoji\"\:\"[^\"]+\"\}/i", array($this, 'cdn_replace_urls'), $content);
513
+ }
514
+
515
+
516
+ $content = str_replace("<!--WPFC_FOOTER_START-->", "", $content);
517
+
518
+
519
+ if(isset($this->options->wpFastestCacheLazyLoad)){
520
+ // to excude Lazy Load if the page is amp
521
+ if(!preg_match("/<html[^\>]+amp[^\>]*>/i", $content)){
522
+ if(!class_exists("WpFastestCacheLazyLoad")){
523
+ include_once $this->get_premium_path("lazy-load.php");
524
+ }
525
+
526
+ $content = $powerful_html->lazy_load($content);
527
+
528
+ if(method_exists("WpFastestCacheLazyLoad",'get_js_source_new')){
529
+ $lazy_load_js = WpFastestCacheLazyLoad::get_js_source_new();
530
+ }else if(method_exists("WpFastestCacheLazyLoad",'get_js_source')){
531
+ $lazy_load_js = WpFastestCacheLazyLoad::get_js_source();
532
+ }
533
+
534
+ $content = preg_replace("/\s*<\/head>/i", $lazy_load_js."</head>", $content, 1);
535
+ }
536
+ }
537
+
538
+ if($this->cacheFilePath){
539
+ $this->createFolder($this->cacheFilePath, $content);
540
+ }
541
+
542
+ return $content."<!-- need to refresh to see cached version -->";
543
+ }
544
+ }
545
+ }
546
+
547
+ public function get_header($content){
548
+ $head_first_index = strpos($content, "<head");
549
+ $head_last_index = strpos($content, "</head>");
550
+
551
+ return substr($content, $head_first_index, ($head_last_index-$head_first_index + 1));
552
+ }
553
+
554
+ public function minify($content){
555
+ $content = preg_replace("/<\/html>\s+/", "</html>", $content);
556
+ $content = str_replace("\r", "", $content);
557
+ return isset($this->options->wpFastestCacheMinifyHtml) ? preg_replace("/^\s+/m", "", ((string) $content)) : $content;
558
+ }
559
+
560
+ public function checkHtml($buffer){
561
+ if(preg_match('/<html[^\>]*>/si', $buffer) && preg_match('/<body[^\>]*>/si', $buffer)){
562
+ return false;
563
+ }
564
+ // if(strlen($buffer) > 10){
565
+ // return false;
566
+ // }
567
+
568
+ return true;
569
+ }
570
+
571
+ public function cacheDate($buffer){
572
+ if($this->isMobile() && class_exists("WpFcMobileCache")){
573
+ $comment = "<!-- Mobile: WP Fastest Cache file was created in ".$this->creationTime()." seconds, on ".date("d-m-y G:i:s", current_time('timestamp'))." -->";
574
+ }else{
575
+ $comment = "<!-- WP Fastest Cache file was created in ".$this->creationTime()." seconds, on ".date("d-m-y G:i:s", current_time('timestamp'))." -->";
576
+ }
577
+
578
+ if(defined('WPFC_REMOVE_FOOTER_COMMENT') && WPFC_REMOVE_FOOTER_COMMENT){
579
+ return $buffer;
580
+ }else{
581
+ return $buffer.$comment;
582
+ }
583
+ }
584
+
585
+ public function creationTime(){
586
+ return microtime(true) - $this->startTime;
587
+ }
588
+
589
+ public function isCommenter(){
590
+ $commenter = wp_get_current_commenter();
591
+ return isset($commenter["comment_author_email"]) && $commenter["comment_author_email"] ? true : false;
592
+ }
593
+ public function isPasswordProtected($buffer){
594
+ if(preg_match("/action\=[\'\"].+postpass.*[\'\"]/", $buffer)){
595
+ return true;
596
+ }
597
+
598
+ foreach($_COOKIE as $key => $value){
599
+ if(preg_match("/wp\-postpass\_/", $key)){
600
+ return true;
601
+ }
602
+ }
603
+
604
+ return false;
605
+ }
606
+
607
+ public function createFolder($cachFilePath, $buffer, $extension = "html", $prefix = "", $gzip = false){
608
+ $create = false;
609
+
610
+ if($buffer && strlen($buffer) > 100 && $extension == "html"){
611
+ if(!preg_match("/^\<\!\-\-\sMobile\:\sWP\sFastest\sCache/i", $buffer)){
612
+ if(!preg_match("/^\<\!\-\-\sWP\sFastest\sCache/i", $buffer)){
613
+ $create = true;
614
+ }
615
+ }
616
+ }
617
+
618
+ if(($extension == "css" || $extension == "js") && $buffer && strlen($buffer) > 5){
619
+ $create = true;
620
+ $buffer = trim($buffer);
621
+ if($extension == "js"){
622
+ if(substr($buffer, -1) != ";"){
623
+ $buffer .= ";";
624
+ }
625
+ }
626
+ }
627
+
628
+ $cachFilePath = urldecode($cachFilePath);
629
+
630
+ if($create){
631
+ if (!is_user_logged_in() && !$this->isCommenter()){
632
+ if(!is_dir($cachFilePath)){
633
+ if(is_writable($this->getWpContentDir()) || ((is_dir($this->getWpContentDir()."/cache")) && (is_writable($this->getWpContentDir()."/cache")))){
634
+ if (@mkdir($cachFilePath, 0755, true)){
635
+
636
+ file_put_contents($cachFilePath."/".$prefix."index.".$extension, $buffer);
637
+
638
+ if(class_exists("WpFastestCacheStatics")){
639
+ if(!preg_match("/After\sCache\sTimeout/i", $_SERVER['HTTP_USER_AGENT'])){
640
+ if(preg_match("/wpfc\-mobile\-cache/", $cachFilePath)){
641
+ $extension = "mobile";
642
+ }
643
+
644
+ $cache_statics = new WpFastestCacheStatics($extension, strlen($buffer));
645
+ $cache_statics->update_db();
646
+ }
647
+ }
648
+
649
+ if($extension == "html"){
650
+ if(!file_exists(WPFC_WP_CONTENT_DIR."/cache/index.html")){
651
+ @file_put_contents(WPFC_WP_CONTENT_DIR."/cache/index.html", "");
652
+ }
653
+ }else{
654
+ if(!file_exists(WPFC_WP_CONTENT_DIR."/cache/wpfc-minified/index.html")){
655
+ @file_put_contents(WPFC_WP_CONTENT_DIR."/cache/wpfc-minified/index.html", "");
656
+ }
657
+ }
658
+
659
+ }else{
660
+ }
661
+ }else{
662
+
663
+ }
664
+ }else{
665
+ if(file_exists($cachFilePath."/".$prefix."index.".$extension)){
666
+
667
+ }else{
668
+
669
+ file_put_contents($cachFilePath."/".$prefix."index.".$extension, $buffer);
670
+
671
+ if(class_exists("WpFastestCacheStatics")){
672
+ if(!preg_match("/After\sCache\sTimeout/i", $_SERVER['HTTP_USER_AGENT'])){
673
+ if(preg_match("/wpfc\-mobile\-cache/", $cachFilePath)){
674
+ $extension = "mobile";
675
+ }
676
+
677
+ $cache_statics = new WpFastestCacheStatics($extension, strlen($buffer));
678
+ $cache_statics->update_db();
679
+ }
680
+ }
681
+ }
682
+ }
683
+ }
684
+ }elseif($extension == "html"){
685
+ $this->err = "Buffer is empty so the cache cannot be created";
686
+ }
687
+ }
688
+
689
+ public function is_amp($content){
690
+ $request_uri = trim($_SERVER["REQUEST_URI"], "/");
691
+
692
+ // https://wordpress.org/plugins/amp/
693
+ if($this->isPluginActive('amp/amp.php')){
694
+ if(preg_match("/amp$/", $request_uri)){
695
+ if(preg_match("/<html[^\>]+amp[^\>]*>/i", $content)){
696
+ return true;
697
+ }
698
+ }
699
+ }
700
+
701
+ return false;
702
+ }
703
+
704
+ public function isMobile(){
705
+ foreach ($this->get_mobile_browsers() as $value) {
706
+ if(preg_match("/".$value."/i", $_SERVER['HTTP_USER_AGENT'])){
707
+ return true;
708
+ }
709
+ }
710
+
711
+ foreach ($this->get_operating_systems() as $key => $value) {
712
+ if(preg_match("/".$value."/i", $_SERVER['HTTP_USER_AGENT'])){
713
+ return true;
714
+ }
715
+ }
716
+ }
717
+
718
+ public function checkWoocommerceSession(){
719
+ foreach($_COOKIE as $key => $value){
720
+ if(preg_match("/^wp\_woocommerce\_session/", $key)){
721
+ return true;
722
+ }
723
+ }
724
+
725
+ return false;
726
+ }
727
+
728
+ public function isWpLogin($buffer){
729
+ // if(preg_match("/<form[^\>]+loginform[^\>]+>((?:(?!<\/form).)+)user_login((?:(?!<\/form).)+)user_pass((?:(?!<\/form).)+)<\/form>/si", $buffer)){
730
+ // return true;
731
+ // }
732
+ if($GLOBALS["pagenow"] == "wp-login.php"){
733
+ return true;
734
+ }
735
+
736
+ return false;
737
+ }
738
+
739
+ public function hasContactForm7WithCaptcha($buffer){
740
+ if(is_single() || is_page()){
741
+ if(preg_match("/<input[^\>]+_wpcf7_captcha[^\>]+>/i", $buffer)){
742
+ return true;
743
+ }
744
+ }
745
+
746
+ return false;
747
+ }
748
+
749
+ public function is_wptouch_smartphone(){
750
+ // https://plugins.svn.wordpress.org/wptouch/tags/4.0.4/core/mobile-user-agents.php
751
+ // wptouch: ipad is accepted as a desktop so no need to create cache if user agent is ipad
752
+ // https://wordpress.org/support/topic/plugin-wptouch-wptouch-wont-display-mobile-version-on-ipad?replies=12
753
+ if(preg_match("/ipad/i", $_SERVER['HTTP_USER_AGENT'])){
754
+ return false;
755
+ }
756
+
757
+ $wptouch_smartphone_list = array();
758
+
759
+ $wptouch_smartphone_list[] = array( 'iPhone' ); // iPhone
760
+ $wptouch_smartphone_list[] = array( 'Android', 'Mobile' ); // Android devices
761
+ $wptouch_smartphone_list[] = array( 'BB', 'Mobile Safari' ); // BB10 devices
762
+ $wptouch_smartphone_list[] = array( 'BlackBerry', 'Mobile Safari' ); // BB 6, 7 devices
763
+ $wptouch_smartphone_list[] = array( 'Firefox', 'Mobile' ); // Firefox OS devices
764
+ $wptouch_smartphone_list[] = array( 'IEMobile/11', 'Touch' ); // Windows IE 11 touch devices
765
+ $wptouch_smartphone_list[] = array( 'IEMobile/10', 'Touch' ); // Windows IE 10 touch devices
766
+ $wptouch_smartphone_list[] = array( 'IEMobile/9.0' ); // Windows Phone OS 9
767
+ $wptouch_smartphone_list[] = array( 'IEMobile/8.0' ); // Windows Phone OS 8
768
+ $wptouch_smartphone_list[] = array( 'IEMobile/7.0' ); // Windows Phone OS 7
769
+ $wptouch_smartphone_list[] = array( 'OPiOS', 'Mobile' ); // Opera Mini iOS
770
+ $wptouch_smartphone_list[] = array( 'Coast', 'Mobile' ); // Opera Coast iOS
771
+
772
+ foreach ($wptouch_smartphone_list as $key => $value) {
773
+ if(isset($value[0]) && isset($value[1])){
774
+ if(preg_match("/".preg_quote($value[0], "/")."/i", $_SERVER['HTTP_USER_AGENT'])){
775
+ if(preg_match("/".preg_quote($value[1], "/")."/i", $_SERVER['HTTP_USER_AGENT'])){
776
+ return true;
777
+ }
778
+ }
779
+ }else if(isset($value[0])){
780
+ if(preg_match("/".preg_quote($value[0], "/")."/i", $_SERVER['HTTP_USER_AGENT'])){
781
+ return true;
782
+ }
783
+ }
784
+ }
785
+
786
+ return false;
787
+ }
788
+
789
+ public function is_anymobilethemeswitcher_mobile(){
790
+ // https://plugins.svn.wordpress.org/any-mobile-theme-switcher/tags/1.9/any-mobile-theme-switcher.php
791
+ $user_agent = $_SERVER['HTTP_USER_AGENT'];
792
+
793
+ switch(true){
794
+ case (preg_match('/ipad/i',$user_agent));
795
+ return true;
796
+ break;
797
+
798
+ case (preg_match('/ipod/i',$user_agent)||preg_match('/iphone/i',$user_agent));
799
+ return true;
800
+ break;
801
+
802
+ case (preg_match('/android/i',$user_agent));
803
+ return true;
804
+ break;
805
+
806
+ case (preg_match('/opera mini/i',$user_agent));
807
+ return true;
808
+ break;
809
+
810
+ case (preg_match('/blackberry/i',$user_agent));
811
+ return true;
812
+ break;
813
+
814
+ case (preg_match('/(pre\/|palm os|palm|hiptop|avantgo|plucker|xiino|blazer|elaine)/i',$user_agent));
815
+ return true;
816
+ break;
817
+
818
+ case (preg_match('/(iris|3g_t|windows ce|opera mobi|windows ce; smartphone;|windows ce; iemobile)/i',$user_agent));
819
+ return true;
820
+ break;
821
+
822
+ case (preg_match('/(mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|wireless| mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|mp500|samu3|samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|m881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|htil-g1|fly v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|sanyo|vx54|c888|nx250|n120|mtk |c5588|s710|t880|c5005|i;458x|p404i|s210|c5100|teleca|s940|c500|s590|foma|samsu|vx8|vx9|a1000|_mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|s800|8325rc|ac831|mw200|brew |d88|htc\/|htc_touch|355x|m50|km100|d736|p-9521|telco|sl74|ktouch|m4u\/|me702|8325rc|kddi|phone|lg |sonyericsson|samsung|240x|x320|vx10|nokia|sony cmd|motorola|up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|kindle|mobile|psp|treo)/i',$user_agent));
823
+ return true;
824
+ break;
825
+ }
826
+
827
+ return false;
828
+ }
829
+ }
830
+ ?>
inc/css-utilities.php ADDED
@@ -0,0 +1,643 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class CssUtilities{
3
+ private $html = "";
4
+ private $tags = array();
5
+ private $except = "";
6
+ private $wpfc;
7
+
8
+ public function __construct($wpfc, $html){
9
+ $this->wpfc = $wpfc;
10
+ $this->html = $html;
11
+ $this->set_except_tags();
12
+ $this->set_tags();
13
+ $this->tags_reorder();
14
+ }
15
+
16
+ public function check_exclude($css_url = false){
17
+ if($css_url){
18
+ foreach((array)$this->wpfc->exclude_rules as $key => $value){
19
+
20
+ if(isset($value->prefix) && $value->prefix && $value->type == "css"){
21
+ if($value->prefix == "contain"){
22
+ $preg_match_rule = preg_quote($value->content, "/");
23
+ }
24
+
25
+ if(preg_match("/".$preg_match_rule."/i", $css_url)){
26
+ return true;
27
+ }
28
+ }
29
+ }
30
+ }
31
+ }
32
+
33
+ public function combineCss(){
34
+ $all = array();
35
+ $group = array();
36
+
37
+ foreach ($this->tags as $key => $value) {
38
+ if(preg_match("/<link/i", $value["text"])){
39
+
40
+ if($this->except){
41
+ if(strpos($this->except, $value["text"]) !== false){
42
+ array_push($all, $group);
43
+ $group = array();
44
+ continue;
45
+ }
46
+ }
47
+
48
+ if(!$this->checkInternal($value["text"])){
49
+ array_push($all, $group);
50
+ $group = array();
51
+ continue;
52
+ }
53
+
54
+ if($this->check_exclude($value["text"])){
55
+ array_push($all, $group);
56
+ $group = array();
57
+ continue;
58
+ }
59
+
60
+ if(count($group) > 0){
61
+ if($group[0]["media"] == $value["media"]){
62
+ array_push($group, $value);
63
+ }else{
64
+ array_push($all, $group);
65
+ $group = array();
66
+ array_push($group, $value);
67
+ }
68
+ }else{
69
+ array_push($group, $value);
70
+ }
71
+
72
+ if($value === end($this->tags)){
73
+ array_push($all, $group);
74
+ }
75
+
76
+
77
+ }
78
+
79
+ if(preg_match("/<style/i", $value["text"])){
80
+ if(count($group) > 0){
81
+ array_push($all, $group);
82
+ $group = array();
83
+ }
84
+ }
85
+ }
86
+
87
+ if(count($all) > 0){
88
+ $all = array_reverse($all);
89
+
90
+ foreach ($all as $group_key => $group_value) {
91
+ if(count($group_value) > 0){
92
+
93
+ $combined_css = "";
94
+ $combined_name = $this->create_name($group_value);
95
+ $combined_link = "";
96
+
97
+ $cachFilePath = WPFC_WP_CONTENT_DIR."/cache/wpfc-minified/".$combined_name;
98
+ $cssLink = str_replace(array("http:", "https:"), "", WPFC_WP_CONTENT_URL)."/cache/wpfc-minified/".$combined_name;
99
+
100
+ if(is_dir($cachFilePath)){
101
+ if($cssFiles = @scandir($cachFilePath, 1)){
102
+ $combined_link = '<link rel="stylesheet" type="text/css" href="'.$cssLink."/".$cssFiles[0].'" media="'.$group_value[0]["media"].'"/>';
103
+
104
+ if($css_content = $this->wpfc->read_file($cssLink."/".$cssFiles[0])){
105
+ $combined_link = $this->to_inline($combined_link, $css_content);
106
+ }
107
+ }
108
+ }else{
109
+ $combined_css = $this->create_content(array_reverse($group_value));
110
+ $combined_css = $this->fix_charset($combined_css);
111
+
112
+ if($combined_css){
113
+
114
+ if($this->wpfc->cdn){
115
+ $combined_css = preg_replace_callback("/(url)\(([^\)]+)\)/i", array($this->wpfc, 'cdn_replace_urls'), $combined_css);
116
+ }
117
+
118
+
119
+ $this->wpfc->createFolder($cachFilePath, $combined_css, "css", time(), true);
120
+
121
+ if(is_dir($cachFilePath)){
122
+ if($cssFiles = @scandir($cachFilePath, 1)){
123
+ $combined_link = '<link rel="stylesheet" type="text/css" href="'.$cssLink."/".$cssFiles[0].'" media="'.$group_value[0]["media"].'"/>';
124
+
125
+ $combined_link = $this->to_inline($combined_link, $combined_css);
126
+ }
127
+ }
128
+ }
129
+ }
130
+
131
+ if($combined_link){
132
+ foreach (array_reverse($group_value) as $tag_key => $tag_value) {
133
+ $text = substr($this->html, $tag_value["start"], ($tag_value["end"]-$tag_value["start"] + 1));
134
+
135
+ if($tag_key > 0){
136
+ $this->html = substr_replace($this->html, "<!-- ".$text." -->", $tag_value["start"], ($tag_value["end"] - $tag_value["start"] + 1));
137
+ }else{
138
+ $this->html = substr_replace($this->html, "<!-- ".$text." -->"."\n".$combined_link, $tag_value["start"], ($tag_value["end"] - $tag_value["start"] + 1));
139
+
140
+ }
141
+ }
142
+ }
143
+ }
144
+ }
145
+ }
146
+
147
+ return $this->html;
148
+ }
149
+
150
+ public function create_content($group_value){
151
+ $combined_css = "";
152
+ foreach ($group_value as $tag_key => $tag_value) {
153
+ $minifiedCss = $this->minify($tag_value["href"]);
154
+
155
+ if($minifiedCss){
156
+ $combined_css = $minifiedCss["cssContent"].$combined_css;
157
+ }else{
158
+ return false;
159
+ }
160
+ }
161
+
162
+ return $combined_css;
163
+ }
164
+
165
+ public function create_name($arr){
166
+ $name = "";
167
+ foreach ($arr as $tag_key => $tag_value) {
168
+ $name = $name.$tag_value["href"];
169
+ }
170
+ return md5($name);
171
+ }
172
+
173
+ public function minifyCss(){
174
+ $data = $this->html;
175
+
176
+ if(count($this->tags) > 0){
177
+ foreach (array_reverse($this->tags) as $key => $value) {
178
+ $text = substr($data, $value["start"], ($value["end"]-$value["start"] + 1));
179
+
180
+ if(preg_match("/<link/i", $text)){
181
+ if($href = $this->checkInternal($text)){
182
+ if($this->check_exclude($href)){
183
+ continue;
184
+ }
185
+
186
+ $minifiedCss = $this->minify($href);
187
+
188
+ if($minifiedCss){
189
+ $prefixLink = str_replace(array("http:", "https:"), "", $minifiedCss["url"]);
190
+ $text = preg_replace("/href\=[\"\'][^\"\']+[\"\']/", "href='".$prefixLink."'", $text);
191
+
192
+ $text = $this->to_inline($text, $minifiedCss["cssContent"]);
193
+
194
+ $this->html = substr_replace($this->html, $text, $value["start"], ($value["end"] - $value["start"] + 1));
195
+
196
+ }
197
+
198
+ }
199
+ }
200
+ }
201
+ }
202
+
203
+ return $this->html;
204
+ }
205
+
206
+ public function to_inline($link, $css_content){
207
+ if(!isset($GLOBALS["wp_fastest_cache_options"]->wpFastestCacheRenderBlocking)){
208
+ return $link;
209
+ }
210
+
211
+ if(!preg_match("/\smedia\=[\'\"]all[\'\"]/i", $link)){
212
+ return $link;
213
+ }
214
+
215
+ if(isset($css_content["11000"])){
216
+ return $link;
217
+ }
218
+
219
+ $link = "<style>".$css_content."</style>";
220
+
221
+ return $link;
222
+ }
223
+
224
+ public function tags_reorder(){
225
+ $sorter = array();
226
+ $ret = array();
227
+
228
+ foreach ($this->tags as $ii => $va) {
229
+ $sorter[$ii] = $va['start'];
230
+ }
231
+
232
+ asort($sorter);
233
+
234
+ foreach ($sorter as $ii => $va) {
235
+ $ret[$ii] = $this->tags[$ii];
236
+ }
237
+
238
+ $this->tags = $ret;
239
+ }
240
+
241
+ public function set_except_tags(){
242
+ $comment_tags = $this->find_tags("<!--", "-->");
243
+
244
+ foreach ($comment_tags as $key => $value) {
245
+ $this->except = $value["text"].$this->except;
246
+ }
247
+
248
+ // to execute if html contains <noscript> tag
249
+ if(preg_match("/<noscript/i", $this->html)){
250
+ $noscript_tags = $this->find_tags("<noscript", "</noscript>");
251
+
252
+ foreach ($noscript_tags as $key => $value) {
253
+ $this->except = $value["text"].$this->except;
254
+
255
+ if(isset($GLOBALS["wp_fastest_cache_options"]->wpFastestCacheLazyLoad)){
256
+ // to set noscript for lazy load
257
+ // <noscript><img src="http://google.com/image.jpg"></noscript>
258
+ $GLOBALS["wp_fastest_cache"]->noscript = $value["text"].$GLOBALS["wp_fastest_cache"]->noscript;
259
+ }
260
+ }
261
+ }
262
+
263
+ // $("head").append( "<link rel='stylesheet' id='ms-fonts' href='//fonts.googleapis.com/css?family=Exo+2:regular' type='text/css' media='all' />" );
264
+ $script_tags = $this->find_tags("<script", "</script>");
265
+
266
+ foreach ($script_tags as $key => $value) {
267
+ $this->except = $value["text"].$this->except;
268
+ }
269
+ }
270
+
271
+ public function set_tags(){
272
+ $style_tags = $this->find_tags("<style", "</style>");
273
+ $this->tags = array_merge($this->tags, $style_tags);
274
+
275
+ $link_tags = $this->find_tags("<link", ">");
276
+
277
+ foreach ($link_tags as $key => $value) {
278
+ //<link rel='stylesheet' id='avada-dynamic-css-css' href='/wp-content/uploads/avada-styles/avada-9.css?timestamp=1485306359&#038;ver=4.7.2' type='text/css' media='all' />
279
+ if(preg_match("/avada-dynamic-css-css/", $value["text"])){
280
+ continue;
281
+ }
282
+
283
+ preg_match("/media\=[\'\"]([^\'\"]+)[\'\"]/", $value["text"], $media);
284
+ preg_match("/href\=[\'\"]([^\'\"]+)[\'\"]/", $value["text"], $href);
285
+
286
+ $media[1] = (isset($media[1]) && $media[1]) ? trim($media[1]) : "";
287
+ $value["media"] = (isset($media[1]) && $media[1]) ? $media[1] : "all";
288
+
289
+ if(isset($href[1])){
290
+ $href[1] = trim($href[1]);
291
+ $value["href"] = (isset($href[1]) && $href[1]) ? $href[1] : "";
292
+
293
+ if(preg_match("/href\s*\=/i", $value["text"])){
294
+ if(preg_match("/rel\s*\=\s*[\'\"]\s*stylesheet\s*[\'\"]/i", $value["text"])){
295
+ array_push($this->tags, $value);
296
+ }
297
+ }
298
+ }
299
+ }
300
+ }
301
+
302
+ public function find_tags($start_string, $end_string){
303
+ $data = $this->html;
304
+
305
+ $list = array();
306
+ $start_index = false;
307
+ $end_index = false;
308
+
309
+ for($i = 0; $i < strlen( $data ); $i++) {
310
+ if(substr($data, $i, strlen($start_string)) == $start_string){
311
+ $start_index = $i;
312
+ }
313
+
314
+ if($start_index && $i > $start_index){
315
+ if(substr($data, $i, strlen($end_string)) == $end_string){
316
+ $end_index = $i + strlen($end_string)-1;
317
+ $text = substr($data, $start_index, ($end_index-$start_index + 1));
318
+
319
+
320
+ array_push($list, array("start" => $start_index, "end" => $end_index, "text" => $text));
321
+
322
+
323
+ $start_index = false;
324
+ $end_index = false;
325
+ }
326
+ }
327
+ }
328
+
329
+ return $list;
330
+ }
331
+
332
+ public function minify($url){
333
+ $this->url = $url;
334
+
335
+ $cachFilePath = WPFC_WP_CONTENT_DIR."/cache/wpfc-minified/".md5($url);
336
+ $cssLink = WPFC_WP_CONTENT_URL."/cache/wpfc-minified/".md5($url);
337
+
338
+ if(is_dir($cachFilePath)){
339
+ if($cssFiles = @scandir($cachFilePath, 1)){
340
+ if($cssContent = $this->file_get_contents_curl($cssLink."/".$cssFiles[0])){
341
+ return array("cachFilePath" => $cachFilePath, "cssContent" => $cssContent, "url" => $cssLink."/".$cssFiles[0], "realUrl" => $url);
342
+ }else{
343
+ return false;
344
+ }
345
+ }
346
+ }else{
347
+ if($cssContent = $this->file_get_contents_curl($url, "?v=".time())){
348
+
349
+ $original_content_length = strlen($cssContent);
350
+
351
+ if(isset($this->wpfc->options->wpFastestCacheMinifyCss) && $this->wpfc->options->wpFastestCacheMinifyCss){
352
+ $cssContent = $this->_process($cssContent);
353
+ }
354
+
355
+ $cssContent = $this->fixPathsInCssContent($cssContent, $url);
356
+
357
+ if(isset($this->wpfc->options->wpFastestCacheMinifyCssPowerFul) && $this->wpfc->options->wpFastestCacheMinifyCssPowerFul){
358
+ if(class_exists("WpFastestCachePowerfulHtml")){
359
+ $powerful_html = new WpFastestCachePowerfulHtml();
360
+ $cssContent = $powerful_html->minify_css($cssContent);
361
+ }
362
+ }
363
+
364
+
365
+ $cssContent = str_replace("\xEF\xBB\xBF", '', $cssContent);
366
+
367
+ // If the content is empty, the file is not created. This breaks "combine css" feature
368
+ if(strlen($cssContent) == 0 && $original_content_length > 0){
369
+ return array("cssContent" => "", "url" => $url);
370
+ }
371
+
372
+ if(!is_dir($cachFilePath)){
373
+ $prefix = time();
374
+
375
+ if($this->wpfc->cdn){
376
+ $cssContent = preg_replace_callback("/(url)\(([^\)]+)\)/i", array($this->wpfc, 'cdn_replace_urls'), $cssContent);
377
+ }
378
+
379
+ $this->wpfc->createFolder($cachFilePath, $cssContent, "css", $prefix);
380
+ }
381
+
382
+ if($cssFiles = @scandir($cachFilePath, 1)){
383
+ return array("cachFilePath" => $cachFilePath, "cssContent" => $cssContent, "url" => $cssLink."/".$cssFiles[0], "realUrl" => $url);
384
+ }
385
+ }
386
+ }
387
+ return false;
388
+ }
389
+
390
+ public function fixPathsInCssContent($css, $url){
391
+ $this->url_for_fix = $url;
392
+
393
+ $css = preg_replace("/@import\s+[\"\']([^\;\"\'\)]+)[\"\'];/", "@import url($1);", $css);
394
+ $css = preg_replace_callback("/url\(([^\)\n]*)\)/", array($this, 'newImgPath'), $css);
395
+ $css = preg_replace_callback('/@import\s+url\(([^\)]+)\);/i', array($this, 'fix_import_rules'), $css);
396
+ $css = $this->fix_charset($css);
397
+
398
+ return $css;
399
+ }
400
+
401
+
402
+ public function newImgPath($matches){
403
+ $matches[1] = trim($matches[1]);
404
+
405
+ if(preg_match("/data\:image\/svg\+xml/", $matches[1])){
406
+ $matches[1] = $matches[1];
407
+ }else{
408
+ $matches[1] = str_replace(array("\"","'"), "", $matches[1]);
409
+ $matches[1] = trim($matches[1]);
410
+
411
+ if(!$matches[1]){
412
+ $matches[1] = "";
413
+ }else if(preg_match("/^(\/\/|http|\/\/fonts|data:image|data:application)/", $matches[1])){
414
+ if(preg_match("/fonts\.googleapis\.com/", $matches[1])){ // for safari browser
415
+ $matches[1] = '"'.$matches[1].'"';
416
+ }else{
417
+ $matches[1] = $matches[1];
418
+ }
419
+ }else if(preg_match("/^\//", $matches[1])){
420
+ $homeUrl = str_replace(array("http:", "https:"), "", home_url());
421
+ $matches[1] = $homeUrl.$matches[1];
422
+ }else if(preg_match("/^\.\/.+/i", $matches[1])){
423
+ //$matches[1] = str_replace("./", get_template_directory_uri()."/", $matches[1]);
424
+ $matches[1] = str_replace("./", dirname($this->url_for_fix)."/", $matches[1]);
425
+ }else if(preg_match("/^(?P<up>(\.\.\/)+)(?P<name>.+)/", $matches[1], $out)){
426
+ $count = strlen($out["up"])/3;
427
+ $url = dirname($this->url);
428
+ for($i = 1; $i <= $count; $i++){
429
+ $url = substr($url, 0, strrpos($url, "/"));
430
+ }
431
+ $url = str_replace(array("http:", "https:"), "", $url);
432
+ $matches[1] = $url."/".$out["name"];
433
+ }else{
434
+ $url = str_replace(array("http:", "https:"), "", dirname($this->url));
435
+ $matches[1] = $url."/".$matches[1];
436
+ }
437
+ }
438
+
439
+ return "url(".$matches[1].")";
440
+ }
441
+
442
+ public function fix_charset($css){
443
+ preg_match_all('/@charset[^\;]+\;/i', $css, $charsets);
444
+ if(count($charsets[0]) > 0){
445
+ $css = preg_replace('/@charset[^\;]+\;/i', "", $css);
446
+ foreach($charsets[0] as $charset){
447
+ $css = $charset."\n".$css;
448
+ }
449
+ }
450
+ return $css;
451
+ }
452
+
453
+ public function fix_import_rules($matches){
454
+ if($this->is_internal_css($matches[1])){
455
+ if($cssContent = $this->file_get_contents_curl($matches[1], "?v=".time())){
456
+ $tmp_url = $this->url;
457
+ $this->url = $matches[1];
458
+ $cssContent = $this->fixPathsInCssContent($cssContent, $matches[1]);
459
+ $this->url = $tmp_url;
460
+ return $cssContent;
461
+ }
462
+ }
463
+
464
+ return $matches[0];
465
+ }
466
+
467
+ protected $_inHack = false;
468
+
469
+ protected function _process($css){
470
+ $css = preg_replace("/^\s+/m", "", ((string) $css));
471
+ $css = str_replace("\r", "", $css);
472
+
473
+ $css = preg_replace_callback('@\\s*/\\*([\\s\\S]*?)\\*/\\s*@'
474
+ ,array($this, '_commentCB'), $css);
475
+
476
+ //to remove empty chars from url()
477
+ $css = preg_replace("/url\((\s+)([^\)]+)(\s+)\)/", "url($2)", $css);
478
+
479
+ return trim($css);
480
+ }
481
+
482
+ protected function _commentCB($m){
483
+ $hasSurroundingWs = (trim($m[0]) !== $m[1]);
484
+ $m = $m[1];
485
+ // $m is the comment content w/o the surrounding tokens,
486
+ // but the return value will replace the entire comment.
487
+ if ($m === 'keep') {
488
+ return '/**/';
489
+ }
490
+ if ($m === '" "') {
491
+ // component of http://tantek.com/CSS/Examples/midpass.html
492
+ return '/*" "*/';
493
+ }
494
+ if (preg_match('@";\\}\\s*\\}/\\*\\s+@', $m)) {
495
+ // component of http://tantek.com/CSS/Examples/midpass.html
496
+ return '/*";}}/* */';
497
+ }
498
+ if ($this->_inHack) {
499
+ // inversion: feeding only to one browser
500
+ if (preg_match('@
501
+ ^/ # comment started like /*/
502
+ \\s*
503
+ (\\S[\\s\\S]+?) # has at least some non-ws content
504
+ \\s*
505
+ /\\* # ends like /*/ or /**/
506
+ @x', $m, $n)) {
507
+ // end hack mode after this comment, but preserve the hack and comment content
508
+ $this->_inHack = false;
509
+ return "/*/{$n[1]}/**/";
510
+ }
511
+ }
512
+ if (substr($m, -1) === '\\') { // comment ends like \*/
513
+ // begin hack mode and preserve hack
514
+ $this->_inHack = true;
515
+ return '/*\\*/';
516
+ }
517
+ if ($m !== '' && $m[0] === '/') { // comment looks like /*/ foo */
518
+ // begin hack mode and preserve hack
519
+ $this->_inHack = true;
520
+ return '/*/*/';
521
+ }
522
+ if ($this->_inHack) {
523
+ // a regular comment ends hack mode but should be preserved
524
+ $this->_inHack = false;
525
+ return '/**/';
526
+ }
527
+ // Issue 107: if there's any surrounding whitespace, it may be important, so
528
+ // replace the comment with a single space
529
+ return $hasSurroundingWs // remove all other comments
530
+ ? ' '
531
+ : '';
532
+ }
533
+
534
+ public function checkInternal($link){
535
+ $httpHost = str_replace("www.", "", $_SERVER["HTTP_HOST"]);
536
+
537
+ if(preg_match("/href=[\"\'](.*?)[\"\']/", $link, $href)){
538
+
539
+ if(preg_match("/^\/[^\/]/", $href[1])){
540
+ return $href[1];
541
+ }
542
+
543
+ if(@strpos($href[1], $httpHost)){
544
+ return $href[1];
545
+ }
546
+
547
+ // if(preg_match("/fonts\.googleapis\.com/i", $href[1])){
548
+ // //http://fonts.googleapis.com/css?family=Raleway%3A400%2C600
549
+ // if(preg_match("/Raleway/i", $href[1])){
550
+ // return false;
551
+ // }
552
+
553
+ // return $href[1];
554
+ // }
555
+ }
556
+ return false;
557
+ }
558
+
559
+ public function is_internal_css($url){
560
+ $http_host = trim($_SERVER["HTTP_HOST"], "www.");
561
+
562
+ $url = trim($url);
563
+ $url = trim($url, "'");
564
+ $url = trim($url, '"');
565
+
566
+ $url = str_replace(array("http://", "https://"), "", $url);
567
+
568
+ $url = trim($url, '//');
569
+ $url = trim($url, 'www.');
570
+
571
+ if($url){
572
+ if(preg_match("/".$http_host."/i", $url)){
573
+ return true;
574
+ }
575
+
576
+ // if(preg_match("/fonts\.googleapis\.com/i", $url)){
577
+ // //http://fonts.googleapis.com/css?family=Raleway%3A400%2C600
578
+ // if(preg_match("/Raleway/i", $url)){
579
+ // return false;
580
+ // }
581
+
582
+ // return true;
583
+ // }
584
+ }
585
+
586
+ return false;
587
+ }
588
+
589
+ public function file_get_contents_curl($url, $version = ""){
590
+ if($data = $this->wpfc->read_file($url)){
591
+ return $data;
592
+ }
593
+
594
+ $url = str_replace('&#038;', '&', $url);
595
+
596
+ if(preg_match("/\.php\?/i", $url)){
597
+ $version = "";
598
+ }
599
+
600
+ if(preg_match("/(fonts\.googleapis\.com|iire-social-icons)/i", $url)){
601
+ $version = "";
602
+ $url = str_replace(array("'",'"'), "", $url);
603
+ }
604
+
605
+ $url = $url.$version;
606
+
607
+ if(preg_match("/^\/[^\/]/", $url)){
608
+ $url = get_option("home").$url;
609
+ }
610
+
611
+ if(preg_match("/http\:\/\//i", home_url())){
612
+ $url = preg_replace("/^\/\//", "http://", $url);
613
+ }else if(preg_match("/https\:\/\//i", home_url())){
614
+ $url = preg_replace("/^\/\//", "https://", $url);
615
+ }
616
+
617
+ //$response = wp_remote_get($url, array('timeout' => 10, 'headers' => array("cache-control" => array("no-store, no-cache, must-revalidate", "post-check=0, pre-check=0"))));
618
+ $response = wp_remote_get($url, array('timeout' => 10, 'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36'));
619
+
620
+ if ( !$response || is_wp_error( $response ) ) {
621
+ return false;
622
+ }else{
623
+ if(wp_remote_retrieve_response_code($response) == 200){
624
+ $data = wp_remote_retrieve_body( $response );
625
+
626
+ if(preg_match("/\<\!DOCTYPE/i", $data) || preg_match("/<\/\s*html\s*>/i", $data)){
627
+ return false;
628
+ }else if(!$data){
629
+ return "/* empty */";
630
+ }else{
631
+ return $data;
632
+ }
633
+ }else if(wp_remote_retrieve_response_code($response) == 404){
634
+ if(preg_match("/\.css/", $url)){
635
+ return "/*404*/";
636
+ }else{
637
+ return "<!-- 404 -->";
638
+ }
639
+ }
640
+ }
641
+ }
642
+ }
643
+ ?>
inc/index.html ADDED
@@ -0,0 +1 @@
 
1
+ Silence is golden.
inc/js-utilities.php ADDED
@@ -0,0 +1,305 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class JsUtilities{
3
+ private $wpfc;
4
+ private $html = "";
5
+ private $jsLinks = array();
6
+ private $jsLinksExcept = "";
7
+ private $url = "";
8
+ private $minify;
9
+
10
+ public function __construct($wpfc, $html, $minify = false){
11
+ //$this->html = preg_replace("/\s+/", " ", ((string) $html));
12
+ $this->minify = $minify;
13
+ $this->wpfc = $wpfc;
14
+ $this->html = $html;
15
+
16
+ $this->setJsLinksExcept();
17
+ $this->setJsLinks();
18
+ }
19
+
20
+ public function check_exclude($js_url = false){
21
+ if($js_url){
22
+ foreach((array)$this->wpfc->exclude_rules as $key => $value){
23
+
24
+ if(isset($value->prefix) && $value->prefix && $value->type == "js"){
25
+ if($value->prefix == "contain"){
26
+ $preg_match_rule = preg_quote($value->content, "/");
27
+ }
28
+
29
+ if(preg_match("/".$preg_match_rule."/i", $js_url)){
30
+ return true;
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+
37
+ public function combine_js(){
38
+ if(count($this->jsLinks) > 0){
39
+ $prev_content = "";
40
+ foreach($this->jsLinks as $key => $value){
41
+ $script_tag = substr($this->html, $value["start"], ($value["end"] - $value["start"] + 1));
42
+
43
+ if(!preg_match("/<script[^>]+json[^>]+>.+/", $script_tag) && !preg_match("/<script[^>]+text\/template[^>]+>.+/", $script_tag)){
44
+ if($href = $this->checkInternal($script_tag)){
45
+ if(strpos($this->jsLinksExcept, $href) === false){
46
+ if($this->check_exclude($href)){
47
+ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
48
+ $prev_content = "";
49
+ continue;
50
+ }
51
+
52
+ $minifiedJs = $this->minify($href);
53
+
54
+ if($minifiedJs){
55
+ if(!is_dir($minifiedJs["cachFilePath"])){
56
+ $prefix = time();
57
+ $this->wpfc->createFolder($minifiedJs["cachFilePath"], $minifiedJs["jsContent"], "js", $prefix, true);
58
+ }
59
+
60
+ if($jsFiles = @scandir($minifiedJs["cachFilePath"], 1)){
61
+
62
+ $jsFiles[0] = preg_replace("/\.gz$/", "", $jsFiles[0]);
63
+
64
+ if($jsContent = $this->file_get_contents_curl($minifiedJs["url"]."/".$jsFiles[0]."?v=".time())){
65
+
66
+ if(preg_match("/^[\"\']use strict[\"\']/i", $jsContent)){
67
+ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
68
+ $prev_content = "";
69
+ }else{
70
+ $prev_content = $jsContent."\n".$prev_content;
71
+
72
+ $script_tag = "<!-- ".$script_tag." -->";
73
+
74
+ if(($key + 1) == count($this->jsLinks)){
75
+ $this->mergeJs($prev_content, $value, true);
76
+ $prev_content = "";
77
+ }else{
78
+ $this->html = substr_replace($this->html, $script_tag, $value["start"], ($value["end"] - $value["start"] + 1));
79
+ }
80
+ }
81
+ }
82
+ }
83
+ }else{
84
+ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
85
+ $prev_content = "";
86
+ }
87
+ }else{
88
+ if($key > 0 && $prev_content){
89
+ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
90
+ $prev_content = "";
91
+ }
92
+ }
93
+ }else{
94
+ if($key > 0 && $prev_content){
95
+ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
96
+ $prev_content = "";
97
+ }
98
+ }
99
+ }else{
100
+ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]);
101
+ $prev_content = "";
102
+ }
103
+ }
104
+ }
105
+
106
+ return $this->html;
107
+ }
108
+
109
+
110
+ public function setJsLinks(){
111
+ $data = $this->html;
112
+ $script_list = array();
113
+ $script_start_index = false;
114
+
115
+ for($i = 0; $i < strlen( $data ); $i++) {
116
+ if(isset($data[$i-6])){
117
+ if(substr($data, $i-6, 7) == "<script"){
118
+ $script_start_index = $i-6;
119
+ }
120
+ }
121
+
122
+ if(isset($data[$i-8])){
123
+ if($script_start_index){
124
+ if(substr($data, $i-8, 9) == "</script>"){
125
+ array_push($script_list, array("start" => $script_start_index, "end" => $i));
126
+ $script_start_index = false;
127
+ }
128
+ }
129
+ }
130
+ }
131
+ if(count($script_list) > 0){
132
+ $this->jsLinks = array_reverse($script_list);
133
+ }
134
+
135
+ // to update jsLinksExcept
136
+ foreach($this->jsLinks as $key => $value){
137
+ $script_tag = substr($this->html, $value["start"], ($value["end"] - $value["start"] + 1));
138
+
139
+ if(preg_match("/wp-spamshield\/js\/jscripts\.php/i", $script_tag)){
140
+ $this->jsLinksExcept = $this->jsLinksExcept.$script_tag;
141
+ }
142
+ }
143
+ }
144
+
145
+ public function setJsLinksExcept(){
146
+ $comment_tags = $this->find_tags("<!--", "-->");
147
+ $document_write = $this->find_tags("document.write(", ")");
148
+
149
+ foreach ($comment_tags as $key => $value) {
150
+ if(preg_match("/<script/i", $value["text"]) && preg_match("/<\/script/i", $value["text"])){
151
+ $this->jsLinksExcept = $value["text"].$this->jsLinksExcept;
152
+ }
153
+ }
154
+
155
+ foreach ($document_write as $key => $value) {
156
+ $this->jsLinksExcept = $value["text"].$this->jsLinksExcept;
157
+ }
158
+ }
159
+
160
+ public function minify($url){
161
+ $this->url = $url;
162
+
163
+ $cachFilePath = WPFC_WP_CONTENT_DIR."/cache/wpfc-minified/".md5($url);
164
+ $jsLink = WPFC_WP_CONTENT_URL."/cache/wpfc-minified/".md5($url);
165
+
166
+ if(is_dir($cachFilePath)){
167
+ return array("cachFilePath" => $cachFilePath, "jsContent" => "", "url" => $jsLink);
168
+ }else{
169
+ if($js = $this->file_get_contents_curl($url)){
170
+
171
+ if($this->minify){
172
+ if(class_exists("WpFastestCachePowerfulHtml")){
173
+ $powerful_html = new WpFastestCachePowerfulHtml();
174
+ $js = $powerful_html->minify_js($js);
175
+ }else{
176
+ $js = "\n// source --> ".$url." \n".$js;
177
+ }
178
+ }else{
179
+ $js = "\n// source --> ".$url." \n".$js;
180
+ }
181
+
182
+ return array("cachFilePath" => $cachFilePath, "jsContent" => $js, "url" => $jsLink);
183
+ }
184
+ }
185
+ return false;
186
+ }
187
+
188
+ public function checkInternal($link){
189
+ $httpHost = str_replace("www.", "", $_SERVER["HTTP_HOST"]);
190
+
191
+ if(preg_match("/^<script[^\>]+\>/i", $link, $script)){
192
+ if(preg_match("/src=[\"\'](.*?)[\"\']/", $script[0], $src)){
193
+ if(preg_match("/alexa\.com\/site\_stats/i", $src[1])){
194
+ return false;
195
+ }
196
+
197
+ if(preg_match("/^\/[^\/]/", $src[1])){
198
+ return $src[1];
199
+ }
200
+
201
+ if(preg_match("/".preg_quote($httpHost, "/")."/i", $src[1])){
202
+ //<script src="https://server1.opentracker.net/?site=www.site.com"></script>
203
+ if(preg_match("/[\?\=].*".preg_quote($httpHost, "/")."/i", $src[1])){
204
+ return false;
205
+ }
206
+
207
+ return $src[1];
208
+ }
209
+ }
210
+ }
211
+
212
+ return false;
213
+ }
214
+
215
+
216
+ public function mergeJs($js_content, $value, $last = false){
217
+ $name = md5($js_content);
218
+ $cachFilePath = WPFC_WP_CONTENT_DIR."/cache/wpfc-minified/".$name;
219
+
220
+ if(!is_dir($cachFilePath)){
221
+ $this->wpfc->createFolder($cachFilePath, $js_content, "js", time());
222
+ }
223
+
224
+ if($jsFiles = @scandir($cachFilePath, 1)){
225
+
226
+ $jsFiles[0] = preg_replace("/\.gz$/", "", $jsFiles[0]);
227
+
228
+ $prefixLink = str_replace(array("http:", "https:"), "", WPFC_WP_CONTENT_URL);
229
+ $newLink = "<script src='".$prefixLink."/cache/wpfc-minified/".$name."/".$jsFiles[0]."' type=\"text/javascript\"></script>";
230
+
231
+ $script_tag = substr($this->html, $value["start"], ($value["end"] - $value["start"] + 1));
232
+
233
+ if($last){
234
+ $script_tag = $newLink."\n<!-- ".$script_tag." -->\n";
235
+ }else{
236
+ $script_tag = $newLink."\n".$script_tag;
237
+ }
238
+
239
+ $this->html = substr_replace($this->html, $script_tag, $value["start"], ($value["end"] - $value["start"] + 1));
240
+ }
241
+ }
242
+
243
+ public function file_get_contents_curl($url) {
244
+ if($data = $this->wpfc->read_file($url)){
245
+ return $data;
246
+ }
247
+
248
+ if(!preg_match("/\.php$/", $url)){
249
+ $url = $url."?v=".time();
250
+ }
251
+
252
+ if(preg_match("/^\/[^\/]/", $url)){
253
+ $url = home_url().$url;
254
+ }
255
+
256
+ $url = preg_replace("/^\/\//", "http://", $url);
257
+
258
+ $response = wp_remote_get($url, array('timeout' => 10 ) );
259
+
260
+ if ( !$response || is_wp_error( $response ) ) {
261
+ return false;
262
+ }else{
263
+ if(wp_remote_retrieve_response_code($response) == 200){
264
+ $data = wp_remote_retrieve_body( $response );
265
+
266
+ if(preg_match("/<\/\s*html\s*>\s*$/i", $data)){
267
+ return false;
268
+ }else{
269
+ return $data;
270
+ }
271
+ }
272
+ }
273
+ }
274
+
275
+ public function find_tags($start_string, $end_string){
276
+ $data = $this->html;
277
+
278
+ $list = array();
279
+ $start_index = false;
280
+ $end_index = false;
281
+
282
+ for($i = 0; $i < strlen( $data ); $i++) {
283
+ if(substr($data, $i, strlen($start_string)) == $start_string){
284
+ $start_index = $i;
285
+ }
286
+
287
+ if($start_index && $i > $start_index){
288
+ if(substr($data, $i, strlen($end_string)) == $end_string){
289
+ $end_index = $i + strlen($end_string)-1;
290
+ $text = substr($data, $start_index, ($end_index-$start_index + 1));
291
+
292
+
293
+ array_push($list, array("start" => $start_index, "end" => $end_index, "text" => $text));
294
+
295
+
296
+ $start_index = false;
297
+ $end_index = false;
298
+ }
299
+ }
300
+ }
301
+
302
+ return $list;
303
+ }
304
+ }
305
+ ?>
index.html ADDED
@@ -0,0 +1 @@
 
1
+ Silence is golden.
js/button.js ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function() {
2
+ tinymce.create('tinymce.plugins.Wpfc', {
3
+ wpfcNotHTML : '',
4
+ url: '',
5
+ init : function(ed, url) {
6
+ var self = this;
7
+ self.setUrl(url);
8
+ self.setWpfcNotHTML();
9
+
10
+ ed.addButton('wpfc', {
11
+ title : 'Block caching for this page',
12
+ cmd : 'wpfc',
13
+ image : self.url + "/icon.png"
14
+ });
15
+
16
+ ed.addCommand('wpfc', function() {
17
+ ed.execCommand('mceInsertContent', 0, self.wpfcNotHTML);
18
+ });
19
+
20
+ self._handleWpfcNOT(ed, url);
21
+ },
22
+ setUrl: function(url){
23
+ this.url = url.replace("../js","../images");
24
+ },
25
+ setWpfcNotHTML: function(){
26
+ this.wpfcNotHTML = '<img src="' + this.url + "/tinymce-wpfcnot.jpg" + '" class="mce-wp-wpfcnot" style="margin-right:95%;" />';
27
+ },
28
+ _handleWpfcNOT : function(ed, url) {
29
+ var self = this;
30
+ ed.onPostRender.add(function() {
31
+ if (ed.theme.onResolveName) {
32
+ ed.theme.onResolveName.add(function(th, o) {
33
+ if (o.node.nodeName == 'IMG') {
34
+ if ( ed.dom.hasClass(o.node, 'mce-wp-wpfcnot') ){
35
+ o.name = 'wpfcnot';
36
+ }
37
+ }
38
+ });
39
+ }
40
+ });
41
+ ed.onBeforeSetContent.add(function(ed, o) {
42
+ if ( o.content ) {
43
+ o.content = o.content.replace(/<\!--\s*\[wpfcNOT\]\s*-->/, self.wpfcNotHTML);
44
+ }
45
+ });
46
+ ed.onPostProcess.add(function(ed, o) {
47
+ if (o.get){
48
+ o.content = o.content.replace(/<img[^>]+>/g, function(im) {
49
+ if (im.indexOf('class="mce-wp-wpfcnot') !== -1) {
50
+ im = '<!--[wpfcNOT]-->';
51
+ }
52
+ return im;
53
+ });
54
+ }
55
+ });
56
+ }
57
+ });
58
+ tinymce.PluginManager.add( 'wpfc', tinymce.plugins.Wpfc );
59
+ })();
js/cdn/cdn.js ADDED
@@ -0,0 +1,299 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var WpfcCDN = {
2
+ values: {"name" : "", "cdnurl" : "", "originurl" : "", "file_types" : "", "keywords" : ""},
3
+ id : "",
4
+ template_url : "",
5
+ content : "",
6
+ init: function(obj){
7
+ this.set_params(obj);
8
+ this.open_wizard();
9
+ },
10
+ check_conditions: function(action, current_page_number){
11
+ var self = this;
12
+
13
+ if(action == "next"){
14
+ if(current_page_number == 2){
15
+ self.check_url_exist();
16
+ }else{
17
+ return true;
18
+ }
19
+ }
20
+ },
21
+ set_params: function(obj){
22
+ this.id = obj.id;
23
+ this.template_url = obj.template_main_url + "/" + this.id + ".php";
24
+ if(obj.values){
25
+ this.values = obj.values;
26
+ }
27
+ },
28
+ open_wizard: function(){
29
+ var self = this;
30
+ if(jQuery("#wpfc-modal-" + self.id).length == 0){
31
+ self.load_template(function(){
32
+ self.fill_integration_fields();
33
+ self.set_buttons_action();
34
+ self.click_event_add_new_keyword_button();
35
+ self.add_new_keyword_keypress();
36
+
37
+ if(self.id == "other" || self.id == "photon"){
38
+ self.show_page("next");
39
+ self.hide_button("back");
40
+
41
+ if(self.id == "photon"){
42
+ jQuery("div.wpfc-checkbox-list label[for^='file-type']").each(function(i, e){
43
+ if(!jQuery(e).attr("for").match(/jpg|jpeg|gif|png/i)){
44
+ jQuery(e).remove();
45
+ }
46
+ })
47
+ }
48
+ }
49
+
50
+ });
51
+ }
52
+ },
53
+ insert_keywords: function(modal, keywords){
54
+ var self = this;
55
+
56
+ if(keywords){
57
+ jQuery.each(keywords.split(","), function( index, value ) {
58
+ jQuery('<li class="keyword-item"><a class="keyword-label">' + value + '</a></li>').insertBefore(modal.find(".wpfc-add-new-keyword").closest(".keyword-item")).click(function(){
59
+ jQuery(this).remove();
60
+ });
61
+ });
62
+ }
63
+ },
64
+ fill_integration_fields: function(){
65
+ var self = this;
66
+ var modal;
67
+
68
+ jQuery(self.values).each(function(i, e){
69
+ modal = jQuery("#wpfc-wizard-" + e.id);
70
+
71
+ modal.find("input#cdn-url").val(e.cdnurl);
72
+ modal.find("select#cdn-url").val(e.cdnurl);
73
+ modal.find("#origin-url").val(e.originurl);
74
+
75
+ self.insert_keywords(modal, e.keywords);
76
+
77
+ if(e.file_types){
78
+ modal.find(".wpfc-checkbox-list input[type='checkbox']").attr("checked", false);
79
+
80
+ jQuery.each(e.file_types.split(","), function( index, value ) {
81
+ modal.find("#file-type-" + value).attr("checked", true);
82
+ });
83
+ }
84
+
85
+ });
86
+
87
+ },
88
+ add_new_keyword_keypress: function(){
89
+ jQuery(".wpfc-textbox-con .fixed-search input").keypress(function(e){
90
+ if(e.keyCode == 13){
91
+ var keyword = jQuery(e.target).val();
92
+
93
+ jQuery(".wpfc-textbox-con").hide();
94
+ jQuery(e.target).val("");
95
+ jQuery('<li class="keyword-item"><a class="keyword-label">' + keyword + '</a></li>').insertBefore(jQuery(".wpfc-add-new-keyword").closest(".keyword-item")).click(function(){
96
+ jQuery(this).remove();
97
+ });
98
+ }
99
+ });
100
+ },
101
+ click_event_add_new_keyword_button: function(){
102
+ jQuery(".wpfc-add-new-keyword").click(function(){
103
+ jQuery(".wpfc-textbox-con").show();
104
+ jQuery(".wpfc-textbox-con .fixed-search input").focus();
105
+ });
106
+ },
107
+ set_buttons_action: function(){
108
+ var self = this;
109
+ var action = "";
110
+ var current_page, next_page, current_page_number;
111
+ var modal = jQuery("#wpfc-modal-" + self.id);
112
+
113
+ self.buttons();
114
+
115
+ modal.find("button.wpfc-dialog-buttons").click(function(e){
116
+ action = modal.find(e.currentTarget).attr("action");
117
+ current_page_number = modal.find(".wpfc-cdn-pages-container div.wiz-cont:visible").attr("wpfc-cdn-page");
118
+
119
+ if(action == "next"){
120
+ if(self.check_conditions("next", current_page_number)){
121
+ self.show_page("next");
122
+ }
123
+ }else if(action == "back"){
124
+ self.show_page("back");
125
+ }else if(action == "finish"){
126
+ self.save_integration();
127
+ }else if(action == "close"){
128
+ Wpfc_Dialog.remove();
129
+ }else if(action == "remove"){
130
+ self.remove_integration();
131
+ }
132
+ });
133
+ },
134
+ remove_integration: function(){
135
+ var self = this;
136
+ var modal = jQuery("#wpfc-modal-" + self.id);
137
+
138
+ modal.find(".wpfc-dialog-buttons[action='remove']").attr("disabled", true);
139
+
140
+ jQuery.ajax({
141
+ type: 'POST',
142
+ dataType: "json",
143
+ url: ajaxurl,
144
+ data : {"action": "wpfc_remove_cdn_integration_ajax_request", "id" : self.id},
145
+ success: function(res){
146
+ self.values = jQuery.grep(self.values, function (e, i) {
147
+ if(e.id == self.id){
148
+ return false;
149
+ }
150
+ return true;
151
+ });
152
+
153
+
154
+
155
+ modal.find(".wpfc-dialog-buttons[action='remove']").attr("disabled", false);
156
+ jQuery("div.tab7 div[wpfc-cdn-name='" + self.id + "']").find("div.meta").removeClass("isConnected");
157
+ Wpfc_Dialog.remove();
158
+ console.log(res);
159
+ },
160
+ error: function(e) {
161
+ modal.find(".wpfc-dialog-buttons[action='remove']").attr("disabled", false);
162
+ alert("unknown error");
163
+ }
164
+ });
165
+ },
166
+ save_integration: function(){
167
+ var self = this;
168
+ var modal = jQuery("#wpfc-modal-" + self.id);
169
+
170
+ self.buttons();
171
+ self.values = {};
172
+ self.values.id = self.id;
173
+
174
+ modal.find(".wpfc-dialog-buttons[action='finish']").attr("disabled", true);
175
+
176
+ if(modal.find("input#cdn-url").length == 1){
177
+ self.values.cdnurl = modal.find("input#cdn-url").val();
178
+ }else if(modal.find("select#cdn-url").length == 1){
179
+ self.values.cdnurl = modal.find("select#cdn-url").val();
180
+ }
181
+
182
+
183
+ self.values.originurl = modal.find("input#origin-url").val();
184
+ self.values.file_types = modal.find(".wpfc-checkbox-list input[type='checkbox']:checked").map(function(){return this.value;}).get().join(",");
185
+ self.values.keywords = modal.find(".keyword-item-list li.keyword-item a.keyword-label").map(function(){return this.text;}).get().join(",");
186
+
187
+
188
+ jQuery.ajax({
189
+ type: 'POST',
190
+ dataType: "json",
191
+ url: ajaxurl,
192
+ data : {"action": "wpfc_save_cdn_integration_ajax_request", "values" : self.values, "file_types" : self.values.file_types, "keywords" : self.values.keywords},
193
+ success: function(res){
194
+ jQuery("div[wpfc-cdn-name='" + self.id + "']").find("div.meta").addClass("isConnected");
195
+ jQuery(".wpfc-dialog-buttons[action='finish']").attr("disabled", false);
196
+ self.show_page("next");
197
+ console.log(res);
198
+ },
199
+ error: function(e) {
200
+ modal.find(".wpfc-dialog-buttons[action='finish']").attr("disabled", false);
201
+ alert("unknown error");
202
+ }
203
+ });
204
+
205
+
206
+
207
+ },
208
+ check_url_exist: function(){
209
+ var self = this;
210
+ var modal = jQuery("#wpfc-modal-" + self.id);
211
+ var cdn_url = modal.find("#cdn-url").val();
212
+ modal.find("#cdn-url-loading").show();
213
+ modal.find(".wpfc-cdn-pages-container div.wiz-cont:visible #cdn-url").nextAll("label").html("");
214
+ jQuery.ajax({
215
+ type: 'GET',
216
+ dataType: "json",
217
+ url: ajaxurl,
218
+ data : {"action": "wpfc_check_url_ajax_request", "url" : cdn_url},
219
+ success: function(res){
220
+ modal.find("#cdn-url-loading").hide();
221
+ if(res.success){
222
+ self.show_page("next");
223
+ }else{
224
+ modal.find(".wpfc-cdn-pages-container div.wiz-cont:visible #cdn-url").nextAll("label").html(res.error_message);
225
+ }
226
+ },
227
+ error: function(e) {
228
+ modal.find("#cdn-url-loading").hide();
229
+ alert("unknown error");
230
+ }
231
+ });
232
+ },
233
+ show_page: function(type){
234
+ var current_page = jQuery("#wpfc-modal-" + this.id).find(".wpfc-cdn-pages-container div.wiz-cont:visible");
235
+ current_page.hide();
236
+
237
+ if(type == "next"){
238
+ current_page.next().show();
239
+ }else if(type == "back"){
240
+ current_page.prev().show();
241
+ }
242
+ this.buttons();
243
+ },
244
+ buttons: function(){
245
+ var self = this;
246
+ var current_page, next_pages;
247
+
248
+ current_page = jQuery("#wpfc-modal-" + this.id).find(".wpfc-cdn-pages-container div.wiz-cont:visible");
249
+ next_pages = current_page.nextAll(".wiz-cont");
250
+
251
+ jQuery(".wpfc-dialog-buttons[action]").hide();
252
+
253
+ jQuery(self.values).each(function(i, e){
254
+ if(e.id == self.id){
255
+ self.show_button("remove");
256
+ }
257
+ });
258
+
259
+ if(next_pages.length){
260
+ if(next_pages.length > 1){
261
+ self.show_button("next");
262
+ }else if(next_pages.length == 1){
263
+ self.show_button("finish");
264
+ }
265
+
266
+ if(jQuery("#wpfc-modal-" + this.id).find(".wpfc-cdn-pages-container div.wiz-cont:visible").attr("wpfc-cdn-page") > 1){
267
+ self.show_button("back");
268
+ }
269
+ }else{
270
+ self.show_button("close");
271
+ }
272
+
273
+ },
274
+ show_button: function(type){
275
+ jQuery("#wpfc-modal-" + this.id + " .wpfc-dialog-buttons[action='" + type + "']").show();
276
+ },
277
+ hide_button: function(type){
278
+ jQuery("#wpfc-modal-" + this.id + " .wpfc-dialog-buttons[action='" + type + "']").hide();
279
+ },
280
+ load_template: function(callbak){
281
+ var self = this;
282
+
283
+ jQuery.ajax({
284
+ type: 'POST',
285
+ dataType: "json",
286
+ url: ajaxurl,
287
+ data : {"action": "wpfc_cdn_template_ajax_request", "id": self.id},
288
+ success: function(res){
289
+ jQuery("body").append(res.content);
290
+ Wpfc_Dialog.dialog("wpfc-modal-" + self.id);
291
+ callbak();
292
+ jQuery("#revert-loader-toolbar").hide();
293
+ },
294
+ error: function(e) {
295
+ alert("CDN Template Error");
296
+ }
297
+ });
298
+ }
299
+ };
js/db.js ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var WpfcDB = {
2
+ init: function(){
3
+ var self = this;
4
+
5
+ jQuery("#wpfc-db").change(function(e){
6
+ jQuery("#revert-loader-toolbar").show();
7
+ self.update();
8
+ });
9
+
10
+ if(jQuery(".tab8").is(":visible")){
11
+ jQuery("#revert-loader-toolbar").show();
12
+ self.update();
13
+ }
14
+
15
+ jQuery(function(){
16
+ self.update();
17
+ });
18
+
19
+ self.click_event_for_warnings();
20
+ },
21
+ click_event_for_warnings: function(){
22
+ var self = this;
23
+
24
+ jQuery("div.tab8 div[wpfc-db-name]").click(function(e){
25
+ jQuery("#revert-loader-toolbar").show();
26
+
27
+ jQuery.ajax({
28
+ type: 'GET',
29
+ url: ajaxurl,
30
+ dataType : "json",
31
+ data : {"action": "wpfc_db_fix", "type": jQuery(this).attr("wpfc-db-name")},
32
+ cache: false,
33
+ success: function(data){
34
+ if(data.success){
35
+ self.update();
36
+ }else{
37
+ jQuery("#revert-loader-toolbar").hide();
38
+
39
+ if(data.showupdatewarning){
40
+ Wpfc_New_Dialog.dialog("wpfc-modal-updatenow", {close: function(){
41
+ Wpfc_New_Dialog.clone.find("div.window-content input").each(function(){
42
+ if(jQuery(this).attr("checked")){
43
+ var id = jQuery(this).attr("action-id");
44
+ jQuery("div.tab1 div[template-id='wpfc-modal-updatenow'] div.window-content input#" + id).attr("checked", true);
45
+ }
46
+ });
47
+
48
+ Wpfc_New_Dialog.clone.remove();
49
+ }});
50
+ }else{
51
+ if(typeof data.message != "undefined" && data.message){
52
+ alert(data.message);
53
+ }else{
54
+ alert("DB Error");
55
+ }
56
+ }
57
+ }
58
+ }
59
+ });
60
+ });
61
+ },
62
+ update: function(){
63
+ var self = this;
64
+
65
+ jQuery.ajax({
66
+ type: 'GET',
67
+ url: ajaxurl,
68
+ dataType : "json",
69
+ data : {"action": "wpfc_db_statics"},
70
+ cache: false,
71
+ success: function(data){
72
+ jQuery.each(data, function(key, value){
73
+ jQuery(".tab8 div[wpfc-db-name='" + key + "'] span.db-number").css({'color': (value > 0) ? "red" : "#6BC359"});
74
+ jQuery(".tab8 div[wpfc-db-name='" + key + "'] span.db-number").text("(" + value + ")");
75
+ jQuery(".tab8 div[wpfc-db-name='" + key + "'] div.meta").attr('class', (value > 0) ? "meta warning" : "meta success");
76
+ });
77
+
78
+ if(data.all_warnings > 0){
79
+ jQuery("label[for='wpfc-db']").text("DB (" + data.all_warnings + ")");
80
+ }else{
81
+ jQuery("label[for='wpfc-db']").text("DB");
82
+ }
83
+
84
+ jQuery("#revert-loader-toolbar").hide();
85
+ }
86
+ });
87
+ }
88
+ };
89
+
90
+
91
+ if(window.attachEvent) {
92
+ window.attachEvent('onload', WpfcDB_init);
93
+ } else {
94
+ if(window.onload) {
95
+ var curronload = window.onload;
96
+ var newonload = function(evt) {
97
+ curronload(evt);
98
+ WpfcDB_init(evt);
99
+ };
100
+ window.onload = newonload;
101
+ } else {
102
+ window.onload = WpfcDB_init;
103
+ }
104
+ }
105
+
106
+ function WpfcDB_init(){WpfcDB.init();}
js/dialog.js ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Wpfc_Dialog = {
2
+ id : "",
3
+ buttons: [],
4
+ dialog: function(id, buttons){
5
+ var self = this;
6
+ self.id = id;
7
+ self.buttons = buttons;
8
+
9
+ jQuery("#" + id).show();
10
+
11
+ jQuery("#" + id).draggable();
12
+
13
+ jQuery("#" + id).position({my: "center", at: "center", of: window});
14
+
15
+ jQuery(".close-wiz").click(function(e){
16
+ jQuery(e.target).closest("div[id^='wpfc-modal-']").remove();
17
+ });
18
+
19
+ self.show_buttons();
20
+ },
21
+ remove: function(clone_modal_id){
22
+ if(typeof clone_modal_id != "undefined"){
23
+ jQuery("#" + clone_modal_id).remove();
24
+ }else{
25
+ var self = this;
26
+ jQuery("#" + self.id).remove();
27
+ }
28
+ },
29
+ show_buttons: function(){
30
+ var self = this;
31
+ if(typeof self.buttons != "undefined"){
32
+ jQuery.each(self.buttons, function( index, value ) {
33
+ jQuery("#" + self.id + " button[action='" + index + "']").show();
34
+ jQuery("#" + self.id + " button[action='" + index + "']").click(function(e){
35
+ if(index == "close"){
36
+ jQuery(e.target).closest("div[id^='wpfc-modal-']").remove();
37
+ }else{
38
+ value();
39
+ }
40
+ });
41
+ });
42
+ }
43
+ }
44
+ };
js/dialog_new.js ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var Wpfc_New_Dialog = {
2
+ template_id: "",
3
+ id : "",
4
+ buttons: [],
5
+ clone: "",
6
+ current_page_number: 1,
7
+ total_page_number: 0,
8
+ dialog: function(id, buttons, callback){
9
+ var self = this;
10
+ self.clone = jQuery("div[template-id='" + id + "']").clone();
11
+
12
+ self.total_page_number = self.clone.find("div[wpfc-page]").length;
13
+
14
+ self.template_id = id;
15
+ self.id = id + "-" + new Date().getTime();
16
+ self.buttons = buttons;
17
+
18
+ self.clone.attr("id", self.id);
19
+ self.clone.removeAttr("template-id");
20
+
21
+ jQuery("body").append(self.clone);
22
+
23
+ self.clone.show();
24
+
25
+ self.clone.draggable();
26
+ self.clone.position({my: "center", at: "center", of: window});
27
+ self.clone.find(".close-wiz").click(function(){
28
+ self.remove(this);
29
+ });
30
+
31
+ self.update_ids_for_label();
32
+
33
+ self.show_buttons();
34
+
35
+ if(typeof callback != "undefined"){
36
+ if(typeof callback == "function"){
37
+ callback(self);
38
+ }
39
+ }
40
+ },
41
+ remove: function(button){
42
+ jQuery(button).closest("div[id^='wpfc-modal-']").remove();
43
+ },
44
+ show_buttons: function(){
45
+ var self = this;
46
+
47
+ if(typeof self.buttons != "undefined"){
48
+ jQuery.each(self.buttons, function( index, value ) {
49
+ self.clone.find("button[action='" + index + "']").click(function(){
50
+ if(value == "default"){
51
+ if(index == "next"){
52
+ self.default_next_action();
53
+ }
54
+
55
+ if(index == "back"){
56
+ self.default_back_action();
57
+ }
58
+
59
+ if(index == "close"){
60
+ self.default_close_action();
61
+ }
62
+ }else{
63
+ value(this);
64
+ }
65
+ });
66
+ });
67
+ }
68
+ },
69
+ default_next_action: function(){
70
+ this.current_page_number = this.current_page_number + 1;
71
+
72
+ this.show_page(this.current_page_number);
73
+
74
+ this.show_button("back");
75
+
76
+ if(this.total_page_number == this.current_page_number){
77
+ this.hide_button("next");
78
+ this.show_button("finish");
79
+ }
80
+ },
81
+ default_back_action: function(){
82
+ this.current_page_number = this.current_page_number - 1;
83
+
84
+ this.show_page(this.current_page_number);
85
+
86
+ this.show_button("next");
87
+ this.hide_button("finish");
88
+
89
+ if(this.current_page_number == 1){
90
+ this.hide_button("back");
91
+ }
92
+ },
93
+ default_close_action: function(){
94
+ Wpfc_New_Dialog.clone.remove();
95
+ },
96
+ show_button: function(index){
97
+ this.clone.find("button[action='" + index + "']").show();
98
+ },
99
+ hide_button: function(index){
100
+ this.clone.find("button[action='" + index + "']").hide();
101
+ },
102
+ show_page: function(number){
103
+ this.clone.find("div[wpfc-page]").hide();
104
+ this.clone.find("div[wpfc-page='" + number + "']").show();
105
+ this.current_page_number = number;
106
+ },
107
+ update_ids_for_label: function(){
108
+ var self = this;
109
+ var input;
110
+ var id = "";
111
+
112
+ self.clone.find("div.window-content div.wiz-input-cont").each(function(){
113
+ input = jQuery(this).find("label.mc-input-label input");
114
+
115
+ if(input.length){
116
+ id = input.attr("id") + self.id;
117
+
118
+ jQuery(this).find("label.mc-input-label input").attr("id", id);
119
+ jQuery(this).find("label").last().attr("for", id);
120
+ }
121
+ });
122
+ },
123
+ set_values_from_tmp_to_real: function(){
124
+ var self = this;
125
+
126
+ Wpfc_New_Dialog.clone.find("div.window-content input, div.window-content select").each(function(){
127
+ if(jQuery(this).prop("tagName") == "SELECT"){
128
+ jQuery("div.tab1 div[template-id='" + self.template_id + "'] div.window-content select[name='" + jQuery(this).attr("name") + "']").val(jQuery(this).val());
129
+ }else if(jQuery(this).prop("tagName") == "INPUT"){
130
+ if(jQuery(this).attr("type") == "checkbox"){
131
+ if(typeof jQuery(this).attr("checked") != "undefined"){
132
+ jQuery("div.tab1 div[template-id='" + self.template_id + "'] div.window-content input[name='" + jQuery(this).attr("name") + "']").attr("checked", true);
133
+ }else{
134
+ jQuery("div.tab1 div[template-id='" + self.template_id + "'] div.window-content input[name='" + jQuery(this).attr("name") + "']").attr("checked", false);
135
+ }
136
+ }else{
137
+ //toDo
138
+ }
139
+ }
140
+ });
141
+ }
142
+ };
js/index.html ADDED
@@ -0,0 +1 @@
 
1
+ Silence is golden.
js/lang/cn.js ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "缓存文件将自动按所选择的频率被删除。",
3
+ "First Job Time:" : "第一工作时间:",
4
+ "Frequency:" : "频率:",
5
+ "Choose One" : "选择一个",
6
+ "Once Every 15 Minutes" : "每15分钟",
7
+ "Twice an Hour" : "每小时两次",
8
+ "Once an hour" : "每小时一次",
9
+ "Once an Hour" : "每小时一次",
10
+ "onceaday" : "每天一次",
11
+ "Once a Day" : "每天一次",
12
+ "Twice a day" : "每天两次",
13
+ "Once Every 6 Hours" : "每6小时",
14
+ "Once a Week" : "每周一次",
15
+ "Once a Month" : "每月一次",
16
+ "Once a Year" : "每年一次",
17
+ "Next due" : "下一次",
18
+ "Schedule" : "定时",
19
+ "Server time" : "服务器时间",
20
+ "Minify HTML" : "压缩 HTML",
21
+ "You can decrease the size of page" : "您可让页面更小",
22
+ "WP Fastest Cache Options" : "WP Fastest Cache选项",
23
+ "Options have been saved" : "已保存",
24
+ "All cache files have been deleted" : "全部缓存文件已清除",
25
+ "Language" : "语言",
26
+ "Settings" : "设置",
27
+ "Delete Cache" : "删除缓存",
28
+ "Cache Timeout" : "缓存过期",
29
+ "Cache System" : "缓存系统",
30
+ "Enable" : "启用",
31
+ "New Post" : "新文章",
32
+ "Clear all cache files when a post or page is published" : "当新文章或页面发布时清除全部缓存文件",
33
+ "Delete Now" : "现在删除",
34
+ "You can delete all cache files" : "您可清除全部缓存文件",
35
+ "Target folder" : "目标目录",
36
+ "It will active in the next version" : "下一版本可用",
37
+ "Minify Css" : "压缩 CSS",
38
+ "You can decrease the size of css files" : "您可让CSS文件更小",
39
+ "You can decrease the size of js files" : "您可让JS文件更小",
40
+ "Reduce HTTP requests through combined css files" : "通过合并CSS文件减少HTTP请求",
41
+ "Combine Js" : "合并 JS",
42
+ "Reduce HTTP requests through combined js files" : "通过合并JS文件减少HTTP请求",
43
+ "Gzip" : "Gzip",
44
+ "Reduce the size of files sent from your server" : "减小通过服务器发送的文件尺寸",
45
+ "Premium" : "专业版",
46
+ "Exclude" : "例外",
47
+ "Exclude Pages" : "例外页面",
48
+ "You can stop to create cache for specific pages" : "您可让特定页面不进行缓存",
49
+ "[How to use this feature]" : "[怎么用]",
50
+ "Start With" : "使用",
51
+ "Contain" : "保护",
52
+ "Exact" : "精确",
53
+ "Having Issues?" : "需要帮助?",
54
+ "You can create a ticket" : "提交问题",
55
+ "WordPress support forum" : "WordPress支持论坛",
56
+ "Compacting HTML code, including any inline JavaScript and CSS contained in it, can save many bytes of data and speed up downloading, parsing, and execution time." : "压缩的HTML代码,其中包含JavaScript和CSS ,可以保存数据的字节数、加快下载、解析和执行时间。",
57
+ "Compacting CSS code can save many bytes of data and speed up downloading, parsing, and execution time." : "压缩CSS代码可以加快页面载入,解析和执行时间",
58
+ "Enable Gzip Compression" : "启用Gzip",
59
+ "Increase page speed" : "加速页面载入",
60
+ "Reduce sizes of pages by up to 70%" : "可减少页面大小的70%.",
61
+ "Reduce the size of files sent from your server to increase the speed to which they are transferred to the browser." : "减少服务器发送数据的大小,以加速载入。",
62
+ "Cost-benefit ratio: high" : "成本效益比率:高",
63
+ "All cache files will be removed as well" : "全部缓存文件将会被移除。",
64
+ "If you modify any css file, you have to delete minified css files" : "如果您修改了任一个CSS文件,您需要在此删除压缩后的CSS文件。",
65
+ "Delete Cache and Minified CSS/JS" : "删除缓存和压缩后的 CSS/JS",
66
+ "Mobile" : "移动端",
67
+ "Don't show the cached version for desktop to mobile devices" : "不把桌面端的缓存文件显示给移动端",
68
+ "Permission of <strong>/wp-content/cache</strong> must be <strong>755</strong>" : "目录 <strong>/wp-content/cache</strong>的权限必须是<strong>755</strong>",
69
+ // new
70
+ "Support Us" : "支持我们",
71
+ "If you like it, Please vote and support us." : "如果您喜欢这个插件,请为我们投票。",
72
+ "Reduce the load times of pages by storing commonly used files from your website on your visitors browser." : "在访客的浏览器上缓存常规文件以加快载入。",
73
+ "Particularly effective on websites where users regularly re-visit the same areas of the website" : "在用户经常性的访问网站时,特别有效!",
74
+ "Browser Caching" : "浏览器缓存",
75
+ "Reduce page load times for repeat visitors" : "为再次访问网站的用户加速载入",
76
+ "Don't show the cached version for logged-in users" : "不为已登录用户显示缓存版本",
77
+ "Already deleted" : "已删除",
78
+ "Reduce HTTP requests through combined files" : "通过合并文件减少HTTP请求",
79
+ "Decreasing the number of components on a page reduces the number of HTTP requests required to render the page, resulting in faster page loads." : "通过合并文件,减少HTTP请求,以加速载入",
80
+ "Combine Css" : "合并 CSS",
81
+ "*** Attention ***" : "*** 注意 ***",
82
+ "Open .htaccess and remove this rule" : "打开 .htaccess 文件并移除这个规则:",
83
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "如果您的服务器不支持mod_expires.c ,此选项可能会导致个内服务器错误( 500 ) 。如果你看到这样的错误,请执行下列步骤。",
84
+ "Remove Comments" : "移除注释标签",
85
+ "Remove the comment tags between <head></head>" : "移除<head></head>标签间的注释标签",
86
+ "More powerful minify html" : "更牛X的HTML压缩",
87
+ "More powerful minify css" : "更牛X的CSS压缩",
88
+ "Minify the combined js files" : "压缩合并后的js文件",
89
+ "WP Super Cache needs to be deactive" : "WP Super Cache 需要被禁用",
90
+ "The plugin does not work with Multisite" : "此插件不支持多站模式",
91
+ "Create cache for mobile theme" : "为移动端主题创建缓存",
92
+ "Mobile Theme" : "移动端主题",
93
+ "Image Optimization" : "图片优化",
94
+ "Optimize Image Tool" : "图片优化工具",
95
+ "All" : "全部",
96
+ "Pending" : "待审",
97
+ "Errors" : "错误",
98
+ "Optimized Images" : "已优化的图片",
99
+ "Total Reduction" : "总计减少",
100
+ "Succeed" : "成功",
101
+ "Show Images" : "显示图片",
102
+ "Hide Images" : "隐藏图片",
103
+ "File Name" : "文件名",
104
+ "Reduction" : "减少",
105
+ "Date" : "数据",
106
+ "Revert" : "恢复",
107
+ "All" : "全部",
108
+ "Backup Image" : "备份图片",
109
+ "Logged-in Users" : "已登录用户",
110
+ "Minify HTML Plus" : "压缩 HTML",
111
+ "Minify Css Plus" : "压缩 CSS",
112
+ "Minify Js" : "压缩 JS",
113
+ "Combine Js Plus" : "合并 JS",
114
+ "Cache Statics" : "缓存状态",
115
+ "In the premium version there are some new features which speed up the sites more." : "专业版本将会有更多特性,让这个网站更快。",
116
+ "You need to pay before downloading the premium version." : "在下载专业版本前,您需要先付费。",
117
+ "You can download and update the premium when you want if you paid." : "如果您想付费,您可以下载和更新专业版本。",
118
+ "Discover Features" : "了解特性",
119
+ "Checkout" : "获取",
120
+ "Download & Update" : "下载与更新",
121
+ "New Features" : "新特性",
122
+ "The download button will be available after paid. You can buy the premium version now." : "在付费后,下载按钮将可被点击,您可以现在购买专业版本。",
123
+ "Please don't delete the free version. Premium version works with the free version." : "请不要删除这个免费插件,专业版本需要它。",
124
+ "Purchased" : "已购买",
125
+ "Delete Cache Logs" : "删除缓存日志",
126
+ "No Update" : "无更新",
127
+ "Get It Now!" : "现在获取!",
128
+ "Just" : "仅",
129
+ "Read More" : "了解更多",
130
+ "[Read More]" : "[了解更多]",
131
+ "Mobile Cache" : "移动缓存",
132
+ "Optimize All" : "优化全部",
133
+ "CDN Settings" : "CDN设置",
134
+ "Only available in Premium version" : "仅专业版可用",
135
+ "Timeout Rules":"过期规则",
136
+ "Add New Rule":"添加规则",
137
+ ".htaccess is not writeable":".htaccess 文件不可写"
138
+ };
js/lang/de.js ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "Alle zwischengespeicherte Dateien werden am festgelegten Datum gelöscht." ,
3
+ "Choose One" : "Suchen Sie eins aus" ,
4
+ "Once an hour": "Einmal pro Stunde" ,
5
+ "Once a day": "Einmal pro Tag" ,
6
+ "Twice a day": "Zweimal pro Tag" ,
7
+ "Next due": "Nächste Aufgabe" ,
8
+ "Schedule": "Zeitplan" ,
9
+ "Server time": "Serverzeit" ,
10
+ "You can decrease the size of page" : "Sie können die Größe der Seite verringern" ,
11
+ "WP Fastest Cache Options": "WP Fastest Cache Optionen" ,
12
+ "Options have been saved" : "Optionen wurden gespeichert" ,
13
+ ".htacces is not writable": ".htacces ist nicht beschreibbar" ,
14
+ "All cache files have been deleted" : "Alle Cache-Dateien wurden gelöscht" ,
15
+ "Language" : "Sprache" ,
16
+ "Settings" : "Einstellungen" ,
17
+ "Delete Cache" : "Cache löschen" ,
18
+ "Cache Timeout" : "Cache Timeout" ,
19
+ "Cache System" : "Cache System" ,
20
+ "Enable" : "Aktivieren" ,
21
+ "New Post" : "Neuer Eintrag" ,
22
+ "Clear cache files when a post or page is published" : "Cache-Dateien löschen, wenn ein neuer Eintrag oder eine neue Seite veröffentlicht wird" ,
23
+ "Submit" : "Absenden" ,
24
+ "Delete Now" : "Jetzt löschen" ,
25
+ "You can delete all cache files" : "Sie können alle Cache-Dateien löschen" ,
26
+ "Target folder" : "Zielordner" ,
27
+ "It will active in the next version" : "Es wird in der nächsten Version aktiv" ,
28
+ "You can decrease the size of css files" : "Sie können die Größe aller css-Dateien verringern" ,
29
+ "Reduce the size of files sent from your server" : "Die Größe aller vom Server geschickten Dateien verringern" ,
30
+ "Having Issues?" : "Noch Probleme?" ,
31
+ "You can create a ticket" : "Sie können eine Fehlermeldung erstellen" ,
32
+ "WordPress support forum" : "WordPress support forum" ,
33
+ "Enable Gzip Compression" : "Gzip Kompression aktivieren" ,
34
+ "Increase page speed" : "Seitengröße verringern" ,
35
+ "Reduce sizes of pages by up to 70%" : "Die Seitengrößen bis zu 70% reduzieren" ,
36
+ "Cost-benefit ratio: high" : "" ,
37
+ "All cache files will be removed as well" : "Alle Cache- Dateien werden ebenfalls entfernt" ,
38
+ "If you modify any css file, you have to delete minified css files" : "Wenn Sie eine css-Datei ändern, müssen Sie verkleinerte css-Dateien löschen" ,
39
+ "Delete Minified Css" : "Verkleinerte Css löschen" ,
40
+ "Don't show the cached version for desktop to mobile devices" : "Die zwischengespeicherte Version für den Desktop mobilen Geräten nicht zeigen " ,
41
+ "Browser Caching" : "Browser Caching" ,
42
+ "Reduce page load times for repeat visitors" : "Ladezeit für wiederholte Besucher verringern" ,
43
+ "Don't show the cached version for logged-in users" : "Die zwischengespeicherte Version für eingeloggte Benutzer nicht anzeigen" ,
44
+ "Support Us" : "Unterstützen Sie uns" ,
45
+ "If you like it, Please vote and support us." : "Wenn es Ihnen gefällt, stimmen Sie ab und unterstützen Sie uns" ,
46
+ "Reduce HTTP requests through combined css files" : "HTTP-Anfragen durch kombinierte css-Dateien verringern" ,
47
+ "Reduce HTTP requests through combined js files" : "HTTP-Anfragen durch kombinierte js-Dateien verringern" ,
48
+ "Combine Css" : "Css Kombinieren" ,
49
+ "Combine Js" : "Js Kombinieren" ,
50
+ "Minify Css" : "Css Verkleinerung" ,
51
+ "Minify HTML" : "HTML Verkleinerung" ,
52
+ "*** Attention ***" : "*** Achtung ***" ,
53
+ "Open .htaccess and remove this rule" : ".htaccess öffnen und diese Regel entfernen" ,
54
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "Wenn Ihr Server mod_expires.c nicht unterstützt, kann diese Option Internal Server Error (500) verursachen. Wenn Sie diesem Fehler begegnen, folgen Sie bitte diesen Schritten: " ,
55
+ "Remove Comments" : "Kommentare löschen" ,
56
+ "Remove the comment tags between <head></head>" : "Kommentar-Tags zwischen <head></head> löschen" ,
57
+ "More powerful minify html" : "Leistungsstärkere HTML-Verkleinerung" ,
58
+ "Minify the combined js files" : "Kombinierte js-Dateien verkleinern" ,
59
+ ".htaccess is not writable" : ".htacess ist nicht beschreibbar" ,
60
+ "WP Super Cache needs to be deactive" : "WP Super Cache muss deaktiviert werden" ,
61
+ "The plugin does not work with Multisite" : "Das Plug-In funktioniert nicht mit Multisite" ,
62
+ "Create cache for mobile theme" : "Cache für mobile Themes erstellen" ,
63
+ "Mobile Theme" : "Mobile Themes" ,
64
+ "Mobile" : "Mobile" ,
65
+ "Image Optimization" : "Bildoptimierung" ,
66
+ "Optimize Image Tool" : "Image Tool optimieren" ,
67
+ "All" : "Alle" ,
68
+ "Pending" : "Anstehend" ,
69
+ "Errors" : "Fehler" ,
70
+ "Optimized Images" : "Optimierte Bilder" ,
71
+ "Total Reduction" : "Gesamtverringerung" ,
72
+ "Succeed" : "Erfolgreich" ,
73
+ "Show Images" : "Bilder anzeigen" ,
74
+ "Hide Images" : "Bilder verstecken" ,
75
+ "File Name" : "Dateiname" ,
76
+ "Reduction" : "Verringerung" ,
77
+ "Date" : "Datum" ,
78
+ "Revert" : "Rückgängig machen" ,
79
+ "Backup Image" : "Sicherungsbild" ,
80
+ "All" : "Alle" ,
81
+ "Logged-in Users" : "Eingeloggte Benutzer" ,
82
+ "Minify HTML Plus" : "HTML-Verkleinerung Plus" ,
83
+ "Minify Css Plus" : "Css-Verkleinerung Plus",
84
+ "More powerful minify css" : "Leistungsstärkere Css-Verkleinerung",
85
+ "Combine Js Plus" : "Js-Kombinierung Plus" ,
86
+ "Cache Statics" : "Cache-Statistik" ,
87
+ "In the premium version there are some new features which speed up the sites more." : "In der Premium-Version gibt es neue Eigenschaften, die die Seiten beschleunigen." ,
88
+ "You need to pay before downloading the premium version." : "Bevor Sie die Premium-Version herunterladen, müssen Sie zahlen" ,
89
+ "You can download and update the premium when you want if you paid." : "Nachdem Sie bezahlt haben, können Sie die Premium-Version herunterladen und aktualisieren, wann sie wollen" ,
90
+ "Discover Features" : "Eigenschaften" ,
91
+ "Checkout" : "Bezahlung" ,
92
+ "New Features" : "Neue Funktionen" ,
93
+ "The download button will be available after paid. You can buy the premium version now." : "Der Download-Button wird aktiviert, nachdem Sie bezahlt haben. Sie können die Premium-Version jetzt kaufen." ,
94
+ "Please don't delete the free version. Premium version works with the free version." : "Die freie Version bitte nicht löschen. Die Premium-Version funktioniert mit der freien Version" ,
95
+ "Purchased" : "Erworben" ,
96
+ "Delete Cache Logs" : "Cache-Logs löschen" ,
97
+ "No Update" : "Keine Update" ,
98
+ "Get It Now!" : "Jetzt kaufen!" ,
99
+ "Just" : "Nur" ,
100
+ "Exclude" : "Ausschließen" ,
101
+ "Exclude Pages" : "Seiten ausschließen" ,
102
+ "Start With" : "Beginne mit" ,
103
+ "You can stop to create cache for specific pages" : "Sie können die Cache-Erstellung verhindern" ,
104
+ "Read More" : "Mehr lesen" ,
105
+ "Contain" : "Enthalten" ,
106
+ "Exact" : "Genau",
107
+ "Error Occured" : "Fehler Aufgetreten",
108
+ "/wp-content/plugins/ is not writable" : "/wp-content/plugins/ ist nicht schreibbar",
109
+ "Please read the tutorial" : "Lesen Sie bitte die Anleitung",
110
+ "You need to activate the premium plugin manually" : "Sie müssen das Premium Plugin manuell aktivieren",
111
+ "Continue" : "Weiter",
112
+ "Create the cache of all the site automatically" : "Das Cache der ganzen Seite automatisch bilden",
113
+ "Clear cache files when a post or page is updated" : "Die Cache-Dateien reinigen, wenn ein Beitrag oder eine Seite aktualisiert wird",
114
+ "You can decrease the size of js files" : "Sie können die Größe der js-Dateien verringern",
115
+ "Minify Js" : "JavaScript reduzieren",
116
+ "Render Blocking Js" : "Rendering Blockierer Js",
117
+ "Remove render-blocking JavaScript" : "Entfernen Sie JavaScript, das das Rendering blockiert"
118
+ };
js/lang/es.js ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "Todos los archivos en el cache serán eliminados a la hora y frecuencia seleccionadas:",
3
+ "Choose One" :"Seleccione",
4
+ "Once an hour": "Cada hora",
5
+ "Once a day": "Una vez al día",
6
+ "Twice a day":"Dos veces al día",
7
+ "Next due":"Siguiente",
8
+ "Schedule":"Frecuencia",
9
+ "Server time":"Hora del servidor",
10
+ "You can decrease the size of page" :"Disminuir el tamaño de la página",
11
+ "WP Fastest Cache Options":"Opciones de WP Fastest Cache",
12
+ "Options have been saved" :"Configuración guardada",
13
+ ".htacces is not writable": "No se puede modificar .htacces",
14
+ "All cache files have been deleted" :"Todos los archivos en el cache han sido eliminados",
15
+ "Language" :"Idioma",
16
+ "Settings" :"Configuración",
17
+ "Delete Cache" :"Borrar el cache",
18
+ "Cache Timeout" :"Validez del cache",
19
+ "Cache System" :"Sistema de cache",
20
+ "Enable" :"Activar",
21
+ "New Post" :"Nueva entrada",
22
+ "Clear cache files when a post or page is published" :"Borrar el cache cuando se publiquen una entrada o página nuevas",
23
+ "Submit" :"Guardar",
24
+ "Delete Now" :"Borrar ahora",
25
+ "You can delete all cache files" :"Borrar todos los archivos en el cache.",
26
+ "Target folder" :"Carpeta de destino",
27
+ "It will active in the next version" : "Disponible en la siguiente versión",
28
+ "You can decrease the size of css files" : "Disminuir el tamaño de los archivos CSS",
29
+ "Reduce the size of files sent from your server" : "Reducir el tamaño de los archivos enviados por el servidor",
30
+ "Having Issues?" : "¿Problemas?",
31
+ "You can create a ticket" : "Cree un tiquete de soporte ",
32
+ "WordPress support forum" : "Foro de soporte de WordPress",
33
+ "Compacting HTML code, including any inline JavaScript and CSS contained in it, can save many bytes of data and speed up downloading, parsing, and execution time." : "La compresión del código HTML, JavaScript y CSS puede ahorrar muchos bytes y aumentar la velocidad de descarga",
34
+ "Compacting CSS code can save many bytes of data and speed up downloading, parsing, and execution time." : "La compresión del código CSS puede ahorrar muchos bytes de información y acelerar la descarga, procesado y ejecución.",
35
+ "Enable Gzip Compression" : "Habilitar compresión Gzip",
36
+ "Increase page speed" : "Aumentar la velocidad de la página",
37
+ "Reduce sizes of pages by up to 70%" : "Reduce el tamaño de las páginas hasta en un 70%",
38
+ "Reduce the size of files sent from your server to increase the speed to which they are transferred to the browser." : "Reducir el tamaño de los archivos de tal manera que sean transmitidos más rápido del servidor al navegador.",
39
+ "Cost-benefit ratio: high" : "Tasa costo-beneficio: alta",
40
+ "All cache files will be removed as well" : "Todos los archivos en el cache serán borrados:",
41
+ "If you modify any css or js file, you have to delete minified js and css files" : "Si modifica algún archivo CSS o JS tendrá que borrar los archivos js y css minificados",
42
+ "If you modify any css file, you have to delete minified css files" : "Al modificar cualquier archivo CSS deberá de eliminar los archivos CSS minificados",
43
+ "Delete Minified Css & Js" : "Borrar los archivos CSS & JS minificados",
44
+ "Delete Minified Css" : "Eliminar CSS minificado",
45
+ "Don't show the cached version for desktop to mobile devices" : "No mostrar el cache de la versión del ordenador de escritorio en dispositivos móviles",
46
+ "Leverage Browser Caching" : "Aumentar el uso del cache del navegador",
47
+ "Reduce the load times of pages by storing commonly used files from your website on your visitors browser." : "Guarda archivos en el navegador del visitante para que las páginas carguen más rápido",
48
+ "Reduce page load times for repeat visitors" : "Reducir el tiempo de carga para visitantes frecuentes",
49
+ "Particularly effective on websites where users regularly re-visit the same areas of the website" : "Muy eficiente en sitios cuyos usuarios visitan las mismas páginas con frecuencia",
50
+ "Don't show the cached version for logged-in users" : "No mostrar los archivos en el cache a los usuarios registrados.",
51
+ "Support Us" : "Apóyanos",
52
+ "Reduce HTTP requests through combined js files" : "Combinar los archivos JS para reducir las solicitudes HTTP",
53
+ "This feature combines the JS files between <head></head>. Decreasing the number of javascript files on a page reduces the number of HTTP requests required to render the page, resulting in faster page loads." : "Al integrar todos los archivos JS entre las etiquetas &#60;head&#62;&#60;/head&#62; se disminuyen las solicitudes HTTP, logrando que las páginas carguen más rápido.",
54
+ "If you like it, Please vote and support us." : "Si te gusta este plugin, por favor vota y apóyanos.",
55
+ "Reduce HTTP requests through combined css files" : "Combinar css archivos para reducir las solicitudes HTTP",
56
+ "Decreasing the number of components on a page reduces the number of HTTP requests required to render the page, resulting in faster page loads." : "Al reducir el número de objetos de una página se disminuye también el número de solicitudes HTTP, por lo cual las páginas cargarán más rápido.",
57
+ "Combine Css" : "Combinar CSS",
58
+ "*** Attention ***" : "*** Atención ***",
59
+ "Open .htaccess and remove this rule" : "Abra el archivo .htaccess y remueva esta línea",
60
+ "Remove render-blocking JavaScript" : "Quitar el JavaScript que bloquea la visualización de contenido",
61
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "Si activa esta opción y su servidor no tiene mod_expires.c instalado puede generar un error de servidor 500. En ese caso, siga estos pasos para resolverlo"
62
+ };
js/lang/fi.js ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "Kaikki välimuistissa olevat tallenteet poistetaan määrättynä hetkenä:",
3
+ "Choose One" : "Valitse",
4
+ "Once an Hour" : "Kerran tunnissa",
5
+ "Once a Day" : "Kerran päivässä",
6
+ "Twice a Day" : "2 kertaa päivässä",
7
+ "Server time" : "Palvelimen aika nyt",
8
+ "You can decrease the size of page" : "Sivun- ja artikkelin HTML-muotoiltua sisältöä pienennetään tiivistämällä",
9
+ "WP Fastest Cache Options" : "WP Fastest Cache -asetukset",
10
+ "Options have been saved" : "Asetukset on tallennettu",
11
+ ".htacces is not writable" : ".htacces-tiedostoon ei voi kirjoittaa ",
12
+ "All cache files have been deleted" : "Kaikki välimuistin tallenteet on poistettu",
13
+ "Language" : "Kieli",
14
+ "Settings" : "Asetukset",
15
+ "Delete Cache" : "Tyhjennä välimuisti",
16
+ "Cache Timeout" : "Säilytysaika",
17
+ "Cache System" : "Välimuisti",
18
+ "Enable" : "Ota käyttöön",
19
+ "New Post" : "Uusi kirjoitus",
20
+ "Clear cache files when a post or page is published" : "Poista tallenteet välimuistista kun sivu- tai artikkeli julkaistaan.",
21
+ "Submit" : "Lähetä",
22
+ "Delete Now" : "Poista nyt",
23
+ "You can delete all cache files" : "Poistaa kaikki välimuistissa olevat tiedostot",
24
+ "Target folder" : "Hakemistosta",
25
+ "You can decrease the size of css files" : "CSS-tyylitiedostojen kokoa pienennetään tiivistämällä.",
26
+ "Reduce the size of files sent from your server" : "Pienennä palvelimelta lähtevien tiedostojen kokoa",
27
+ "Having Issues?" : "Onko ongelmia?",
28
+ "You can create a ticket" : "Voit tehdä tukipyynnön",
29
+ "WordPress support forum" : "WordPress-tukifoorumille",
30
+ "All cache files will be removed as well" : "Myös kaikki välimuistissa olevat tiedostot poistetaan.",
31
+ "If you modify any css file, you have to delete minified css files" : "Jos muokkaat jotain CSS-tiedostoa, pienennetyt CSS-tiedostot on poistettava.",
32
+ "Delete Minified Css" : "Poista pienennetyt CSS-tiedostot",
33
+ "Don't show the cached version for desktop to mobile devices" : "Mobiililaitteille ei lähetetä pöytäkoneita varten välimuistissa olevaa sivua",
34
+ "Permission of <strong>/wp-content/cache</strong> must be <strong>755</strong>" : "Hakemiston <strong>/wp-content/cache</strong> oikeudet on oltava <strong>755</strong>.",
35
+ // new
36
+ "Browser Caching" : "Selaimen välimuisti",
37
+ "Reduce page load times for repeat visitors" : "Lyhennä sivujen latautumiseen kuluvaa aikaa kun vierailija on käynyt sivulla aiemmin",
38
+ "Logged-in Users" : "Kirjautunut käyttäjä",
39
+ "Don't show the cached version for logged-in users" : "Kirjautuneille käyttäjille ei näytetä välimuistissa olevaa sivua",
40
+ "Already deleted" : "On jo poistettu",
41
+ "Support Us" : "Tue meitä",
42
+ "If you like it, Please vote and support us." : "Jos pidät lisäosasta, antamalla tuotearvion tuet meitä.",
43
+ "Reduce HTTP requests through combined files" : "HTTP-pyyntöjen määrä vähenee kun tiedostoja yhdistetään",
44
+ "Combine Css" : "Yhdistä CSS-tiedostot",
45
+ "*** Attention ***" : "*** Huomautus ***",
46
+ "Open .htaccess and remove this rule" : "Avaa .htaccess-tiedosto ja poista tämä sääntö",
47
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "Jos palvelin ei tue mod_expires.c -toimintoa, se voi aiheuttaa Internal Server Error (500). Jos sellainen virhe ilmaantuu, toimi seuraavasti. ",
48
+ // new2
49
+ "Mobile" : "Mobiili",
50
+ "Mobile Theme" : "Mobiili teema",
51
+ "Create cache for mobile theme" : "Tee välimuisti myös mobiili teemalle",
52
+ "Minify HTML" : "Pienennä HTML",
53
+ "Minify HTML Plus" : "Pienennä HTML plus",
54
+ "More powerful minify html" : "Tehokkaampi HTML tiivistys",
55
+ "Minify Css" : "Pienennä CSS",
56
+ "Minify Css Plus" : "Pienennä CSS plus",
57
+ "More powerful minify css" : "Tehokkaampi CSS-tiedostojen tiivistys",
58
+ "Reduce HTTP requests through combined css files" : "HTTP-pyyntöjen määrä vähenee kun CSS-tyylitiedostot yhdistetään",
59
+ "Combine Js" : "Yhdistä JS-tiedostot",
60
+ "Reduce HTTP requests through combined js files" : "HTTP-pyyntöjen määrä vähenee kun JavaScript-tiedostot yhdistetään",
61
+ "Combine Js Plus" : "Yhdistä JS-tiedostot plus",
62
+ "Minify the combined js files" : "Tiivistä yhdistetyt JS-tiedostot",
63
+ "Remove Comments" : "Poista kommentit",
64
+ "Remove the comment tags between <head></head>" : "Poista head ja /head koodien välissä olevat kommentit",
65
+ "Gzip" : "Gzip-pakkaus",
66
+ "Delete Cache and Minified CSS/JS" : "Tyhjennä välimuisti ja pienennetyt CSS/JS",
67
+ "First Job Time:" : "Aloitushetki:",
68
+ "Hour" : "Tunti",
69
+ "Minute" : "Minuutit",
70
+ "Frequency:" : "Toistuminen:",
71
+ "Once Every 15 Minutes" : "15 minuutin välein",
72
+ "Twice an Hour" : "Kahdesti tunnissa",
73
+ "Once Every 6 Hours" : "6 tunnin välein",
74
+ "Once a Week" : "Kerran viikossa",
75
+ "Once a Month" : "Kerran kuukaudessa",
76
+ "Once a Year" : "Kerran vuodessa",
77
+ "Image Optimization" : "Kuvien optimointi",
78
+ "Only available in Premium version" : "Maksullisen laajemmaan version ominaisuus",
79
+ "Show Images" : "Näytä kuvat",
80
+ "More" : "Lisää",
81
+ "Errors" : "Virheitä",
82
+ "Succeed" : "Onnistunut",
83
+ "Pending" : "Odottaa",
84
+ "Optimized Images" : "Optimoituja kuvia",
85
+ "Total Reduction" : "Koko pieneni",
86
+ "Optimize All" : "Optimoi kaikki",
87
+ "Optimize Image Tool" : "Työkalu kuvien optimointiin",
88
+ "All" : "Yhteensä kpl",
89
+ "Credit" : "Kredit",
90
+ "Discover Feautures" : "Löydä lisätoimintoja",
91
+ "Mobile Cache" : "Mobiili välimuisti",
92
+ "Show Logs" : "Näytä lokitiedostot",
93
+ "Delete Cache Logs" : "Tyhjennä välimuistin loki",
94
+ "Cache Statics" : "Välimuistin tilastot",
95
+ "New Features" : "Uudet toiminnot",
96
+ "In the premium version there are some new features which speed up the sites more." : "Laajennetussa versiossa on lisäominaisuuksia, jotka nopeuttavat sivustoa yhä enemmän.",
97
+ "More Speed!" : "Lisää nopeutta!",
98
+ "More Speed! Speed up the page more." : "Lisää nopeutta! Nopeuta sivuja enemmän.",
99
+ "Learn more" : "Tutustu tarkemmin",
100
+ "Checkout" : "Kassa",
101
+ "You need to pay before downloading the premium version." : "Maksullisen laajemman version lataus edellyttää maksamista.",
102
+ "Just" : "Vain",
103
+ "The download button will be available after paid. You can buy the premium version now." : "Lataus/Download-painike on käytettävissä maksamisen jälkeen. Voit ostaa laajennetun version nyt, Buy-painikkeesta.",
104
+ "Buy" : "Osta",
105
+ "Download" : "Lataa",
106
+ "Download & Update" : "Lataa & päivitä",
107
+ "Get It Now!" : "Hanki se nyt!",
108
+ "You can download and update the premium when you want if you paid." : "Voit ladata ja päivittää laajennetun version jos olet maksanut.",
109
+ "Please don't delete the free version. Premium version works with the free version." : "Älä poista ilmaista lisäosan versiota. Laajennettu versio toimii sen kanssa.",
110
+ "Exclude" : "Ohitukset",
111
+ "Exclude Pages" : "Tälle sisällölle ei käytetä välimuistia",
112
+ "You can stop to create cache for specific pages" : "Välimuistiin ei tallenneta alla määritettyä sisältöä ",
113
+ "[How to use this feature]" : "[Käyttöohje]",
114
+ "Start With" : "Alkaa",
115
+ "Contain" : "Sisältää",
116
+ "Exact" : "On tarkasti",
117
+ "Remove render-blocking JavaScript" : "Poista hahmontamisen estävä JavaScript-koodi",
118
+ "Discover Features" : "Uusia ominaisuuksia"
119
+ };
js/lang/fr.js ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "Tous les fichiers mis en cache sont supprimés au moment determiné.:",
3
+ "Choose One" :"Choisissez un",
4
+ "Once an hour": "Une fois par heure",
5
+ "Once a day": "Une fois par jour",
6
+ "Twice a day":"Deux fois par jour",
7
+ "Next due":"Suivant",
8
+ "Schedule":"Fréquence",
9
+ "Server time":"Heure du serveur",
10
+ "You can decrease the size of page" :"Vous pouvez réduire la taille de la page",
11
+ "WP Fastest Cache Options":"Options de WP Fastest Cache",
12
+ "Options have been saved" :"Les options ont été sauvés",
13
+ ".htacces is not writable": ".htaccess n'est pas accessible en écriture",
14
+ "All cache files have been deleted" :"Tous les fichiers de cache ont été supprimées",
15
+ "Language" :"Langue",
16
+ "Settings" :"Configuration",
17
+ "Delete Cache" :"Effacer le cache",
18
+ "Cache Timeout" :"Validité du cache",
19
+ "Delete Minified Css" :"Effacer fichiers CSS compressés",
20
+ "Cache System" :"Système de cache",
21
+ "Logged-in Users" :"Utilisateurs enregistrés",
22
+ "Minify HTML" :"Réduire HTML",
23
+ "Minify Css" :"Réduire Css",
24
+ "Browser Caching" :"Cache du navigateur",
25
+ "Enable" :"Activer",
26
+ "New Post" :"Nouveau message",
27
+ "Clear cache files when a post or page is published" :"Effacer les fichiers de cache quand un article ou une page sont publiés",
28
+ "Submit" :"Soumettre",
29
+ "Delete Now" :"Effacer maintenant",
30
+ "You can delete all cache files" :"Vous pouvez supprimer tous les fichiers du cache",
31
+ "Target folder" :"Dossier cible",
32
+ "It will active in the next version" : "Il sera actif dans la prochaine version",
33
+ "You can decrease the size of css files" : "Vous pouvez réduire la taille des fichiers CSS",
34
+ "Reduce the size of files sent from your server" : "Réduire la taille des fichiers envoyés à partir de votre serveur",
35
+ "Having Issues?" : "Vous avez des questions?",
36
+ "You can create a ticket" : "Vous pouvez créer un billet",
37
+ "WordPress support forum" : "Forum de support WordPress",
38
+ "Compacting HTML code, including any inline JavaScript and CSS contained in it, can save many bytes of data and speed up downloading, parsing, and execution time." : "Le compactage du code HTML, y compris en ligne JavaScript et CSS qu'il contient, peut économiser de nombreux octets de données et accélérer le téléchargement, l'analyse et le temps d'exécution.",
39
+ "Compacting CSS code can save many bytes of data and speed up downloading, parsing, and execution time." : "Le compactage de code CSS peut économiser de nombreux octets de données et accélérer le téléchargement, l'analyse et le temps d'exécution.",
40
+ "Enable Gzip Compression" : "Activer la compression Gzip",
41
+ "Increase page speed" : "Augmenter la vitesse de chargement de la page",
42
+ "Reduce sizes of pages by up to 70%" : "Réduire la taille des pages jusqu'à 70%",
43
+ "Reduce the size of files sent from your server to increase the speed to which they are transferred to the browser." : "Réduire la taille des fichiers afin qu'ils soient transmis plus rapidement du serveur, au navigateur.",
44
+ "Cost-benefit ratio: high" : "Rapport coûts-avantages: élevé",
45
+ "All cache files will be removed as well" : "Tous les fichiers du cache seront aussi supprimés",
46
+ "If you modify any css or js file, you have to delete minified js and css files" : "Si vous modifiez un fichier css ou js, vous devez supprimer les fichiers js et css compressés",
47
+ "If you modify any css file, you have to delete minified css files" : "Si vous modifiez un fichier CSS, vous devez supprimer les fichiers css compressés",
48
+ "Delete Minified Css & Js" : "Supprimer les fichiers Css et Js compressés",
49
+ "Don't show the cached version for mobile devices" : "Ne pas afficher la version mise en cache pour les appareils mobiles",
50
+ "Leverage Browser Caching" : "Augmenter l'utilisation de la mémoire cache du navigateur",
51
+ "If you like it, Please vote and support us." : "",
52
+ "Reduce the load times of pages by storing commonly used files from your website on your visitors browser." : "Réduire le temps de chargement des pages couramment utilisés en stockant les fichiers sur le navigateur de vos visiteurs.",
53
+ "Reduce page load times for repeat visitors" : "Réduit le temps de chargement des pages pour les visiteurs réguliers",
54
+ "Particularly effective on websites where users regularly re-visit the same areas of the website" : "Particulièrement efficace sur les sites Web où les utilisateurs re-visitent régulièrement les mêmes pages du site",
55
+ "Don't show the cached version for logged-in users" : "Ne pas afficher la version mise en cache pour les utilisateurs inscrits",
56
+ "Already deleted" : "Déjà supprimé",
57
+ "Support Us" : "Soutenez-nous",
58
+ "Reduce HTTP requests through combined js files" : "Réduire les requêtes HTTP par js combinés",
59
+ "This feature combines the JS files between <head></head>. Decreasing the number of javascript files on a page reduces the number of HTTP requests required to render the page, resulting in faster page loads." : "Cette fonction fusionne les fichiers JS entre &#60;head&#62;&#60;/head&#62;. Fusionner du nombre de fichiers javascript en une même page réduit le nombre de requêtes HTTP nécessaires pour transmettre la page, ce qui accélère chargement de celle-ci.",
60
+ "If you like it, Please vote and support us." : "Si vous aimez ce Plugin, S'il vous plaît, votez et soutenez-nous !",
61
+ "Reduce HTTP requests through combined css files" : "Réduire les requêtes HTTP via des css fichiers combinés",
62
+ "Decreasing the number of components on a page reduces the number of HTTP requests required to render the page, resulting in faster page loads." : "La diminution du nombre de composants sur une page réduit le nombre de requêtes HTTP nécessaires pour rendre la page, ce qui accélère chargement de celle-ci.",
63
+ "Combine Css" : "Combinez Css",
64
+ "*** Attention ***" : "*** Attention ***",
65
+ "Open .htaccess and remove this rule" : "Ouvrez le fichier .htaccess et supprimer cette règle",
66
+ "Remove render-blocking JavaScript" : "Supprimez les ressources JavaScript qui bloquent l'affichage",
67
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "Si votre serveur ne supporte pas mod_expires.c, cette option peut provoquer l'erreur <<Internel Server Error (500)>>. Si vous voyez cette erreur, s'il vous plaît suivez les étapes ci-dessous."
68
+ };
js/lang/index.html ADDED
@@ -0,0 +1 @@
 
1
+ Silence is golden.
js/lang/it.js ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "Tutti i file memorizzati nella cache vengono eliminati al momento determinato.",
3
+ "Choose One" :"Seleziona",
4
+ "Once an hour": "Ogni ora",
5
+ "Once a day": "Ogni giorno",
6
+ "Twice a day":"Due volte al giorno",
7
+ "Next due":"Successivo",
8
+ "Schedule":"Frequenza",
9
+ "Server time":"Ora del server",
10
+ "You can decrease the size of page" :"Pu&ograve; ridurre le dimensioni della pagina",
11
+ "WP Fastest Cache Options":"Opzioni di WP Fastest Cache",
12
+ "Options have been saved" :"Le opzioni sono state salvate",
13
+ ".htacces is not writable": "Non si pu&ograve; modificare .htacces",
14
+ "All cache files have been deleted" :"Tutti i file nella cache sono stati cancellati",
15
+ "Language" :"Lingua",
16
+ "Settings" :"Configurazione",
17
+ "Delete Cache" :"Cancella la cache",
18
+ "Cache Timeout" :"Timeout della cache",
19
+ "Cache System" :"Sistema cache",
20
+ "Enable" :"Attiva",
21
+ "New Post" :"Nuovo post",
22
+ "Clear cache files when a post or page is published" :"Pulire la cache quando un post o una pagina vengono pubblicati",
23
+ "Submit" :"Invia",
24
+ "Delete Now" :"Cancella ora",
25
+ "You can delete all cache files" :"E' possibile cancellare i file della cache",
26
+ "Target folder" :"Percorso cartella",
27
+ "It will active in the next version" : "Sar&agrave; attivo nella prossima versione",
28
+ "You can decrease the size of css files" : "Pu&ograve; ridurre le dimensioni dei file CSS",
29
+ "Reduce the size of files sent from your server" : "Ridurre la dimensione dei file inviati dal server",
30
+ "Having Issues?" : "Problemi?",
31
+ "You can create a ticket" : "Puoi creare un ticket",
32
+ "WordPress support forum" : "Forum di supporto WordPress",
33
+ "Compacting HTML code, including any inline JavaScript and CSS contained in it, can save many bytes of data and speed up downloading, parsing, and execution time." : "La compressione del codice HTML, compresi eventuali JavaScript e CSS inclusi in esso, pu&ograve; salvare molti bytes e aumentare la velocit&agrave; di scaricamento, dell'analisi e del tempo di esecuzione.",
34
+ "Compacting CSS code can save many bytes of data and speed up downloading, parsing, and execution time." : "La compressione del codice CSS pu&ograve; salvare molti bytes di informazioni e accelerare lo scaricamento, l'analisi e il tempo di esecuzione.",
35
+ "Enable Gzip Compression" : "Abilita la compressione Gzip",
36
+ "Increase page speed" : "Aumenta la velocit&agrave; della pagina",
37
+ "Reduce sizes of pages by up to 70%" : "Riduce la dimensione delle pagine fino al 70%",
38
+ "Reduce the size of files sent from your server to increase the speed to which they are transferred to the browser." : "Ridurre le dimensioni dei file in modo che essi siano trasmessi pi&ugrave; velocemente dal server al browser.",
39
+ "Cost-benefit ratio: high" : "Rapporto costi-beneficii: alto",
40
+ "All cache files will be removed as well" : "Tutti i file nella cache saranno eliminati:",
41
+ "If you modify any css or js file, you have to delete minified js and css files" : "Se modifichi qualsiasi file CSS o JS, devi cancellare i file CSS e JS minimizzati",
42
+ "If you modify any css file, you have to delete minified css files" : "Se modifichi qualsiasi file CSS, devi cancellare i file CSS minimizzati",
43
+ "Delete Minified Css & Js" : "Cancellare CSS e JS minimizzati",
44
+ "Delete Minified Css" : "Cancellare CSS minimizzati",
45
+ "Don't show the cached version for mobile devices" : "Non mostrare la cache per i dispositivi mobili",
46
+ "Leverage Browser Caching" : "Aumentare l'utilizzo della cache del browser",
47
+ "Reduce the load times of pages by storing commonly used files from your website on your visitors browser." : "Ridurre i tempi di caricamento delle pagine memorizzando i file comunemente usati dal tuo sito web sul browser dei tuoi visitatori",
48
+ "Reduce page load times for repeat visitors" : "Ridurre il tempo di caricamento delle pagine per i visitatori frequenti",
49
+ "Particularly effective on websites where users regularly re-visit the same areas of the website" : "Molto efficiente nei siti web i cui utenti visitano le stesse pagine frequentemente",
50
+ "Don't show the cached version for logged-in users" : "Non mostrare la cache per gli utenti connessi",
51
+ "Support Us" : "Supportaci",
52
+ "If you like it, Please vote and support us." : "Se ti piace il plugin, per favore vota e supportaci.",
53
+ "Reduce HTTP requests through combined css files" : "Ridurre le richieste HTTP tramite file css combinati",
54
+ "Decreasing the number of components on a page reduces the number of HTTP requests required to render the page, resulting in faster page loads." : "Diminuire il numero di componenti su una pagina riduce il numero di richieste HTTP necessarie per generare la pagina, ci&ograve; rende il caricamento della pagina pi&ugrave; veloce.",
55
+ "This feature combines the JS files between <head></head>. Decreasing the number of javascript files on a page reduces the number of HTTP requests required to render the page, resulting in faster page loads." : "Questa opzione combina i file js presenti tra i tag &#60;head&#62;&#60;/head&#62;. Diminuire il numero di file javascript su una pagina riduce il numero di richieste HTTP necessarie per generare la pagina, ciò rende il caricamento della pagina più veloce.",
56
+ "Combine Css" : "Combinare CSS",
57
+ "Reduce HTTP requests through combined js files" : "Ridurre le richieste HTTP tramite file js combinati",
58
+ "*** Attention ***" : "*** Attenzione ***",
59
+ "Open .htaccess and remove this rule" : "Aprire .htaccess e rimuovere questa regola",
60
+ "Remove render-blocking JavaScript" : "Rimuovi il codice JavaScript che blocca la visualizzazione",
61
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "Se il server non supporta mod_expires.c, questa opzione pu&ograve; causare l'errore Internel Server (500). Se riscontrate tale errore si prega di eseguire i passaggi che seguono."
62
+ };
js/lang/ja.js ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "全てのキャッシュファイルは指定された時間毎に削除されます。",
3
+ "First Job Time" : "最初の実行時間:",
4
+ "Frequency" : "頻度:",
5
+ "Choose One" : "選択してください",
6
+ "Once Every 15 Minutes" : "15 分毎に 1 回",
7
+ "Twice an Hour" : "30 分毎に 1 回",
8
+ "Once an hour" : "1 時間に 1 回",
9
+ "Once an Hour" : "1 時間に 1 回",
10
+ "Once a day" : "1 日に 1 回",
11
+ "Once a Day" : "1 日に 1 回",
12
+ "Twice a day" : "1 日に 2 回",
13
+ "Once Every 6 Hours" : "6 時間毎に 1 回",
14
+ "Once a Week" : "週に 1 回",
15
+ "Once a Month" : "月に 1 回",
16
+ "Next due" : "次の実行",
17
+ "Schedule" : "スケジュール",
18
+ "Server time" : "サーバーの時間",
19
+ "Minify HTML" : "HTML の圧縮",
20
+ "You can decrease the size of page" : "HTML を圧縮してページサイズを小さくする",
21
+ "WP Fastest Cache Options" : "WP Fastest Cache の設定",
22
+ "Options have been saved" : "設定を保存しました",
23
+ ".htacces is not writable" : ".htaccessファイルが書き込み可能ではありません",
24
+ "All cache files have been deleted" : "キャッシュファイルを削除しました",
25
+ "Language" : "言語",
26
+ "Japanese" : "日本語",
27
+ "Settings" : "設定",
28
+ "Delete Cache" : "キャッシュの削除",
29
+ "Cache Timeout" : "キャッシュの有効期限",
30
+ "Cache System" : "キャッシュ",
31
+ "Enable" : "有効にする",
32
+ "New Post" : "新しい投稿",
33
+ "Clear all cache files when a post or page is published" : "投稿や固定ページが公開されたときに全てのキャッシュファイルをクリアする",
34
+ "Submit" : "変更を保存",
35
+ "Delete Now" : "今すぐキャッシュを削除",
36
+ "You can delete all cache files" : "キャッシュファルダ内の全てのキャシュを削除",
37
+ "Target folder" : "対象ディレクトリ",
38
+ "It will active in the next version" : "Das wird in der nächsten Version aktiv sein",
39
+ "Minify Css" : "CSS の圧縮",
40
+ "You can decrease the size of css files" : "CSS ファイルを圧縮する",
41
+ "Reduce HTTP requests through combined css files" : "CSS ファイルを結合してHTTPリクエスト数を減らす",
42
+ "Combine Js" : "JS の結合",
43
+ "Reduce HTTP requests through combined js files" : "JavaScript ファイルを結合してHTTPリクエスト数を減らす",
44
+ "Gzip" : "Gzip 圧縮",
45
+ "Reduce the size of files sent from your server" : "サーバーから送信されるファイルをGzip圧縮する",
46
+ "Premium" : "プレミアム",
47
+ "Exclude" : "除外する",
48
+ "Exclude Pages" : "除外するページ",
49
+ "You can stop to create cache for specific pages" : "特定のページのキャッシュの作成を停止することができます",
50
+ "Start With" : "で始まる",
51
+ "Contain" : "を含む",
52
+ "Exact" : "に一致する",
53
+ "Having Issues?" : "問題が発生した場合",
54
+ "You can create a ticket" : "チケットを作成してください",
55
+ "WordPress support forum" : "WordPress サポートフォーラム",
56
+ "Compacting HTML code, including any inline JavaScript and CSS contained in it, can save many bytes of data and speed up downloading, parsing, and execution time." : "Compacting HTML code, including any inline JavaScript and CSS contained in it, can save many bytes of data and speed up downloading, parsing, and execution time.",
57
+ "Compacting CSS code can save many bytes of data and speed up downloading, parsing, and execution time." : "Compacting CSS code can save many bytes of data and speed up downloading, parsing, and execution time.",
58
+ "Enable Gzip Compression" : "Enable Gzip Compression",
59
+ "Increase page speed" : "Increase page speed",
60
+ "Reduce sizes of pages by up to 70%" : "Reduce sizes of pages by up to 70%",
61
+ "Reduce the size of files sent from your server to increase the speed to which they are transferred to the browser." : "Reduce the size of files sent from your server to increase the speed to which they are transferred to the browser.",
62
+ "Cost-benefit ratio: high" : "Cost-benefit ratio: high",
63
+ "All cache files will be removed as well" : "同時に全てのキャッシュファイルも削除されます。",
64
+ "If you modify any css file, you have to delete minified css files" : "CSS/JS ファイルを変更した場合、圧縮されている CSS/JS ファイルを削除する必要があります。",
65
+ "Delete Cache and Minified CSS/JS" : "キャッシュと圧縮された CSS/JS ファイルを削除",
66
+ "Mobile" : "モバイル",
67
+ "Don't show the cached version for desktop to mobile devices" : "モバイルユーザーに対してキャッシュを表示しない",
68
+ "Permission of <strong>/wp-content/cache</strong> must be <strong>755</strong>" : "<strong>/wp-content/cache</strong> のパーミッションを <strong>755</strong> にしてください。",
69
+ // new
70
+ "Support Us" : "支援する",
71
+ "If you like it, Please vote and support us." : "WP Fastest Cacheのレビューを投稿して私達を支援してください。",
72
+ "Reduce the load times of pages by storing commonly used files from your website on your visitors browser." : "Reduce the load times of pages by storing commonly used files from your website on your visitors browser.",
73
+ "Particularly effective on websites where users regularly re-visit the same areas of the website" : "Particularly effective on websites where users regularly re-visit the same areas of the website",
74
+ "Browser Caching" : "ブラウザキャッシュ",
75
+ "Reduce page load times for repeat visitors" : "ブラウザキャッシュを利用してロード時間を短縮する",
76
+ "Don't show the cached version for logged-in users" : "ログインユーザーに対してキャッシュを表示しない",
77
+ "Already deleted" : "キャッシュファイルを削除しました",
78
+ "Reduce HTTP requests through combined files" : "Reduce HTTP requests through combined files",
79
+ "Decreasing the number of components on a page reduces the number of HTTP requests required to render the page, resulting in faster page loads." : "Decreasing the number of components on a page reduces the number of HTTP requests required to render the page, resulting in faster page loads.",
80
+ "Combine Css" : "CSS の結合",
81
+ "*** Attention ***" : "*** 注意事項 ***",
82
+ "Open .htaccess and remove this rule" : ".htaccess ファイルを開いて下記のルールを削除してください。",
83
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "サーバーが mod_expires.c をサポートしていない場合、このオプションを有効にするとインターネットサーバーエラー(500)を引き起こす可能性があります。このようなエラーが表示された場合は以下の手順を行ってください。",
84
+ "Remove Comments" : "コメントの削除",
85
+ "Remove the comment tags between <head></head>" : "head タグ内のコメントタグを削除する",
86
+ "More powerful minify html" : "HTML を強力に圧縮してページサイズを小さくする",
87
+ "Minify the combined js files" : "結合した JS ファイル圧縮する",
88
+ ".htaccess is not writable" : ".htaccessファイルが書き込み可能ではありません",
89
+ "WP Super Cache needs to be deactive" : "WP Super Cache を無効にしてください",
90
+ "The plugin does not work with Multisite" : "マルチサイトでは利用できません",
91
+ "Create cache for mobile theme" : "モバイルテーマのキャッシュを作成する",
92
+ "Mobile Theme" : "モバイルテーマ",
93
+ "Image Optimization" : "画像の最適化",
94
+ "Optimize Image Tool" : "画像最適化ツール",
95
+ "All" : "全ての",
96
+ "Pending" : "保留",
97
+ "Errors" : "エラー",
98
+ "Optimized Images" : "最適化済",
99
+ "Total Reduction" : "合計削減数",
100
+ "Succeed" : "成功",
101
+ "Show Images" : "画像リストの表示",
102
+ "Hide Images" : "画像リストを隠す",
103
+ "File Name" : "ファイル名",
104
+ "Reduction" : "削減数",
105
+ "Date" : "日付",
106
+ "Revert" : "元に戻す",
107
+ "All" : "全て",
108
+ "Backup Image" : "画像のバックアップ",
109
+ "Logged-in Users" : "ログインユーザー",
110
+ "Minify HTML Plus" : "HTML の圧縮プラス",
111
+ "Combine Js Plus" : "JS の結合プラス",
112
+ "Cache Statics" : "キャッシュの統計",
113
+ "In the premium version there are some new features which speed up the sites more." : "プレミアムバージョンにはサイトをもっと加速するいくつかの新機能があります。",
114
+ "You need to pay before downloading the premium version." : "ダウンロードする前にプレミアムバージョンの料金をお支払いいただく必要があります。",
115
+ "You can download and update the premium when you want if you paid." : "お支払い完了後にプレミアムバージョンのダウンロードとアップデートが可能になります。",
116
+ "Discover Features" : "新機能",
117
+ "Checkout" : "お支払い",
118
+ "Download & Update" : "ダウンロードとアップデート",
119
+ "New Features" : "追加される新機能",
120
+ "The download button will be available after paid. You can buy the premium version now." : "お支払い完了後にプレミアムバージョンのダウンロードが可能になります。現在プレミアムバージョンを購入可能です。",
121
+ "Please don't delete the free version. Premium version works with the free version." : "無料版を削除しないでください。プレミアムバージョンは無料版と合わせて動作します。",
122
+ "Purchased" : "購入済",
123
+ "Delete Cache Logs" : "キャッシュの削除履歴",
124
+ "No Update" : "更新はありません",
125
+ "Get It Now!" : "今すぐ入手!",
126
+ "Just" : "たったの",
127
+ "Read More" : "もっとみる",
128
+ "[Read More]" : "[もっとみる]",
129
+ "Mobile Cache" : "モバイルキャッシュ",
130
+ "Remove render-blocking JavaScript" : "レンダリングをブロックする JavaScript を除去してください",
131
+ "Optimize All" : "すべての最適化",
132
+ };
js/lang/nl.js ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "Alle bestanden in de cache worden verwijderd op het opgegeven tijdstip.",
3
+ "Choose One" : "Kies een",
4
+ "Once an hour": "Eenmaal per uur",
5
+ "Once a day": "Eenmaal per dag",
6
+ "Twice a day": "Tweemaal per dag",
7
+ "Next due": "De volgende",
8
+ "Schedule": "Schema",
9
+ "Server time": "Server tijd",
10
+ "You can decrease the size of page" : "U kunt de grootte van de pagina te verminderen",
11
+ "WP Fastest Cache Options": "WP Fastest Cache opties",
12
+ "Options have been saved" : "Opties zijn opgeslagen",
13
+ ".htacces is not writable": ".htacces is niet schrijfbaar",
14
+ "All cache files have been deleted" : "Alle cache bestanden zijn verwijderd",
15
+ "Language" : "Taal",
16
+ "Settings" : "Instellingen",
17
+ "Delete Cache" : "Verwijder Cache",
18
+ "Cache Timeout" : "Cache Timeout",
19
+ "Cache System" : "Cache systeem",
20
+ "Enable" : "Activeer",
21
+ "New Post" : "Nieuwe post",
22
+ "Clear cache files when a post or page is published" : "Wis cache-bestanden wanneer er een post of pagina wordt gepubliceerd",
23
+ "Submit" : "Verzenden",
24
+ "Delete Now" : "Verwijder nu",
25
+ "You can delete all cache files" : "U kunt alle cache bestanden te verwijderen",
26
+ "Target folder" : "Doel map",
27
+ "It will active in the next version" : "Het zal actief zijn in de volgende versie",
28
+ "You can decrease the size of css files" : "Je kunt de CSS-bestanden verkleinen",
29
+ "Reduce the size of files sent from your server" : "Verminder de grootte van de bestanden die zijn verzonden vanaf uw server",
30
+ "Having Issues?" : "Problemen?",
31
+ "You can create a ticket" : "Je kunt een ticket aanmaken",
32
+ "WordPress support forum" : "WordPress support forum",
33
+ "Enable Gzip Compression" : "Schakel Gzip Compression in",
34
+ "Increase page speed" : "Verhoog de pagina snelheidr",
35
+ "Reduce sizes of pages by up to 70%" : "Verminder groottes van pagina's met maximaal 70%",
36
+ "Cost-benefit ratio: high" : "Kosten-baten ratio: hoog",
37
+ "All cache files will be removed as well" : "Alle cache bestanden zullen ook worden verwijderd",
38
+ "If you modify any css file, you have to delete minified css files" : "Als u een css-bestand wijzigt, moet u de minified css bestanden verwijderen",
39
+ "Delete Minified Css" : "Verwijder Minified Css",
40
+ "Don't show the cached version for desktop to mobile devices" : "Laat de gecachte versie voor desktop niet zien op mobiele apparaten",
41
+ "Browser Caching" : "Browser Caching",
42
+ "Reduce page load times for repeat visitors" : "Verminder de pagina laadtijd voor terugkerende bezoekers",
43
+ "Don't show the cached version for logged-in users" : "Laat de gecachte versie voor ingelogde gebruikers niet zien",
44
+ "Support Us" : "Steun ons",
45
+ "If you like it, Please vote and support us." : "Als je het leuk vindt, vergeet niet te stemmen en ons te steunen.",
46
+ "Reduce HTTP requests through combined css files" : "Verminder de HTTP-verzoeken door de css files te combineren",
47
+ "Reduce HTTP requests through combined js files" : "Verminder HTTP-verzoeken door de js bestanden te combineren",
48
+ "Combine Css" : "Combineren van CSS",
49
+ "Combine Js" : "Combineren van JS",
50
+ "Minify Css" : "Verkleinen van CSS",
51
+ "Minify HTML" : "Verkleinen van HTML",
52
+ "*** Attention ***" : "*** Let op ***",
53
+ "Open .htaccess and remove this rule" : "Open .htaccess en verwijder deze regel",
54
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "Als uw server niet mod_expires.c ondersteunt, kan deze optie een interne Server Error (500) tot gevolg hebben. Als je een dergelijke fout ziet doe dan de onderstaande stappen.",
55
+ "Remove Comments" : "Verwijder de reacties",
56
+ "Remove the comment tags between <head></head>" : "Verwijder de commentaar-tags tussen de <head> </ head>",
57
+ "More powerful minify html" : "Meer krachtige optie om html te verkleineren",
58
+ "Minify the combined js files" : "Het verkleineren de gecombineerde js bestanden",
59
+ ".htaccess is not writable" : ".htaccess Is niet beschrijfbaar",
60
+ "WP Super Cache needs to be deactive" : "WP Super Cache deactive moet worden",
61
+ "The plugin does not work with Multisite" : "De plugin werkt niet met Multisite WP",
62
+ "Create cache for mobile theme" : "Maak cache voor mobiele thema",
63
+ "Mobile Theme" : "Mobile Thema",
64
+ "Mobile" : "Mobile",
65
+ "Image Optimization" : "Afbeeldingen Optimaliseren",
66
+ "Optimize Image Tool" : "Afbeelding optimalisatie tool",
67
+ "All" : "Alle",
68
+ "Pending" : "In afwachting",
69
+ "Errors" : "Fouten",
70
+ "Optimized Images" : "Geoptimaliseerde afbeeldingen",
71
+ "Total Reduction" : "Totale reductie",
72
+ "Succeed" : "Geslaagd",
73
+ "Show Images" : "Laat afbeeldingen zien",
74
+ "Hide Images" : "Verberg afbeeldingen",
75
+ "File Name" : "Bestandsnaam",
76
+ "Reduction" : "Reductie",
77
+ "Date" : "Datum",
78
+ "Revert" : "Herstel",
79
+ "Backup Image" : "Backup afbeelding",
80
+ "All" : "Alles",
81
+ "Backup Image" : "Backup afbeelding",
82
+ "Logged-in Users" : "Ingelogde gebruikers",
83
+ "Minify HTML Plus" : "Verkleineren HTML extra",
84
+ "Combine Js Plus" : "Combineren van Js extra",
85
+ "Minify Css Plus" : "Verkleineren CSS extra",
86
+ "More powerful minify css" : "Het meer krachtige verkleinen van CSS",
87
+ "Cache Statics" : "Cache statistieken",
88
+ "In the premium version there are some new features which speed up the sites more." : "In de premium-versie zijn er een aantal nieuwe functies die meer snelheid brengen in de website.",
89
+ "You need to pay before downloading the premium version." : "Je moet betalen voor het downloaden van de premium versie.",
90
+ "You can download and update the premium when you want if you paid." : "Je kunt de premium versie downloaden en actualiseren wanneer er is betaald.",
91
+ "Discover Features" : "Ontdek de features",
92
+ "Checkout" : "Kassa",
93
+ "Download & Update" : "Download & Update",
94
+ "New Features" : "Nieuwe functies",
95
+ "The download button will be available after paid. You can buy the premium version now." : "De download knop zal beschikbaar zijn nadat er is betaald. U kunt de premium-versie nu te kopen.",
96
+ "Please don't delete the free version. Premium version works with the free version." : "Verwijder de gratis versie niet, de premium-versie werkt met de gratis versie.",
97
+ "Purchased" : "Gekocht",
98
+ "Delete Cache Logs" : "Verwijder de cache log bestanden",
99
+ "No Update" : "Geen update",
100
+ "Get It Now!" : "Haal hem nu",
101
+ "Just" : "Juist",
102
+ "Exclude" : "Sluit uit",
103
+ "Exclude Pages" : "Uitsluiten van pagina's",
104
+ "Start With" : "Start met",
105
+ "You can stop to create cache for specific pages" : "Je kunt stoppen om cache te creëren voor specifieke pagina's",
106
+ "Read More" : "Lees verder",
107
+ "Contain" : "Bevat",
108
+ "Exact" : "Exact",
109
+ "Error Occured" : "Er is een fout opgetreden",
110
+ "/wp-content/plugins/ is not writable" : "/wp-content/plugins/ is niet schrijfbaar",
111
+ "Please read the tutorial" : "Lees de handleiding",
112
+ "You need to activate the premium plugin manually" : "Je moet de premie plugin handmatig activeren",
113
+ "Continue" : "Doorgaan",
114
+ "Minify Js" : "Verklein JS",
115
+ "Remove render-blocking JavaScript" : "Verwijder JavaScript-code die het laden blokkeert",
116
+ "You can decrease the size of js files" : "Je kunt de grootte van JS bestanden verkleinen"
117
+ };
js/lang/pl.js ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "Wszystkie pliki cache są usuwane w określonym czasie" ,
3
+ "Choose One" : "Wybierz jeden" ,
4
+ "Once an hour": "Raz na godzinę" ,
5
+ "Once a day": "Raz dziennie" ,
6
+ "Twice a day": "Dwa razy na dzień" ,
7
+ "Next due": "Następne zadanie" ,
8
+ "Schedule": "Harmonogram" ,
9
+ "Server time": "Czas serwerowy" ,
10
+ "You can decrease the size of page" : "Pozwala zmniejszyć wagę witryny" ,
11
+ "WP Fastest Cache Options": "WP Fastest Cache Opcje" ,
12
+ "Options have been saved" : "Opcje zostały zapisane" ,
13
+ ".htacces is not writable": ".htacces nie jest edytowalny" ,
14
+ "All cache files have been deleted" : "Wszystkie pliki cache zostały usunięte" ,
15
+ "Language" : "Język" ,
16
+ "Settings" : "Ustawienia" ,
17
+ "Cache Timeout" : "Limit czasu Cache" ,
18
+ "Delete Cache" : "Usuń cache" ,
19
+ "Cache System" : "System buforowania" ,
20
+ "Enable" : "Włącz" ,
21
+ "New Post" : "Nowy post" ,
22
+ "Clear cache files when a post or page is published" : "Wyczyść zbuforowane pliki, gdy opublikowano nowy post lub stronę" ,
23
+ "Submit" : "Wyślij" ,
24
+ "Delete Now" : "Usuń teraz" ,
25
+ "You can delete all cache files" : "Możesz usunąć wszystkie pliki cache" ,
26
+ "Target folder" : "Folder docelowy" ,
27
+ "It will active in the next version" : "To będzie aktywne w następnej w następnej wersji" ,
28
+ "You can decrease the size of css files" : "Pozwala zmniejszyć rozmiar plików CSS" ,
29
+ "Reduce the size of files sent from your server" : "Zmniejsza rozmiar plików wysłanych z Twojego serwera" ,
30
+ "Having Issues?" : "Masz problem?" ,
31
+ "You can create a ticket" : "Możesz stworzyć zgłoszenie" ,
32
+ "WordPress support forum" : "Forum wsparcia technicznego WordPress" ,
33
+ "Enable Gzip Compression" : "Włącz kompresję Gzip" ,
34
+ "Increase page speed" : "Wzrost szybkośći strony" ,
35
+ "Reduce sizes of pages by up to 70%" : "Zredukuj rozmiar stron aż do 70%" ,
36
+ "Cost-benefit ratio: high" : "" ,
37
+ "All cache files will be removed as well" : "Wszystkie pliki cache będą również usunięte" ,
38
+ "If you modify any css file, you have to delete minified css files" : "Jeśli modyfikujesz jakikolwiek plik CSS, musisz usunąć zminifikowany plik CSS" ,
39
+ "Delete Minified Css" : "Usuń zminifikowany plik CSS" ,
40
+ "Don't show the cached version for desktop to mobile devices" : "Nie pokazuj wersji zbuforowanej dla PC na urządzeniach przenośnych" ,
41
+ "Browser Caching" : "Pamięć podręczna przeglądarki" ,
42
+ "Reduce page load times for repeat visitors" : "Skróć czas ładowania witryny dla często odwiedzających użytkowników" ,
43
+ "Don't show the cached version for logged-in users" : "Nie pokazuj wersji zbuforowanej zalogowanym użytkownikom" ,
44
+ "Support Us" : "Wesprzyj nas" ,
45
+ "If you like it, Please vote and support us." : "Jeśli to lubisz, zagłosuj i wesprzyj nas" ,
46
+ "Reduce HTTP requests through combined css files" : "Zmniejsza ilość zapytań HTTP poprzez połączenie plików CSS" ,
47
+ "Reduce HTTP requests through combined js files" : "Zmniejsza ilość zapytań HTTP poprzez połączenie plików JavaScript" ,
48
+ "Combine Css" : "Połącz CSS" ,
49
+ "Combine Js" : "Połącz JavaScript" ,
50
+ "Minify Css" : "Minifikacja CSS" ,
51
+ "Minify HTML" : "Minifikacja HTML" ,
52
+ "Minify Js" : "Minifikacja JavaScript" ,
53
+ "You can decrease the size of js files" : "Pozwala zmniejszyć rozmiar plików JavaScript" ,
54
+ "*** Attention ***" : "*** UWAGA ***" ,
55
+ "Open .htaccess and remove this rule" : "Otwórz plik .htaccess i usuń tę regułę" ,
56
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "Jeśli twój serwer nie wspiera mod_expires.c, ta opcja może spowodować Internal Server Error (500). Jeśli widzisz podobny błąd, postępuj według wymienionych poniżej kroków" ,
57
+ "Remove Comments" : "Usuń komentarze" ,
58
+ "Remove the comment tags between <head></head>" : "Usuń komentarze w sekcji <head></head>" ,
59
+ "More powerful minify html" : "Pozwala zmniejszyć wagę witryny jeszcze bardziej" ,
60
+ "Minify the combined js files" : "Minifikuj połączone pliki JavaScript" ,
61
+ ".htaccess is not writable" : ".htacess nie jest edytowalny" ,
62
+ "WP Super Cache needs to be deactive" : "WP Super Cache musi zostać deaktywowany" ,
63
+ "The plugin does not work with Multisite" : "Ta wtyczka nie obsługuję Multisite" ,
64
+ "Create cache for mobile theme" : "Stwórz bufor dla wersji mobilnej szablonu" ,
65
+ "Mobile Theme" : "Wersja mobilna szablonu" ,
66
+ "Mobile" : "Wersja mobilna" ,
67
+ "Image Optimization" : "Optymalizacja obrazu" ,
68
+ "Optimize Image Tool" : "Narzędzie do optymalizacji obrazu" ,
69
+ "All" : "Wszystkie pliki" ,
70
+ "Pending" : "W oczekiwaniu" ,
71
+ "Errors" : "Błędy" ,
72
+ "Optimized Images" : "Zoptymalizowane obrazy" ,
73
+ "Total Reduction" : "Całkowita redukcja" ,
74
+ "Succeed" : "Osiągnięto sukces" ,
75
+ "Show Images" : "Pokaż obrazy" ,
76
+ "Hide Images" : "Ukryj obrazy" ,
77
+ "File Name" : "Nazwa pliku" ,
78
+ "Reduction" : "Redukcja" ,
79
+ "Date" : "Data" ,
80
+ "Revert" : "Przywróć" ,
81
+ "Backup Image" : "Przywróć obraz" ,
82
+ "All" : "Wszystkie" ,
83
+ "Logged-in Users" : "Zalogowani użytkownicy" ,
84
+ "Minify HTML Plus" : "Minifikacja HTML Plus" ,
85
+ "Minify Css Plus" : "Minifikacja CSS Plus",
86
+ "More powerful minify css" : "Pozwala zmniejszyć rozmiar plików CSS jeszcze bardziej",
87
+ "Combine Js Plus" : "Połącz JavaScript Plus" ,
88
+ "Cache Statics" : "Statystyki cache" ,
89
+ "In the premium version there are some new features which speed up the sites more." : "W wersji premium jest wiele nowych funkcji, które zwiększą prędkość stron",
90
+ "You need to pay before downloading the premium version." : "Musisz zapłacić zanim pobierzesz wersje premium" ,
91
+ "You can download and update the premium when you want if you paid." : "Możesz pobrać i aktualizować wersję premium kiedy tylko chcesz, jeśli zapłacisz" ,
92
+ "Discover Features" : "Odkryj nowe funkcje" ,
93
+ "Checkout" : "Sprawdź" ,
94
+ "New Features" : "Nowe funkcje" ,
95
+ "The download button will be available after paid. You can buy the premium version now." : "Przycisk pobierania będzie dostępny po dokonaniu zapłaty. Możesz teraz kupić wersję premium" ,
96
+ "Please don't delete the free version. Premium version works with the free version." : "Proszę nie usuwać wersji darmowej, gdyż wersja premium z nią współpracuje" ,
97
+ "Purchased" : "Zakupiono" ,
98
+ "Delete Cache Logs" : "Usuń logi cache" ,
99
+ "No Update" : "Brak aktualizacji" ,
100
+ "Get It Now!" : "Kup Teraz!" ,
101
+ "Just" : "Tylko" ,
102
+ "Exclude" : "Wyklucz" ,
103
+ "Exclude Pages" : "Wykluczone strony" ,
104
+ "Start With" : "Rozpocznij z" ,
105
+ "You can stop to create cache for specific pages" : "Możesz wyłączyć tworzenie cache dla wybranych stron" ,
106
+ "Read More" : "Czytaj więcej" ,
107
+ "Contain" : "Zawiera" ,
108
+ "Exact" : "Dokładny",
109
+ "Error Occured" : "Wystąpił błąd",
110
+ "/wp-content/plugins/ is not writable" : "/wp-content/plugins/ nie jest edytowalny",
111
+ "Please read the tutorial" : "Proszę przeczytać poradnik",
112
+ "Remove render-blocking JavaScript" : "Usuń kod JavaScript blokujący renderowanie",
113
+ "You need to activate the premium plugin manually" : "Musisz aktywować wersję premium ręcznie",
114
+ "Continue" : "Kontynuuj"
115
+ };
js/lang/pt.js ADDED
@@ -0,0 +1,236 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+
3
+ "All cached files are deleted at the determinated time." : "Todos os ficheiros de cache são eliminados no momento determinado.",
4
+
5
+ "Choose One" : "Escolha uma opção",
6
+
7
+ "Once an hour": "Uma vez por hora",
8
+
9
+ "Once a day": "Uma vez por dia",
10
+
11
+ "Twice a day": "Duas vezes por dia",
12
+
13
+ "Next due": "Próximo horário",
14
+
15
+ "Schedule": "Agendamento",
16
+
17
+ "Server time": "Hora do servidor",
18
+
19
+ "You can decrease the size of page" : "Reduz o tamanho das páginas",
20
+
21
+ "WP Fastest Cache Options": "Opções do WP Fastest Cache",
22
+
23
+ "Options have been saved" : "As opções foram guardadas",
24
+
25
+ ".htacces is not writable": "O ficheiro .htaccess não é editável",
26
+
27
+ "All cache files have been deleted" : "Todos os ficheiros de cache foram eliminados",
28
+
29
+ "Language" : "Idioma",
30
+
31
+ "Settings" : "Definições",
32
+
33
+ "Delete Cache" : "Eliminar cache",
34
+
35
+ "Cache Timeout" : "Tempo máximo de cache",
36
+
37
+ "Cache System" : "Sistema de cache",
38
+
39
+ "Enable" : "Activar",
40
+
41
+ "New Post" : "Novo conteúdo",
42
+
43
+ "Clear cache files when a post or page is published" : "Elimina os ficheiros de cache ao publicar um conteúdo ou página",
44
+
45
+ "Submit" : "Submeter",
46
+
47
+ "Delete Now" : "Eliminar agora",
48
+
49
+ "You can delete all cache files" : "Permite eliminar todos os ficheiros de cache",
50
+
51
+ "Target folder" : "Pasta de destino",
52
+
53
+ "It will active in the next version" : "Estará activo na próxima versão",
54
+
55
+ "You can decrease the size of css files" : "Permite reduzir o tamanho dos ficheiros CSS",
56
+
57
+ "Reduce the size of files sent from your server" : "Reduz o tamanho dos ficheiros enviados do seu servidor",
58
+
59
+ "Having Issues?" : "Está com problemas?",
60
+
61
+ "You can create a ticket" : "Pode criar um pedido de suporte",
62
+
63
+ "WordPress support forum" : "Fórum de suporte do WordPress",
64
+
65
+ "Enable Gzip Compression" : "Activar compressão GZIP",
66
+
67
+ "Increase page speed" : "Aumenta a velocidade das páginas",
68
+
69
+ "Reduce sizes of pages by up to 70%" : "Reduz o tamanho das páginas até 70%",
70
+
71
+ "Cost-benefit ratio: high" : "Custo-benefício: alto",
72
+
73
+ "All cache files will be removed as well" : "Todos os ficheiros de cache serão também removidos",
74
+
75
+ "If you modify any css file, you have to delete minified css files" : "Se modificar algum ficheiro CSS, deverá eliminar os ficheiros CSS minificados.",
76
+
77
+ "Delete Minified Css" : "Eliminar CSS minificado",
78
+
79
+ "Don't show the cached version for desktop to mobile devices" : "Não mostrar as versões de cache para desktop em dispositivos móveis",
80
+
81
+ "Browser Caching" : "Cache no navegador",
82
+
83
+ "Reduce page load times for repeat visitors" : "Reduz o tempo de carga das páginas para visitantes recorrentes",
84
+
85
+ "Don't show the cached version for logged-in users" : "Não mostrar a versão em cache a utilizadores autenticados",
86
+
87
+ "Support Us" : "Apoie-nos",
88
+
89
+ "If you like it, Please vote and support us." : "Se gostar deste plugin, por favor vote e mostre seu apoio ao nosso trabalho.",
90
+
91
+ "Reduce HTTP requests through combined css files" : "Reduz pedidos HTTP ao combinar ficheiros CSS",
92
+
93
+ "Reduce HTTP requests through combined js files" : "Reduz pedidos HTTP ao combinar ficheiros JavaScript",
94
+
95
+ "Combine Css" : "Combinar CSS",
96
+
97
+ "Combine Js" : "Combinar JS",
98
+
99
+ "Minify Css" : "Minificar CSS",
100
+
101
+ "Minify HTML" : "Minificar HTML",
102
+
103
+ "*** Attention ***" : "*** Atenção ***",
104
+
105
+ "Open .htaccess and remove this rule" : "Abra o arquivo .htaccess e remova esta regra",
106
+
107
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "Se seu servidor não suportar mod_expires.c, esta opção poderá gerar um erro 500 (Internal Server Error). Se receber este erro, execute os passos abaixo.",
108
+
109
+ "Remove Comments" : "Remover comentários (no código)",
110
+
111
+ "Remove the comment tags between <head></head>" : "Remover tags de comentários entre <head></head>",
112
+
113
+ "More powerful minify html" : "Minificador de HTML mais poderoso",
114
+
115
+ "Minify the combined js files" : "Minificar os ficheiros JS combinados",
116
+
117
+ ".htaccess is not writable" : "O ficheiro .htaccess não é editável",
118
+
119
+ "WP Super Cache needs to be deactive" : "Tem de desactivar o WP Super Cache",
120
+
121
+ "The plugin does not work with Multisite" : "Este plugin não é compatível com multisite",
122
+
123
+ "Create cache for mobile theme" : "Criar cache do tema para dispositivos móveis",
124
+
125
+ "Mobile Theme" : "Tema para dispositivos móveis",
126
+
127
+ "Mobile" : "Modo dispositivos móveis",
128
+
129
+ "Image Optimization" : "Optimização de imagens",
130
+
131
+ "Optimize Image Tool" : "Ferramenta de optimização de imagens",
132
+
133
+ "All" : "Todos",
134
+
135
+ "Pending" : "Pendente",
136
+
137
+ "Errors" : "Erros",
138
+
139
+ "Optimized Images" : "Imagens optimizadas",
140
+
141
+ "Total Reduction" : "Redução total",
142
+
143
+ "Succeed" : "Bem sucedido",
144
+
145
+ "Show Images" : "Mostrar imagens",
146
+
147
+ "Hide Images" : "Ocultar imagens",
148
+
149
+ "File Name" : "Nome do ficheiro",
150
+
151
+ "Reduction" : "Redução",
152
+
153
+ "Date" : "Data",
154
+
155
+ "Revert" : "Reverter",
156
+
157
+ "Backup Image" : "Cópia de segurança da imagem",
158
+
159
+ "All" : "Todas",
160
+
161
+ "Backup Image" : "Cópia de segurança da imagem",
162
+
163
+ "Logged-in Users" : "Utilizadores autenticados",
164
+
165
+ "Minify HTML Plus" : "Minify HTML Plus",
166
+
167
+ "Combine Js Plus" : "Combine Js Plus",
168
+
169
+ "Cache Statics" : "Estatísticas da cache",
170
+
171
+ "In the premium version there are some new features which speed up the sites more." : "Na versão premium tem outras funcionalidades que vão acelerar ainda mais o seu site.",
172
+
173
+ "You need to pay before downloading the premium version." : "É necessário efectuar o pagamento antes de descarregar a versão premium.",
174
+
175
+ "You can download and update the premium when you want if you paid." : "Depois de efectuar o pagamento, poderá descarregar e actualizar a versão premium sempre que desejar.",
176
+
177
+ "Discover Features" : "Conheça a funcionalidades",
178
+
179
+ "Checkout" : "Compra agora",
180
+
181
+ "Download & Update" : "Descarregue agora",
182
+
183
+ "New Features" : "Novas funcionalidades",
184
+
185
+ "The download button will be available after paid. You can buy the premium version now." : "O botão para descarregar estará disponível depois do pagamento. Compre a versão premium agora.",
186
+
187
+ "Please don't delete the free version. Premium version works with the free version." : "Por favor, não elimine a versão gratuita. A versão premium funciona em conjunto com a versão gratuita.",
188
+
189
+ "Purchased" : "Comprado",
190
+
191
+ "Delete Cache Logs" : "Eliminar registos de cache",
192
+
193
+ "No Update" : "Não actualizar",
194
+
195
+ "Get It Now!" : "Compre agora!",
196
+
197
+ "Just" : "Apenas",
198
+
199
+ "Exclude" : "Excluir",
200
+
201
+ "Exclude Pages" : "Excluir páginas",
202
+
203
+ "Start With" : "Começa por",
204
+
205
+ "You can stop to create cache for specific pages" : "Não criar versões de cache de páginas específicas",
206
+
207
+ "Read More" : "Ler mais",
208
+
209
+ "Contain" : "Contém",
210
+
211
+ "Exact" : "É igual a",
212
+
213
+ "Error Occured" : "Ocorreu um erro",
214
+
215
+ "/wp-content/plugins/ is not writable" : "A pasta /wp-content/plugins/ não é editável",
216
+
217
+ "Please read the tutorial" : "Por favor, leia o tutorial",
218
+
219
+ "You need to activate the premium plugin manually" : "Tem de activar manualmente a versão premium",
220
+
221
+ "Continue" : "Continuar",
222
+
223
+ "Minify HTML Plus" : "Minify HTML Plus",
224
+
225
+ "Combine Js Plus" : "Combine JS Plus",
226
+
227
+ "More powerful minify css" : "Minificador de CSS mais poderoso",
228
+
229
+ "Minify Js" : "Minificar JS",
230
+
231
+ "Remove render-blocking JavaScript" : "Remove JavaScript que bloqueia a apresentação",
232
+
233
+ "You can decrease the size of js files" : "Permite reduzir o tamanho dos ficheiros JavaScript",
234
+
235
+ "Is Equal To" : "É igual a"
236
+ };
js/lang/ro.js ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "Toate fisierele din cache vor fi sterse la o data/ora prestabilita ",
3
+ "Choose One" : "Alege",
4
+ "Once an hour": "O data pe ora",
5
+ "Once a day": "O data pe zi",
6
+ "Twice a day": "De 2 ori pe zi",
7
+ "Next due": "Urmatoarea",
8
+ "Schedule": "Programare",
9
+ "Server time": "Data/Ora Server",
10
+ "You can decrease the size of page" : "Poti micsora marimea paginii",
11
+ "WP Fastest Cache Options": "Setari WP Fastest Cache",
12
+ "Options have been saved" : "Setarile au fost salvate",
13
+ ".htacces is not writable": "Fisierul .htaccess nu poate fi modificat",
14
+ "All cache files have been deleted" : "Toate fisierele cache au fost sterse",
15
+ "Language" : "Limba",
16
+ "Settings" : "Setari",
17
+ "Delete Cache" : "Sterge cache",
18
+ "Cache Timeout" : "Expirare cache",
19
+ "Cache System" : "Sistem cache",
20
+ "Enable" : "Activeaza",
21
+ "New Post" : "Post nou",
22
+ "Clear cache files when a post or page is published" : "Sterge cache-ul cand un post sau o pagina sunt publicate",
23
+ "Submit" : "Trimite",
24
+ "Delete Now" : "Sterge acum",
25
+ "You can delete all cache files" : "Poti goli cache-ul",
26
+ "Target folder" : "Director tinta",
27
+ "It will active in the next version" : "Se va activa in versiunea urmatoare",
28
+ "You can decrease the size of css files" : "Poti micsora dimensiunea fisierelor .css",
29
+ "Reduce the size of files sent from your server" : "Micsoreaza dimensiunea fisierelor trimise de server",
30
+ "Having Issues?" : "Aveti probleme?",
31
+ "You can create a ticket" : "Deschide un tichet de suport",
32
+ "WordPress support forum" : "Forum discutii Wordpress",
33
+ "Enable Gzip Compression" : "Activeaza compresia Gzip",
34
+ "Increase page speed" : "Mareste viteaza de incarcare a paginii",
35
+ "Reduce sizes of pages by up to 70%" : "Reduce dimensiunea paginilor cu pana la 70%",
36
+ "Cost-benefit ratio: high" : "Raport cost-beneficiu: maxim",
37
+ "All cache files will be removed as well" : "Toate fisierele cache vor fi sterse de asemenea",
38
+ "If you modify any css file, you have to delete minified css files" : "Daca modificati orice fisier .css trebuie sa stergeti toate .css-urile optimizate",
39
+ "Delete Minified Css" : "Sterge Css-ul optimizat",
40
+ "Don't show the cached version for desktop to mobile devices" : "Nu afisa versiunea optimizata desktop pentru device-urile mobile",
41
+ "Browser Caching" : "Optimizare cache pentru Browser",
42
+ "Reduce page load times for repeat visitors" : "Redu timpii de incarcare pentru visite repetate",
43
+ "Don't show the cached version for logged-in users" : "Nu afisa versiunea optimizata pentru utilizatorii autentificati",
44
+ "Support Us" : "Sustineti-ne",
45
+ "If you like it, Please vote and support us." : "Daca va place, va rugam votati-ne si sustineti-ne",
46
+ "Reduce HTTP requests through combined css files" : "Reducere conexiuni HTTP prin combinarea fisierelor css",
47
+ "Reduce HTTP requests through combined js files" : "Reducere conexiuni HTTP prin combinarea fisierelor js",
48
+ "Combine Css" : "Combina Css",
49
+ "Combine Js" : "Combina Js",
50
+ "Minify Css" : "Optimizeaza Css",
51
+ "Minify HTML" : "Optimizeaza HTML",
52
+ "*** Attention ***" : "*** Atentie ***",
53
+ "Open .htaccess and remove this rule" : "Deschideti .htaccess si stergeti aceasta regula",
54
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "Daca serverul dvs nu are mod_expires.c instalat este posibil sa orimiti mesajul: Internel Server Error (500). Va rugam urmati instructiunile.",
55
+ "Remove Comments" : "Eliminare comentarii",
56
+ "Remove the comment tags between <head></head>" : "Eliminare comentarii din sectiunea <head></head>",
57
+ "More powerful minify html" : "Optimizare avansata pentru HTML",
58
+ "Minify the combined js files" : "Optimizarea js-ului combinat ",
59
+ ".htaccess is not writable" : ".htaccess nu este modificabil",
60
+ "WP Super Cache needs to be deactive" : "WP Super Cache trebuie dezactivat",
61
+ "The plugin does not work with Multisite" : "Acest plugin nu functioneaza cu Multisite",
62
+ "Create cache for mobile theme" : "Create cache pentru varianta mobila",
63
+ "Mobile Theme" : "Tema mobila",
64
+ "Mobile" : "Mobil",
65
+ "Image Optimization" : "Optimizare imaginio",
66
+ "Optimize Image Tool" : "Unealta pentru otimizat imagini",
67
+ "All" : "Toate",
68
+ "Pending" : "In asteptare",
69
+ "Errors" : "Erori",
70
+ "Optimized Images" : "Imagini optimizate",
71
+ "Total Reduction" : "Total economisire",
72
+ "Succeed" : "Reusit",
73
+ "Show Images" : "Arata imaginile",
74
+ "Hide Images" : "Ascunde imaginile",
75
+ "File Name" : "Nume fisier",
76
+ "Reduction" : "Reducere",
77
+ "Date" : "Data",
78
+ "Revert" : "Revenire",
79
+ "Backup Image" : "Backup Imagine",
80
+ "All" : "Toate",
81
+ "Backup Image" : "Backup imagine",
82
+ "Logged-in Users" : "Utilizatpro autentificati",
83
+ "Minify HTML Plus" : "Optimizare HTML Plus",
84
+ "Combine Js Plus" : "Combinare Js Plus",
85
+ "Minify Css Plus" : "Optimizare Css Plus",
86
+ "More powerful minify css" : "Optimizare avansata pentru css",
87
+ "Cache Statics" : "Statistici cache",
88
+ "In the premium version there are some new features which speed up the sites more." : "Versiunea premium contine niste setari ce va vor optimiza site-ul si mai mult",
89
+ "You need to pay before downloading the premium version." : "Trebuie sa platiti inainte sa descarcati versiunea premium",
90
+ "You can download and update the premium when you want if you paid." : "Dupa efectuarea platii puteti descarca sau actualiza versiunea premium cand doriti",
91
+ "Discover Features" : "Descoperiti facilitatile",
92
+ "Checkout" : "Plata",
93
+ "Download & Update" : "Descarcare & Actualizare",
94
+ "New Features" : "Facilitati noi",
95
+ "The download button will be available after paid. You can buy the premium version now." : "Butonul de download va fi disponibil dupa efectuarea platii. Puteti cumpara versiunea premium acum.",
96
+ "Please don't delete the free version. Premium version works with the free version." : "Nu stergeti versiunea gratuita. Versiunea premium functioneaza doar cu versiunea gratuita ",
97
+ "Purchased" : "Cumparat",
98
+ "Delete Cache Logs" : "Sterge jurnalele cache",
99
+ "No Update" : "Niciun update",
100
+ "Get It Now!" : "Obtine-l acum!",
101
+ "Just" : "Doar",
102
+ "Exclude" : "Exclude",
103
+ "Exclude Pages" : "Exclude pagini",
104
+ "Start With" : "Incepe cu",
105
+ "You can stop to create cache for specific pages" : "Poti opri generarea cache-ului pentru anumite pagini",
106
+ "Read More" : "Citeste mai mult",
107
+ "Contain" : "Contine",
108
+ "Exact" : "Exact",
109
+ "Error Occured" : "A intervenit o eroare",
110
+ "/wp-content/plugins/ is not writable" : "/wp-content/plugins/ nu are drepturi de scriere",
111
+ "Please read the tutorial" : "Va rugam sa cititi tutorial-ul",
112
+ "Remove render-blocking JavaScript" : "Eliminați JavaScript care blochează redarea conținutului",
113
+ "You need to activate the premium plugin manually" : "Trebuie sa activati versiunea premium manual",
114
+ "Continue" : "Continuati"
115
+ };
js/lang/ru.js ADDED
@@ -0,0 +1,159 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "Файлы кэша будут удаляться автоматически с выбранной периодичностью.",
3
+ "First Job Time:" : "Время первого запуска:",
4
+ "Frequency:" : "Периодичность:",
5
+ "Choose One" : "Выберите",
6
+ "Once Every 1 Minute" : "Каждую минуту",
7
+ "Once Every 5 Minutes" : "Каждые 5 минут",
8
+ "Once Every 15 Minutes" : "Каждые 15 минут",
9
+ "Twice an Hour" : "Раз в полчаса",
10
+ "Once an hour" : "Раз в час",
11
+ "Once an Hour" : "Раз в час",
12
+ "onceaday" : "Раз в сутки",
13
+ "Once a Day" : "Раз в сутки",
14
+ "Once Every 10 Days" : "Раз в 10 суток",
15
+ "Twice a day" : "Два раза в сутки",
16
+ "Once Every 2 Hours" : "Каждые 2 часа",
17
+ "Once Every 6 Hours" : "Каждые 6 часов",
18
+ "Once a Week" : "Раз в неделю",
19
+ "Once a Month" : "Раз в месяц",
20
+ "Once a Year" : "Раз в год",
21
+ "Next due" : "Следующее событие",
22
+ "Schedule" : "Периодичность",
23
+ "Server time" : "Время сервера",
24
+ "Minify HTML" : "Сжатие HTML",
25
+ "You can decrease the size of page" : "Уменьшает размер HTML-кода страницы",
26
+ "WP Fastest Cache Options" : "Настройки WP Fastest Cache",
27
+ "Options have been saved" : "Настройки сохранены",
28
+ ".htacces is not writable" : "Файл .htacces недоступен для записи",
29
+ ".htaccess is not writable" : "Файл .htaccess недоступен для записи",
30
+ "All cache files have been deleted" : "Все файлы кэша удалены",
31
+ "Language" : "Язык",
32
+ "Settings" : "Настройки",
33
+ "Delete Cache" : "Очистка кэша",
34
+ "Cache Timeout" : "Таймаут кэша",
35
+ "Cache System" : "Кэширование",
36
+ "Enable" : "Включено",
37
+ "New Post" : "Новая запись",
38
+ "Clear cache files when a post or page is published" : "Очищать кэш при публикации новой записи или страницы",
39
+ "Submit" : "Сохранить настройки",
40
+ "Delete Now" : "Очистить сейчас",
41
+ "You can delete all cache files" : "Нажмите, чтобы удалить все файлы кэша.",
42
+ "Target folder" : "Папка",
43
+ "It will active in the next version" : "Эта функция появится в следующей версии",
44
+ "Minify Css" : "Сжатие CSS",
45
+ "You can decrease the size of css files" : "Уменьшает (минифицирует) размер CSS файлов",
46
+ "You can decrease the size of js files" : "Уменьшает (минифицирует) размер JS файлов",
47
+ "Reduce HTTP requests through combined css files" : "Сокращает число запросов к серверу путем объединения CSS файлов в один",
48
+ "Combine Js" : "Объединение JS",
49
+ "Reduce HTTP requests through combined js files" : "Сокращает число запросов к серверу путем объединения JS файлов в один",
50
+ "Gzip" : "Компрессия Gzip",
51
+ "Reduce the size of files sent from your server" : "Уменьшает размер файлов, отправляемых сервером",
52
+ "Premium" : "Премиум",
53
+ "Exclude" : "Исключения",
54
+ "Exclude Pages" : "Исключить страницы",
55
+ "You can stop to create cache for specific pages" : "Вы можете запретить кэширование отдельных страниц.",
56
+ "[How to use this feature]" : "[Как этим пользоваться]",
57
+ "Start With" : "Начинается с",
58
+ "Contain" : "Содержит",
59
+ "Exact" : "Совпадает с",
60
+ "Having Issues?" : "Проблемы с использованием?",
61
+ "You can create a ticket" : "Опишите свою проблему",
62
+ "WordPress support forum" : "в форуме поддержки WordPress",
63
+ "Compacting HTML code, including any inline JavaScript and CSS contained in it, can save many bytes of data and speed up downloading, parsing, and execution time." : "Уменьшение HTML-кода, а также используемых файлов JavaScript и CSS может значительно сократить передаваемый объем данных и ускорить время загрузки и выполнения.",
64
+ "Compacting CSS code can save many bytes of data and speed up downloading, parsing, and execution time." : "Уменьшение CSS-кода может значительно сократить передаваемый объем данных и ускорить время загрузки и выполнения.",
65
+ "Enable Gzip Compression" : "Включить сжатие Gzip",
66
+ "Increase page speed" : "Увеличить скорость загрузки страниц",
67
+ "Reduce sizes of pages by up to 70%" : "Уменьшите объемы страниц до 70%.",
68
+ "Reduce the size of files sent from your server to increase the speed to which they are transferred to the browser." : "Уменьшение объема отправленных вашим сервером файлов приводит к повышению скорости работы браузера при их передаче.",
69
+ "Cost-benefit ratio: high" : "Выгода: высокая",
70
+ "All cache files will be removed as well" : "Все кэшированные файлы также будут удалены.",
71
+ "If you modify any css file, you have to delete minified css files" : "Если вы изменили какой-либо CSS/JS файл, вам потребуется удалить сжатые CSS/JS файлы.",
72
+ "Delete Cache and Minified CSS/JS" : "Очистить кэш и сжатые CSS/JS",
73
+ "Mobile" : "Мобильные",
74
+ "Don't show the cached version for desktop to mobile devices" : "Не показывать кэшированные версии мобильным устройствам",
75
+ "Permission of <strong>/wp-content/cache</strong> must be <strong>755</strong>" : "Права на папку <strong>/wp-content/cache</strong> должны быть установлены в <strong>755</strong>",
76
+ // new
77
+ "Support Us" : "Поддержите нас",
78
+ "If you like it, Please vote and support us." : "Если вам понравился плагин, проголосуйте и поддержите нас.",
79
+ "Reduce the load times of pages by storing commonly used files from your website on your visitors browser." : "Уменьшает время загрузки страницы за счет сохранения файлов с сайта в кэшах браузеров посетителей.",
80
+ "Particularly effective on websites where users regularly re-visit the same areas of the website" : "Эффективно на сайтах, где пользователи часто посещают одни и те же разделы.",
81
+ "Browser Caching" : "Кэш в браузере",
82
+ "Reduce page load times for repeat visitors" : "Уменьшает время загрузки для повторных посетителей",
83
+ "Don't show the cached version for logged-in users" : "Не показывать кэшированную версию авторизованным пользователям",
84
+ "Already deleted" : "Уже удалено",
85
+ "Reduce HTTP requests through combined files" : "Сократить число запросов к серверу путем объединения файлов",
86
+ "Decreasing the number of components on a page reduces the number of HTTP requests required to render the page, resulting in faster page loads." : "Уменьшение числа компонентов на странице сокращает число HTTP запросов, в результате страницы грузятся быстрее.",
87
+ "Combine Css" : "Объединение CSS",
88
+ "*** Attention ***" : "*** Внимание ***",
89
+ "Open .htaccess and remove this rule" : "Откройте файл .htaccess и удалите следующие правила:",
90
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "Если ваш сервер не поддерживает модуль mod_expires.c, данная настройка может вызвать ошибку Internal Server Error (500). Если вы получите такую ошибку, сделайте следующее.",
91
+ "Remove Comments" : "Удалить комментарии",
92
+ "Remove the comment tags between <head></head>" : "Удаляет закомментированные тэги между <head></head>",
93
+ "More powerful minify html" : "Более эффективное сжатие HTML",
94
+ "More powerful minify css" : "Более эффективное сжатие CSS",
95
+ "Minify the combined js files" : "Сжимает и объединеняет JS файлы",
96
+ "WP Super Cache needs to be deactive" : "WP Super Cache должен быть отключен",
97
+ "The plugin does not work with Multisite" : "Этот плагин не поддерживает мультисайты",
98
+ "Create cache for mobile theme" : "Создать кэш для мобильной темы",
99
+ "Mobile Theme" : "Мобильная тема",
100
+ "Image Optimization" : "Оптимизация изображений",
101
+ "Optimize Image Tool" : "Инструмент для оптимизации изображений",
102
+ "All" : "Всего",
103
+ "Pending" : "Ожидают",
104
+ "Errors" : "Ошибки",
105
+ "Optimized Images" : "Сжато изображений",
106
+ "Total Reduction" : "Выигрыш в размере",
107
+ "Succeed" : "Успешно",
108
+ "Show Images" : "Показать изображения",
109
+ "Hide Images" : "Скрыть изображения",
110
+ "File Name" : "Имя файла",
111
+ "Reduction" : "Сжатие",
112
+ "Date" : "Дата",
113
+ "Revert" : "Вернуть",
114
+ "All" : "Все",
115
+ "Backup Image" : "",
116
+ "Logged-in Users" : "Авторизованные",
117
+ "Minify HTML Plus" : "Супер-сжатие HTML",
118
+ "Minify Css Plus" : "Супер-сжатие CSS",
119
+ "Minify Js" : "Сжатие JS",
120
+ "Combine Js Plus" : "Супер-сжатие JS",
121
+ "Cache Statics" : "Статистика кэша",
122
+ "In the premium version there are some new features which speed up the sites more." : "Премиум-версия имеет особенности, которые еще больше ускорят ваши сайты.",
123
+ "You need to pay before downloading the premium version." : "Вам нужно оплатить премиум-версию до того, как вы ее скачаете.",
124
+ "You can download and update the premium when you want if you paid." : "Вы можете обновлять премиум-версию в любой момент после покупки.",
125
+ "Discover Features" : "Новые возможности",
126
+ "Checkout" : "Приобретение",
127
+ "Download & Update" : "Обновление",
128
+ "New Features" : "Новое",
129
+ "The download button will be available after paid. You can buy the premium version now." : "Ссылка на скачивание появится после оплаты. Премиум-версию вы можете купить прямо сейчас.",
130
+ "Please don't delete the free version. Premium version works with the free version." : "Не удаляйте бесплатную версию. Премиум-версия работает с бесплатной.",
131
+ "Purchased" : "Куплено",
132
+ "Delete Cache Logs" : "Удаление логов кэша",
133
+ "No Update" : "Обновлений нет",
134
+ "Get It Now!" : "Получите сейчас!",
135
+ "Just" : "Всего",
136
+ "Read More" : "Читайте подробнее",
137
+ "[Read More]" : "[Читайте подробнее]",
138
+ "Mobile Cache" : "Мобильный кэш",
139
+ "Optimize All" : "Оптимизировать все",
140
+ "CDN Settings" : "Настройки CDN",
141
+ "Render Blocking Js" : "Блокирующий JS",
142
+ "Remove render-blocking JavaScript" : "Удалять код JavaScript, препятствующий отображению",
143
+ "Only available in Premium version" : "Доступно только в премиум-версии",
144
+ "Update Post" : "Обновление записи",
145
+ "Clear cache files when a post or page is updated" : "Очищать кэш при обновлении записи или страницы",
146
+ "Preload" : "Предподготовка",
147
+ "Create the cache of all the site automatically" : "Автоматическая предварительная генерация кэша всего сайта",
148
+ "Timeout Rules" : "Правила таймаута",
149
+ "Add New Rule" : "Создать правило",
150
+ "Then" : "то",
151
+ "delete the files" : "удалять файлы",
152
+ "Exclude User-Agents" : "Исключить браузеры",
153
+ "Exclude CSS" : "Исключить CSS",
154
+ "Exclude JS" : "Исключить JS",
155
+ "Contains" : "Содержит",
156
+ "Home Page" : "Домашняя страница",
157
+ "Starts With" : "Начинается с",
158
+ "Is Equal To" : "Соответствует",
159
+ };
js/lang/sv.js ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "Alla cachade filer raderas vid bestämd tidpunkt." ,
3
+ "Choose One" : "Välj en" ,
4
+ "Once an hour": "En gång per timme" ,
5
+ "Once a day": "En gång om dagen" ,
6
+ "Twice a day": "Två gånger om dagen" ,
7
+ "Next due": "Nästa uppgift" ,
8
+ "Schedule": "Schema" ,
9
+ "Server time": "Servertid" ,
10
+ "You can decrease the size of page" : "Du kan minska storleken på sidan" ,
11
+ "WP Fastest Cache Options": "WP Fastest Cache tillval" ,
12
+ "Options have been saved" : "Tillval har sparats" ,
13
+ ".htacces is not writable": ".htacces är inte skrivbar" ,
14
+ "All cache files have been deleted" : "All cache har raderats" ,
15
+ "Language" : "Språk" ,
16
+ "Settings" : "Inställningar" ,
17
+ "Delete Cache" : "Töm cache" ,
18
+ "Cache Timeout" : "Cache Timeout" ,
19
+ "Cache System" : "Cache System" ,
20
+ "Enable" : "Aktivera" ,
21
+ "New Post" : "Nytt inlägg" ,
22
+ "Clear all cache files when a post or page is published" : "Töm cache när ett inlägg eller en sida publiceras" ,
23
+ "Submit" : "Skicka" ,
24
+ "Delete Now" : "Radera nu" ,
25
+ "You can delete all cache files" : "Du kan radera alla cachade filer" ,
26
+ "Target folder" : "Målmapp" ,
27
+ "It will active in the next version" : "Det aktiveras i nästa version" ,
28
+ "You can decrease the size of css files" : "Du kan minska storleken på css-filer" ,
29
+ "Reduce the size of files sent from your server" : "Reducera storleken på filer skickade från din server" ,
30
+ "Having Issues?" : "Några problem?" ,
31
+ "You can create a ticket" : "Du kan skapa en biljett" ,
32
+ "WordPress support forum" : "WordPress supportforum" ,
33
+ "Enable Gzip Compression" : "Aktivera Gzip-kompression" ,
34
+ "Increase page speed" : "Öka sidhastighet" ,
35
+ "Reduce sizes of pages by up to 70%" : "Minska storleken på sidor med upp till 70%" ,
36
+ "Cost-benefit ratio: high" : "" ,
37
+ "All cache files will be removed as well" : "Alla cachade filer töms också" ,
38
+ "If you modify any css file, you have to delete minified css files" : "Om du modifierar någon css-fil måste du radera minifierade css-filer" ,
39
+ "Delete Minified Css" : "Radera minifierad css" ,
40
+ "Don't show the cached version for desktop to mobile devices" : "Visa inte den cachade versionen för stationärt bruk på mobila enheter" ,
41
+ "Browser Caching" : "Webbläsar-cache" ,
42
+ "Reduce page load times for repeat visitors" : "Minska sidladdningstider för återvändande besökare" ,
43
+ "Don't show the cached version for logged-in users" : "Visa inte den cachade versionen för inloggade användare" ,
44
+ "Support Us" : "Stöd oss" ,
45
+ "If you like it, Please vote and support us." : "Om du gillar det, vänligen rösta och stöd oss" ,
46
+ "Reduce HTTP requests through combined css files" : "Minska HTTP-förfrågningar genom kombinerade css-filer" ,
47
+ "Reduce HTTP requests through combined js files" : "Minska HTTP-förfrågningar genom kombinerade js-filer" ,
48
+ "Combine Css" : "Kombinera Css" ,
49
+ "Combine Js" : "Kombinera Js" ,
50
+ "Minify Css" : "Minifiera Css" ,
51
+ "Minify HTML" : "Minifiera HTML" ,
52
+ "*** Attention ***" : "*** Varning ***" ,
53
+ "Open .htaccess and remove this rule" : "Öppna .htaccess och ta bort denna regel" ,
54
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "Om din server inte stöder mod_expires.c, kan detta tillval orsaka Internt serverfel (500). Om du ser ett sådant fel så följ stegen nedan." ,
55
+ "Remove Comments" : "Ta bort kommentarer" ,
56
+ "Remove the comment tags between <head></head>" : "Ta bort kommentarstaggar mellan <head></head>" ,
57
+ "More powerful minify html" : "Mer kraftfullt minifierad html" ,
58
+ "Minify the combined js files" : "Minifiera kombinerade js-filer" ,
59
+ ".htaccess is not writable" : ".htaccess är inte skrivbar" ,
60
+ "WP Super Cache needs to be deactive" : "WP Super Cache måste avaktiveras" ,
61
+ "The plugin does not work with Multisite" : "Tillägget fungerar inte med Multisite" ,
62
+ "Create cache for mobile theme" : "Skapa cache för mobilt tema" ,
63
+ "Mobile Theme" : "Mobiltema" ,
64
+ "Mobile" : "Mobil" ,
65
+ "Image Optimization" : "Bildoptimering" ,
66
+ "Optimize Image Tool" : "Bildoptimeringsverktyg" ,
67
+ "All" : "All" ,
68
+ "Pending" : "Avvaktar" ,
69
+ "Errors" : "Fel" ,
70
+ "Optimized Images" : "Optimerade bilder" ,
71
+ "Total Reduction" : "Total reduktion" ,
72
+ "Succeed" : "Framgångsrikt" ,
73
+ "Show Images" : "Visa bilder" ,
74
+ "Hide Images" : "Dölj bilder" ,
75
+ "File Name" : "Filnamn" ,
76
+ "Reduction" : "Reduktion" ,
77
+ "Date" : "Datum" ,
78
+ "Revert" : "Återgå" ,
79
+ "Backup Image" : "Backup-bild" ,
80
+ "All" : "Alla" ,
81
+ "Logged-in Users" : "Inloggade användare" ,
82
+ "Minify HTML Plus" : "Minifiera HTML Plus" ,
83
+ "Minify Css Plus" : "Minifiera Css Plus",
84
+ "More powerful minify css" : "Mer kraftfull minifierad css",
85
+ "Combine Js Plus" : "Kombinera Js Plus" ,
86
+ "Cache Statics" : "Cache-statistik" ,
87
+ "In the premium version there are some new features which speed up the sites more." : "I premiumversionen finns nya funktioner som snabbar upp sajterna mer." ,
88
+ "You need to pay before downloading the premium version." : "Du måste betala före nedladdning av premiumversionen" ,
89
+ "You can download and update the premium when you want if you paid." : "Om du betalat kan du ladda ner och uppdatera premiumversionen när du vill" ,
90
+ "Discover Features" : "Upptäck funktioner" ,
91
+ "Checkout" : "Kassa" ,
92
+ "New Features" : "Nya funktioner" ,
93
+ "The download button will be available after paid. You can buy the premium version now." : "Nedladdningsknappen blir tillgänglig efter betalning. Du kan köpa premiumversionen nu." ,
94
+ "Please don't delete the free version. Premium version works with the free version." : "Vänligen radera inte gratisversionen. Premiumversionen utgår från gratisversionen." ,
95
+ "Purchased" : "Köpt" ,
96
+ "Delete Cache Logs" : "Radera cache-loggar" ,
97
+ "No Update" : "Ingen uppdatering" ,
98
+ "Get It Now!" : "Köp nu!" ,
99
+ "Just" : "Endast" ,
100
+ "Exclude" : "Exkludera" ,
101
+ "Exclude Pages" : "Exkludera sidor" ,
102
+ "Start With" : "Börja med" ,
103
+ "You can stop to create cache for specific pages" : "Du kan sluta cacha specifika sidor" ,
104
+ "Read More" : "Läs mer" ,
105
+ "Contain" : "Innehåller" ,
106
+ "Exact" : "Exakt",
107
+ "Error Occured" : "Fel uppstod",
108
+ "/wp-content/plugins/ is not writable" : "/wp-content/plugins/ är inte skrivbar",
109
+ "Please read the tutorial" : "Vänligen läs handledningen",
110
+ "Remove render-blocking JavaScript" : "Ta bort Javascript som blockerar rendering",
111
+ "You need to activate the premium plugin manually" : "Du måste aktivera premium-tillägget manuellt",
112
+ "Continue" : "Fortsätt"
113
+ };
js/lang/tr.js ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "Belirlenen zamanda önbellekteki tüm dosyalar silinecektir.",
3
+ "Choose One" : "Seçin",
4
+ "Once an hour": "Saatte bir kez",
5
+ "Once a day": "Günde bir kez",
6
+ "Twice a day": "Günde iki kez",
7
+ "Next due": "Sonraki Görev",
8
+ "Schedule": "Vardiya",
9
+ "Server time": "Server tarihi",
10
+ "You can decrease the size of page" : "Sayfanın boyutunu küçültebilirsiniz",
11
+ "WP Fastest Cache Options": "WP Fastest Cache Seçenekleri",
12
+ "Options have been saved" : "Tercihler kaydedildi",
13
+ ".htacces is not writable": ".htacces dosyasının yazma izni yok",
14
+ "All cache files have been deleted" : "Önbellekteki tüm dosyalar silindi",
15
+ "Language" : "Dil",
16
+ "Settings" : "Ayarlar",
17
+ "Delete Cache" : "Önbellek Temizle",
18
+ "Cache Timeout" : "Zaman Aşımı",
19
+ "Cache System" : "Cache Sistemi",
20
+ "Enable" : "Açık",
21
+ "New Post" : "Yeni Yazı",
22
+ "Clear cache files when a post or page is published" : "Yeni bir yazı veya sayfa eklenirse önbelleği temizle",
23
+ "Submit" : "Gönder",
24
+ "Delete Now" : "Temizle Şimdi",
25
+ "You can delete all cache files" : "Tüm önbelleği temizleyebilirsiniz",
26
+ "Target folder" : "Hedef klasör",
27
+ "It will active in the next version" : "Bir sonraki versiyonda aktif olacaktır",
28
+ "You can decrease the size of css files" : "CSS dosyalarının boyununu küçültebilirsiniz",
29
+ "Reduce the size of files sent from your server" : "Serverdan gönderilen dosyaların boyutunu küçült",
30
+ "Having Issues?" : "Sorun Var Mı?",
31
+ "You can create a ticket" : "Destek talebi oluşturabilirsiniz",
32
+ "WordPress support forum" : "WordPress destek forumu",
33
+ "Enable Gzip Compression" : "Gzip Sıkıştırmayı Aktif Etmek",
34
+ "Increase page speed" : "Sayfa hızını artırır",
35
+ "Reduce sizes of pages by up to 70%" : "Sayfanın boyutunun %70'e kadar küçültür",
36
+ "Cost-benefit ratio: high" : "Maliyet-fayda oranı: Yüksek",
37
+ "All cache files will be removed as well" : "Tüm cache dosyaları da silinecek",
38
+ "If you modify any css file, you have to delete minified css files" : "Herhangi bir css dosyasını değiştirdiyseniz, minify edilmiş css dosyalarını silmeniz gerekir",
39
+ "Delete Minified Css" : "Küçültülen Css Temizle",
40
+ "Don't show the cached version for desktop to mobile devices" : "Mobil kullanıcılara masaüstü için oluşturulan önbelleği devre dışı bırak",
41
+ "Browser Caching" : "Tarayıcı Önbellekleme",
42
+ "Reduce page load times for repeat visitors" : "Sürekli gelen kullanıcılar için sayfa yüklenme hızını azalt",
43
+ "Don't show the cached version for logged-in users" : "Login olan kullanıcılara önbelleği devre dışı bırak",
44
+ "Support Us" : "Bizi Destekleyin",
45
+ "If you like it, Please vote and support us." : "Beğendiyseniz lütfen oylayın ve destek olun.",
46
+ "Reduce HTTP requests through combined css files" : "CSS dosyalarını birleştirerek HTTP isteklerini azaltın",
47
+ "Reduce HTTP requests through combined js files" : "JS dosyalarını birleştirerek HTTP isteklerini azaltın",
48
+ "Combine Css" : "Css Birleştir",
49
+ "Combine Js" : "Js Birleştir",
50
+ "Minify Css" : "Css Küçült",
51
+ "Minify HTML" : "Html Küçült",
52
+ "*** Attention ***" : "*** Dikkat ***",
53
+ "Open .htaccess and remove this rule" : ".htaccess dosyasını açın ve aşağıda yer alan kuralı kaldırın",
54
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : "Eğer serveriniz mod_expires.c'i desteklemiyorsa, Internel Server Error (500) hatası ile karşılaşabilirsiniz. Bu durumda lütfen aşağıda yer alan adımları uygulayın.",
55
+ "Remove Comments" : "Yorumları Kaldır",
56
+ "Remove the comment tags between <head></head>" : "&#60;head&#62;&#60;/head&#62; arasında bulunan yorum taglerini kaldır",
57
+ "More powerful minify html" : "Daha güçlü html küçültme aracı",
58
+ "Minify the combined js files" : "Birleştirilmiş JS dosyalarının boyutunu küçült",
59
+ ".htaccess is not writable" : ".htaccess dosyası değiştirilemiyor",
60
+ "WP Super Cache needs to be deactive" : "WP Super Cache etkisizleştirilmeli",
61
+ "The plugin does not work with Multisite" : "Multisite özelliği desteklenmiyor",
62
+ "Create cache for mobile theme" : "Mobil tema için önbellek oluştur",
63
+ "Mobile Theme" : "Mobil Tema",
64
+ "Mobile" : "Mobil",
65
+ "Image Optimization" : "Resim Optimizasyonu",
66
+ "Optimize Image Tool" : "Resim Optimizasyon Aracı",
67
+ "All" : "Tüm",
68
+ "Pending" : "Bekleyenler",
69
+ "Errors" : "Hatalar",
70
+ "Optimized Images" : "Optimize Olanlar",
71
+ "Total Reduction" : "Toplam Düşüş",
72
+ "Succeed" : "Başarılı",
73
+ "Show Images" : "Resimleri Göster",
74
+ "Hide Images" : "Resimleri Gizle",
75
+ "File Name" : "Dosya İsmi",
76
+ "Reduction" : "Düşüş",
77
+ "Date" : "Tarih",
78
+ "Revert" : "Geri Al",
79
+ "Backup Image" : "Resmin Yedeği",
80
+ "All" : "Hepsi",
81
+ "Backup Image" : "Resmin Yedeği",
82
+ "Logged-in Users" : "Giriş Yapanlar",
83
+ "Minify HTML Plus" : "HTML Küçült Ekstra",
84
+ "Combine Js Plus" : "Js Birleştir Ekstra",
85
+ "Minify Css Plus" : "Css Küçült Ekstra",
86
+ "More powerful minify css" : "Daha güçlü css küçültme aracı",
87
+ "Cache Statics" : "Cache İstatistikleri",
88
+ "In the premium version there are some new features which speed up the sites more." : "Premium sürümde siteleri hızlandıran yeni özellikler yer alıyor.",
89
+ "You need to pay before downloading the premium version." : "Premium sürümünü indirmeden önce ödeme yapmalısınız.",
90
+ "You can download and update the premium when you want if you paid." : "Eğer ödemeyi yaptıysanız premium sürümünü indirebilir veya güncelleştirebilirsiniz.",
91
+ "Discover Features" : "Özellikleri Keşfedin",
92
+ "Checkout" : "Ödeme",
93
+ "Download & Update" : "İndir & Güncelle",
94
+ "New Features" : "Yeni Özellikler",
95
+ "The download button will be available after paid. You can buy the premium version now." : "İndirme tuşu ödeme yaptıktan sonra aktif olacaktır. Premium sürümü şimdi alabilirsiniz.",
96
+ "Please don't delete the free version. Premium version works with the free version." : "Ücretsiz sürümü silmeyin. Premium sürümü ücretsiz sürümle beraber çalışır.",
97
+ "Purchased" : "Satın Alındı",
98
+ "Delete Cache Logs" : "Silinen Cache Logları",
99
+ "No Update" : "Update Yok",
100
+ "Get It Now!" : "Şimdi Yükleyin",
101
+ "Just" : "Sadece",
102
+ "Exclude" : "Hariç",
103
+ "Exclude Pages" : "Hariç Tutulan Sayfalar",
104
+ "Start With" : "İle Başlayan",
105
+ "You can stop to create cache for specific pages" : "Belirli sayfalar için cache sistemini durdurabilirsiniz",
106
+ "Read More" : "Devamını Oku",
107
+ "Contain" : "İçerdiği",
108
+ "Exact" : "Tam",
109
+ "Error Occured" : "Hata Oluştu",
110
+ "/wp-content/plugins/ is not writable" : "/wp-content/plugins/ yazılabilir değil",
111
+ "Please read the tutorial" : "Lütfen dökümanı okuyunuz",
112
+ "You need to activate the premium plugin manually" : "Premium sürümünü manuel olarak aktifleştirmelisiniz",
113
+ "Continue" : "Devam Et",
114
+ "Minify Js" : "JS Küçült",
115
+ "You can decrease the size of js files" : "JS dosyalarının boyununu küçültebilirsiniz",
116
+ "Render Blocking Js" : "Oluşturma Engelleyici Js",
117
+ "Remove render-blocking JavaScript" : "Oluşturma engelleyici JavaScript'i kaldırın",
118
+ "Preload" : "Önyükleme",
119
+ "Create the cache of all the site automatically" : "Tüm sitenin cache'ini otomatik oluştur",
120
+ "CDN Settings" : "CDN Ayarları",
121
+ "Add New Rule" : "Yeni Kural Ekle",
122
+ "Timeout Rules" : "Zaman Aşımı Kuralları",
123
+ "Eliminate render-blocking JavaScript and CSS in above-the-fold content" : "Oluşturmayı önleyen JavaScript ve CSS kodlarını ekranın üst kısmındaki içerikten kaldırın"
124
+ };
js/lang/ukr.js ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc.dictionary = {
2
+ "All cached files are deleted at the determinated time." : "всі кешовані файли будуть видалені у встановлений час.",
3
+ "Choose One" : "вибрати один",
4
+ "Once an hour": "один раз на годину",
5
+ "Once a day": "один раз на добу",
6
+ "Twice a day": "двічі на добу",
7
+ "Next due": "наступна дія",
8
+ "Schedule": "розклад",
9
+ "Server time": "час серверу",
10
+ "You can decrease the size of page" : "Ви не можете зменшити розмір сторінки",
11
+ "WP Fastest Cache Options": "WP Fastest Cache Опції",
12
+ "Options have been saved" : "Опції були збережені",
13
+ ".htacces is not writable": ".htacces не може бути записаним",
14
+ "All cache files have been deleted" : "Всі файли кеша були видалені",
15
+ "Language" : "Мова",
16
+ "Settings" : "Налаштування",
17
+ "Delete Cache" : "Видалити Кеш",
18
+ "Cache Timeout" : "Кеш Тайм-ауту",
19
+ "Cache System" : "Кеш Системи",
20
+ "Enable" : "Включити",
21
+ "New Post" : "Новий Пост",
22
+ "Clear cache files when a post or page is published" : "Видалити всі файли кешу, коли пост або сторінка опубліковани",
23
+ "Submit" : "Відправити",
24
+ "Delete Now" : "Видалити Зараз",
25
+ "You can delete all cache files" : "ви можете видалили всі кешированні файли",
26
+ "Target folder" : "Цільова папка",
27
+ "It will active in the next version" : "Ця функція стане активною в наступній версії",
28
+ "You can decrease the size of css files" : "ви можете зменшити розмір css файлів",
29
+ "Reduce the size of files sent from your server" : "зменшите розмір файлів, що надійшли від вашого серверу",
30
+ "Having Issues?" : "",
31
+ "You can create a ticket" : "",
32
+ "WordPress support forum" : "",
33
+ "Compacting HTML code, including any inline JavaScript and CSS contained in it, can save many bytes of data and speed up downloading, parsing, and execution time." : "Стиснення коду HTML, включаючи будь-які рядки JavaScript и CSS, що містяться в ньому, може заощадити великий обсяг даних, а також прискорити завантаження, витрати часу на аналіз (розбір) та виконання.",
34
+ "Compacting CSS code can save many bytes of data and speed up downloading, parsing, and execution time." : "Стиснення CSS коду може заощадити великий обсяг даних, а також прискорити завантаження, витрати часу на аналіз (розбір) та виконання.",
35
+ "Enable Gzip Compression" : "Увімкнути стиснення Gzip",
36
+ "Increase page speed" : "Пришвидшити роботу сторінки",
37
+ "Reduce sizes of pages by up to 70%" : "Зменшити розмір сторінки аж до 70%",
38
+ "Reduce the size of files sent from your server to increase the speed to which they are transferred to the browser." : "Зменшити розмір файлів, що надіслані з вашого сервера, для пришвидшення їх передачі браузеру.",
39
+ "Cost-benefit ratio: high" : "Співвідношення витрат та вигоди: високе",
40
+ "All cache files will be removed as well" : "Всі керовані файли також будуть видалені",
41
+ "If you modify any css or js file, you have to delete minified js and css files" : "Якщо ви зміните будь-який з css або js файлів, ви повинні видалити зменшені файли css або js відповідно",
42
+ "Delete Minified Css" : "Знищити зменшені css",
43
+ "Don't show the cached version for mobile devices" : "Не відображати керовані версії для мобільних пристроїв",
44
+ "Support Us" : "",
45
+ "If you like it, Please vote and support us." : "",
46
+ "Reduce HTTP requests through combined files" : "",
47
+ "Decreasing the number of components on a page reduces the number of HTTP requests required to render the page, resulting in faster page loads." : "",
48
+ "Combine Css" : "",
49
+ "Open .htaccess and remove this rule" : "",
50
+ "If your server does not support mod_expires.c, this option can cause the Internel Server Error (500). If you see such error please do the steps below." : ""
51
+ };
js/language.js ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ window.wpfc = {};
2
+ window.wpfc.translate = function(word){
3
+ return (typeof window.wpfc.dictionary != "undefined" && typeof window.wpfc.dictionary[word] != "undefined" && window.wpfc.dictionary[word]) ? window.wpfc.dictionary[word] : word;
4
+ };
5
+ jQuery.fn.extend({
6
+ wpfclang: function(){
7
+ var dictionary = window.wpfc.dictionary || {};
8
+ var el = jQuery(this);
9
+ var text = el.attr("type") == "submit" ? el.val().trim() : el.text().trim();
10
+ var converted = typeof dictionary[text] == "undefined" ? text : dictionary[text];
11
+
12
+ if(typeof converted != "undefined" && converted){
13
+ if(el.attr("type") == "submit"){
14
+ el.val(converted);
15
+ }else{
16
+ el.html(converted);
17
+ }
18
+ }
19
+ }
20
+ });
21
+ var Wpfclang = {
22
+ language : "",
23
+ init: function(language){
24
+ this.language = language;
25
+ this.translate();
26
+ this.setLanguageInputField();
27
+ },
28
+ setLanguageInputField: function(){
29
+ var self = this;
30
+ jQuery("#wpFastestCacheLanguage").val(self.language);
31
+ },
32
+ translate: function(){
33
+ if(typeof window.wpfc != "undefined" && typeof window.wpfc.dictionary != "undefined"){
34
+ var self = this;
35
+ jQuery('#wpfc-read-tutorial span, #wpfc-plugin-setup-warning h3, #just-h1, #get-now-h1, #new-features-h1, div.wpfc-premium-step-footer ul li a, div.wpfc-premium-step-footer p, div.wpfc-premium-step-content, #wpbody-content label, div.question, .questionCon input[type="submit"], #message p, .wrap h2, #nextVerAct, select option, th, #rule-help-tip h4, #rule-help-tip label, .omni_admin_sidebar h3, #message p, #wpfc-image-static-panel span, #wpfc-statics-right div, #wpfc-image-static-panel p, #container-show-hide-image-list span, #wpfc-image-list th').each(function(){
36
+ if(jQuery(this).children().length === 0){
37
+ jQuery(this).wpfclang();
38
+ }
39
+ });
40
+ }
41
+ }
42
+ };
js/schedule.js ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var WpfcSchedule = {
2
+ id: "#wpfc-server-time",
3
+ serverTime : "", //milliseconds
4
+ dropdowns: "#wpFastestCacheTimeOutHour, #wpFastestCacheTimeOutMinute, #wpFastestCacheTimeOut",
5
+ init: function(){
6
+ if(jQuery("form[id='wpfc-schedule-panel']").length){
7
+ this.setServerTime();
8
+ this.clock();
9
+ this.setDropdownEvent();
10
+ this.setDeleteCronEvent();
11
+ jQuery("#wpfc-schedule-panel input[type='submit']").bind("click", this, this.submitButtonEvent);
12
+ }
13
+ },
14
+ setDeleteCronEvent: function(){
15
+ jQuery("#deleteCron").click(function(){
16
+ jQuery("#wpFastestCacheTimeOut").val("");
17
+ jQuery("form#wpfc-schedule-panel").submit();
18
+ });
19
+ },
20
+ setDropdownEvent: function(){
21
+ jQuery(this.dropdowns).change(function(e){
22
+ var e = jQuery(e.currentTarget);
23
+
24
+ if(e.attr("value")){
25
+ e.css("background-color", "");
26
+ }
27
+
28
+ /* if(e.attr("id") == "wpFastestCacheTimeOut"){
29
+ if(e.val() == "hourly"){
30
+ jQuery("#wpFastestCacheTimeOutHour, #wpFastestCacheTimeOutMinute").prop('disabled', true);
31
+ }else{
32
+ jQuery("#wpFastestCacheTimeOutHour, #wpFastestCacheTimeOutMinute").prop('disabled', false);
33
+ }
34
+ }*/
35
+ });
36
+ },
37
+ setServerTime: function(){
38
+ this.serverTime = new Date(jQuery(this.id).text()).getTime();
39
+ },
40
+ clock: function(){
41
+ var self = this;
42
+ var newDate;
43
+
44
+ setInterval(function(){
45
+ newDate = new Date(self.serverTime);
46
+ jQuery(self.id).text(newDate.getFullYear() + "-" + (newDate.getMonth() + 1) + "-" + newDate.getDate() + " " + newDate.getHours() + ":" + newDate.getMinutes() + ":" + newDate.getSeconds());
47
+ self.serverTime = self.serverTime + 1000;
48
+ }, 1000);
49
+ },
50
+ submitButtonEvent: function(self){
51
+ var error_count = 0;
52
+
53
+ jQuery(self.data.dropdowns).each(function(i, e){
54
+ if(jQuery(e).attr("value")){
55
+ jQuery(e).css("background-color", "");
56
+ }else{
57
+ error_count++;
58
+ jQuery(e).css("background-color", "red");
59
+ }
60
+ });
61
+
62
+ return error_count > 0 ? false : true;
63
+ }
64
+ };
65
+ WpfcSchedule.init();
js/toolbar.js ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ if(window.attachEvent) {
2
+ window.attachEvent('onload', wpfc_delete_curent_page_cache);
3
+ } else {
4
+ if(window.onload) {
5
+ var curronload = window.onload;
6
+ var newonload = function(evt) {
7
+ curronload(evt);
8
+ wpfc_delete_curent_page_cache(evt);
9
+ };
10
+ window.onload = newonload;
11
+ } else {
12
+ window.onload = wpfc_delete_curent_page_cache;
13
+ }
14
+ }
15
+ function wpfc_delete_curent_page_cache(){
16
+ jQuery( document ).ready(function() {
17
+ jQuery("body").append('<div id="revert-loader-toolbar"></div>');
18
+
19
+ jQuery("#wp-admin-bar-wpfc-toolbar-parent-default li").click(function(e){
20
+ if(typeof ajaxurl != "undefined" || typeof wpfc_ajaxurl != "undefined"){
21
+ var ajax_url = (typeof ajaxurl != "undefined") ? ajaxurl : wpfc_ajaxurl;
22
+ var id = (typeof e.target.id != "undefined" && e.target.id) ? e.target.id : jQuery(e.target).parent("li").attr("id");
23
+ var action = "";
24
+
25
+ if(id == "wp-admin-bar-wpfc-toolbar-parent-delete-cache"){
26
+ action = "wpfc_delete_cache";
27
+ }else if(id == "wp-admin-bar-wpfc-toolbar-parent-delete-cache-and-minified"){
28
+ action = "wpfc_delete_cache_and_minified";
29
+ }else if(id == "wp-admin-bar-wpfc-toolbar-parent-clear-cache-of-this-page"){
30
+ action = "wpfc_delete_current_page_cache";
31
+ }
32
+
33
+ jQuery("#revert-loader-toolbar").show();
34
+ jQuery.ajax({
35
+ type: 'GET',
36
+ url: ajax_url,
37
+ data : {"action": action, "path" : window.location.pathname},
38
+ dataType : "json",
39
+ cache: false,
40
+ success: function(data){
41
+ if(data[1] == "error"){
42
+ if(typeof data[2] != "undefined" && data[2] == "alert"){
43
+ alert(data[0]);
44
+ }else{
45
+ Wpfc_New_Dialog.dialog("wpfc-modal-permission", {close: "default"});
46
+ Wpfc_New_Dialog.show_button("close");
47
+ }
48
+ }
49
+
50
+ if(typeof WpFcCacheStatics != "undefined"){
51
+ WpFcCacheStatics.update();
52
+ }else{
53
+ jQuery("#revert-loader-toolbar").hide();
54
+ }
55
+ }
56
+ });
57
+ }else{
58
+ alert("AjaxURL has NOT been defined");
59
+ }
60
+ });
61
+ });
62
+ }
languages/index.html ADDED
File without changes
languages/wp-fastest-cache-tr_TR.mo ADDED
Binary file
languages/wp-fastest-cache-tr_TR.po ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2016 WP Fastest Cache
2
+ # This file is distributed under the same license as the WP Fastest Cache package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: WP Fastest Cache 0.8.5.5\n"
6
+ "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-fastest-cache\n"
7
+ "POT-Creation-Date: 2016-01-20 01:37+0200\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2016-01-20 01:38+0200\n"
12
+ "Language-Team: \n"
13
+ "X-Generator: Poedit 1.8.6\n"
14
+ "Last-Translator: \n"
15
+ "Plural-Forms: nplurals=1; plural=0;\n"
16
+ "Language: tr\n"
17
+
18
+ #: wpFastestCache.php:1112
19
+ msgid "Once Every 1 Minute"
20
+ msgstr ""
21
+
22
+ #: wpFastestCache.php:1118
23
+ msgid "Once Every 5 Minutes"
24
+ msgstr ""
25
+
26
+ #: wpFastestCache.php:1124
27
+ msgid "Once Every 15 Minutes"
28
+ msgstr ""
29
+
30
+ #: wpFastestCache.php:1130
31
+ msgid "Twice an Hour"
32
+ msgstr ""
33
+
34
+ #: wpFastestCache.php:1136
35
+ msgid "Once an Hour"
36
+ msgstr ""
37
+
38
+ #: wpFastestCache.php:1142
39
+ msgid "Once Every 6 Hours"
40
+ msgstr ""
41
+
42
+ #: wpFastestCache.php:1148
43
+ msgid "Once a Day"
44
+ msgstr ""
45
+
46
+ #: wpFastestCache.php:1154
47
+ msgid "Once a Week"
48
+ msgstr ""
49
+
50
+ #: wpFastestCache.php:1160
51
+ msgid "Once a Month"
52
+ msgstr ""
53
+
54
+ #: wpFastestCache.php:1166
55
+ msgid "Once a Year"
56
+ msgstr ""
57
+
58
+ #. Plugin Name of the plugin/theme
59
+ msgid "WP Fastest Cache"
60
+ msgstr ""
61
+
62
+ #. Plugin URI of the plugin/theme
63
+ msgid "http://wordpress.org/plugins/wp-fastest-cache/"
64
+ msgstr ""
65
+
66
+ #. Description of the plugin/theme
67
+ msgid "The simplest and fastest WP Cache system"
68
+ msgstr "En basit ve en hızlı WP cache sistemi"
69
+
70
+ #. Author of the plugin/theme
71
+ msgid "Emre Vona"
72
+ msgstr ""
73
+
74
+ #. Author URI of the plugin/theme
75
+ msgid "http://tr.linkedin.com/in/emrevona"
76
+ msgstr ""
languages/wp-fastest-cache.pot ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2016 WP Fastest Cache
2
+ # This file is distributed under the same license as the WP Fastest Cache package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: WP Fastest Cache 0.8.5.5\n"
6
+ "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-fastest-cache\n"
7
+ "POT-Creation-Date: 2016-01-19 23:35:34+00:00\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n"
12
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
+ "Language-Team: LANGUAGE <LL@li.org>\n"
14
+
15
+ #: wpFastestCache.php:1112
16
+ msgid "Once Every 1 Minute"
17
+ msgstr ""
18
+
19
+ #: wpFastestCache.php:1118
20
+ msgid "Once Every 5 Minutes"
21
+ msgstr ""
22
+
23
+ #: wpFastestCache.php:1124
24
+ msgid "Once Every 15 Minutes"
25
+ msgstr ""
26
+
27
+ #: wpFastestCache.php:1130
28
+ msgid "Twice an Hour"
29
+ msgstr ""
30
+
31
+ #: wpFastestCache.php:1136
32
+ msgid "Once an Hour"
33
+ msgstr ""
34
+
35
+ #: wpFastestCache.php:1142
36
+ msgid "Once Every 6 Hours"
37
+ msgstr ""
38
+
39
+ #: wpFastestCache.php:1148
40
+ msgid "Once a Day"
41
+ msgstr ""
42
+
43
+ #: wpFastestCache.php:1154
44
+ msgid "Once a Week"
45
+ msgstr ""
46
+
47
+ #: wpFastestCache.php:1160
48
+ msgid "Once a Month"
49
+ msgstr ""
50
+
51
+ #: wpFastestCache.php:1166
52
+ msgid "Once a Year"
53
+ msgstr ""
54
+
55
+ #. Plugin Name of the plugin/theme
56
+ msgid "WP Fastest Cache"
57
+ msgstr ""
58
+
59
+ #. Plugin URI of the plugin/theme
60
+ msgid "http://wordpress.org/plugins/wp-fastest-cache/"
61
+ msgstr ""
62
+
63
+ #. Description of the plugin/theme
64
+ msgid "The simplest and fastest WP Cache system"
65
+ msgstr ""
66
+
67
+ #. Author of the plugin/theme
68
+ msgid "Emre Vona"
69
+ msgstr ""
70
+
71
+ #. Author URI of the plugin/theme
72
+ msgid "http://tr.linkedin.com/in/emrevona"
73
+ msgstr ""
readme.txt ADDED
@@ -0,0 +1,675 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === WP Fastest Cache ===
2
+ Contributors: emrevona
3
+ Donate link: http://profiles.wordpress.org/emrevona/
4
+ Tags: cache, performance, wp-cache, total cache, super cache
5
+ Requires at least: 3.3
6
+ Tested up to: 4.7.2
7
+ Stable tag: 0.8.6.6
8
+ License: GPLv2 or later
9
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
+
11
+ The simplest and fastest WP Cache system
12
+
13
+ == Description ==
14
+
15
+ <h4>Official Website</h4>
16
+
17
+ You can find more information on our web site (<a href="http://www.wpfastestcache.com/">wpfastestcache.com</a>)
18
+
19
+ This plugin creates static html files from your dynamic WordPress blog.
20
+ When a page is rendered, php and mysql are used. Therefore, system needs RAM and CPU.
21
+ If many visitors come to a site, system uses lots of RAM and CPU so page is rendered so slowly.
22
+ In this case, you need a cache system not to render page again and again.
23
+ Cache system generates a static html file and saves. Other users reach to static html page.
24
+ <br><br>
25
+ Setup of this plugin is so easy. You don't need to modify the .htacces file. It will be modified automatically.
26
+
27
+ <h4>Multisite Support</h4>
28
+ Wpfc does not support Wordpress Multisite yet.
29
+
30
+ <h4>Features</h4>
31
+
32
+ 1. Mod_Rewrite which is the fastest method is used in this plugin
33
+ 2. All cache files are deleted when a post or page is published
34
+ 3. Admin can delete all cached files from the options page
35
+ 4. Admin can delete minified css and js files from the options page
36
+ 5. Block cache for specific page or post with Short Code
37
+ 6. Cache Timeout - All cached files are deleted at the determinated time
38
+ 7. Cache Timeout for specific pages
39
+ 8. Enable/Disable cache option for mobile devices
40
+ 9. Enable/Disable cache option for logged-in users
41
+ 10. SSL support
42
+ 11. CDN support
43
+ 12. Preload Cache - Create the cache of all the site automatically
44
+ 13. Exclude pages and user-agents
45
+
46
+ <h4>Performance Optimization</h4>
47
+
48
+ 1. Generating static html files from your dynamic WordPress blog
49
+ 2. Minify Html - You can decrease the size of page
50
+ 3. Minify Css - You can decrease the size of css files
51
+ 4. Enable Gzip Compression - Reduce the size of files sent from your server to increase the speed to which they are transferred to the browser.
52
+ 5. Leverage browser caching - Reduce page load times for repeat visitors
53
+ 6. Combine CSS - Reduce number of HTTP round-trips by combining multiple CSS resources into one
54
+ 7. Combine JS
55
+
56
+ <h4>Supported languages: </h4>
57
+
58
+ * 中文 (by suifengtec)
59
+ * Deutsch
60
+ * English
61
+ * Español (by Diplo)
62
+ * Français (by PascalJ)
63
+ * Italiana (by Valerio)
64
+ * 日本語 (by KUCKLU)
65
+ * Nederlands (by Frans Pronk https://ifra.nl)
66
+ * Polski (by roan24.pl)
67
+ * Português
68
+ * Română
69
+ * Русский (by Maxim)
70
+ * Suomi (by Arhi Paivarinta)
71
+ * Svenska (by Linus Wileryd)
72
+ * Türkçe
73
+
74
+ == Installation ==
75
+
76
+ 1. Upload `wp-fastest-cache` to the `/wp-content/plugins/` directory
77
+ 2. Activate the plugin through the 'Plugins' menu in WordPress
78
+ 3. Permission of .htacces must 644
79
+ 4. Enable this plugin on option page
80
+
81
+ == Screenshots ==
82
+
83
+ 1. Performance Comparison
84
+ 2. Other Performance Comparison
85
+ 3. Without Cache
86
+ 4. With Cache
87
+ 5. Main Settings Page
88
+ 6. Preload
89
+ 7. New Post
90
+ 8. Update Cache
91
+ 9. Delete Cache
92
+ 10. All cached files are deleted at the determinated time
93
+ 11. Block caching for post and pages (TinyMCE)
94
+ 12. Clean cached files via admin toolbar easily
95
+ 13. Exclude Page
96
+ 14. CDN
97
+ 15. Enter CDN Information
98
+ 16. File Types
99
+ 17. Specify Sources
100
+ 18. Database Cleanup
101
+
102
+ == Changelog ==
103
+
104
+ = 0.8.6.6 =
105
+ * to make compatible with the new rules of wordpress
106
+ * <strong>[FEATURE]</strong> Database Cleanup
107
+ * to decode URLs in non-latin languages for singleDeleteCache()
108
+ * to change the method of the premium update <a href="http://www.wpfastestcache.com/blog/premium-update-before-v1-3-6/">Details</a>
109
+
110
+ = 0.8.6.5 =
111
+ * <strong>[FEATURE]</strong> Compatible with GTranslate
112
+ * to exclude avada-dynamic-css-css for css optimizations
113
+ * to compatible with Safir Mobile theme
114
+ * to update htaccess after activation
115
+ * <strong>[FEATURE]</strong> Compatible with Caldera Forms
116
+ * to prevent 404 errors for non-existent minified files
117
+ * to clear the cache of post cats and the cache of post tags after update post
118
+
119
+ = 0.8.6.4 =
120
+ * <strong>[FEATURE]</strong> Compatible with kk Star Ratings
121
+ * to add aac, mp3, ogg extension for CDN
122
+ * to serve wp-emoji-release.min.js via cdn if CDN integration has been added
123
+ * not to show the cache for comment authors
124
+ * to show how to enable gzip warning for Nginx
125
+ * to fix the check cdn-url issue which is cURL error 6: Couldn't resolve host
126
+ * to check http_response_code is 503 or not if DONOTCACHEPAGE is set
127
+ * to fix the warnings about clearing cache
128
+ * to fix the issue if a js source is called as ?site=site.com
129
+
130
+ = 0.8.6.3 =
131
+ * to be able to hide toolbar [<a target="_blank" href="http://www.wpfastestcache.com/features/hide-toolbar-link/">Details</a>]
132
+ * <strong>[FEATURE]</strong> Compatible with Yet Another Stars Rating
133
+ * <strong>[FEATURE]</strong> Cache Timeout with Hour and Minute [<a target="_blank" href="http://www.wpfastestcache.com/features/cache-timeout-with-hour-and-minute/">Details</a>]
134
+ * to add style for manually preload
135
+ * to fix htaccess popup
136
+ * <strong>[FEATURE]</strong> exclude cookie
137
+
138
+ = 0.8.6.2 =
139
+ * to update user-agents with Microsoft Edge
140
+ * to fix duplicate menu problem
141
+ * to create /cache/index.html for security
142
+ * to create /cache/wpfc-minified/index.html for security
143
+ * to execute render blocking js before css and js (premium)
144
+ * to fix Undefined variable: trailing_slash_rule
145
+ * <strong>[FEATURE]</strong> Clear Cache for Specific Page [<a target="_blank" href="http://www.wpfastestcache.com/tutorial/clear-cache-for-specific-page/">Details</a>]
146
+ * to add http_host condition into htaccess
147
+ * <strong>[FEATURE]</strong> Compatible with Mailchimp mc4wp.com
148
+ * <strong>[FEATURE]</strong> Compatible with Hide My WP [<a target="_blank" href="http://www.wpfastestcache.com/features/hide-my-wp/">Details</a>]
149
+ * <strong>[FEATURE]</strong> Compatible with AMP
150
+
151
+ = 0.8.6.1 =
152
+ * <strong>[FEATURE]</strong> exclude css sources
153
+ * to fix Non-trailing Slash problem
154
+ * to add specify source option for cdn integration
155
+ * new interface of cdn tab
156
+ * <strong>[FEATURE]</strong> to add Photon
157
+ * <strong>[FEATURE]</strong> Multiple CDN
158
+ * <strong>[FEATURE]</strong> exclude js sources
159
+ * to improve Combine JS feature
160
+ * <strong>[FEATURE]</strong> Compatible with WpResidence theme
161
+ * <strong>[FEATURE]</strong> to call preload manually
162
+
163
+ = 0.8.6.0 =
164
+ * to fix the problem about replacing url after minify css
165
+ * to add "start with" option to the cache timeout
166
+ * to add uninstall feature
167
+ * to add "user-agent" option to the exclude page
168
+ * to convert cache time to local time
169
+ * to exclude WhatsApp user-agent
170
+
171
+ = 0.8.5.9 =
172
+ * to remove X-Wap-Profile from htaccess
173
+ * to show warning lightbox if the cache cannot be deleted
174
+ * <strong>[FEATURE]</strong> Set preload number
175
+ * refactoring of is_wptouch_smartphone()
176
+ * <strong>[FEATURE]</strong> to clear only the homepage cache
177
+ * wp nonces added for security
178
+
179
+ = 0.8.5.8 =
180
+ * to remove hostname from exclude rule
181
+ * to fix file cache problem
182
+ * to change the mobile user-agents
183
+ * to fix Wordfence Security report
184
+
185
+ = 0.8.5.7 =
186
+ * <strong>[FEATURE]</strong> Preload
187
+ * to exclude the renamed page of woocommerce
188
+ * to fix path which starts with ./ in css files
189
+ * <strong>[FEATURE]</strong> Compatible with Visual Composer Post Grid
190
+ * application/x-javascript has been added for leverage browser caching
191
+ * to prevent removing newlines from .htaccess
192
+ * <strong>[FEATURE]</strong> Compatible with WP-CLI
193
+ * to add wp-touch mobile user-agent list
194
+ * to exclude facebookexternalhit user-agent
195
+ * <strong>[FEATURE]</strong> Compatible with Any Mobile Theme Switcher
196
+ * <strong>[FEATURE]</strong> CDN for css files
197
+ * to fix the huge size of tmpWpfc problem
198
+
199
+ = 0.8.5.6 =
200
+ * to combine css files by media attribute
201
+ * to fix lots of disk usage issue
202
+ * to fix design broken which occours after some time
203
+ * to fix PHP Notice: Undefined index: HTTP_ACCEPT
204
+ * to fix WP-Polls issue if PHP v5.6
205
+ * to remove 
206
+ * <strong>[FEATURE]</strong> to add Polish language
207
+ * <strong>[FEATURE]</strong> to add CDN77
208
+ * to get the source of fonts.googleapis.com
209
+ * new style of Exclude Page
210
+ * to set cache timeout for specific pages
211
+ * gzip for woff type
212
+ * to fix "unknown error" of AWS cdn integration
213
+ * <strong>[FEATURE]</strong> chinese language has been added
214
+ * <strong>[FEATURE]</strong> Compatible with WP-PostRatings
215
+ * to add WPFC_TOOLBAR_FOR_AUTHOR
216
+ * to fix combine css issue if a file is empty after minify
217
+ * to add woff2 for browser caching
218
+ * to disable creating cache if get_option("home") is secure and current url is not secure
219
+ * to fix switching theme from mobile to desktop on wptouch
220
+ * to remove carriage return (^M)
221
+ * <strong>[FEATURE]</strong> Finnish language has been added
222
+ * <strong>[FEATURE]</strong> Nginx support
223
+ * to use case-insensitive file system for browser caching
224
+ * WAP-Browser has been added into mobile user agent list
225
+ * to prevent 404 error for wpfc-minified after clearing minified files
226
+ * <strong>[FEATURE]</strong> to add any cdn provider
227
+ * to prevent from xss attacks (Brendon Boshell)
228
+ * to clear the cache of homepage after update static page
229
+ * to clear the cache of homepage after update sticky page
230
+ * to clear the cache of homepage after update post which appears on homepage
231
+
232
+ = 0.8.5.5 =
233
+ * to add Amazon CloudFront CDN
234
+ * to add KeyCDN
235
+ * to update Russian Language
236
+ * to fix PHP Notice: Undefined index: HTTP_USER_AGENT
237
+ * to fix PHP Notice: Undefined index: name
238
+ * to fix combine js issue with commented out js
239
+ * to fix delete minify files issue
240
+ * to add image/svg+xml for leverage browser cache
241
+ * refactoring of minify and combine css features
242
+ * to fix redirection to /wp-content/cache/all for ssl
243
+ * to add text for toolbar icon
244
+
245
+ = 0.8.5.4 =
246
+ * to be compatible with Guideline
247
+
248
+ = 0.8.5.3 =
249
+ * to check zlib extension for downloading premium automatically
250
+ * to update Portuguese and Turkish languages
251
+ * to be compatible with sub-directory installation with renamed wp-content
252
+ * refactoring of js-utilities.php
253
+ * to fix delete comment issue
254
+
255
+ = 0.8.5.2 =
256
+ * to replace https:// and http:// to // after converting inline css to link
257
+ * to replace https:// and http:// to // after converting inline js to link
258
+ * to ignore the empty css files
259
+ * to optimize exclude page feature
260
+ * to fix mobile cache issue for ipad user if wp touch is used
261
+ * to prevent caching js files whose type is text/template
262
+ * to update Portuguese language
263
+
264
+ = 0.8.5.1 =
265
+ * <strong>[FEATURE]</strong> to add MaxCDN
266
+ * to remove comments from inline js
267
+ * to fix trim() issue
268
+ * to be compatible with Leaflet Maps Marker
269
+
270
+ = 0.8.5.0 =
271
+ * to prevent combine js file which is added by WP Socializer
272
+ * to make ruleForWpContent() pasive
273
+ * refactoring of inlineToScript()
274
+ * <strong>[FEATURE]</strong> Romanian has been added
275
+
276
+ = 0.8.4.9 =
277
+ * <strong>[FEATURE]</strong> to be compatible with WP Mobile Edition
278
+ * to prevent from sql injection attacks (Kacper Szurek)
279
+ * to prevent using Head Cleaner
280
+
281
+ = 0.8.4.8 =
282
+ * to show .htaccess rules if not writeable
283
+ * not to comment out Facebook js
284
+ * not to comment out document.createElement('script')
285
+ * not to minify and combine style and js codes in noscript tag
286
+
287
+ = 0.8.4.7 =
288
+ * to update Portuguese language
289
+ * to make compatible with Google Adsense plugin
290
+ * to add user-agent of Samsung S5, LG and HTC
291
+
292
+ = 0.8.4.6 =
293
+ * to add popup warning modal for premium download
294
+ * to remove mobile cache after update post
295
+
296
+ = 0.8.4.5 =
297
+ * wpfcNOT is visible only for admins
298
+ * to prevent creating cache for POST request
299
+ * to fix issue of converting inline js to internal file
300
+
301
+ = 0.8.4.4 =
302
+ * to fix inline css issue
303
+ * to prevent caching for renamed wp-login.php
304
+
305
+ = 0.8.4.3 =
306
+ * to stop caching for /wp-api/v1, /cart, /checkout, /receipt, /confirmation, /product - WooCommerce
307
+ * to prevent caching if useragent Mediapartners-Google
308
+ * to decrease pcre.recursion_limit in css optimization to prevent Internal Server Error
309
+
310
+ = 0.8.4.2 =
311
+ * to fix premium page issue
312
+
313
+ = 0.8.4.1 =
314
+ * exclude page is case insensitive
315
+ * to check buffer is json or not for checkWoocommerceSession()
316
+ * not to comment out Google Analytics by Yoast
317
+
318
+ = 0.8.4.0 =
319
+ * refactoring of checkHtml()
320
+
321
+ = 0.8.3.9 =
322
+ * other plugins can use the functions
323
+ * to put ";" at the end of js file if last char is not ";"
324
+ * to make compatible renamed wp-content sites
325
+
326
+ = 0.8.3.8 =
327
+ * to prevent using GZip Ninja Speed Compression
328
+ * to prevent using GZIP Output
329
+ * to show success message after saving exclude page
330
+ * style of left panel
331
+ * opera mini has been added into mobile user agent list
332
+ * to fix download premium version issue
333
+
334
+ = 0.8.3.7 =
335
+ * to prevent confliction on left menu
336
+ * to fix error and success message icon
337
+
338
+ = 0.8.3.6 =
339
+ * MIDP has been added into mobile user agent list
340
+
341
+ = 0.8.3.5 =
342
+ * to fix vulnerability (discoverd by 0pc0deFR aka Kevin FALCOZ)
343
+ * to fix issue of moving chartset to the top
344
+ * to prevent combine Google Fonts javascripts
345
+ * <strong>[FEATURE]</strong> exclude page
346
+
347
+ = 0.8.3.4 =
348
+ * to prevent inline to external if the style is used in the javascript
349
+ * to prevent creating cache for xmlrpc.php
350
+ * to fix white page issue because of combine css and js
351
+ * icons for premium version
352
+
353
+ = 0.8.3.3 =
354
+ * WPtouch issue has been solved
355
+ * improvement of cache delete
356
+ * to add ";" at the end of JS file if it does not exist
357
+
358
+ = 0.8.3.2 =
359
+ * to prevent comment out google analitics code
360
+ * refactoring of isPasswordProtected()
361
+ * the clear cache button on toolbar is available for editors
362
+
363
+ = 0.8.3.1 =
364
+ * index.html files have been added intead of .htaccess
365
+ * to prevent comment out inline js rules twice
366
+ * <strong>[FEATURE]</strong> to add delete button on the admin bar
367
+ * to fix url() problem for data:image/svg+xml
368
+
369
+ = 0.8.3.0 =
370
+ * to fix <!--[wpfcNOT]--> issue of text to visual
371
+ * refactoring of redirect rule
372
+ * to prevent the directory access
373
+ * to prevent from xss attacks (Kacper Szurek)
374
+
375
+ = 0.8.2.9 =
376
+ * to fix 301 redirection issue of sub-folder
377
+ * to support non-english characters on search
378
+
379
+ = 0.8.2.8 =
380
+ * to prevent caching wp-login.php if renamed
381
+ * to prevent caching if the page has a contactform7 form with captcha
382
+ * to prevent caching for ajax call
383
+
384
+ = 0.8.2.7 =
385
+ * to implement single post cache deletion when a post/page is modified
386
+ * <strong>[FEATURE]</strong> to implement new frequency values for cache timeout
387
+ * html corrupted warning has been added
388
+ * to make compatible with WooCommerce Themes
389
+ * to prevent combine inline css if commented out
390
+
391
+ = 0.8.2.6 =
392
+ * to fix sub-domain redirect issue with www
393
+ * to prevent caching of sitemap.xml
394
+ * to fix getting error when .htaccess is not found
395
+ * to improve combine css
396
+ * to prevent caching wp-comments-post.php
397
+ * to prevent combine comment out js files
398
+ * to prevent caching js files whose type is application/ld+json
399
+ * style changes of delete cache panel
400
+ * to fix php warning which is Invalid argument supplied for foreach()
401
+ * to fix "File not found" message when trying to leave a comment
402
+
403
+ = 0.8.2.5 =
404
+ * to prevent converting style rules to link more than once
405
+ * to clear cache after admin writes a comment
406
+ * to clear cache if comment has not ben manually approved
407
+ * to disable minute and hour when hourly is selected
408
+ * to show both time when twice daily is selected on cache timeout panel
409
+
410
+ = 0.8.2.4 =
411
+ * rewrite rule issue has been solved
412
+ * to remove empty chars from url()
413
+ * to add media type for inline css after minify
414
+
415
+ = 0.8.2.3 =
416
+ * to support setting hour and minute as a 0
417
+ * to fix server time NaN
418
+ * to check the length of inline css for combine css
419
+ * to support selecting the css files which do not include home_url()
420
+ * to support selecting the js files which do not include home_url()
421
+ * publish_page to save_post
422
+
423
+ = 0.8.2.2 =
424
+ * to minify css files which are NOT "media='all'"
425
+ * to support selecting the css files which do not include home_url()
426
+ * to insert define('WP_CACHE', true) into wp-config.php for wp-postviews
427
+ * to fix PHP Warning: Missing argument 2 for CssUtilities::minifyCss()
428
+ * to fix PHP Warning: scandir warning
429
+
430
+ = 0.8.2.1 =
431
+ * to support WP-PostViews
432
+ * tab of minified css and js has been removed
433
+ * warning about Microsoft IIS has been added
434
+ * to prevent minify and combine css if returns 404
435
+ * to prevent combine js if returns 404
436
+ * warning about Multisite has been added
437
+
438
+ = 0.8.2.0 =
439
+ * warning of regular expression is too large has been added
440
+ * <strong>[FEATURE]</strong> to be able to choose specific time
441
+ * js and css merging is not beta anymore
442
+
443
+ = 0.8.1.9 =
444
+ * to delete cachen when page is edited or published
445
+ * warning of DONOTCACHEPAGE has been added
446
+ * file_get_contents_curl() issue for the files which start with //
447
+ * to combine the css files which has media="all" attribute
448
+ * to fix re-write rule for sub-directory installation
449
+ * <strong>[FEATURE]</strong> to prevent 304 browser caching to see new post
450
+ * <strong>[FEATURE]</strong> wpfcNOT works for pages as well except the themes
451
+ * the warning has been added for empty buffer
452
+
453
+ = 0.8.1.8 =
454
+ * to fix disable the plugin
455
+ * to check permalinks was set or not
456
+ * modified of deletion of minified files' warning
457
+ * to fix inserting extra comment tag
458
+
459
+ = 0.8.1.7 =
460
+ * wp-polls issue
461
+ * cache timeout issue
462
+ * minify css issue for data:application/x-font-woff
463
+
464
+ = 0.8.1.6 =
465
+ * optimization of deletion cache
466
+ * creating cache problem when combine css is unchecked
467
+
468
+ = 0.8.1.5 =
469
+ * <strong>[FEATURE]</strong> JS Combine
470
+ * to check that super cache is active or not
471
+ * to check that better wordPress minify is active or not
472
+ * <strong>[FEATURE]</strong> french translation
473
+
474
+ = 0.8.1.4 =
475
+ * to prevent creating cache for logged-in users
476
+ * gzip for svg, x-font-ttf, vnd.ms-fontobject, font/opentype font/ttf font/eot font/otf
477
+ * stlye files issue with https
478
+ * <strong>[FEATURE]</strong> Keep Alive
479
+ * compatible with @import "style.css";
480
+ * <strong>[FEATURE]</strong> italian language has been added
481
+
482
+ = 0.8.1.3 =
483
+ * to support renamed wp-content
484
+
485
+ = 0.8.1.2 =
486
+ * to fix combine css breaking css down
487
+ * the password protected posts are not cached
488
+ * change of minified css file name
489
+
490
+ = 0.8.1.1 =
491
+ * to show which style files are combined
492
+ * to fix the minify css issue
493
+ * to fix minify css breaking css down
494
+
495
+ = 0.8 =
496
+ * <strong>[FEATURE]</strong> Supports "Subdirectory Install"
497
+ * <strong>[FEATURE]</strong> SSL support
498
+ * <strong>[FEATURE]</strong> Leverage browser caching has been added
499
+ * GZippy warning has been added
500
+ * Path issue of rewrite rules has been solved
501
+ * to prevent create cache for mobile devices
502
+ * <strong>[FEATURE]</strong> Enable/Disable cache option for logged-in users has been added
503
+ * Improvement of Turkish and Spanish translation
504
+ * Issue of subdirectory install using with subdirectory url
505
+ * Double slash in the rewrite rule problem has been solved
506
+ * Full path is written instead of %{DOCUMENT_ROOT}
507
+ * Stop to prevent not to minify css files which has small size
508
+ * Improvement of detection active plugins
509
+ * <strong>[FEATURE]</strong> "Combine Css" has been added
510
+ * Stop to prevent not to minify css files which has small size
511
+ * Improvement of detection active plugins
512
+ * <strong>[FEATURE]</strong> "Combine Css" has been added
513
+ * Improvement of combine css
514
+ * to prevent creating cache for the urls which has query string
515
+
516
+ = 0.7.9 =
517
+ * <strong>[FEATURE]</strong> Compatible with WP-Polls
518
+ * <strong>[FEATURE]</strong> Enable/Disable cache option for mobile devices has been added
519
+ * <strong>[FEATURE]</strong> "[wpfcNOT]" shortcode has been converted to the image
520
+ * Optimization of CSS minify
521
+ * r10.net support forum url has been added
522
+ * Some style changes
523
+ * to correct misspelling
524
+ * Icon has been changed
525
+ * <strong>[FEATURE]</strong> Portuguese language has been added
526
+ * <strong>[FEATURE]</strong> German language has been added
527
+ * Minify css issue has been solved
528
+ * <strong>[FEATURE]</strong> Blackberry PlayBook has been added into mobiles
529
+ * <strong>[FEATURE]</strong> www and non-www redirections have been added
530
+
531
+ = 0.7.8 =
532
+ * <strong>[FEATURE]</strong> Delete Minified Css & Js feature has been added
533
+ * Update of Spanish translation
534
+ * Update of Turkish translation
535
+ * Update of Russian translation
536
+ * Update of Ukrainian translation
537
+
538
+ = 0.7.7 =
539
+ * Optimization of CSS minify
540
+ * rmdir, mkdir and rename error_log problem
541
+ * modify .htaccess problem
542
+ * Update of Spanish translation
543
+ * Update of Turkish translation
544
+ * Update of Russian translation
545
+ * Update of Ukrainian translation
546
+
547
+ = 0.7.6 =
548
+ * <strong>[FEATURE]</strong> Gzip Compression
549
+
550
+ = 0.7.5 =
551
+ * Performance of delete all files is improved
552
+ * Rewrite rules of WPFC is removed from .htaccess when wpfc is deactivated
553
+ * CSS of Warnings has been changed
554
+
555
+ = 0.7.4 =
556
+ * Minify Css problem has been solved
557
+ * Info panel has been added
558
+ * Update of Spanish translation
559
+ * Update of Turkish translation
560
+ * Update of Russian translation
561
+ * Update of Ukrainian translation
562
+
563
+ = 0.7.3 =
564
+ * Info Tip has been added
565
+
566
+ = 0.7.2 =
567
+ * <strong>[FEATURE]</strong> Minify CSS files
568
+
569
+ = 0.7.1 =
570
+ * Delete Cron Job when the plugin is deactivated
571
+ * Delete from DB when the plugin is deactivated
572
+
573
+ = 0.7 =
574
+ * <strong>[FEATURE]</strong> works with Wordfence properly
575
+ * <strong>[FEATURE]</strong> 404 pages are not cached
576
+ * urls which includes words that wp-content, wp-admin, wp-includes are not cached
577
+ * The issue about cache timeout has been solved
578
+ * <strong>[FEATURE]</strong> Cache Timeout has been added
579
+ * <strong>[FEATURE]</strong> Spanish language has been added
580
+ * <strong>[FEATURE]</strong> Minify html
581
+ * <strong>[FEATURE]</strong> Supported languages: Russian, Ukrainian and Turkish
582
+ * <strong>[FEATURE]</strong> "Block Cache For Posts and Pages" has been added as a icon for TinyMCE and Quicktags editor
583
+ * Cache file is not created if the file is exist
584
+ * Cached files are deleted after deactivation of the plugin
585
+
586
+ = 0.6 =
587
+ * Cached file is not updated after comment because of security reasons
588
+ * Checking corruption of html
589
+ * Creation time of file has been added
590
+ * "Not cached version" text has been removed
591
+ * Some style changes
592
+ * System works under sub wp sites
593
+ * Plugin URI has been added
594
+ * Dir path has been removed from not cached version
595
+ * Some styles changes
596
+ * Some styles changes
597
+
598
+ = 0.5 =
599
+ * <strong>[FEATURE]</strong> Admin can delete all cached files from the options page
600
+ * <strong>[FEATURE]</strong> All cache files are deleted when a post or page is published
601
+ * <strong>[FEATURE]</strong> Blocking cache with Shortcode
602
+
603
+ == Frequently Asked Questions ==
604
+
605
+ = How do I know my blog is being cached? =
606
+ You need to refresh a page twice. If a page is cached, at the bottom of the page there is a text like "&lt;!-- WP Fastest Cache file was created in 0.330816984177 seconds, on 08-01-14 9:01:35 --&gt;".
607
+
608
+ = Does it work with Nginx? =
609
+ Yes, it works with Nginx properly.
610
+
611
+ = Does it work with IIS (Windows Server) ? =
612
+ No, it does not work with IIS.
613
+
614
+ = What does ".htaccess not found" warning mean? =
615
+ Wpfc does not create .htaccess automatically so you need to create empty one.
616
+
617
+ = How is "tmpWpfc" removed? =
618
+ When the cached files are deleted, they are moved to "tmpWpfc" instead of being deleted and a cron-job is set. Delete all files are so difficult for server so cron-job is set not to use a lot of CPU resources. Cron-job is set and it deletes 100 files every 5 minutes. When all files in "tmpWpfc" are deleted, cron-job is unset.
619
+
620
+ = How can stop caching for some pages? =
621
+ If you add &lt;!--[wpfcNOT]--&gt; into source coude, creating cache stops. You can find it on visual and text editor after opening Add New Post panel.
622
+
623
+ = Does Wpfc work with WPMU (Wordpress Multisite) properly? =
624
+ No. Wpfc does not support Wordpress Multisite yet.
625
+
626
+ = Does Wpfc work in "Subdirectory Install"? =
627
+ Yes. Wpfc supports "Subdirectory Install".
628
+
629
+ = Is this plugin compatible with Http Secure (https) ? =
630
+ Yes, it is compatible with Http Secure (https).
631
+
632
+ = Is this plugin compatible with Adsense? =
633
+ Yes, it is compatible with Adsense 100%.
634
+
635
+ = Is this plugin compatible with CloudFlare? =
636
+ Yes, it is but you need to read the details. <a href="http://www.wpfastestcache.com/tutorial/wp-fastest-cache-cloudflarecloudfront/">Click</a>
637
+
638
+ = Is this plugin compatible with WP-Polls? =
639
+ Yes, it is compatible with WP-Polls 100%.
640
+
641
+ = Is this plugin compatible with Bulletproof Security? =
642
+ Yes, it is compatible with Bulletproof Security 100%.
643
+
644
+ = Is this plugin compatible with Wordfence Security? =
645
+ Yes, it is compatible with Wordfence Security 100%.
646
+
647
+ = Is this plugin compatible with qTranslate? =
648
+ Yes, it is compatible with qTranslate 100%.
649
+
650
+ = Is this plugin compatible with WPtouch Mobile Plugin? =
651
+ Yes, it is compatible with WPtouch Mobile Plugin 100%.
652
+
653
+ = Is this plugin compatible with Any Mobile Theme Switcher Plugin? =
654
+ Yes, it is compatible with Any Mobile Theme Switcher Plugin 100%.
655
+
656
+ = Is this plugin compatible with WP-PostRatings? =
657
+ Yes, it is compatible with WP-PostRatings.
658
+
659
+ = Is this plugin compatible with AdRotate? =
660
+ No, it is NOT compatible with AdRotate.
661
+
662
+ = Is this plugin compatible with WP Hide & Security Enhancer? =
663
+ No, it is NOT compatible with WP Hide & Security Enhancer.
664
+
665
+ = Is this plugin compatible with WP-PostViews? =
666
+ Yes, it is compatible with WP-PostViews. The current post views appear on the admin panel. The visitors cannot see the current post views. The developer of WP-PostViews needs to fix this issue.
667
+
668
+ = Is this plugin compatible with MobilePress? =
669
+ No, it is NOT compatible with MobilePress. We advise WPtouch Mobile.
670
+
671
+ = Is this plugin compatible with WooCommerce Themes? =
672
+ Yes, it is compatible with WooCommerce Themes 100%.
673
+
674
+ == Upgrade notice ==
675
+ ....
templates/buttons.html ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="window-buttons-wrapper" style="padding: 0px; display: inline-block; width: 100%; border-top: 1px solid rgb(255, 255, 255); background: none repeat scroll 0px 0px rgb(222, 222, 222); z-index: 999; position: relative; text-align: right; border-radius: 0px 0px 3px 3px;">
2
+ <div style="padding: 12px; height: 23px;">
3
+ <button class="wpfc-dialog-buttons buttons-blood" type="button" action="remove">
4
+ <span>Remove integration</span>
5
+ </button>
6
+ <button class="wpfc-dialog-buttons" type="button" action="back">
7
+ <img align="left" class="icon-left" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYFJREFUeNrEkzFLw0AUx1/SpE02C0UXF6EgLXQxxc3BSUWsm1N1qVBwkIyOrgoFwY+gW0E36SQ4OIhmMIN+ACelWi1terlcLr5rTTE2oNDBB/+85HL/X+7du0hBEMA4IcOYMTZACW9y+7eQ1DRI6Xo/K8lkGYcXsMSqeP/RbA5NAedwv1eIAr4HmsqMUjN8Jo7z9xKE2XNdc2tt2qCEgNPpAPO830sIzWgydzYLRqvFwO31xPBdzEcsTNUIgHO+jAZztzJv2HYbdD0BpcWsIbrMeQAiCymKBPULe3QFpNsdZOIDYz44LgfH49B1CBCXAvVYH5RKqcO50RX4fsOjNHN41DBLlSXDevXg6ezSiqtbkiRrBNC+OQF5MncK6SzUj8/Nme0Nw8XdV1S1KMnRvWbPD3hdHcDCo4zUAXEqD4n8elnOzPbbSK8Oiv7LY1yrYwE6Ki2UMCoroE3M+de1WuhBdVBvqHf0sTiAitK+QD8PmZhIUaK3BH08Avi3n+lTgAEAiza4dOMU/9wAAAAASUVORK5CYII="/>
8
+ <span>Back</span>
9
+ </button>
10
+ <button class="wpfc-dialog-buttons" type="button" action="next">
11
+ <span>Next</span>
12
+ <img align="absmiddle" class="icon-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYdJREFUeNrEUz9IAmEUf6dlpqAQUksNDQ1NQR/NEdSSU1uEW0OrW2tjo0OLQbQcBNFik1C0tGpgglI0SpCcmXZ/v7vvu953nZWnQeDQgx/vce+93/vzvZNc14VRJAQjysgEYz1j6bAKUuibL5lKeVqSpDyqW4dSmZomWIYBQtcPVvoJgqJ1OhCNxYRJBPxdyX8ewbFt0FXVq5ZJzxLbsrJIkvl1BHTmgXPy08k4B4ZErZYNO+l5cnpRywY7+SLA2cju9jJRVQdEjAgUmnMXFMWERoPB1voCObusZDFcQRT7CExNA8viQCn3kqnDQbds0AwT2l0d3jULujThxQ0dATsoHx1fDd1HcnONxGckuC7clPFVcuORSHHYDvY4Y32JLu4Al1nqRuPQlM+9ZGg/yUazjt6Nz2funTI6ByqHpxchsrpfEjZXHnKsVpCdl1qv4MAdhBEJxJSvQwwr0efqI5hvd6x8co/f5hCvCF1wBDsQNzGBmPR1sCUxn4kwELbrJ0r//jd+CDAARWTMh3/g7aIAAAAASUVORK5CYII="/>
13
+ </button>
14
+ <button class="wpfc-dialog-buttons" type="button" action="close">
15
+ <span>Close</span>
16
+ </button>
17
+ <button class="wpfc-dialog-buttons buttons-green" type="button" action="finish">
18
+ <span>Finish</span>
19
+ </button>
20
+ </div>
21
+ </div>
templates/cdn/file_types.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="wpfc-checkbox-list">
2
+ <?php
3
+ $types = array("aac",
4
+ "css",
5
+ "eot",
6
+ "gif",
7
+ "jpeg",
8
+ "js",
9
+ "jpg",
10
+ "less",
11
+ "mp3",
12
+ "mp4",
13
+ "ogg",
14
+ "otf",
15
+ "pdf",
16
+ "png",
17
+ "svg",
18
+ "ttf",
19
+ "woff"
20
+ );
21
+
22
+ foreach ($types as $key => $value) {
23
+ ?>
24
+ <label for="file-type-<?php echo $value; ?>">
25
+ <input id="file-type-<?php echo $value; ?>" type="checkbox" value="<?php echo $value; ?>" checked=""><span class="">*.<?php echo $value; ?></span>
26
+ </label>
27
+ <?php
28
+ }
29
+ ?>
30
+ </div>
templates/cdn/maxcdn.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="wpfc-modal-maxcdn" style="top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 560px; z-index: 10001;">
2
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
3
+ </div>
4
+ <div style="z-index: 600; border-radius: 3px;">
5
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
6
+ <table width="100%" height="100%">
7
+ <tbody>
8
+ <tr>
9
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">MaxCDN Settings</td>
10
+ <td width="20" align="center" style="vertical-align: middle;"></td>
11
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
12
+ <div title="Close Window" class="close-wiz"></div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="window-content-wrapper" style="padding: 8px;">
19
+ <div style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;" class="window-content">
20
+
21
+
22
+ <div id="wpfc-wizard-maxcdn" class="wpfc-cdn-pages-container">
23
+ <div wpfc-cdn-page="1" class="wiz-cont">
24
+ <h1>Let's Get Started</h1>
25
+ <p>Hi! If you don't have a <strong>MaxCDN</strong> account, you can create one. If you already have, please continue...</p>
26
+ <div class="wiz-input-cont" style="text-align:center;">
27
+ <a href="http://tracking.maxcdn.com/c/149801/3982/378" target="_blank">
28
+ <button class="wpfc-green-button">Create a MaxCDN Account</button>
29
+ </a>
30
+ </div>
31
+ <p class="wpfc-bottom-note" style="margin-bottom:-10px;"><a target="_blank" href="https://www.maxcdn.com/one/tutorial/implementing-cdn-on-wordpress-with-wp-fastest-cache/">Note: Please read How to Integrate MaxCDN into WP Fastest Cache</a></p>
32
+ </div>
33
+ <div wpfc-cdn-page="2" class="wiz-cont" style="display:none">
34
+ <h1>Enter CDN Url</h1>
35
+ <p>Please enter your <strong>MaxCDN CDN Url</strong> below to deliver your contents via MaxCDN.</p>
36
+ <div class="wiz-input-cont">
37
+ <label class="mc-input-label" for="cdn-url" style="padding-right: 12px;">CDN Url:</label><input type="text" name="" value="" class="api-key" id="cdn-url">
38
+ <div id="cdn-url-loading"></div>
39
+ <label class="wiz-error-msg"></label>
40
+ </div>
41
+ <div class="wiz-input-cont">
42
+ <label class="mc-input-label" for="origin-url">Origin Url:</label><input type="text" name="" value="" class="api-key" id="origin-url">
43
+ </div>
44
+ </div>
45
+ <div wpfc-cdn-page="3" class="wiz-cont" style="display:none">
46
+ <h1>File Types</h1>
47
+ <p>Specify the file types within the to host with the CDN.</p>
48
+
49
+ <?php include WPFC_MAIN_PATH."templates/cdn/file_types.php"; ?>
50
+ </div>
51
+ <div wpfc-cdn-page="4" class="wiz-cont" style="display:none">
52
+ <?php include WPFC_MAIN_PATH."templates/cdn/specify_sources.php"; ?>
53
+ </div>
54
+ <div wpfc-cdn-page="5" class="wiz-cont" style="display:none">
55
+ <h1>Ready to Go!</h1>
56
+ <p>You're all set! Click the finish button below and that's it.</p>
57
+ </div>
58
+ <div wpfc-cdn-page="6" class="wiz-cont" style="display:none">
59
+ <h1>Integration Ready!</h1>
60
+ <p>Your static contents will be delivered via MaxCDN.</p>
61
+ </div>
62
+
63
+
64
+ <img class="wiz-bg-img" src="data:image/png;base64,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"/>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ <?php include WPFC_MAIN_PATH."templates/buttons.html"; ?>
69
+ </div>
70
+ </div>
71
+
72
+
73
+
templates/cdn/other.php ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="wpfc-modal-other" style="top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 560px; z-index: 10001;">
2
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
3
+ </div>
4
+ <div style="z-index: 600; border-radius: 3px;">
5
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
6
+ <table width="100%" height="100%">
7
+ <tbody>
8
+ <tr>
9
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">CDN Settings</td>
10
+ <td width="20" align="center" style="vertical-align: middle;"></td>
11
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
12
+ <div title="Close Window" class="close-wiz"></div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="window-content-wrapper" style="padding: 8px;">
19
+ <div style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;" class="window-content">
20
+
21
+
22
+ <div id="wpfc-wizard-other" class="wpfc-cdn-pages-container">
23
+ <div wpfc-cdn-page="1" class="wiz-cont">
24
+ <h1>Let's Get Started</h1>
25
+ <p>Hi! If you don't have a <strong>MaxCDN</strong> account, you can create one. If you already have, please continue...</p>
26
+ <div class="wiz-input-cont" style="text-align:center;">
27
+ <a href="http://tracking.maxcdn.com/c/149801/3982/378" target="_blank">
28
+ <button class="wpfc-green-button">Create a MaxCDN Account</button>
29
+ </a>
30
+ </div>
31
+ <p class="wpfc-bottom-note" style="margin-bottom:-10px;"><a target="_blank" href="https://www.maxcdn.com/one/tutorial/implementing-cdn-on-wordpress-with-wp-fastest-cache/">Note: Please read How to Integrate MaxCDN into WP Fastest Cache</a></p>
32
+ </div>
33
+ <div wpfc-cdn-page="2" class="wiz-cont" style="display:none">
34
+ <h1>Enter CDN Url</h1>
35
+ <p>Please enter your <strong>CDN Url</strong> below to deliver your contents via CDN.</p>
36
+ <div class="wiz-input-cont">
37
+ <label class="mc-input-label" for="cdn-url" style="padding-right: 12px;">CDN Url:</label><input type="text" name="" value="" class="api-key" id="cdn-url">
38
+ <div id="cdn-url-loading"></div>
39
+ <label class="wiz-error-msg"></label>
40
+ </div>
41
+ <div class="wiz-input-cont">
42
+ <label class="mc-input-label" for="origin-url">Origin Url:</label><input type="text" name="" value="" class="api-key" id="origin-url">
43
+ </div>
44
+ </div>
45
+ <div wpfc-cdn-page="3" class="wiz-cont" style="display:none">
46
+ <h1>File Types</h1>
47
+ <p>Specify the file types within the to host with the CDN.</p>
48
+
49
+ <?php include WPFC_MAIN_PATH."templates/cdn/file_types.php"; ?>
50
+ </div>
51
+ <div wpfc-cdn-page="4" class="wiz-cont" style="display:none">
52
+ <?php include WPFC_MAIN_PATH."templates/cdn/specify_sources.php"; ?>
53
+ </div>
54
+ <div wpfc-cdn-page="5" class="wiz-cont" style="display:none">
55
+ <h1>Ready to Go!</h1>
56
+ <p>You're all set! Click the finish button below and that's it.</p>
57
+ </div>
58
+ <div wpfc-cdn-page="6" class="wiz-cont" style="display:none">
59
+ <h1>Integration Ready!</h1>
60
+ <p>Your static contents will be delivered via CDN.</p>
61
+ </div>
62
+
63
+
64
+ <img class="wiz-bg-img" src="data:image/png;base64,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"/>
65
+ </div>
66
+ </div>
67
+ </div>
68
+ <?php include WPFC_MAIN_PATH."templates/buttons.html"; ?>
69
+ </div>
70
+ </div>
71
+
72
+
73
+
templates/cdn/photon.php ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="wpfc-modal-photon" style="top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 560px; z-index: 10001;">
2
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
3
+ </div>
4
+ <div style="z-index: 600; border-radius: 3px;">
5
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
6
+ <table width="100%" height="100%">
7
+ <tbody>
8
+ <tr>
9
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">CDN Settings</td>
10
+ <td width="20" align="center" style="vertical-align: middle;"></td>
11
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
12
+ <div title="Close Window" class="close-wiz"></div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="window-content-wrapper" style="padding: 8px;">
19
+ <div style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;" class="window-content">
20
+
21
+
22
+ <div id="wpfc-wizard-photon" class="wpfc-cdn-pages-container">
23
+ <div wpfc-cdn-page="1" class="wiz-cont">
24
+ <h1>Let's Get Started</h1>
25
+ <p>Hi! If you don't have a <strong>MaxCDN</strong> account, you can create one. If you already have, please continue...</p>
26
+ <div class="wiz-input-cont" style="text-align:center;">
27
+ <a href="http://tracking.maxcdn.com/c/149801/3982/378" target="_blank">
28
+ <button class="wpfc-green-button">Create a MaxCDN Account</button>
29
+ </a>
30
+ </div>
31
+ <p class="wpfc-bottom-note" style="margin-bottom:-10px;"><a target="_blank" href="https://www.maxcdn.com/one/tutorial/implementing-cdn-on-wordpress-with-wp-fastest-cache/">Note: Please read How to Integrate MaxCDN into WP Fastest Cache</a></p>
32
+ </div>
33
+ <div wpfc-cdn-page="2" class="wiz-cont" style="display:none">
34
+ <h1>Enter CDN Url</h1>
35
+ <p>Please enter your <strong>CDN Url</strong> below to deliver your contents via CDN.</p>
36
+ <div class="wiz-input-cont">
37
+ <label class="mc-input-label" for="cdn-url" style="padding-right: 12px;">CDN Url:</label><select id="cdn-url">
38
+ <option value="http://i0.wp.com/<?php echo str_replace("www.", "", $_SERVER["HTTP_HOST"]); ?>">http://i0.wp.com</option>
39
+ <option value="http://i1.wp.com/<?php echo str_replace("www.", "", $_SERVER["HTTP_HOST"]); ?>">http://i1.wp.com</option>
40
+ <option value="http://i2.wp.com/<?php echo str_replace("www.", "", $_SERVER["HTTP_HOST"]); ?>">http://i2.wp.com</option>
41
+ <option value="http://i3.wp.com/<?php echo str_replace("www.", "", $_SERVER["HTTP_HOST"]); ?>">http://i3.wp.com</option>
42
+ </select>
43
+ <div id="cdn-url-loading"></div>
44
+ <label class="wiz-error-msg"></label>
45
+ </div>
46
+ <div class="wiz-input-cont" style="display:none;">
47
+ <label class="mc-input-label" for="origin-url">Origin Url:</label><input type="text" name="" value="<?php echo str_replace("www.", "", $_SERVER["HTTP_HOST"]); ?>" class="api-key" id="origin-url">
48
+ </div>
49
+ </div>
50
+ <div wpfc-cdn-page="3" class="wiz-cont" style="display:none">
51
+ <h1>File Types</h1>
52
+ <p>Specify the file types within the to host with the CDN.</p>
53
+
54
+ <?php include WPFC_MAIN_PATH."templates/cdn/file_types.php"; ?>
55
+ </div>
56
+ <div wpfc-cdn-page="4" class="wiz-cont" style="display:none">
57
+ <?php include WPFC_MAIN_PATH."templates/cdn/specify_sources.php"; ?>
58
+ </div>
59
+ <div wpfc-cdn-page="5" class="wiz-cont" style="display:none">
60
+ <h1>Ready to Go!</h1>
61
+ <p>You're all set! Click the finish button below and that's it.</p>
62
+ </div>
63
+ <div wpfc-cdn-page="6" class="wiz-cont" style="display:none">
64
+ <h1>Integration Ready!</h1>
65
+ <p>Your static contents will be delivered via CDN.</p>
66
+ </div>
67
+
68
+
69
+ <img class="wiz-bg-img" src="data:image/png;base64,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"/>
70
+ </div>
71
+ </div>
72
+ </div>
73
+ <?php include WPFC_MAIN_PATH."templates/buttons.html"; ?>
74
+ </div>
75
+ </div>
76
+
77
+
78
+
templates/cdn/specify_sources.php ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h1>Specify Sources</h1>
2
+ <p>If you want some of the sources instead of all the sources to be served via CDN, you can specify the sources. If a source url contains any keyword below, it is served via CDN.</p>
3
+ <div class="wiz-input-cont" style="padding:8px 18px;border-radius:0;text-align:center; background: #fff none repeat scroll 0 0;">
4
+
5
+ <style type="text/css">
6
+ .wiz-input-cont{
7
+ box-shadow:0 2px 6px 0 rgba(0, 0, 0, 0.15) !important;
8
+
9
+ }
10
+
11
+ .wpfc-textbox-con{position:absolute;left:0;top:0;-webkit-border-radius:3px;-moz-border-radius:3px;background:#fff;-webkit-box-shadow:0 2px 6px 2px rgba(0,0,0,0.3);box-shadow:0 2px 6px 2px rgba(0,0,0,0.3);-moz-box-shadow:0 2px 6px 2px rgba(0,0,0,0.3);float:left;z-index:444;width:150px;border:1px solid #adadad;}
12
+ .keyword-item-list:after{box-shodow:0 2px 6px 0 rgba(0, 0, 0, 0.15);content:'';clear:both;height:0;visibility:hidden;display:block}
13
+ .keyword-item{width:auto;float:left;line-height:22px;position:relative;background:rgba(0,0,0,0.15);margin:0 5px 0 0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}
14
+ .fixed-search input{width:100%;padding:6px 9px;line-height:20px;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;border:none;border-bottom:1px solid #ccc;-webkit-box-shadow:0 2px 6px 0 rgba(0,0,0,0.1);box-shadow:0 2px 6px 0 rgba(0,0,0,0.1);-moz-box-shadow:0 2px 6px 0 rgba(0,0,0,0.1);-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;font-weight:bold}.fixed-search input:focus{outline:0}
15
+ .keyword-item{width:auto;float:left;line-height:22px;position:relative;background:rgba(0,0,0,0.15);margin:0 5px 5px 0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
16
+ .wpfc-add-new-keyword, .keyword-item a.keyword-label{
17
+ background-color: #ffa100;
18
+ color:#ffffff;
19
+ text-decoration:none;
20
+ padding:7px 15px;
21
+ display:block;
22
+ text-shadow:none;
23
+ -webkit-transition:all .1s linear;
24
+ -moz-transition:all .1s linear;
25
+ -o-transition:all .1s linear;
26
+ transition:all .1s linear;
27
+ cursor: pointer;
28
+ }
29
+ .keyword-item a.keyword-label:hover{
30
+ padding-left: 4px;
31
+ padding-right: 26px;
32
+ }
33
+ .keyword-item a.keyword-label:hover:after{
34
+ width:16px;
35
+ height:16px;
36
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAAnNCSVQICFXsRgQAAAAJcEhZcwAAAIAAAACAAc9WmjcAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAA4klEQVQokWXOMSuFcRQH4EcZZFB3w0BZfIC7mLl3MaGu2cAtqyLJwMQiRuObidFG4hNQJrlFJBlMFgzKMfi/vPe9/ZbT+T11jvAbq2nI8k3aB1MymStPTrTcyWTmi2BDdCQrgprtjjQKIJgw15aZth+Co9KB6zLYL4GLMthqq7/slcFKoVzTa1ClHTT/wKwxt0I4N/wPGqk+NuTNqQ/PLt3oyUEtgQWbQl3NqHVhOgfVBCYdCC3dhnwKSzkYSWDXslDVNG5RqOegksCDPg/ufXv34kxXAkF/SpcBh1492tEbwg+6YscxiN7TegAAAABJRU5ErkJggg==');
37
+ content:"";
38
+ position:absolute;
39
+ top:10px;
40
+ right:4px;
41
+ }
42
+
43
+ .wpfc-add-new-keyword{
44
+ cursor:pointer;
45
+ text-decoration:none;
46
+ background-color:#fff !important;
47
+ color:#ccc !important;
48
+ padding:5px 12px !important;
49
+ border:2px dashed #ccc;
50
+ line-height:21px;
51
+ }
52
+ .wpfc-add-new-keyword:before{display:inline-block;content:"+";margin:-1px 4px 0 -6px;}
53
+ .wpfc-add-new-keyword:hover{color:#589b43 !important;border-color:#589b43;}
54
+
55
+ </style>
56
+
57
+ <ul class="keyword-item-list">
58
+ <li class="keyword-item">
59
+ <a class="wpfc-add-new-keyword">Add Keyword</a>
60
+ <div class="wpfc-textbox-con" style="display:none;">
61
+ <div class="fixed-search"><input type="text" placeholder="Add Keyword"></div>
62
+ </div>
63
+ </li>
64
+ </ul>
65
+ </div>
templates/download.html ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div template-id="wpfc-modal-downloaderror" style="display:none;top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 560px; z-index: 10001;">
2
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
3
+ </div>
4
+ <div style="z-index: 600; border-radius: 3px;">
5
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
6
+ <table width="100%" height="100%">
7
+ <tbody>
8
+ <tr>
9
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Download</td>
10
+ <td width="20" align="center" style="vertical-align: middle;"></td>
11
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
12
+ <div title="Close Window" class="close-wiz"></div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="window-content-wrapper" style="padding: 8px;">
19
+ <div style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;" class="window-content">
20
+
21
+
22
+ <div class="wpfc-cdn-pages-container">
23
+ <div wpfc-cdn-page="1" class="wiz-cont">
24
+ <h1>Manually Activation</h1>
25
+ <p>If you have already paid, you can download the premium version via following button. You need to activate the premium plugin manually. Please don't forget read the following article.</p>
26
+ <div class="wiz-input-cont" style="text-align:center;">
27
+ <a class="wpfc-download-now" target="_blank" href="">
28
+ <button class="wpfc-green-button" style="padding: 6px 60px;">
29
+ <span>Download Now!</span>
30
+ </button>
31
+ </a>
32
+ </div>
33
+ <p class="wpfc-bottom-note"><a target="_blank" href="http://www.wpfastestcache.com/warnings/how-to-activate-premium-version-manually/">Note: Please read How to Activate the Premium Version Manually</a></p>
34
+ </div>
35
+ </div>
36
+
37
+
38
+
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
templates/exclude.php ADDED
@@ -0,0 +1,492 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <style type="text/css">
2
+ .wpfc-exclude-item:hover{
3
+ background-color: #E5E5E5;
4
+ }
5
+ .wpfc-exclude-item{
6
+ float: left;
7
+ width: 330.5px;
8
+ margin-right: 7px;
9
+ -moz-border-radius:5px 5px 5px 5px;
10
+ -webkit-border-radius:5px 5px 5px 5px;
11
+ border-radius:5px 5px 5px 5px;
12
+ border:1px solid transparent;
13
+ cursor:pointer;
14
+ padding:9px;
15
+ outline:none !important;
16
+ list-style: outside none none;
17
+ }
18
+ .star{
19
+ float:left;
20
+ height:28px;
21
+ width:32px;
22
+ display: none;
23
+ }
24
+ .star img{
25
+ margin:9px 4px 4px;
26
+ }
27
+
28
+ .wpfc-exclude-item-form-title{
29
+ max-width:380px;
30
+ font-weight:bold;
31
+ white-space:nowrap;
32
+ max-width:615px;
33
+ margin-bottom:3px;
34
+ text-overflow:ellipsis;
35
+ -o-text-overflow:ellipsis;
36
+ -moz-text-overflow:ellipsis;
37
+ -webkit-text-overflow:ellipsis;
38
+ line-height:1em;
39
+ font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;
40
+ }
41
+ .wpfc-exclude-item-details{
42
+ font-size:11px;
43
+ color:#888;
44
+ display:block;
45
+ white-space:nowrap;
46
+ font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;
47
+ line-height:1.5em;
48
+ }
49
+ .wpfc-exclude-item-details b {
50
+ display:inline;
51
+ margin-left: 1px;
52
+
53
+ }
54
+ .wpfc-exclude-item-right{
55
+ margin-right: 0;
56
+ }
57
+ </style>
58
+ <div id="wpfc-modal-exclude" style="display:none;top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 560px; z-index: 10001;">
59
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
60
+ </div>
61
+ <div style="z-index: 600; border-radius: 3px;">
62
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
63
+ <table width="100%" height="100%">
64
+ <tbody>
65
+ <tr>
66
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Exclude Page Wizard</td>
67
+ <td width="20" align="center" style="vertical-align: middle;"></td>
68
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
69
+ <div title="Close Window" class="close-wiz"></div>
70
+ </td>
71
+ </tr>
72
+ </tbody>
73
+ </table>
74
+ </div>
75
+ <div class="window-content-wrapper" style="padding: 8px;">
76
+ <div style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;" class="window-content">
77
+
78
+
79
+ <div id="wpfc-wizard-exclude" class="wpfc-cdn-pages-container">
80
+ <div wpfc-cdn-page="1" class="wiz-cont" style="padding:0 0;min-height:37px;">
81
+
82
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" height="100%" style="background-color:#FFFFFF;border:1px solid #ccc !important;border-radius:10px;">
83
+ <tbody>
84
+ <tr>
85
+ <td valign="top" id="cond-list">
86
+ <table width="100%" cellspacing="0" cellpadding="5" border="0" class="cond-line active-line">
87
+ <tbody>
88
+ <tr>
89
+ <td width="100" height="35" class="wpfc-condition-text" style="padding-left:10px;font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;font-size: 12px;">If REQUEST_URI</td>
90
+ <td class="" width="95">
91
+ <select name="wpfc-exclude-rule-prefix">
92
+ <option selected="" value=""></option>
93
+ <option value="homepage">Home Page</option>
94
+ <option value="startwith">Starts With</option>
95
+ <option value="contain">Contains</option>
96
+ <option value="exact">Is Equal To</option>
97
+ </select>
98
+ </td>
99
+ <td width="300">
100
+ <div class="wpfc-exclude-rule-line-middle">
101
+ <input type="text" name="wpfc-exclude-rule-content" style="width:300px;">
102
+ <input type="hidden" name="wpfc-exclude-rule-type" style="width:300px;">
103
+ </div>
104
+ </td>
105
+ </tr>
106
+ </tbody>
107
+ </table>
108
+ </td>
109
+ </tr>
110
+ </tbody>
111
+ </table>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ </div>
116
+ <div class="window-buttons-wrapper" style="padding: 0px; display: inline-block; width: 100%; border-top: 1px solid rgb(255, 255, 255); background: none repeat scroll 0px 0px rgb(222, 222, 222); z-index: 999; position: relative; text-align: right; border-radius: 0px 0px 3px 3px;">
117
+ <div style="padding: 12px; height: 23px;">
118
+ <button class="wpfc-dialog-buttons buttons-blood" type="button" action="remove">
119
+ <span>Remove Rule</span>
120
+ </button>
121
+ <button class="wpfc-dialog-buttons" type="button" action="back">
122
+ <img align="left" class="icon-left" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYFJREFUeNrEkzFLw0AUx1/SpE02C0UXF6EgLXQxxc3BSUWsm1N1qVBwkIyOrgoFwY+gW0E36SQ4OIhmMIN+ACelWi1terlcLr5rTTE2oNDBB/+85HL/X+7du0hBEMA4IcOYMTZACW9y+7eQ1DRI6Xo/K8lkGYcXsMSqeP/RbA5NAedwv1eIAr4HmsqMUjN8Jo7z9xKE2XNdc2tt2qCEgNPpAPO830sIzWgydzYLRqvFwO31xPBdzEcsTNUIgHO+jAZztzJv2HYbdD0BpcWsIbrMeQAiCymKBPULe3QFpNsdZOIDYz44LgfH49B1CBCXAvVYH5RKqcO50RX4fsOjNHN41DBLlSXDevXg6ezSiqtbkiRrBNC+OQF5MncK6SzUj8/Nme0Nw8XdV1S1KMnRvWbPD3hdHcDCo4zUAXEqD4n8elnOzPbbSK8Oiv7LY1yrYwE6Ki2UMCoroE3M+de1WuhBdVBvqHf0sTiAitK+QD8PmZhIUaK3BH08Avi3n+lTgAEAiza4dOMU/9wAAAAASUVORK5CYII="/>
123
+ <span>Back</span>
124
+ </button>
125
+ <button class="wpfc-dialog-buttons" type="button" action="next">
126
+ <span>Next</span>
127
+ <img align="absmiddle" class="icon-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYdJREFUeNrEUz9IAmEUf6dlpqAQUksNDQ1NQR/NEdSSU1uEW0OrW2tjo0OLQbQcBNFik1C0tGpgglI0SpCcmXZ/v7vvu953nZWnQeDQgx/vce+93/vzvZNc14VRJAQjysgEYz1j6bAKUuibL5lKeVqSpDyqW4dSmZomWIYBQtcPVvoJgqJ1OhCNxYRJBPxdyX8ewbFt0FXVq5ZJzxLbsrJIkvl1BHTmgXPy08k4B4ZErZYNO+l5cnpRywY7+SLA2cju9jJRVQdEjAgUmnMXFMWERoPB1voCObusZDFcQRT7CExNA8viQCn3kqnDQbds0AwT2l0d3jULujThxQ0dATsoHx1fDd1HcnONxGckuC7clPFVcuORSHHYDvY4Y32JLu4Al1nqRuPQlM+9ZGg/yUazjt6Nz2funTI6ByqHpxchsrpfEjZXHnKsVpCdl1qv4MAdhBEJxJSvQwwr0efqI5hvd6x8co/f5hCvCF1wBDsQNzGBmPR1sCUxn4kwELbrJ0r//jd+CDAARWTMh3/g7aIAAAAASUVORK5CYII="/>
128
+ </button>
129
+ <button class="wpfc-dialog-buttons" type="button" action="close">
130
+ <span>Close</span>
131
+ </button>
132
+ <button class="wpfc-dialog-buttons buttons-green" type="button" action="finish">
133
+ <span>Save</span>
134
+ </button>
135
+ </div>
136
+ </div>
137
+ </div>
138
+ </div>
139
+ <script type="text/javascript">
140
+ var WpFcExcludePages = {
141
+ rules: [],
142
+ init: function(rules){
143
+ this.rules = rules;
144
+ this.insert_existing_rules();
145
+ this.click_event_for_add_button();
146
+ this.reorder();
147
+ },
148
+ remove_rule: function(clone_modal_id, number){
149
+ jQuery("div.wpfc-exclude-item[wpfc-exclude-item-number='" + number + "']").remove();
150
+ jQuery("div.wpfc-exclude-rule-line[wpfc-exclude-rule-number='" + number + "']").remove();
151
+ Wpfc_Dialog.remove(clone_modal_id, number);
152
+
153
+ this.save(function(){});
154
+ },
155
+ add_item: function(number, e){
156
+ var self = this;
157
+ var item = jQuery(".wpfc-exclude-item").first().clone();
158
+
159
+ if(jQuery(".wpfc-exclude-item").length%2 == 0){
160
+ console.log(item, jQuery(".wpfc-exclude-item").length)
161
+ item.addClass("wpfc-exclude-item-right");
162
+ }
163
+
164
+
165
+ item.attr("wpfc-exclude-item-number", number);
166
+ item.attr("prefix", e.prefix);
167
+ item.attr("content", e.content);
168
+ item.attr("type", e.type);
169
+
170
+ item.find(".wpfc-exclude-item-url").html(self.create_url_description(e.prefix, e.content, e.type));
171
+
172
+ item.find(".wpfc-exclude-item-form-title").html(self.create_title(e.prefix, e.content));
173
+
174
+ item.click(function(){
175
+ var clone_modal = jQuery("#wpfc-modal-exclude").clone();
176
+ var clone_modal_id = "wpfc-modal-exclude-" + new Date().getTime();
177
+
178
+ clone_modal.find("select").change(function(e){
179
+ if(jQuery(this).val() == "homepage"){
180
+ clone_modal.find("input[name='wpfc-exclude-rule-content']").hide();
181
+ clone_modal.find("input[name='wpfc-exclude-rule-content']").val("home");
182
+ }else{
183
+ clone_modal.find("input[name='wpfc-exclude-rule-content']").show();
184
+ clone_modal.find("input[name='wpfc-exclude-rule-content']").val("");
185
+ }
186
+ });
187
+
188
+ if(e.prefix == "homepage"){
189
+ clone_modal.find("input[name='wpfc-exclude-rule-content']").hide();
190
+ }
191
+
192
+ clone_modal.attr("id", clone_modal_id);
193
+ clone_modal.find("select[name='wpfc-exclude-rule-prefix']").val(jQuery(this).attr("prefix"));
194
+ clone_modal.find("input[name='wpfc-exclude-rule-content']").val(jQuery(this).attr("content"));
195
+ clone_modal.find("input[name='wpfc-exclude-rule-type']").val(jQuery(this).attr("type"));
196
+
197
+ if(e.type != "page"){
198
+ if(e.type == "useragent"){
199
+ clone_modal.find(".wpfc-condition-text").text("If User-Agent");
200
+ }else if(e.type == "css"){
201
+ clone_modal.find(".wpfc-condition-text").text("If CSS Url");
202
+ }else if(e.type == "js"){
203
+ clone_modal.find(".wpfc-condition-text").text("If JS Url");
204
+ }else if(e.type == "cookie"){
205
+ clone_modal.find(".wpfc-condition-text").text("If Cookie");
206
+ }
207
+
208
+ clone_modal.find("select[name='wpfc-exclude-rule-prefix'] option").each(function(){
209
+ if(this.value != "contain"){
210
+ jQuery(this).remove();
211
+ }
212
+ });
213
+ }
214
+
215
+
216
+
217
+ jQuery("#wpfc-modal-exclude").after(clone_modal);
218
+
219
+ if(typeof e.editable == "undefined"){
220
+ Wpfc_Dialog.dialog(clone_modal_id, {"close" :
221
+ function(){
222
+ },
223
+ "remove" :
224
+ function(){
225
+ self.remove_rule(clone_modal_id, number);
226
+ },
227
+ "finish" :
228
+ function(){
229
+ var prefix = clone_modal.find("select[name='wpfc-exclude-rule-prefix']").val();
230
+ var content = clone_modal.find("input[name='wpfc-exclude-rule-content']").val();
231
+ var type = clone_modal.find("input[name='wpfc-exclude-rule-type']").val();
232
+
233
+ jQuery("div.wpfc-exclude-rule-line[wpfc-exclude-rule-number='" + number + "']").find("select[name='wpfc-exclude-rule-prefix-" + number + "']").val(prefix);
234
+ jQuery("div.wpfc-exclude-rule-line[wpfc-exclude-rule-number='" + number + "']").find("input[name='wpfc-exclude-rule-content-" + number + "']").val(content);
235
+
236
+ if(self.is_empty_values(prefix, content)){
237
+ Wpfc_Dialog.remove(clone_modal_id);
238
+
239
+ self.save(function(){
240
+ jQuery("div.wpfc-exclude-item[wpfc-exclude-item-number='" + number + "']").attr("prefix", prefix);
241
+ jQuery("div.wpfc-exclude-item[wpfc-exclude-item-number='" + number + "']").attr("content", content);
242
+ // jQuery("div.wpfc-exclude-item[wpfc-exclude-item-number='" + number + "']").find(".wpfc-exclude-item-prefix").text(self.get_text(prefix));
243
+ // jQuery("div.wpfc-exclude-item[wpfc-exclude-item-number='" + number + "']").find(".wpfc-exclude-item-content").text('"' + content + '"');
244
+
245
+ jQuery("div.wpfc-exclude-item[wpfc-exclude-item-number='" + number + "']").find(".wpfc-exclude-item-url").html(self.create_url_description(prefix, content, type));
246
+
247
+ jQuery("div.wpfc-exclude-item[wpfc-exclude-item-number='" + number + "']").find(".wpfc-exclude-item-form-title").html(self.create_title(prefix, content));
248
+ });
249
+ }
250
+ }
251
+ });
252
+ }else if(e.editable == false){
253
+ Wpfc_Dialog.dialog(clone_modal_id, {"close" : function(){}});
254
+ }
255
+ });
256
+
257
+ item.show();
258
+
259
+ jQuery(".wpfc-exclude-" + e.type + "-list").append(item);
260
+
261
+ this.reorder();
262
+ },
263
+ create_title: function(prefix, content){
264
+ var title = "";
265
+
266
+ if(prefix == "exact"){
267
+ title = "Is Equal To: " + content;
268
+ }else if(prefix == "startwith"){
269
+ title = "Start With: " + content;
270
+ }else if(prefix == "contain"){
271
+ title = "Contains: " + content;
272
+ }else if(prefix == "homepage"){
273
+ title = "Home Page";
274
+ }
275
+
276
+ return title;
277
+ },
278
+ create_url_description: function(prefix, content, type){
279
+ var request_uri = content;
280
+ var b_start = "<b style='font-size:11px;color:#FFA100;'>";
281
+ var b_end = "</b>"
282
+
283
+ if(prefix == "exact"){
284
+ request_uri = b_start + content + b_end;
285
+ }else if(prefix == "startwith"){
286
+ request_uri = b_start + content + b_end + '(.*)';
287
+ }else if(prefix == "contain"){
288
+ request_uri = '(.*)' + b_start + content + b_end + '(.*)';
289
+ }else if(prefix == "homepage"){
290
+ request_uri = "";
291
+ }
292
+
293
+ if(type == "page" || type == "css" || type == "js"){
294
+ return "<?php echo home_url();?>" + "/" + request_uri;
295
+ }else if(type == "useragent"){
296
+ return "User-Agent: " + request_uri;
297
+ }else if(type == "cookie"){
298
+ return "Cookie: " + request_uri;
299
+ }
300
+
301
+ },
302
+ add_line: function(number, e){
303
+ var line = jQuery(".wpfc-exclude-rule-line").first().closest(".wpfc-exclude-rule-line").clone();
304
+
305
+ line.attr("wpfc-exclude-rule-number", number);
306
+
307
+ line.find(".wpfc-exclude-rule-line-add").remove();
308
+ line.find(".wpfc-exclude-rule-line-delete").show();
309
+ line.find("select[name^='wpfc-exclude-rule-prefix']").attr("name", "wpfc-exclude-rule-prefix-" + number).val(e.prefix);
310
+ line.find("input[name^='wpfc-exclude-rule-content']").attr("name", "wpfc-exclude-rule-content-" + number).val(e.content);
311
+ line.find("input[name^='wpfc-exclude-rule-type']").attr("name", "wpfc-exclude-rule-type-" + number).val(e.type);
312
+
313
+ jQuery(".wpfc-exclude-rule-container").append(line);
314
+ },
315
+ click_event_for_add_button: function(){
316
+ var self = this;
317
+
318
+ jQuery(".wpfc-add-new-exclude-button").click(function(e){
319
+ var clone_modal = jQuery("#wpfc-modal-exclude").clone();
320
+ //var number = jQuery("div.wpfc-exclude-rule-line[wpfc-exclude-rule-number]").length;
321
+ var number = new Date().getTime();
322
+ var clone_modal_id = "wpfc-modal-exclude-" + new Date().getTime();
323
+ var clone_modal_type = jQuery(e.currentTarget).attr("data-type");
324
+
325
+ clone_modal.attr("id", clone_modal_id);
326
+ clone_modal.find("input[name='wpfc-exclude-rule-type']").val(clone_modal_type);
327
+
328
+ if(clone_modal_type != "page"){
329
+ clone_modal.find("select[name='wpfc-exclude-rule-prefix'] option").each(function(){
330
+ if(this.value != "contain"){
331
+ jQuery(this).remove();
332
+ }
333
+ });
334
+
335
+ if(clone_modal_type == "useragent"){
336
+ clone_modal.find(".wpfc-condition-text").text("If User-Agent");
337
+ }else if(clone_modal_type == "css"){
338
+ clone_modal.find(".wpfc-condition-text").text("If CSS Url");
339
+ }else if(clone_modal_type == "js"){
340
+ clone_modal.find(".wpfc-condition-text").text("If JS Url");
341
+ }else if(clone_modal_type == "cookie"){
342
+ clone_modal.find(".wpfc-condition-text").text("If Cookie");
343
+ }
344
+ }
345
+
346
+
347
+
348
+
349
+ clone_modal.find("select").change(function(){
350
+ if(jQuery(this).val() == "homepage"){
351
+ clone_modal.find("input[name='wpfc-exclude-rule-content']").hide();
352
+ clone_modal.find("input[name='wpfc-exclude-rule-content']").val("home");
353
+ }else{
354
+ clone_modal.find("input[name='wpfc-exclude-rule-content']").show();
355
+ clone_modal.find("input[name='wpfc-exclude-rule-content']").val("");
356
+ }
357
+ });
358
+
359
+ jQuery("#wpfc-modal-exclude").after(clone_modal);
360
+
361
+ Wpfc_Dialog.dialog(clone_modal_id, {"finish" :
362
+ function(){
363
+ var prefix = clone_modal.find("select[name='wpfc-exclude-rule-prefix']").val();
364
+ var content = clone_modal.find("input[name='wpfc-exclude-rule-content']").val();
365
+ var type = clone_modal.find("input[name='wpfc-exclude-rule-type']").val();
366
+
367
+ content = self.remove_host_name(content);
368
+
369
+ content = content.replace(/^\/|\/$/g, '');
370
+
371
+ if(self.is_empty_values(prefix, content)){
372
+ self.add_line(number + 1, {"prefix" : prefix, "content" : content, "type" : type});
373
+
374
+ Wpfc_Dialog.remove(clone_modal_id);
375
+
376
+ self.save(function(){
377
+ self.add_item(number + 1, {"prefix" : prefix, "content" : content, "type" : type});
378
+ });
379
+ }
380
+ },
381
+ "close" :
382
+ function(){
383
+ }
384
+ });
385
+ });
386
+ },
387
+ save: function(callback){
388
+ var self = this, rule_number, prefix, content, rule, rules = [];
389
+
390
+ jQuery("form div.wpfc-exclude-rule-line").each(function(i, e){
391
+ rule_number = jQuery(e).attr("wpfc-exclude-rule-number");
392
+ prefix = jQuery(e).find("select[name^='wpfc-exclude-rule-prefix']").val();
393
+ type = jQuery(e).find("input[name^='wpfc-exclude-rule-type']").val();
394
+ content = jQuery(e).find("input[name^='wpfc-exclude-rule-content']").val();
395
+
396
+ content = self.remove_host_name(content);
397
+
398
+ rules.push({"prefix" : prefix, "content" : content, "type" : type});
399
+ });
400
+
401
+ jQuery("#revert-loader-toolbar").show();
402
+
403
+ jQuery.ajax({
404
+ type: 'POST',
405
+ dataType: "json",
406
+ url: ajaxurl,
407
+ data : {"action": "wpfc_save_exclude_pages", "rules" : rules, security: '<?php echo wp_create_nonce( "wpfc-save-exclude-ajax-nonce" ); ?>'},
408
+ success: function(res){
409
+ if(res.success){
410
+ jQuery("#revert-loader-toolbar").hide();
411
+ callback();
412
+ self.reorder();
413
+ }else{
414
+ alert("The rule cannot be added...");
415
+ }
416
+ },
417
+ error: function(e) {
418
+ alert("unknown error");
419
+ }
420
+ });
421
+ },
422
+ insert_existing_rules: function(){
423
+ var self = this;
424
+
425
+ self.add_item(new Date().getTime(), {"type" : "page", "prefix" : "exact", "content" : "wp-login.php", "editable" : false});
426
+ //self.add_item(new Date().getTime(), {"prefix" : "startwith", "content" : "wp-content", "editable" : false});
427
+ self.add_item(new Date().getTime(), {"type" : "page", "prefix" : "startwith", "content" : "wp-admin", "editable" : false});
428
+ self.add_item(new Date().getTime(), {"type" : "useragent", "prefix" : "contain", "content" : "facebookexternalhit", "editable" : false});
429
+ self.add_item(new Date().getTime(), {"type" : "useragent", "prefix" : "contain", "content" : "WhatsApp", "editable" : false});
430
+
431
+
432
+ if(typeof this.rules != "undefined" && this.rules && this.rules.length > 0){
433
+ jQuery.each(self.rules, function(i, e){
434
+ if(i > 0){
435
+ }
436
+ e.type = e.type ? e.type : "page";
437
+
438
+ self.add_line(i + 1, e);
439
+ self.add_item(i + 1, e);
440
+ });
441
+ }
442
+ },
443
+ get_text: function(value){
444
+ var obj = {"exact" : "Is Equal To","startwith" : "Starts With","contain" : "Contains", "homepage" : "Home Page"};
445
+ return obj[value];
446
+ },
447
+ is_empty_values: function(prefix, content){
448
+ if(prefix){
449
+ jQuery("#wpfc-wizard-exclude select[name='wpfc-exclude-rule-prefix']").css({'border-color': '#ddd'});
450
+ }else{
451
+ jQuery("#wpfc-wizard-exclude select[name='wpfc-exclude-rule-prefix']").css({'border-color': 'red'});
452
+ }
453
+
454
+ if(content){
455
+ jQuery("#wpfc-wizard-exclude input[name='wpfc-exclude-rule-content']").css({'border-color': '#ddd'});
456
+ }else{
457
+ jQuery("#wpfc-wizard-exclude input[name='wpfc-exclude-rule-content']").css({'border-color': 'red'});
458
+ }
459
+
460
+ if(prefix && content){
461
+ return true;
462
+ }
463
+
464
+ return false;
465
+ },
466
+ remove_host_name: function(content){
467
+ //to replace the urls which start with http:// or www. or with Host_Name
468
+ content = content.replace(new RegExp('.*' + location.hostname.replace(/www\./, "") + "\/", "gi"), "");
469
+ content = content.replace(/\/$/, "");
470
+
471
+ return content;
472
+ },
473
+ reorder: function(type){
474
+ jQuery("div.tab6 div[class^='wpfc-exclude'][class$='-list']").each(function(i,e){
475
+ var type = jQuery(e).attr("class").match(/wpfc-exclude-([^-]+)-list/);
476
+
477
+ if(typeof type[1] != "undefined"){
478
+ jQuery("div.wpfc-exclude-" + type[1] + "-list div.wpfc-exclude-item").each(function(i, e){
479
+ jQuery(e).removeClass("wpfc-exclude-item-right");
480
+
481
+ if(i%2 != 0){
482
+ jQuery(e).addClass("wpfc-exclude-item-right");
483
+ }
484
+ });
485
+ }
486
+ });
487
+ }
488
+ };
489
+ </script>
490
+
491
+
492
+
templates/htaccess.html ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div template-id="wpfc-modal-htaccess" style="display:none;top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 560px; z-index: 10001;">
2
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
3
+ </div>
4
+ <div style="z-index: 600; border-radius: 3px;">
5
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
6
+ <table width="100%" height="100%">
7
+ <tbody>
8
+ <tr>
9
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Manually Modify .htaccess</td>
10
+ <td width="20" align="center" style="vertical-align: middle;"></td>
11
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
12
+ <div title="Close Window" class="close-wiz"></div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="window-content-wrapper" style="padding: 8px;">
19
+ <div style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;" class="window-content">
20
+ <div>
21
+
22
+
23
+ <div style="" wpfc-cdn-page="1" class="wiz-cont">
24
+ <h1>.htaccess is not writeable</h1>
25
+ <p>1. Copy the rules from the textarea below</p>
26
+ <p>2. Remove everything from .htaccess</p>
27
+ <p>3. Paste the rules</p>
28
+ <div class="wiz-input-cont">
29
+ <div style="padding-bottom:5px;">
30
+ <label class="mm-input-label wiz-inp-label"></label>
31
+ </div>
32
+ <div>
33
+ <textarea onclick="this.focus();this.select()" class="wiz-inp-readonly-textarea" readonly="readonly" rows="10" cols="54" style="overflow-x: hidden;">ff</textarea>
34
+ </div>
35
+ </div>
36
+ </div>
37
+
38
+
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
templates/lazy_load.php ADDED
@@ -0,0 +1,88 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div template-id="wpfc-modal-lazyload" style="top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 560px; z-index: 10001;display:none;">
2
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
3
+ </div>
4
+ <div style="z-index: 600; border-radius: 3px;">
5
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
6
+ <table width="100%" height="100%">
7
+ <tbody>
8
+ <tr>
9
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Lazy Load Settings</td>
10
+ <td width="20" align="center" style="vertical-align: middle;"></td>
11
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
12
+ <div title="Close Window" class="close-wiz"></div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="window-content-wrapper" style="padding: 8px;">
19
+ <div style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;" class="window-content">
20
+
21
+ <?php
22
+ $wpFastestCacheLazyLoad_type_exceptcontent = "";
23
+ $wpFastestCacheLazyLoad_type_all = "";
24
+
25
+ if(isset($this->options->wpFastestCacheLazyLoad_type)){
26
+ if($this->options->wpFastestCacheLazyLoad_type == "exceptcontent"){
27
+ $wpFastestCacheLazyLoad_type_exceptcontent = 'checked="checked"';
28
+ }else if($this->options->wpFastestCacheLazyLoad_type == "all"){
29
+ $wpFastestCacheLazyLoad_type_all = 'checked="checked"';
30
+ }
31
+ }else{
32
+ $wpFastestCacheLazyLoad_type_exceptcontent = 'checked="checked"';
33
+ }
34
+ ?>
35
+ <div class="wpfc-cdn-pages-container">
36
+ <div wpfc-cdn-page="1" class="wiz-cont" style="">
37
+ <h1>Choose Images</h1>
38
+ <p>Please choose which images are loaded via Lazy Load.</p>
39
+
40
+
41
+ <div class="wiz-input-cont">
42
+ <label class="mc-input-label" style="margin-right: 5px;"><input type="radio" <?php echo $wpFastestCacheLazyLoad_type_all; ?> action-id="wpFastestCacheLazyLoad_type_all" id="wpFastestCacheLazyLoad_type_all" name="wpFastestCacheLazyLoad_type" value="all"></label>
43
+ <label for="wpFastestCacheLazyLoad_type_all">All Images</label>
44
+ </div>
45
+
46
+ <div class="wiz-input-cont" style="margin-top:10px !important;">
47
+ <label class="mc-input-label" style="margin-right: 5px;"><input type="radio" <?php echo $wpFastestCacheLazyLoad_type_exceptcontent; ?> action-id="wpFastestCacheLazyLoad_type_exceptcontent" id="wpFastestCacheLazyLoad_type_exceptcontent" name="wpFastestCacheLazyLoad_type" value="exceptcontent"></label>
48
+ <label for="wpFastestCacheLazyLoad_type_exceptcontent">All Images except images in content</label>
49
+ </div>
50
+
51
+
52
+
53
+ </div>
54
+ </div>
55
+
56
+
57
+
58
+
59
+
60
+ </div>
61
+ </div>
62
+ <?php include WPFC_MAIN_PATH."templates/buttons.html"; ?>
63
+ </div>
64
+ </div>
65
+ <script type="text/javascript">
66
+ jQuery("#wpFastestCacheLazyLoad").click(function(){
67
+ if(typeof jQuery(this).attr("checked") != "undefined"){
68
+ if(jQuery("div[id^='wpfc-modal-lazyload-']").length === 0){
69
+ Wpfc_New_Dialog.dialog("wpfc-modal-lazyload", {close: function(){
70
+ Wpfc_New_Dialog.clone.find("div.window-content input").each(function(){
71
+ if(jQuery(this).attr("checked")){
72
+ var id = jQuery(this).attr("action-id");
73
+ jQuery("div.tab1 div[template-id='wpfc-modal-lazyload'] div.window-content input#" + id).attr("checked", true);
74
+ }
75
+
76
+ //.attr("checked"
77
+ });
78
+
79
+ Wpfc_New_Dialog.clone.remove();
80
+ }});
81
+
82
+ Wpfc_New_Dialog.show_button("close");
83
+ }
84
+ }
85
+ });
86
+ </script>
87
+
88
+
templates/newpost.php ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <style type="text/css">
2
+ div[id^="wpfc-modal-newpost"] .wiz-input-cont{
3
+ margin-top: 0 !important;
4
+ margin-bottom: 5px !important;
5
+ }
6
+ .wiz-input-cont label{
7
+ margin-right: 0 !important;
8
+ }
9
+ </style>
10
+ <div template-id="wpfc-modal-newpost" style="display:none;top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 330px; z-index: 10001;">
11
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
12
+ </div>
13
+ <div style="z-index: 600; border-radius: 3px;">
14
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
15
+ <table width="100%" height="100%">
16
+ <tbody>
17
+ <tr>
18
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">New Post</td>
19
+ <td width="20" align="center" style="vertical-align: middle;"></td>
20
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
21
+ <div title="Close Window" class="close-wiz"></div>
22
+ </td>
23
+ </tr>
24
+ </tbody>
25
+ </table>
26
+ </div>
27
+ <div class="window-content-wrapper" style="padding: 15px;">
28
+ <div class="window-content" style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;">
29
+ <p style="color:#666;margin-top:0 !important;">What do you want to happen after publishing the new post?</p>
30
+
31
+ <?php
32
+ $wpFastestCacheNewPost_type_all = "";
33
+ $wpFastestCacheNewPost_type_homepage = "";
34
+
35
+ if(isset($this->options->wpFastestCacheNewPost_type)){
36
+ if($this->options->wpFastestCacheNewPost_type == "all"){
37
+ $wpFastestCacheNewPost_type_all = 'checked="checked"';
38
+ }else if($this->options->wpFastestCacheNewPost_type == "homepage"){
39
+ $wpFastestCacheNewPost_type_homepage = 'checked="checked"';
40
+ }else{
41
+ $wpFastestCacheNewPost_type_all = 'checked="checked"';
42
+ }
43
+ }else{
44
+ $wpFastestCacheNewPost_type_all = 'checked="checked"';
45
+ }
46
+ ?>
47
+
48
+
49
+ <div class="wiz-input-cont">
50
+ <label class="mc-input-label" style="margin-right: 5px;"><input type="radio" <?php echo $wpFastestCacheNewPost_type_all; ?> action-id="wpFastestCacheNewPost_type_all" id="wpFastestCacheNewPost_type_all" name="wpFastestCacheNewPost_type" value="all"></label>
51
+ <label for="wpFastestCacheNewPost_type_all">Clear All Cache</label>
52
+ </div>
53
+ <div class="wiz-input-cont">
54
+ <label class="mc-input-label" style="margin-right: 5px;"><input type="radio" <?php echo $wpFastestCacheNewPost_type_homepage; ?> action-id="wpFastestCacheNewPost_type_homepage" id="wpFastestCacheNewPost_type_homepage" name="wpFastestCacheNewPost_type" value="homepage"></label>
55
+ <label for="wpFastestCacheNewPost_type_homepage">Clear Only Homepage Cache</label>
56
+ </div>
57
+
58
+
59
+
60
+ </div>
61
+ </div>
62
+ <div class="window-buttons-wrapper" style="padding: 0px; display: inline-block; width: 100%; border-top: 1px solid rgb(255, 255, 255); background: none repeat scroll 0px 0px rgb(222, 222, 222); z-index: 999; position: relative; text-align: right; border-radius: 0px 0px 3px 3px;">
63
+ <div style="padding: 12px; height: 23px;text-align: center;">
64
+ <button class="wpfc-dialog-buttons buttons" type="button" action="close">
65
+ <span>OK</span>
66
+ </button>
67
+ </div>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ <script type="text/javascript">
72
+ jQuery("#wpFastestCacheNewPost").click(function(){
73
+ if(typeof jQuery(this).attr("checked") != "undefined"){
74
+ if(jQuery("div[id^='wpfc-modal-newpost-']").length === 0){
75
+ Wpfc_New_Dialog.dialog("wpfc-modal-newpost", {close: function(){
76
+ Wpfc_New_Dialog.clone.find("div.window-content input").each(function(){
77
+ if(jQuery(this).attr("checked")){
78
+ var id = jQuery(this).attr("action-id");
79
+ jQuery("div.tab1 div[template-id='wpfc-modal-newpost'] div.window-content input#" + id).attr("checked", true);
80
+ }
81
+
82
+ //.attr("checked"
83
+ });
84
+
85
+ Wpfc_New_Dialog.clone.remove();
86
+ }});
87
+
88
+ Wpfc_New_Dialog.show_button("close");
89
+ }
90
+ }
91
+ });
92
+ </script>
templates/nginx_gzip.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div template-id="wpfc-modal-nginxgzip" style="top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 360px; z-index: 10001;display:none;">
2
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
3
+ </div>
4
+ <div style="z-index: 600; border-radius: 3px;">
5
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
6
+ <table width="100%" height="100%">
7
+ <tbody>
8
+ <tr>
9
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Enable Gzip</td>
10
+ <td width="20" align="center" style="vertical-align: middle;"></td>
11
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
12
+ <div title="Close Window" class="close-wiz"></div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="window-content-wrapper" style="padding: 8px;">
19
+ <div style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;" class="window-content">
20
+ <div class="wpfc-cdn-pages-container">
21
+ <div class="wiz-cont" style="">
22
+ <h1>How to Enable Gzip?</h1>
23
+ <p>Nginx is used in the server so you need to enable the Gzip manually. Please take a look at the following tutorial.</p>
24
+
25
+ <div class="wiz-input-cont" style="margin-top:10px !important;">
26
+ <label class="mc-input-label" style="margin-right: 5px;">
27
+ <a href="http://www.wpfastestcache.com/tutorial/how-to-enable-gzip-on-nginx/" target="_blank">http://www.wpfastestcache.com/tutorial/how-to-enable-gzip-on-nginx/</a>
28
+ </label>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ <div class="window-buttons-wrapper" style="padding: 0px; display: inline-block; width: 100%; border-top: 1px solid rgb(255, 255, 255); background: none repeat scroll 0px 0px rgb(222, 222, 222); z-index: 999; position: relative; text-align: right; border-radius: 0px 0px 3px 3px;">
35
+ <div style="padding: 12px; height: 23px;text-align: center;">
36
+ <button class="wpfc-dialog-buttons buttons" type="button" action="close">
37
+ <span>OK</span>
38
+ </button>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ <script type="text/javascript">
44
+ jQuery("#wpFastestCacheGzip").click(function(){
45
+ if(jQuery("#wpFastestCacheGzip").is(':checked')){
46
+ if(jQuery("div[id^='wpfc-modal-nginxgzip-']").length === 0){
47
+ Wpfc_New_Dialog.dialog("wpfc-modal-nginxgzip", {close: function(){
48
+ Wpfc_New_Dialog.clone.remove();
49
+ }});
50
+
51
+ Wpfc_New_Dialog.show_button("close");
52
+ }
53
+ }
54
+ });
55
+ </script>
templates/permission_error.html ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div template-id="wpfc-modal-permission" style="display:none;top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 300px; z-index: 10001;">
2
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
3
+ </div>
4
+ <div style="z-index: 600; border-radius: 3px;">
5
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
6
+ <table width="100%" height="100%">
7
+ <tbody>
8
+ <tr>
9
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Warning</td>
10
+ <td width="20" align="center" style="vertical-align: middle;"></td>
11
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
12
+ <div title="Close Window" class="close-wiz"></div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="window-content-wrapper" style="padding: 15px;">
19
+ <div class="window-content" style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;">
20
+ <center style="color: black;">The cache has <u>NOT</u> been deleted because of permissions problem please <a href='http://www.wpfastestcache.com/warnings/delete-cache-problem-related-to-permission/' target='_blank'>Read More</a></center>
21
+ </div>
22
+ </div>
23
+ <div class="window-buttons-wrapper" style="padding: 0px; display: inline-block; width: 100%; border-top: 1px solid rgb(255, 255, 255); background: none repeat scroll 0px 0px rgb(222, 222, 222); z-index: 999; position: relative; text-align: right; border-radius: 0px 0px 3px 3px;">
24
+ <div style="padding: 12px; height: 23px;text-align: center;">
25
+ <button class="wpfc-dialog-buttons buttons" type="button" action="close">
26
+ <span>OK</span>
27
+ </button>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
templates/preload.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <style type="text/css">
2
+ div[id^="wpfc-modal-preload"] .wiz-input-cont{
3
+ margin-top: 0 !important;
4
+ margin-bottom: 5px !important;
5
+ float: left !important;
6
+ width: 40% !important;
7
+ }
8
+ .wiz-input-cont label{
9
+ margin-right: 0 !important;
10
+ }
11
+ </style>
12
+ <div template-id="wpfc-modal-preload" style="display:none;top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 300px; z-index: 10001;">
13
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
14
+ </div>
15
+ <div style="z-index: 600; border-radius: 3px;">
16
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
17
+ <table width="100%" height="100%">
18
+ <tbody>
19
+ <tr>
20
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Preload</td>
21
+ <td width="20" align="center" style="vertical-align: middle;"></td>
22
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
23
+ <div title="Close Window" class="close-wiz"></div>
24
+ </td>
25
+ </tr>
26
+ </tbody>
27
+ </table>
28
+ </div>
29
+ <div class="window-content-wrapper" style="padding: 15px;">
30
+ <div class="window-content" style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;">
31
+ <div class="wiz-input-cont" style="margin-right: 5px;">
32
+ <label class="mc-input-label" style="margin-right: 5px;"><input type="checkbox" <?php echo $wpFastestCachePreload_homepage; ?> id="wpFastestCachePreload_homepage" name="wpFastestCachePreload_homepage"></label>
33
+ <label for="wpFastestCachePreload_homepage">Homepage</label>
34
+ </div>
35
+ <div class="wiz-input-cont">
36
+ <label class="mc-input-label" style="margin-right: 5px;"><input type="checkbox" <?php echo $wpFastestCachePreload_post; ?> id="wpFastestCachePreload_post" name="wpFastestCachePreload_post"></label>
37
+ <label for="wpFastestCachePreload_post">Posts</label>
38
+ </div>
39
+ <div class="wiz-input-cont" style="margin-right: 5px;">
40
+ <label class="mc-input-label" style="margin-right: 5px;"><input type="checkbox" <?php echo $wpFastestCachePreload_category; ?> id="wpFastestCachePreload_category" name="wpFastestCachePreload_category"></label>
41
+ <label for="wpFastestCachePreload_category">Categories</label>
42
+ </div>
43
+ <div class="wiz-input-cont">
44
+ <label class="mc-input-label" style="margin-right: 5px;"><input type="checkbox" <?php echo $wpFastestCachePreload_page; ?> id="wpFastestCachePreload_page" name="wpFastestCachePreload_page"></label>
45
+ <label for="wpFastestCachePreload_page">Pages</label>
46
+ </div>
47
+ <!-- <div class="wiz-input-cont" style="margin-right: 5px;">
48
+ <label class="mc-input-label" style="margin-right: 5px;"><input type="checkbox"></label>
49
+ <label>Tags</label>
50
+ </div> -->
51
+
52
+ <div class="wiz-input-cont" style="width: 91% !important;margin-bottom: 0px !important;">
53
+ <label class="mc-input-label" style="float:left;">
54
+ <table id="wpfc-form-spinner-preload" class="wpfc-form-spinner" cellpadding="0" cellspacing="0" border="0" height="20" width="70" style="border: 1px solid rgb(204, 204, 204); border-collapse: collapse; background: rgb(255, 255, 255);">
55
+ <tbody>
56
+ <tr>
57
+ <td class="wpfc-form-spinner-input-td" rowspan="2" style="padding-right: 2px;height: 100%;">
58
+ <div class="wpfc-form-spinner-number" style="height: 100%; width: 100%; border: none; padding: 0px; font-size: 14px; text-align: center; outline: none;padding-top:7px;"><?php echo $wpFastestCachePreload_number; ?></div>
59
+ <input type="hidden" class="wpfc-form-spinner-input" name="wpFastestCachePreload_number" value="<?php echo $wpFastestCachePreload_number; ?>" />
60
+ </td>
61
+ <td class="wpfc-form-spinner-up" style="height: 15px; cursor: default; text-align: center; width: 12px; font-size: 9px; padding-left: 4px; padding-right: 8px; border: 1px solid rgb(204, 204, 204); background: rgb(245, 245, 245);">
62
+ <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAFCAQAAAAjkz5TAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAANjr9RwUqgAAACBjSFJNAABtmAAAc44AAPfgAACDwQAAbsQAAOKFAAAxZAAAGGNUHM53AAAAVklEQVR42gTBIQqAMACG0f8YSwPvZRIMxtVlESwWk8EyUJSFIR7Eg1h1xs/3hNBp4h0sQkLJrF9kzL1FiiY8GwcTPrtC87uQ2Al01JcGWjyOhooy/wMANWktnmvt+MQAAAAASUVORK5CYII=" align="right">
63
+ </td>
64
+ </tr>
65
+ <tr>
66
+ <td class="wpfc-form-spinner-down" style="height: 15px; cursor: default; text-align: center; width: 12px; font-size: 9px; padding-left: 4px; padding-right: 8px; border: 1px solid rgb(204, 204, 204); background: rgb(245, 245, 245);">
67
+ <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAFCAQAAAAjkz5TAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAANjr9RwUqgAAACBjSFJNAABtmAAAc44AAPfgAACDwQAAbsQAAOKFAAAxZAAAGGNUHM53AAAAWElEQVR42gBLALT/AMD/uv+z/6v/ov+Y/472ALf1uv+//7n/s/+c/3/PAKsYovSo/7H/mf969nEhAP8AkxiJ95T/dvZtHv8AAP8A/wB6GHHraR7/AP8AAwCoUy51Bie9nwAAAABJRU5ErkJggg==" align="right">
68
+ </td>
69
+ </tr>
70
+ </tbody>
71
+ </table>
72
+ </label>
73
+ <label style="float:left;margin-left:8px;padding-top:4px;">pages per minute</label>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ <div class="window-buttons-wrapper" style="padding: 0px; display: inline-block; width: 100%; border-top: 1px solid rgb(255, 255, 255); background: none repeat scroll 0px 0px rgb(222, 222, 222); z-index: 999; position: relative; text-align: right; border-radius: 0px 0px 3px 3px;">
78
+ <div style="padding: 12px; height: 23px;text-align: center;">
79
+ <button class="wpfc-dialog-buttons buttons" type="button" action="close">
80
+ <span>OK</span>
81
+ </button>
82
+ </div>
83
+ </div>
84
+ </div>
85
+ </div>
templates/timeout.php ADDED
@@ -0,0 +1,599 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <style type="text/css">
2
+ .wpfc-timeout-item:hover{
3
+ background-color: #E5E5E5;
4
+ }
5
+ .wpfc-timeout-item{
6
+ float: left;
7
+ width: 330.5px;
8
+ margin-right: 7px;
9
+ margin-left: 20px;
10
+ -moz-border-radius:5px 5px 5px 5px;
11
+ -webkit-border-radius:5px 5px 5px 5px;
12
+ border-radius:5px 5px 5px 5px;
13
+ border:1px solid transparent;
14
+ cursor:pointer;
15
+ padding:9px;
16
+ outline:none !important;
17
+ list-style: outside none none;
18
+ }
19
+ .star{
20
+ float:left;
21
+ height:28px;
22
+ width:32px;
23
+ display: none;
24
+ }
25
+ .star img{
26
+ margin:9px 4px 4px;
27
+ }
28
+
29
+ .wpfc-timeout-item-form-title{
30
+ max-width:380px;
31
+ font-weight:bold;
32
+ white-space:nowrap;
33
+ max-width:615px;
34
+ margin-bottom:3px;
35
+ text-overflow:ellipsis;
36
+ -o-text-overflow:ellipsis;
37
+ -moz-text-overflow:ellipsis;
38
+ -webkit-text-overflow:ellipsis;
39
+ line-height:1em;
40
+ font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;
41
+ }
42
+ .wpfc-timeout-item-details{
43
+ font-size:11px;
44
+ color:#888;
45
+ display:block;
46
+ white-space:nowrap;
47
+ font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;
48
+ line-height:1.5em;
49
+ }
50
+ .wpfc-timeout-item-details b {
51
+ display:inline;
52
+ margin-left: 1px;
53
+
54
+ }
55
+ .wpfc-timeout-item-right{
56
+ margin-right: 0;
57
+ margin-left: 0;
58
+ }
59
+ </style>
60
+ <div id="wpfc-modal-timeout" style="display:none;top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 560px; z-index: 10001;">
61
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
62
+ </div>
63
+ <div style="z-index: 600; border-radius: 3px;">
64
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
65
+ <table width="100%" height="100%">
66
+ <tbody>
67
+ <tr>
68
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Cache Timeout Wizard</td>
69
+ <td width="20" align="center" style="vertical-align: middle;"></td>
70
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
71
+ <div title="Close Window" class="close-wiz"></div>
72
+ </td>
73
+ </tr>
74
+ </tbody>
75
+ </table>
76
+ </div>
77
+ <div class="window-content-wrapper" style="padding: 8px;">
78
+ <div style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;" class="window-content">
79
+
80
+
81
+ <div id="wpfc-wizard-timeout" class="wpfc-cdn-pages-container">
82
+ <div wpfc-cdn-page="1" class="wiz-cont" style="padding:0 0;min-height:37px;">
83
+
84
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" height="100%" style="background-color:#FFFFFF;border:1px solid #ccc !important;border-radius:10px;">
85
+ <tbody>
86
+ <tr>
87
+ <td valign="top" id="cond-list">
88
+ <table width="100%" cellspacing="0" cellpadding="5" border="0" class="cond-line active-line">
89
+ <tbody>
90
+ <tr>
91
+ <td width="100" height="30" class="" style="padding-left:10px;font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;font-size: 12px;">If REQUEST_URI</td>
92
+ <td class="" width="95">
93
+ <select name="wpfc-timeout-rule-prefix">
94
+ <option selected="" value=""></option>
95
+ <option value="all">All</option>
96
+ <option value="homepage">Home Page</option>
97
+ <option value="startwith">Starts With</option>
98
+ <option value="exact">Is Equal To</option>
99
+ <!-- <option value="contain">Contains</option> -->
100
+ </select>
101
+ </td>
102
+ <td width="300">
103
+ <div class="wpfc-timeout-rule-line-middle">
104
+ <input type="text" name="wpfc-timeout-rule-content" style="width:300px;">
105
+ </div>
106
+ </td>
107
+ </tr>
108
+ </tbody>
109
+ </table>
110
+ </td>
111
+ </tr>
112
+ </tbody>
113
+ </table>
114
+
115
+ <div id="cond-single" style="border-top:1px solid #ccc; margin:10px 0px 5px 0px;"></div>
116
+
117
+ <table width="100%" cellspacing="0" cellpadding="0" border="0" height="100%" style="background-color:#FFFFFF;border:1px solid #ccc !important;border-radius:10px;">
118
+ <tbody>
119
+ <tr>
120
+ <td valign="top">
121
+ <table width="100%" cellspacing="0" cellpadding="5" border="0" class="cond-line active-line">
122
+ <tbody>
123
+ <tr>
124
+ <td width="10">Then</td>
125
+ <td class="" width="95">
126
+ <select name="wpfc-timeout-rule-schedule">
127
+ <?php
128
+ $schedules = wp_get_schedules();
129
+ $first = true;
130
+ foreach ($schedules as $key => $value) {
131
+ if($first){
132
+ echo "<option value=''>Choose One</option>";
133
+ $first = false;
134
+ }
135
+ echo "<option value='{$key}'>{$value["display"]}</option>";
136
+ }
137
+ ?>
138
+ </select>
139
+ </td>
140
+ <td width="300" height="30" class="" style="font-family: Verdana,Geneva,Arial,Helvetica,sans-serif;font-size: 12px;">
141
+ <span class="wpfc-timeout-at-text" style="padding-right:5px;display:none;">at</span>
142
+ <select name="wpfc-timeout-rule-hour" style="display:none;">
143
+ <?php
144
+ for ($i=0; $i < 24; $i++) {
145
+ ?>
146
+ <option value="<?php echo $i; ?>"><?php echo str_pad($i, 2, '0', STR_PAD_LEFT); ?></option>
147
+ <?php
148
+ }
149
+ ?>
150
+ </select>
151
+ <select name="wpfc-timeout-rule-minute" style="display:none;">
152
+ <?php
153
+ for ($i=0; $i < 60; $i++) {
154
+ ?>
155
+ <option value="<?php echo $i; ?>"><?php echo str_pad($i, 2, '0', STR_PAD_LEFT); ?></option>
156
+ <?php
157
+ }
158
+ ?>
159
+ </select>
160
+ <span>delete the files</span>
161
+ </td>
162
+ <td width="100"></td>
163
+ </tr>
164
+ </tbody>
165
+ </table>
166
+ </td>
167
+ </tr>
168
+ </tbody>
169
+ </table>
170
+
171
+
172
+ <table class="wpfc-server-time-cont" width="100%" cellspacing="0" cellpadding="0" border="0" height="100%" style="background: lightYellow; border: 1px solid #DCDCBC !important;border-radius:10px;margin-top:5px;">
173
+ <tbody>
174
+ <tr>
175
+ <td valign="top" id="cond-list">
176
+ <table width="100%" cellspacing="0" cellpadding="5" border="0" class="cond-line active-line">
177
+ <tbody>
178
+ <tr>
179
+ <td class="" width="300" style="text-align: center;">
180
+ <label>Server Time: </label><label class="wpfc-server-time"><?php echo date("H:i:s"); ?></label>
181
+ </td>
182
+ </tr>
183
+ </tbody>
184
+ </table>
185
+ </td>
186
+ </tr>
187
+ </tbody>
188
+ </table>
189
+
190
+
191
+ </div>
192
+ </div>
193
+ </div>
194
+ </div>
195
+ <div class="window-buttons-wrapper" style="padding: 0px; display: inline-block; width: 100%; border-top: 1px solid rgb(255, 255, 255); background: none repeat scroll 0px 0px rgb(222, 222, 222); z-index: 999; position: relative; text-align: right; border-radius: 0px 0px 3px 3px;">
196
+ <div style="padding: 12px; height: 23px;">
197
+ <button class="wpfc-dialog-buttons buttons-blood" type="button" action="remove">
198
+ <span>Remove Rule</span>
199
+ </button>
200
+ <button class="wpfc-dialog-buttons" type="button" action="back">
201
+ <img align="left" class="icon-left" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYFJREFUeNrEkzFLw0AUx1/SpE02C0UXF6EgLXQxxc3BSUWsm1N1qVBwkIyOrgoFwY+gW0E36SQ4OIhmMIN+ACelWi1terlcLr5rTTE2oNDBB/+85HL/X+7du0hBEMA4IcOYMTZACW9y+7eQ1DRI6Xo/K8lkGYcXsMSqeP/RbA5NAedwv1eIAr4HmsqMUjN8Jo7z9xKE2XNdc2tt2qCEgNPpAPO830sIzWgydzYLRqvFwO31xPBdzEcsTNUIgHO+jAZztzJv2HYbdD0BpcWsIbrMeQAiCymKBPULe3QFpNsdZOIDYz44LgfH49B1CBCXAvVYH5RKqcO50RX4fsOjNHN41DBLlSXDevXg6ezSiqtbkiRrBNC+OQF5MncK6SzUj8/Nme0Nw8XdV1S1KMnRvWbPD3hdHcDCo4zUAXEqD4n8elnOzPbbSK8Oiv7LY1yrYwE6Ki2UMCoroE3M+de1WuhBdVBvqHf0sTiAitK+QD8PmZhIUaK3BH08Avi3n+lTgAEAiza4dOMU/9wAAAAASUVORK5CYII="/>
202
+ <span>Back</span>
203
+ </button>
204
+ <button class="wpfc-dialog-buttons" type="button" action="next">
205
+ <span>Next</span>
206
+ <img align="absmiddle" class="icon-right" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYdJREFUeNrEUz9IAmEUf6dlpqAQUksNDQ1NQR/NEdSSU1uEW0OrW2tjo0OLQbQcBNFik1C0tGpgglI0SpCcmXZ/v7vvu953nZWnQeDQgx/vce+93/vzvZNc14VRJAQjysgEYz1j6bAKUuibL5lKeVqSpDyqW4dSmZomWIYBQtcPVvoJgqJ1OhCNxYRJBPxdyX8ewbFt0FXVq5ZJzxLbsrJIkvl1BHTmgXPy08k4B4ZErZYNO+l5cnpRywY7+SLA2cju9jJRVQdEjAgUmnMXFMWERoPB1voCObusZDFcQRT7CExNA8viQCn3kqnDQbds0AwT2l0d3jULujThxQ0dATsoHx1fDd1HcnONxGckuC7clPFVcuORSHHYDvY4Y32JLu4Al1nqRuPQlM+9ZGg/yUazjt6Nz2funTI6ByqHpxchsrpfEjZXHnKsVpCdl1qv4MAdhBEJxJSvQwwr0efqI5hvd6x8co/f5hCvCF1wBDsQNzGBmPR1sCUxn4kwELbrJ0r//jd+CDAARWTMh3/g7aIAAAAASUVORK5CYII="/>
207
+ </button>
208
+ <button class="wpfc-dialog-buttons" type="button" action="close">
209
+ <span>Close</span>
210
+ </button>
211
+ <button class="wpfc-dialog-buttons buttons-green" type="button" action="finish">
212
+ <span>Save</span>
213
+ </button>
214
+ </div>
215
+ </div>
216
+ </div>
217
+ </div>
218
+ <script type="text/javascript">
219
+ var WpFcTimeout = {
220
+ rules: [],
221
+ schedules: {},
222
+ init: function(rules){
223
+ this.rules = rules;
224
+ this.insert_existing_rules();
225
+ this.click_event_for_add_button();
226
+
227
+ setInterval(function(){ WpFcTimeout.server_clock(); }, 1000);
228
+ },
229
+ server_clock: function(){
230
+ jQuery(".wpfc-server-time").each(function(i, e){
231
+ var time = jQuery(e).text().split(":");
232
+
233
+ time[2]++;
234
+
235
+ if(time[2] > 59){
236
+ time[2] = "0";
237
+ time[1]++;
238
+ }
239
+
240
+ if(time[1] > 59){
241
+ time[1] = "0";
242
+ time[0]++;
243
+ }
244
+
245
+ if(time[0] > 23){
246
+ time[0] = "0";
247
+ }
248
+
249
+ jQuery(time).each(function(i, e){
250
+ if((time[i] < 10) && ((time[i] + "").length < 2)){
251
+ time[i] = "0" + time[i];
252
+ }
253
+ });
254
+
255
+ jQuery(e).text(time.join(":"));
256
+ });
257
+ },
258
+ remove_rule: function(clone_modal_id, number){
259
+ jQuery("div.wpfc-timeout-rule-line[wpfc-timeout-rule-number='" + number + "']").remove();
260
+
261
+ Wpfc_Dialog.remove(clone_modal_id);
262
+
263
+ this.save(function(){
264
+ jQuery("div.wpfc-timeout-item[wpfc-timeout-item-number='" + number + "']").remove();
265
+ });
266
+ },
267
+ add_item: function(number, e){
268
+ var self = this;
269
+ var item = jQuery(".wpfc-timeout-item").first().clone();
270
+
271
+ item.attr("wpfc-timeout-item-number", number);
272
+ item.attr("prefix", e.prefix);
273
+ item.attr("content", e.content);
274
+ item.attr("schedule", e.schedule);
275
+
276
+ if(typeof e.hour != "undefined" && typeof e.minute != "undefined"){
277
+ item.attr("hour", e.hour);
278
+ item.attr("minute", e.minute);
279
+ }
280
+
281
+ item.find(".wpfc-timeout-item-url").html(self.create_url_description(e.prefix, e.content));
282
+
283
+ if(typeof e.hour != "undefined" && typeof e.minute != "undefined"){
284
+ item.find(".wpfc-timeout-item-form-title").html(self.create_title(e.prefix, e.content, e.schedule, e.hour, e.minute));
285
+ }else{
286
+ item.find(".wpfc-timeout-item-form-title").html(self.create_title(e.prefix, e.content, e.schedule));
287
+ }
288
+
289
+ item.click(function(){
290
+ var clone_modal = jQuery("#wpfc-modal-timeout").clone();
291
+ var clone_modal_id = "wpfc-modal-timeout-" + new Date().getTime();
292
+
293
+ self.hide_input_content(clone_modal);
294
+ self.show_hour_and_minute(clone_modal);
295
+
296
+ if(jQuery(this).attr("schedule").match(/^(onceaday|daily)/i)){
297
+ clone_modal.find(".wpfc-timeout-at-text").show();
298
+ clone_modal.find("select[name='wpfc-timeout-rule-hour']").show();
299
+ clone_modal.find("select[name='wpfc-timeout-rule-minute']").show();
300
+
301
+ clone_modal.find("select[name='wpfc-timeout-rule-hour']").val(jQuery(this).attr("hour"));
302
+ clone_modal.find("select[name='wpfc-timeout-rule-minute']").val(jQuery(this).attr("minute"));
303
+ }
304
+
305
+ if(e.prefix == "homepage" || e.prefix == "all"){
306
+ clone_modal.find("input").attr("name", "wpfc-timeout-rule-content").hide();
307
+ }
308
+
309
+ clone_modal.attr("id", clone_modal_id);
310
+ clone_modal.find("select[name='wpfc-timeout-rule-schedule']").val(jQuery(this).attr("schedule"));
311
+ clone_modal.find("select[name='wpfc-timeout-rule-prefix']").val(jQuery(this).attr("prefix"));
312
+ clone_modal.find("input[name='wpfc-timeout-rule-content']").val(jQuery(this).attr("content"));
313
+
314
+
315
+ jQuery("#wpfc-modal-timeout").after(clone_modal);
316
+
317
+ if(typeof e.editable == "undefined"){
318
+ Wpfc_Dialog.dialog(clone_modal_id, {"close" :
319
+ function(){
320
+ },
321
+ "remove" :
322
+ function(){
323
+ self.remove_rule(clone_modal_id, number);
324
+ },
325
+ "finish" :
326
+ function(){
327
+ var prefix = clone_modal.find("select[name='wpfc-timeout-rule-prefix']").val();
328
+ var content = clone_modal.find("input[name='wpfc-timeout-rule-content']").val();
329
+ var schedule = clone_modal.find("select[name='wpfc-timeout-rule-schedule']").val();
330
+ var hour = clone_modal.find("select[name='wpfc-timeout-rule-hour']").val();
331
+ var minute = clone_modal.find("select[name='wpfc-timeout-rule-minute']").val();
332
+
333
+ content = self.remove_host_name(content);
334
+ content = content.replace(/^\/|\/$/g, '');
335
+
336
+ jQuery("div.wpfc-timeout-rule-line[wpfc-timeout-rule-number='" + number + "']").find("select[name='wpfc-timeout-rule-prefix-" + number + "']").val(prefix);
337
+ jQuery("div.wpfc-timeout-rule-line[wpfc-timeout-rule-number='" + number + "']").find("input[name='wpfc-timeout-rule-content-" + number + "']").val(content);
338
+ jQuery("div.wpfc-timeout-rule-line[wpfc-timeout-rule-number='" + number + "']").find("input[name='wpfc-timeout-rule-schedule-" + number + "']").val(schedule);
339
+ jQuery("div.wpfc-timeout-rule-line[wpfc-timeout-rule-number='" + number + "']").find("input[name='wpfc-timeout-rule-hour-" + number + "']").val(hour);
340
+ jQuery("div.wpfc-timeout-rule-line[wpfc-timeout-rule-number='" + number + "']").find("input[name='wpfc-timeout-rule-minute-" + number + "']").val(minute);
341
+
342
+ if(self.is_empty_values(prefix, content, schedule)){
343
+ Wpfc_Dialog.remove(clone_modal_id);
344
+
345
+ self.save(function(){
346
+ jQuery("div.wpfc-timeout-item[wpfc-timeout-item-number='" + number + "']").attr("prefix", prefix);
347
+ jQuery("div.wpfc-timeout-item[wpfc-timeout-item-number='" + number + "']").attr("content", content);
348
+ jQuery("div.wpfc-timeout-item[wpfc-timeout-item-number='" + number + "']").attr("schedule", schedule);
349
+ jQuery("div.wpfc-timeout-item[wpfc-timeout-item-number='" + number + "']").attr("hour", hour);
350
+ jQuery("div.wpfc-timeout-item[wpfc-timeout-item-number='" + number + "']").attr("minute", minute);
351
+
352
+ jQuery("div.wpfc-timeout-item[wpfc-timeout-item-number='" + number + "']").find(".wpfc-timeout-item-url").html(self.create_url_description(prefix, content));
353
+
354
+ jQuery("div.wpfc-timeout-item[wpfc-timeout-item-number='" + number + "']").find(".wpfc-timeout-item-form-title").html(self.create_title(prefix, content, schedule, hour, minute));
355
+ });
356
+ }
357
+ }
358
+ });
359
+ }else if(e.editable == false){
360
+ Wpfc_Dialog.dialog(clone_modal_id, {"close" : function(){}});
361
+ }
362
+ });
363
+
364
+ item.show();
365
+
366
+ jQuery(".wpfc-timeout-list").append(item);
367
+ },
368
+ create_title: function(prefix, content, schedule, hour, minute){
369
+ var title = "";
370
+
371
+ if(prefix == "exact"){
372
+ title = "Is Equal To: " + content;
373
+ }else if(prefix == "startwith"){
374
+ title = "Start With: " + content;
375
+ }else if(prefix == "contain"){
376
+ title = "Contains: " + content;
377
+ }else if(prefix == "homepage"){
378
+ title = "Home Page";
379
+ }else if(prefix == "all"){
380
+ title = "The All Cache";
381
+ }
382
+
383
+ if(typeof this.schedules[schedule] != "undefined"){
384
+ title = title + ' - <span style="color: green;">' + this.schedules[schedule].display + '</span>';
385
+ }else{
386
+ title = title + ' - <span style="color: green;">' + schedule + '</span>';
387
+ }
388
+
389
+ if(schedule.match(/^(onceaday|daily)/i)){
390
+ if(typeof hour != "undefined" && typeof minute != "undefined"){
391
+ minute = ((minute + "").length > 1) ? minute : "0" + (minute + "");
392
+ hour = ((hour + "").length > 1) ? hour : "0" + (hour + "");
393
+
394
+ title = title + '/<span style="color:red;font-size:10px;">' + hour + ":" + minute + '</span>';
395
+ }
396
+ }
397
+
398
+ return title;
399
+ },
400
+ create_url_description: function(prefix, content){
401
+ var request_uri = content;
402
+ var b_start = "<b style='font-size:11px;color:#FFA100;'>";
403
+ var b_end = "</b>"
404
+
405
+ if(prefix == "exact"){
406
+ request_uri = b_start + content + b_end;
407
+ }else if(prefix == "startwith"){
408
+ request_uri = b_start + content + b_end + '(.*)';
409
+ }else if(prefix == "contain"){
410
+ request_uri = '(.*)' + b_start + content + b_end + '(.*)';
411
+ }else if(prefix == "homepage" || prefix == "all"){
412
+ request_uri = "";
413
+ }
414
+
415
+ return "<?php echo home_url();?>" + "/" + request_uri;
416
+ },
417
+ add_line: function(number, e){
418
+ var line = jQuery(".wpfc-timeout-rule-line").first().closest(".wpfc-timeout-rule-line").clone();
419
+
420
+ line.attr("wpfc-timeout-rule-number", number);
421
+
422
+ line.find(".wpfc-timeout-rule-line-add").remove();
423
+ line.find(".wpfc-timeout-rule-line-delete").show();
424
+ line.find("select").attr("name", "wpfc-timeout-rule-prefix-" + number).val(e.prefix);
425
+ line.find("input[name='wpfc-timeout-rule-content']").attr("name", "wpfc-timeout-rule-content-" + number).val(e.content);
426
+ line.find("input[name='wpfc-timeout-rule-schedule']").attr("name", "wpfc-timeout-rule-schedule-" + number).val(e.schedule);
427
+ line.find("input[name='wpfc-timeout-rule-hour']").attr("name", "wpfc-timeout-rule-hour-" + number).val(e.hour);
428
+ line.find("input[name='wpfc-timeout-rule-minute']").attr("name", "wpfc-timeout-rule-minute-" + number).val(e.minute);
429
+
430
+ console.log(e);
431
+
432
+ jQuery(".wpfc-timeout-rule-container").append(line);
433
+ },
434
+ click_event_for_add_button: function(){
435
+ var self = this;
436
+
437
+ jQuery(".wpfc-add-new-timeout-button").click(function(e){
438
+ var clone_modal = jQuery("#wpfc-modal-timeout").clone();
439
+ //var number = jQuery("div.wpfc-timeout-rule-line[wpfc-timeout-rule-number]").length;
440
+ var number = new Date().getTime();
441
+ var clone_modal_id = "wpfc-modal-timeout-" + new Date().getTime();
442
+
443
+ clone_modal.attr("id", clone_modal_id);
444
+
445
+ self.hide_input_content(clone_modal);
446
+ self.show_hour_and_minute(clone_modal);
447
+
448
+ jQuery("#wpfc-modal-timeout").after(clone_modal);
449
+
450
+ Wpfc_Dialog.dialog(clone_modal_id, {"finish" :
451
+ function(){
452
+ var prefix = clone_modal.find("select[name='wpfc-timeout-rule-prefix']").val();
453
+ var content = clone_modal.find("input[name='wpfc-timeout-rule-content']").val();
454
+ var schedule = clone_modal.find("select[name='wpfc-timeout-rule-schedule']").val();
455
+ var hour = clone_modal.find("select[name='wpfc-timeout-rule-hour']").val();
456
+ var minute = clone_modal.find("select[name='wpfc-timeout-rule-minute']").val();
457
+
458
+ content = self.remove_host_name(content);
459
+ content = content.replace(/^\/|\/$/g, '');
460
+
461
+ if(self.is_empty_values(prefix, content, schedule)){
462
+ self.add_line(number + 1, {"prefix" : prefix, "content" : content, "schedule" : schedule, "hour" : hour, "minute" : minute});
463
+
464
+ Wpfc_Dialog.remove(clone_modal_id);
465
+
466
+ self.save(function(){
467
+ self.add_item(number + 1, {"prefix" : prefix, "content" : content, "schedule" : schedule, "hour" : hour, "minute" : minute});
468
+ });
469
+ }
470
+ },
471
+ "close" :
472
+ function(){
473
+ }
474
+ });
475
+ });
476
+ },
477
+ save: function(callback){
478
+ var rule_number, prefix, schedule, content, hour, minute, rule, rules = [], self = this;
479
+
480
+ jQuery("form div.wpfc-timeout-rule-line").each(function(i, e){
481
+ rule_number = jQuery(e).attr("wpfc-timeout-rule-number");
482
+ prefix = jQuery(e).find("select[name^='wpfc-timeout-rule-prefix']").val();
483
+ content = jQuery(e).find("input[name^='wpfc-timeout-rule-content']").val();
484
+ schedule = jQuery(e).find("input[name^='wpfc-timeout-rule-schedule']").val();
485
+ hour = jQuery(e).find("input[name^='wpfc-timeout-rule-hour']").val();
486
+ minute = jQuery(e).find("input[name^='wpfc-timeout-rule-minute']").val();
487
+
488
+ content = self.remove_host_name(content);
489
+ content = content.replace(/^\/|\/$/g, '');
490
+
491
+
492
+ rules.push({"prefix" : prefix, "content" : content, "schedule" : schedule, "hour" : hour, "minute" : minute});
493
+ });
494
+
495
+ jQuery("#revert-loader-toolbar").show();
496
+
497
+ jQuery.ajax({
498
+ type: 'POST',
499
+ dataType: "json",
500
+ url: ajaxurl,
501
+ data : {"action": "wpfc_save_timeout_pages", "rules" : rules, security: '<?php echo wp_create_nonce( "wpfc-save-timeout-ajax-nonce" ); ?>'},
502
+ success: function(res){
503
+ if(res.success){
504
+ jQuery("#revert-loader-toolbar").hide();
505
+ callback();
506
+ self.set_right_class_for_item();
507
+ }else{
508
+ alert("The rule cannot be added...");
509
+ }
510
+ },
511
+ error: function(e) {
512
+ alert("unknown error");
513
+ }
514
+ });
515
+ },
516
+ insert_existing_rules: function(){
517
+ var self = this;
518
+
519
+ if(typeof this.rules != "undefined" && this.rules && this.rules.length > 0){
520
+ jQuery.each(self.rules, function(i, e){
521
+ if(i > 0){
522
+ }
523
+
524
+ self.add_line(i + 1, e);
525
+ self.add_item(i + 1, e);
526
+ });
527
+
528
+ self.set_right_class_for_item();
529
+ }
530
+ },
531
+ set_right_class_for_item: function(){
532
+ jQuery(".wpfc-timeout-item").each(function(i, e){
533
+ if(i%2 == 0){
534
+ jQuery(e).addClass("wpfc-timeout-item-right");
535
+ }else{
536
+ jQuery(e).removeClass("wpfc-timeout-item-right");
537
+ }
538
+ });
539
+ },
540
+ is_empty_values: function(prefix, content, schedule){
541
+ if(prefix){
542
+ jQuery("#wpfc-wizard-timeout select[name='wpfc-timeout-rule-prefix']").css({'border-color': '#ddd'});
543
+ }else{
544
+ jQuery("#wpfc-wizard-timeout select[name='wpfc-timeout-rule-prefix']").css({'border-color': 'red'});
545
+ }
546
+
547
+ if(content){
548
+ jQuery("#wpfc-wizard-timeout input[name='wpfc-timeout-rule-content']").css({'border-color': '#ddd'});
549
+ }else{
550
+ jQuery("#wpfc-wizard-timeout input[name='wpfc-timeout-rule-content']").css({'border-color': 'red'});
551
+ }
552
+
553
+ if(schedule){
554
+ jQuery("#wpfc-wizard-timeout select[name='wpfc-timeout-rule-schedule']").css({'border-color': '#ddd'});
555
+ }else{
556
+ jQuery("#wpfc-wizard-timeout select[name='wpfc-timeout-rule-schedule']").css({'border-color': 'red'});
557
+ }
558
+
559
+ if(prefix && content && schedule){
560
+ return true;
561
+ }
562
+
563
+ return false;
564
+ },
565
+ remove_host_name: function(content){
566
+ //to replace the urls which start with http:// or www. or with Host_Name
567
+ content = content.replace(new RegExp('.*' + location.hostname.replace(/www\./, "") + "\/", "gi"), "");
568
+ content = content.replace(/\/$/, "");
569
+
570
+ return content;
571
+ },
572
+ hide_input_content: function(clone_modal){
573
+ clone_modal.find("select[name='wpfc-timeout-rule-prefix']").change(function(){
574
+ if(jQuery(this).val() == "homepage" || jQuery(this).val() == "all"){
575
+ clone_modal.find("input").hide();
576
+ clone_modal.find("input").attr("name", "wpfc-timeout-rule-content").val(jQuery(this).val());
577
+ }else{
578
+ clone_modal.find("input").show();
579
+ clone_modal.find("input").attr("name", "wpfc-timeout-rule-content").val("");
580
+ }
581
+ });
582
+ },
583
+ show_hour_and_minute: function(clone_modal){
584
+ clone_modal.find("select[name='wpfc-timeout-rule-schedule']").change(function(e){
585
+ if(jQuery(this).val().match(/^(onceaday|daily)/i)){
586
+ clone_modal.find(".wpfc-timeout-at-text").show();
587
+ clone_modal.find("select[name='wpfc-timeout-rule-hour']").show();
588
+ clone_modal.find("select[name='wpfc-timeout-rule-minute']").show();
589
+ clone_modal.find(".wpfc-server-time-cont").show();
590
+ }else{
591
+ clone_modal.find(".wpfc-timeout-at-text").hide();
592
+ clone_modal.find("select[name='wpfc-timeout-rule-hour']").hide();
593
+ clone_modal.find("select[name='wpfc-timeout-rule-minute']").hide();
594
+ clone_modal.find(".wpfc-server-time-cont").hide();
595
+ }
596
+ });
597
+ }
598
+ };
599
+ </script>
templates/update_error.html ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="wpfc-modal-updateerror" style="top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 560px; z-index: 10001;">
2
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
3
+ </div>
4
+ <div style="z-index: 600; border-radius: 3px;">
5
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
6
+ <table width="100%" height="100%">
7
+ <tbody>
8
+ <tr>
9
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Update Error</td>
10
+ <td width="20" align="center" style="vertical-align: middle;"></td>
11
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
12
+ <div title="Close Window" class="close-wiz"></div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="window-content-wrapper" style="padding: 8px;">
19
+ <div style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;" class="window-content">
20
+
21
+
22
+ <div id="wpfc-wizard-downloaderror" class="wpfc-cdn-pages-container">
23
+ <div wpfc-cdn-page="1" class="wiz-cont">
24
+ <h1>Manually Update</h1>
25
+ <p><label id="wpfc-update-error-message"><?php echo $error_message; ?></label> You need to download the file and update the plugin manually.</p>
26
+ <div class="wiz-input-cont" style="text-align:center;" id="wpfc-send-email">
27
+ <a id="wpfc-download-now" target="_blank" href="">
28
+ <button class="wpfc-green-button" style="padding: 6px 60px;">
29
+ <span>Download</span>
30
+ </button>
31
+ </a>
32
+ </div>
33
+ <p class="wpfc-bottom-note"><a target="_blank" href="http://www.wpfastestcache.com/warnings/how-to-update-the-premium-version-manually/">Note: Please read How to Update the Premium Version Manually</a></p>
34
+ </div>
35
+ </div>
36
+
37
+
38
+
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
templates/update_now.php ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div template-id="wpfc-modal-updatenow" style="display:none;top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 446px; z-index: 10001;">
2
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
3
+ </div>
4
+ <div style="z-index: 600; border-radius: 3px;">
5
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
6
+ <table width="100%" height="100%">
7
+ <tbody>
8
+ <tr>
9
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Please Update</td>
10
+ <td width="20" align="center" style="vertical-align: middle;"></td>
11
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
12
+ <div title="Close Window" class="close-wiz"></div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="window-content-wrapper" style="padding: 8px;">
19
+ <div style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;" class="window-content">
20
+ <div class="window-content" style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;">
21
+ <ul class="wpfc-lightbox-help">
22
+ <div>
23
+ <img src="data:image/jpeg;base64,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"/>
24
+ </div>
25
+ <li>First, you need to click on the <strong>Premium</strong> tab</li>
26
+ <li>Click <strong>Update</strong> button</li>
27
+ </ul>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
33
+
34
+ <style type="text/css">
35
+
36
+ .wpfc-lightbox-help{
37
+ margin:25px 35px 35px;
38
+ font-size:12px;
39
+ color:#555555;
40
+ line-height:20px;
41
+ text-shadow: 0 1px 0 #FFFFFF;
42
+ }
43
+
44
+ .wpfc-lightbox-help a {
45
+ color:#FF8900;
46
+ text-decoration: underline;
47
+ }
48
+
49
+ .wpfc-lightbox-help a:hover {
50
+ text-decoration: none;
51
+ }
52
+
53
+ .wpfc-lightbox-help li{
54
+ margin:8px 24px;
55
+ list-style: disc;
56
+ list-style-position: outside;
57
+ }
58
+ .wpfc-lightbox-help img{
59
+ width:350px;
60
+ border:5px solid #FFFFFF;
61
+ margin-bottom:6px;
62
+
63
+ -moz-border-radius: 3px 3px;
64
+ -webkit-border-radius: 3px 3px;
65
+ border-radius: 3px 3px;
66
+ }
67
+
68
+ .wpfc-lightbox-help input {
69
+ margin: 3px 0 0 1px;
70
+ }
71
+
72
+ </style>
templates/update_success.html ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="wpfc-modal-updatesuccess" style="top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 300px; z-index: 10001;">
2
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
3
+ </div>
4
+ <div style="z-index: 600; border-radius: 3px;">
5
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
6
+ <table width="100%" height="100%">
7
+ <tbody>
8
+ <tr>
9
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Success</td>
10
+ <td width="20" align="center" style="vertical-align: middle;"></td>
11
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
12
+ <div title="Close Window" class="close-wiz"></div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="window-content-wrapper" style="padding: 15px;">
19
+ <div class="window-content" style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;">
20
+ <center style="color: black;">WP Fastest Cache Premium has been updated. Please <u>push</u> finish button </center>
21
+ </div>
22
+ </div>
23
+ <div class="window-buttons-wrapper" style="padding: 0px; display: inline-block; width: 100%; border-top: 1px solid rgb(255, 255, 255); background: none repeat scroll 0px 0px rgb(222, 222, 222); z-index: 999; position: relative; text-align: right; border-radius: 0px 0px 3px 3px;">
24
+ <div style="padding: 12px; height: 23px;text-align: center;">
25
+ <button class="wpfc-dialog-buttons buttons-green" type="button" action="finish">
26
+ <span>Finish</span>
27
+ </button>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
templates/update_success.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="wpfc-modal-updatesuccess" style="top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 300px; z-index: 10001;">
2
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
3
+ </div>
4
+ <div style="z-index: 600; border-radius: 3px;">
5
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
6
+ <table width="100%" height="100%">
7
+ <tbody>
8
+ <tr>
9
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Success</td>
10
+ <td width="20" align="center" style="vertical-align: middle;"></td>
11
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
12
+ <div title="Close Window" class="close-wiz"></div>
13
+ </td>
14
+ </tr>
15
+ </tbody>
16
+ </table>
17
+ </div>
18
+ <div class="window-content-wrapper" style="padding: 15px;">
19
+ <div class="window-content" style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;">
20
+ <center style="color: black;">WP Fastest Cache Premium has been updated. Please <u>push</u> finish button </center>
21
+ </div>
22
+ </div>
23
+ <div class="window-buttons-wrapper" style="padding: 0px; display: inline-block; width: 100%; border-top: 1px solid rgb(255, 255, 255); background: none repeat scroll 0px 0px rgb(222, 222, 222); z-index: 999; position: relative; text-align: right; border-radius: 0px 0px 3px 3px;">
24
+ <div style="padding: 12px; height: 23px;text-align: center;">
25
+ <button class="wpfc-dialog-buttons buttons-green" type="button" action="finish">
26
+ <span>Finish</span>
27
+ </button>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
templates/updatepost.php ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <style type="text/css">
2
+ div[id^="wpfc-modal-updatepost"] .wiz-input-cont{
3
+ margin-top: 0 !important;
4
+ margin-bottom: 5px !important;
5
+ }
6
+ .wiz-input-cont label{
7
+ margin-right: 0 !important;
8
+ }
9
+ </style>
10
+ <div template-id="wpfc-modal-updatepost" style="display:none;top: 10.5px; left: 226px; position: absolute; padding: 6px; height: auto; width: 330px; z-index: 10001;">
11
+ <div style="height: 100%; width: 100%; background: none repeat scroll 0% 0% rgb(0, 0, 0); position: absolute; top: 0px; left: 0px; z-index: -1; opacity: 0.5; border-radius: 8px;">
12
+ </div>
13
+ <div style="z-index: 600; border-radius: 3px;">
14
+ <div style="font-family:Verdana,Geneva,Arial,Helvetica,sans-serif;font-size:12px;background: none repeat scroll 0px 0px rgb(255, 161, 0); z-index: 1000; position: relative; padding: 2px; border-bottom: 1px solid rgb(194, 122, 0); height: 35px; border-radius: 3px 3px 0px 0px;">
15
+ <table width="100%" height="100%">
16
+ <tbody>
17
+ <tr>
18
+ <td valign="middle" style="vertical-align: middle; font-weight: bold; color: rgb(255, 255, 255); text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5); padding-left: 10px; font-size: 13px; cursor: move;">Update Post</td>
19
+ <td width="20" align="center" style="vertical-align: middle;"></td>
20
+ <td width="20" align="center" style="vertical-align: middle; font-family: Arial,Helvetica,sans-serif; color: rgb(170, 170, 170); cursor: default;">
21
+ <div title="Close Window" class="close-wiz"></div>
22
+ </td>
23
+ </tr>
24
+ </tbody>
25
+ </table>
26
+ </div>
27
+ <div class="window-content-wrapper" style="padding: 15px;">
28
+ <div class="window-content" style="z-index: 1000; height: auto; position: relative; display: inline-block; width: 100%;">
29
+ <p style="color:#666;margin-top:0 !important;">What do you want to happen after update a post or a page?</p>
30
+
31
+ <?php
32
+ $wpFastestCacheUpdatePost_type_post = "";
33
+ $wpFastestCacheUpdatePost_type_all = "";
34
+
35
+ if(isset($this->options->wpFastestCacheUpdatePost_type)){
36
+ if($this->options->wpFastestCacheUpdatePost_type == "post"){
37
+ $wpFastestCacheUpdatePost_type_post = 'checked="checked"';
38
+ }else if($this->options->wpFastestCacheUpdatePost_type == "all"){
39
+ $wpFastestCacheUpdatePost_type_all = 'checked="checked"';
40
+ }
41
+ }else{
42
+ $wpFastestCacheUpdatePost_type_post = 'checked="checked"';
43
+ }
44
+ ?>
45
+
46
+
47
+ <div class="wiz-input-cont">
48
+ <label class="mc-input-label" style="margin-right: 5px;"><input type="radio" <?php echo $wpFastestCacheUpdatePost_type_post; ?> action-id="wpFastestCacheUpdatePost_type_post" id="wpFastestCacheUpdatePost_type_post" name="wpFastestCacheUpdatePost_type" value="post"></label>
49
+ <label for="wpFastestCacheUpdatePost_type_post">Clear Cache of Post / Page</label><br>
50
+ <label style="margin-left:24px;" for="wpFastestCacheUpdatePost_type_post">Clear Cache of Post Categories</label><br>
51
+ <label style="margin-left:24px;" for="wpFastestCacheUpdatePost_type_post">Clear Cache of Post Tags</label>
52
+ </div>
53
+ <div class="wiz-input-cont">
54
+ <label class="mc-input-label" style="margin-right: 5px;"><input type="radio" <?php echo $wpFastestCacheUpdatePost_type_all; ?> action-id="wpFastestCacheUpdatePost_type_all" id="wpFastestCacheUpdatePost_type_all" name="wpFastestCacheUpdatePost_type" value="all"></label>
55
+ <label for="wpFastestCacheUpdatePost_type_all">Clear All Cache</label>
56
+ </div>
57
+
58
+
59
+
60
+
61
+ </div>
62
+ </div>
63
+ <div class="window-buttons-wrapper" style="padding: 0px; display: inline-block; width: 100%; border-top: 1px solid rgb(255, 255, 255); background: none repeat scroll 0px 0px rgb(222, 222, 222); z-index: 999; position: relative; text-align: right; border-radius: 0px 0px 3px 3px;">
64
+ <div style="padding: 12px; height: 23px;text-align: center;">
65
+ <button class="wpfc-dialog-buttons buttons" type="button" action="close">
66
+ <span>OK</span>
67
+ </button>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ </div>
72
+ <script type="text/javascript">
73
+ jQuery("#wpFastestCacheUpdatePost").click(function(){
74
+ if(typeof jQuery(this).attr("checked") != "undefined"){
75
+ if(jQuery("div[id^='wpfc-modal-updatepost-']").length === 0){
76
+ Wpfc_New_Dialog.dialog("wpfc-modal-updatepost", {close: function(){
77
+ Wpfc_New_Dialog.clone.find("div.window-content input").each(function(){
78
+ if(jQuery(this).attr("checked")){
79
+ var id = jQuery(this).attr("action-id");
80
+ jQuery("div.tab1 div[template-id='wpfc-modal-updatepost'] div.window-content input#" + id).attr("checked", true);
81
+ }
82
+
83
+ //.attr("checked"
84
+ });
85
+
86
+ Wpfc_New_Dialog.clone.remove();
87
+ }});
88
+
89
+ Wpfc_New_Dialog.show_button("close");
90
+ }
91
+ }
92
+ });
93
+ </script>
wpFastestCache.php ADDED
@@ -0,0 +1,1753 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: WP Fastest Cache
4
+ Plugin URI: http://wordpress.org/plugins/wp-fastest-cache/
5
+ Description: The simplest and fastest WP Cache system
6
+ Version: 0.8.6.6
7
+ Author: Emre Vona
8
+ Author URI: http://tr.linkedin.com/in/emrevona
9
+ Text Domain: wp-fastest-cache
10
+ Domain Path: /languages/
11
+
12
+ Copyright (C)2013 Emre Vona
13
+
14
+ This program is free software; you can redistribute it and/or
15
+ modify it under the terms of the GNU General Public License
16
+ as published by the Free Software Foundation; either version 2
17
+ of the License, or (at your option) any later version.
18
+
19
+ This program is distributed in the hope that it will be useful,
20
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
21
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
+ GNU General Public License for more details.
23
+ */
24
+ // test
25
+ if (!defined('WPFC_WP_CONTENT_BASENAME')) {
26
+ if (!defined('WPFC_WP_PLUGIN_DIR')) {
27
+ if(preg_match("/(\/trunk\/|\/wp-fastest-cache\/)$/", plugin_dir_path( __FILE__ ))){
28
+ define("WPFC_WP_PLUGIN_DIR", preg_replace("/(\/trunk\/|\/wp-fastest-cache\/)$/", "", plugin_dir_path( __FILE__ )));
29
+ }else if(preg_match("/\\\wp-fastest-cache\/$/", plugin_dir_path( __FILE__ ))){
30
+ //D:\hosting\LINEapp\public_html\wp-content\plugins\wp-fastest-cache/
31
+ define("WPFC_WP_PLUGIN_DIR", preg_replace("/\\\wp-fastest-cache\/$/", "", plugin_dir_path( __FILE__ )));
32
+ }
33
+ }
34
+ define("WPFC_WP_CONTENT_DIR", dirname(WPFC_WP_PLUGIN_DIR));
35
+ define("WPFC_WP_CONTENT_BASENAME", basename(WPFC_WP_CONTENT_DIR));
36
+ }
37
+
38
+ if (!defined('WPFC_MAIN_PATH')) {
39
+ define("WPFC_MAIN_PATH", plugin_dir_path( __FILE__ ));
40
+ }
41
+
42
+ if(!isset($GLOBALS["wp_fastest_cache_options"])){
43
+ if($wp_fastest_cache_options = get_option("WpFastestCache")){
44
+ $GLOBALS["wp_fastest_cache_options"] = json_decode($wp_fastest_cache_options);
45
+ }else{
46
+ $GLOBALS["wp_fastest_cache_options"] = array();
47
+ }
48
+ }
49
+
50
+ class WpFastestCache{
51
+ private $systemMessage = "";
52
+ private $options = array();
53
+ public $noscript = "";
54
+
55
+ public function __construct(){
56
+ $optimize_image_ajax_requests = array("wpfc_revert_image_ajax_request",
57
+ "wpfc_statics_ajax_request",
58
+ "wpfc_optimize_image_ajax_request",
59
+ "wpfc_update_image_list_ajax_request"
60
+ );
61
+
62
+
63
+ add_action( 'wp_ajax_wpfc_save_timeout_pages', array($this, 'wpfc_save_timeout_pages_callback'));
64
+ add_action( 'wp_ajax_wpfc_save_exclude_pages', array($this, 'wpfc_save_exclude_pages_callback'));
65
+ add_action( 'wp_ajax_wpfc_cdn_options_ajax_request', array($this, 'wpfc_cdn_options_ajax_request_callback'));
66
+ add_action( 'wp_ajax_wpfc_remove_cdn_integration_ajax_request', array($this, 'wpfc_remove_cdn_integration_ajax_request_callback'));
67
+ add_action( 'wp_ajax_wpfc_save_cdn_integration_ajax_request', array($this, 'wpfc_save_cdn_integration_ajax_request_callback'));
68
+ add_action( 'wp_ajax_wpfc_cdn_template_ajax_request', array($this, 'wpfc_cdn_template_ajax_request_callback'));
69
+
70
+
71
+
72
+
73
+ add_action( 'wp_ajax_wpfc_check_url_ajax_request', array($this, 'wpfc_check_url_ajax_request_callback'));
74
+
75
+ add_action( 'wp_ajax_wpfc_cache_statics_get', array($this, 'wpfc_cache_statics_get_callback'));
76
+
77
+
78
+ add_action( 'wp_ajax_wpfc_db_statics', array($this, 'wpfc_db_statics_callback'));
79
+ add_action( 'wp_ajax_wpfc_db_fix', array($this, 'wpfc_db_fix_callback'));
80
+
81
+
82
+
83
+
84
+
85
+ add_action( 'rate_post', array($this, 'wp_postratings_clear_fastest_cache'), 10, 2);
86
+
87
+ if(is_dir($this->getWpContentDir()."/cache/tmpWpfc")){
88
+ $this->rm_folder_recursively($this->getWpContentDir()."/cache/tmpWpfc");
89
+ }
90
+
91
+
92
+
93
+
94
+
95
+ if(isset($_GET) && isset($_GET["action"]) && in_array($_GET["action"], $optimize_image_ajax_requests)){
96
+ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){
97
+ include_once $this->get_premium_path("image.php");
98
+ $img = new WpFastestCacheImageOptimisation();
99
+ $img->hook();
100
+ }
101
+ }else if(isset($_GET) && isset($_GET["action"]) && $_GET["action"] == "wpfastestcache"){
102
+ if(isset($_GET) && isset($_GET["type"]) && $_GET["type"] == "preload"){
103
+ // /?action=wpfastestcache&type=preload
104
+
105
+ $this->create_preload_cache();
106
+ }
107
+
108
+ exit;
109
+ }else{
110
+ $this->setCustomInterval();
111
+
112
+ $this->options = $this->getOptions();
113
+
114
+ add_action('transition_post_status', array($this, 'on_all_status_transitions'), 10, 3 );
115
+
116
+ $this->commentHooks();
117
+
118
+ $this->checkCronTime();
119
+
120
+ register_activation_hook( __FILE__, array('WpFastestCache', 'activate'));
121
+ register_deactivation_hook( __FILE__, array('WpFastestCache', 'deactivate'));
122
+ register_uninstall_hook( __FILE__, array('WpFastestCache', 'uninstall'));
123
+
124
+ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){
125
+ include_once $this->get_premium_path("mobile-cache.php");
126
+ }
127
+
128
+ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){
129
+ include_once $this->get_premium_path("powerful-html.php");
130
+ }
131
+
132
+ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){
133
+ if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/statics.php")){
134
+ include_once $this->get_premium_path("statics.php");
135
+ }
136
+ }
137
+
138
+ if(is_admin()){
139
+ // to avoid loading menu and optionPage() twice
140
+ if(!class_exists("WpFastestCacheAdmin")){
141
+ //for wp-panel
142
+
143
+ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){
144
+ include_once $this->get_premium_path("image.php");
145
+ }
146
+
147
+ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){
148
+ include_once $this->get_premium_path("logs.php");
149
+ }
150
+
151
+ add_action('wp_ajax_wpfc_cdn_template_ajax_request', array($this, 'wpfc_cdn_template_ajax_request_callback'));
152
+ add_action('plugins_loaded', array($this, 'wpfc_load_plugin_textdomain'));
153
+ add_action('wp_loaded', array($this, "load_admin_toolbar"));
154
+
155
+ $this->admin();
156
+ }
157
+ }else{
158
+ if(preg_match("/wpfc-minified\/([^\/]+)\/([^\/]+)/", $this->current_url(), $path)){
159
+ if($sources = @scandir(WPFC_WP_CONTENT_DIR."/cache/wpfc-minified/".$path[1], 1)){
160
+ if(isset($sources[0])){
161
+ // $exist_url = str_replace($path[2], $sources[0], $this->current_url());
162
+ // header('Location: ' . $exist_url, true, 301);
163
+ // exit;
164
+
165
+ if(preg_match("/\.css/", $this->current_url())){
166
+ header('Content-type: text/css');
167
+ }else if(preg_match("/\.js/", $this->current_url())){
168
+ header('Content-type: text/js');
169
+ }
170
+
171
+ echo file_get_contents(WPFC_WP_CONTENT_DIR."/cache/wpfc-minified/".$path[1]."/".$sources[0]);
172
+ exit;
173
+ }
174
+ }
175
+
176
+ //for non-exists files
177
+ if(preg_match("/\.css/", $this->current_url())){
178
+ header('Content-type: text/css');
179
+ die("/* File not found */");
180
+ }else if(preg_match("/\.js/", $this->current_url())){
181
+ header('Content-type: text/js');
182
+ die("//File not found");
183
+ }
184
+ }else{
185
+ // to show if the user is logged-in
186
+ add_action('wp_loaded', array($this, "load_admin_toolbar"));
187
+
188
+ //for cache
189
+ $this->cache();
190
+ }
191
+ }
192
+ }
193
+ }
194
+
195
+ public function wpfc_db_fix_callback(){
196
+ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){
197
+ include_once $this->get_premium_path("db.php");
198
+
199
+ if(class_exists("WpFastestCacheDatabaseCleanup")){
200
+ WpFastestCacheDatabaseCleanup::clean($_GET["type"]);
201
+ }else{
202
+ die(json_encode(array("success" => false, "showupdatewarning" => true, "message" => "Only available in Premium version")));
203
+ }
204
+
205
+ }else{
206
+ die(json_encode(array("success" => false, "message" => "Only available in Premium version")));
207
+ }
208
+ }
209
+
210
+ public function wpfc_db_statics_callback(){
211
+ global $wpdb;
212
+
213
+ $statics = array("all_warnings" => 0,
214
+ "post_revisions" => 0,
215
+ "trashed_contents" => 0,
216
+ "trashed_spam_comments" => 0,
217
+ "trackback_pingback" => 0,
218
+ "transient_options" => 0
219
+ );
220
+
221
+
222
+ $element = "SELECT * FROM `$wpdb->posts` WHERE post_type = 'revision';";
223
+ $statics["post_revisions"] = $wpdb->query( $element );
224
+ $statics["all_warnings"] = $statics["all_warnings"] + $wpdb->query( $element );
225
+
226
+ $element = "SELECT * FROM `$wpdb->posts` WHERE post_status = 'trash';";
227
+ $statics["trashed_contents"] = $wpdb->query( $element );
228
+ $statics["all_warnings"] = $statics["all_warnings"] + $wpdb->query( $element );
229
+
230
+ $element = "SELECT * FROM `$wpdb->comments` WHERE comment_approved = 'spam' OR comment_approved = 'trash' ;";
231
+ $statics["trashed_spam_comments"] = $wpdb->query( $element );
232
+ $statics["all_warnings"] = $statics["all_warnings"] + $wpdb->query( $element );
233
+
234
+ $element = "SELECT * FROM `$wpdb->comments` WHERE comment_type = 'trackback' OR comment_type = 'pingback' ;";
235
+ $statics["trackback_pingback"] = $wpdb->query( $element );
236
+ $statics["all_warnings"] = $statics["all_warnings"] + $wpdb->query( $element );
237
+
238
+ $element = "SELECT * FROM `$wpdb->options` WHERE option_name LIKE '%\_transient\_%' ;";
239
+ $statics["transient_options"] = $wpdb->query( $element );
240
+ $statics["all_warnings"] = $statics["all_warnings"] + $wpdb->query( $element );
241
+
242
+ die(json_encode($statics));
243
+ }
244
+
245
+ public function is_trailing_slash(){
246
+ // no need to check if Custom Permalinks plugin is active (https://tr.wordpress.org/plugins/custom-permalinks/)
247
+ if($this->isPluginActive("custom-permalinks/custom-permalinks.php")){
248
+ return false;
249
+ }
250
+
251
+ if($permalink_structure = get_option('permalink_structure')){
252
+ if(preg_match("/\/$/", $permalink_structure)){
253
+ return true;
254
+ }
255
+ }
256
+
257
+ return false;
258
+ }
259
+
260
+ public function wpfc_cache_statics_get_callback(){
261
+ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){
262
+ if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/statics.php")){
263
+ include_once $this->get_premium_path("statics.php");
264
+
265
+ $cache_statics = new WpFastestCacheStatics();
266
+ $res = $cache_statics->get();
267
+ echo json_encode($res);
268
+ exit;
269
+ }
270
+ }
271
+ }
272
+
273
+ public function wpfc_check_url_ajax_request_callback(){
274
+ if(current_user_can('manage_options')){
275
+ if(preg_match("/wp\.com/", $_GET["url"])){
276
+ $res = array("success" => true);
277
+ echo json_encode($res);
278
+ exit;
279
+ }
280
+ $host = str_replace("www.", "", $_SERVER["HTTP_HOST"]);
281
+ $_GET["url"] = esc_url_raw($_GET["url"]);
282
+
283
+ if(!preg_match("/^http/", $_GET["url"])){
284
+ $_GET["url"] = "http://".$_GET["url"];
285
+ }
286
+
287
+ $response = wp_remote_get($_GET["url"], array('timeout' => 20 ) );
288
+
289
+ $header = wp_remote_retrieve_headers($response);
290
+
291
+ if ( !$response || is_wp_error( $response ) ) {
292
+ $res = array("success" => false, "error_message" => $response->get_error_message());
293
+
294
+ if($response->get_error_code() == "http_request_failed"){
295
+ if($response->get_error_message() == "Failure when receiving data from the peer"){
296
+ $res = array("success" => true);
297
+ }else if(preg_match("/cURL\serror\s6/i", $response->get_error_message())){
298
+ //cURL error 6: Couldn't resolve host
299
+ if(preg_match("/".preg_quote($host, "/")."/i", $_GET["url"])){
300
+ $res = array("success" => true);
301
+ }
302
+ }
303
+ }
304
+ }else{
305
+ $response_code = wp_remote_retrieve_response_code( $response );
306
+ if($response_code == 200){
307
+ $res = array("success" => true);
308
+ }else{
309
+ if(method_exists($response, "get_error_message")){
310
+ $res = array("success" => false, "error_message" => $response->get_error_message());
311
+ }else{
312
+ $res = array("success" => false, "error_message" => wp_remote_retrieve_response_message($response));
313
+ }
314
+
315
+ if(isset($header["server"]) && preg_match("/squid/i", $header["server"])){
316
+ $res = array("success" => true);
317
+ }
318
+ }
319
+ }
320
+ echo json_encode($res);
321
+ exit;
322
+ }else{
323
+ wp_die("Must be admin");
324
+ }
325
+ }
326
+
327
+ public function wpfc_cdn_template_ajax_request_callback(){
328
+ if(current_user_can('manage_options')){
329
+ if($_POST["id"] == "maxcdn"){
330
+ $path = WPFC_MAIN_PATH."templates/cdn/maxcdn.php";
331
+ }else if($_POST["id"] == "other"){
332
+ $path = WPFC_MAIN_PATH."templates/cdn/other.php";
333
+ }else if($_POST["id"] == "photon"){
334
+ $path = WPFC_MAIN_PATH."templates/cdn/photon.php";
335
+ }else{
336
+ die("Wrong cdn");
337
+ }
338
+
339
+
340
+ ob_start();
341
+ include_once($path);
342
+ $content = ob_get_contents();
343
+ ob_end_clean();
344
+
345
+ $res = array("success" => false, "content" => "");
346
+
347
+ if($data = @file_get_contents($path)){
348
+ $res["success"] = true;
349
+ $res["content"] = $content;
350
+ }
351
+
352
+ echo json_encode($res);
353
+ exit;
354
+ }else{
355
+ wp_die("Must be admin");
356
+ }
357
+ }
358
+
359
+ public function wpfc_save_cdn_integration_ajax_request_callback(){
360
+ if(current_user_can('manage_options')){
361
+ if($data = get_option("WpFastestCacheCDN")){
362
+ $cdn_exist = false;
363
+ $arr = json_decode($data);
364
+
365
+ if(is_array($arr)){
366
+ foreach ($arr as $cdn_key => &$cdn_value) {
367
+ if($cdn_value->id == $_POST["values"]["id"]){
368
+ $cdn_value = $_POST["values"];
369
+ $cdn_exist = true;
370
+ }
371
+ }
372
+
373
+ if(!$cdn_exist){
374
+ array_push($arr, $_POST["values"]);
375
+ }
376
+
377
+ update_option("WpFastestCacheCDN", json_encode($arr));
378
+ }else{
379
+ $tmp_arr = array();
380
+
381
+ if($arr->id == $_POST["values"]["id"]){
382
+ array_push($tmp_arr, $_POST["values"]);
383
+ }else{
384
+ array_push($tmp_arr, $arr);
385
+ array_push($tmp_arr, $_POST["values"]);
386
+ }
387
+
388
+ update_option("WpFastestCacheCDN", json_encode($tmp_arr));
389
+ }
390
+ }else{
391
+ $arr = array();
392
+ array_push($arr, $_POST["values"]);
393
+
394
+ add_option("WpFastestCacheCDN", json_encode($arr), null, "yes");
395
+ }
396
+ echo json_encode(array("success" => true));
397
+ exit;
398
+ }else{
399
+ wp_die("Must be admin");
400
+ }
401
+ }
402
+
403
+ public function wpfc_remove_cdn_integration_ajax_request_callback(){
404
+ if(current_user_can('manage_options')){
405
+ $cdn_values = get_option("WpFastestCacheCDN");
406
+
407
+ if($cdn_values){
408
+ $std_obj = json_decode($cdn_values);
409
+ $cdn_values_arr = array();
410
+
411
+ if(is_array($std_obj)){
412
+ $cdn_values_arr = $std_obj;
413
+ }else{
414
+ array_push($cdn_values_arr, $std_obj);
415
+ }
416
+
417
+ foreach ($cdn_values_arr as $cdn_key => $cdn_value) {
418
+ if($cdn_value->id == "amazonaws" || $cdn_value->id == "keycdn" || $cdn_value->id == "cdn77"){
419
+ $cdn_value->id = "other";
420
+ }
421
+
422
+ if($cdn_value->id == $_POST["id"]){
423
+ unset($cdn_values_arr[$cdn_key]);
424
+ }
425
+ }
426
+
427
+ $cdn_values_arr = array_values($cdn_values_arr);
428
+ }
429
+
430
+ if(count($cdn_values_arr) > 0){
431
+ update_option("WpFastestCacheCDN", json_encode($cdn_values_arr));
432
+ }else{
433
+ delete_option("WpFastestCacheCDN");
434
+ }
435
+
436
+ echo json_encode(array("success" => true));
437
+ exit;
438
+ }else{
439
+ wp_die("Must be admin");
440
+ }
441
+ }
442
+
443
+ public function wpfc_cdn_options_ajax_request_callback(){
444
+ if(current_user_can('manage_options')){
445
+ $cdn_values = get_option("WpFastestCacheCDN");
446
+ if($cdn_values){
447
+ echo $cdn_values;
448
+ }else{
449
+ echo json_encode(array("success" => false));
450
+ }
451
+ exit;
452
+ }else{
453
+ wp_die("Must be admin");
454
+ }
455
+ }
456
+
457
+ public function wpfc_save_exclude_pages_callback(){
458
+ if(!wp_verify_nonce($_POST["security"], 'wpfc-save-exclude-ajax-nonce')){
459
+ die( 'Security check' );
460
+ }
461
+
462
+ if(current_user_can('manage_options')){
463
+ if(isset($_POST["rules"])){
464
+ foreach ($_POST["rules"] as $key => &$value) {
465
+ $value["prefix"] = strip_tags($value["prefix"]);
466
+ $value["content"] = strip_tags($value["content"]);
467
+
468
+ $value["prefix"] = preg_replace("/\=|\'|\"/", "", $value["prefix"]);
469
+ $value["content"] = preg_replace("/\=|\'|\"/", "", $value["content"]);
470
+
471
+ $value["content"] = trim($value["content"], "/");
472
+
473
+ $value["content"] = preg_replace("/(\#|\s|\(|\)|\*)/", "", $value["content"]);
474
+
475
+ if($value["prefix"] == "homepage"){
476
+ $this->deleteHomePageCache(false);
477
+ }
478
+ }
479
+
480
+ $data = json_encode($_POST["rules"]);
481
+
482
+ if(get_option("WpFastestCacheExclude")){
483
+ update_option("WpFastestCacheExclude", $data);
484
+ }else{
485
+ add_option("WpFastestCacheExclude", $data, null, "yes");
486
+ }
487
+ }else{
488
+ delete_option("WpFastestCacheExclude");
489
+ }
490
+
491
+ $this->modify_htaccess_for_exclude();
492
+
493
+ echo json_encode(array("success" => true));
494
+ exit;
495
+ }else{
496
+ wp_die("Must be admin");
497
+ }
498
+ }
499
+
500
+ public function modify_htaccess_for_exclude(){
501
+ $path = ABSPATH;
502
+
503
+ if($this->is_subdirectory_install()){
504
+ $path = $this->getABSPATH();
505
+ }
506
+
507
+ $htaccess = @file_get_contents($path.".htaccess");
508
+
509
+ if(preg_match("/\#\s?Start\sWPFC\sExclude/", $htaccess)){
510
+ $exclude_rules = $this->excludeRules();
511
+
512
+ $htaccess = preg_replace("/\#\s?Start\sWPFC\sExclude[^\#]*\#\s?End\sWPFC\sExclude\s+/", $exclude_rules, $htaccess);
513
+ }
514
+
515
+ @file_put_contents($path.".htaccess", $htaccess);
516
+ }
517
+
518
+ public function wpfc_save_timeout_pages_callback(){
519
+ if(!wp_verify_nonce($_POST["security"], 'wpfc-save-timeout-ajax-nonce')){
520
+ die( 'Security check' );
521
+ }
522
+
523
+ if(current_user_can('manage_options')){
524
+ $this->setCustomInterval();
525
+
526
+ $crons = _get_cron_array();
527
+
528
+ foreach ($crons as $cron_key => $cron_value) {
529
+ foreach ( (array) $cron_value as $hook => $events ) {
530
+ if(preg_match("/^wp\_fastest\_cache(.*)/", $hook, $id)){
531
+ if(!$id[1] || preg_match("/^\_(\d+)$/", $id[1])){
532
+ foreach ( (array) $events as $event_key => $event ) {
533
+ if($id[1]){
534
+ wp_clear_scheduled_hook("wp_fastest_cache".$id[1], $event["args"]);
535
+ }else{
536
+ wp_clear_scheduled_hook("wp_fastest_cache", $event["args"]);
537
+ }
538
+ }
539
+ }
540
+ }
541
+ }
542
+ }
543
+
544
+ if(isset($_POST["rules"]) && count($_POST["rules"]) > 0){
545
+ $i = 0;
546
+
547
+ foreach ($_POST["rules"] as $key => $value) {
548
+ if(preg_match("/^(daily|onceaday)$/i", $value["schedule"]) && isset($value["hour"]) && isset($value["minute"]) && strlen($value["hour"]) > 0 && strlen($value["minute"]) > 0){
549
+ $args = array("prefix" => $value["prefix"], "content" => $value["content"], "hour" => $value["hour"], "minute" => $value["minute"]);
550
+
551
+ $timestamp = mktime($value["hour"],$value["minute"],0,date("m"),date("d"),date("Y"));
552
+
553
+ $timestamp = $timestamp > time() ? $timestamp : $timestamp + 60*60*24;
554
+ }else{
555
+ $args = array("prefix" => $value["prefix"], "content" => $value["content"]);
556
+ $timestamp = time();
557
+ }
558
+
559
+ wp_schedule_event($timestamp, $value["schedule"], "wp_fastest_cache_".$i, array(json_encode($args)));
560
+ $i = $i + 1;
561
+ }
562
+ }
563
+
564
+ echo json_encode(array("success" => true));
565
+ exit;
566
+ }else{
567
+ wp_die("Must be admin");
568
+ }
569
+ }
570
+
571
+ public function wp_postratings_clear_fastest_cache($rate_userid, $post_id){
572
+ // to remove cache if vote is from homepage or category page or tag
573
+ if(isset($_SERVER["HTTP_REFERER"]) && $_SERVER["HTTP_REFERER"]){
574
+ $url = parse_url($_SERVER["HTTP_REFERER"]);
575
+
576
+ $url["path"] = isset($url["path"]) ? $url["path"] : "/index.html";
577
+
578
+ if(isset($url["path"])){
579
+ if($url["path"] == "/"){
580
+ $this->rm_folder_recursively($this->getWpContentDir()."/cache/all/index.html");
581
+ }else{
582
+ $this->rm_folder_recursively($this->getWpContentDir()."/cache/all".$url["path"]);
583
+ }
584
+ }
585
+ }
586
+
587
+ if($post_id){
588
+ $this->singleDeleteCache(false, $post_id);
589
+ }
590
+ }
591
+
592
+ private function admin(){
593
+ if(isset($_GET["page"]) && $_GET["page"] == "wpfastestcacheoptions"){
594
+ include_once('inc/admin.php');
595
+ $wpfc = new WpFastestCacheAdmin();
596
+ $wpfc->addMenuPage();
597
+ }else{
598
+ add_action('admin_menu', array($this, 'register_my_custom_menu_page'));
599
+ }
600
+ }
601
+
602
+ public function load_admin_toolbar(){
603
+ if(!defined('WPFC_HIDE_TOOLBAR') || (defined('WPFC_HIDE_TOOLBAR') && !WPFC_HIDE_TOOLBAR)){
604
+ $show = false;
605
+
606
+ // Admin
607
+ $show = (current_user_can( 'manage_options' ) || current_user_can('edit_others_pages')) ? true : false;
608
+
609
+ // Author
610
+ if(defined('WPFC_TOOLBAR_FOR_AUTHOR') && WPFC_TOOLBAR_FOR_AUTHOR){
611
+ if(current_user_can( 'delete_published_posts' ) || current_user_can('edit_published_posts')) {
612
+ $show = true;
613
+ }
614
+ }
615
+
616
+ if($show){
617
+ include_once plugin_dir_path(__FILE__)."inc/admin-toolbar.php";
618
+
619
+ add_action('wp_ajax_wpfc_delete_cache', array($this, "deleteCacheToolbar"));
620
+ add_action('wp_ajax_wpfc_delete_cache_and_minified', array($this, "deleteCssAndJsCacheToolbar"));
621
+ add_action('wp_ajax_wpfc_delete_current_page_cache', array($this, "delete_current_page_cache"));
622
+
623
+ $toolbar = new WpFastestCacheAdminToolbar();
624
+ $toolbar->add();
625
+ }
626
+
627
+ }
628
+ }
629
+
630
+ public function register_my_custom_menu_page(){
631
+ if(function_exists('add_menu_page')){
632
+ add_menu_page("WP Fastest Cache Settings", "WP Fastest Cache", 'manage_options', "wpfastestcacheoptions", array($this, 'optionsPage'), plugins_url("wp-fastest-cache/images/icon-32x32.png"));
633
+ wp_enqueue_style("wp-fastest-cache", plugins_url("wp-fastest-cache/css/style.css"), array(), time(), "all");
634
+ }
635
+
636
+ if(isset($_GET["page"]) && $_GET["page"] == "wpfastestcacheoptions"){
637
+ wp_enqueue_style("wp-fastest-cache-buycredit", plugins_url("wp-fastest-cache/css/buycredit.css"), array(), time(), "all");
638
+ wp_enqueue_style("wp-fastest-cache-flaticon", plugins_url("wp-fastest-cache/css/flaticon.css"), array(), time(), "all");
639
+ wp_enqueue_style("wp-fastest-cache-db-flaticon", plugins_url("wp-fastest-cache/css/db/flaticon.css"), array(), time(), "all");
640
+ wp_enqueue_style("wp-fastest-cache-dialog", plugins_url("wp-fastest-cache/css/dialog.css"), array(), time(), "all");
641
+ }
642
+ }
643
+
644
+ public function deleteCacheToolbar(){
645
+ $this->deleteCache();
646
+ }
647
+
648
+ public function deleteCssAndJsCacheToolbar(){
649
+ $this->deleteCache(true);
650
+ }
651
+
652
+ public function delete_current_page_cache(){
653
+ if(isset($_GET["path"])){
654
+ if($_GET["path"]){
655
+ if($_GET["path"] == "/"){
656
+ $_GET["path"] = $_GET["path"]."index.html";
657
+ }
658
+ }else{
659
+ $_GET["path"] = "/index.html";
660
+ }
661
+
662
+ $_GET["path"] = esc_url_raw($_GET["path"]);
663
+
664
+ $paths = array();
665
+
666
+ array_push($paths, $this->getWpContentDir()."/cache/all".$_GET["path"]);
667
+
668
+ if(class_exists("WpFcMobileCache")){
669
+ $wpfc_mobile = new WpFcMobileCache();
670
+ array_push($paths, $this->getWpContentDir()."/cache/".$wpfc_mobile->get_folder_name()."".$_GET["path"]);
671
+ }
672
+
673
+ foreach ($paths as $key => $value){
674
+ if(file_exists($value)){
675
+ if(preg_match("/\/(all|wpfc-mobile-cache)\/index\.html$/i", $value)){
676
+ @unlink($value);
677
+ }else{
678
+ $this->rm_folder_recursively($value);
679
+ }
680
+ }
681
+ }
682
+
683
+ die(json_encode(array("The cache of page has been cleared","success")));
684
+ }else{
685
+ die(json_encode(array("Path has NOT been defined", "error", "alert")));
686
+ }
687
+
688
+ exit;
689
+ }
690
+
691
+ private function cache(){
692
+ include_once('inc/cache.php');
693
+ $wpfc = new WpFastestCacheCreateCache();
694
+ $wpfc->createCache();
695
+ }
696
+
697
+ public function activate(){
698
+ if($options = get_option("WpFastestCache")){
699
+ $post = json_decode($options, true);
700
+
701
+ include_once('inc/admin.php');
702
+ $wpfc = new WpFastestCacheAdmin();
703
+ $wpfc->modifyHtaccess($post);
704
+ }
705
+ }
706
+
707
+ public function deactivate(){
708
+ $wpfc = new WpFastestCache();
709
+ $path = ABSPATH;
710
+
711
+ if($wpfc->is_subdirectory_install()){
712
+ $path = $wpfc->getABSPATH();
713
+ }
714
+
715
+ if(is_file($path.".htaccess") && is_writable($path.".htaccess")){
716
+ $htaccess = file_get_contents($path.".htaccess");
717
+ $htaccess = preg_replace("/#\s?BEGIN\s?WpFastestCache.*?#\s?END\s?WpFastestCache/s", "", $htaccess);
718
+ $htaccess = preg_replace("/#\s?BEGIN\s?GzipWpFastestCache.*?#\s?END\s?GzipWpFastestCache/s", "", $htaccess);
719
+ $htaccess = preg_replace("/#\s?BEGIN\s?LBCWpFastestCache.*?#\s?END\s?LBCWpFastestCache/s", "", $htaccess);
720
+ @file_put_contents($path.".htaccess", $htaccess);
721
+ }
722
+
723
+ $wpfc->deleteCache();
724
+ }
725
+
726
+ public function uninstall(){
727
+ $wpfc = new WpFastestCache();
728
+ $wpfc->deactivate();
729
+
730
+ // wp_clear_scheduled_hook("wp_fastest_cache");
731
+ // wp_clear_scheduled_hook("wp_fastest_cache_regular");
732
+
733
+ delete_option("WpFastestCache");
734
+ delete_option("WpFcDeleteCacheLogs");
735
+ delete_option("WpFastestCacheCDN");
736
+ delete_option("WpFastestCacheExclude");
737
+ delete_option("WpFastestCachePreLoad");
738
+ delete_option("WpFastestCacheCSS");
739
+ delete_option("WpFastestCacheCSSSIZE");
740
+ delete_option("WpFastestCacheJS");
741
+ delete_option("WpFastestCacheJSSIZE");
742
+
743
+ foreach ((array)_get_cron_array() as $cron_key => $cron_value) {
744
+ foreach ( (array) $cron_value as $hook => $events ) {
745
+ if(preg_match("/^wp\_fastest\_cache/", $hook)){
746
+ $args = array();
747
+
748
+ foreach ( (array) $events as $event_key => $event ) {
749
+ if(isset($event["args"]) && isset($event["args"][0])){
750
+ $args = array(json_encode(json_decode($event["args"][0])));
751
+ }
752
+ }
753
+
754
+ wp_clear_scheduled_hook($hook, $args);
755
+ }
756
+ }
757
+ }
758
+ }
759
+
760
+ protected function slug(){
761
+ return "wp_fastest_cache";
762
+ }
763
+
764
+ protected function getWpContentDir(){
765
+ return WPFC_WP_CONTENT_DIR;
766
+ }
767
+
768
+ protected function getOptions(){
769
+ return $GLOBALS["wp_fastest_cache_options"];
770
+ }
771
+
772
+ protected function getSystemMessage(){
773
+ return $this->systemMessage;
774
+ }
775
+
776
+ protected function get_excluded_useragent(){
777
+ return "facebookexternalhit|WhatsApp|Mediatoolkitbot";
778
+ }
779
+
780
+ // protected function detectNewPost(){
781
+ // if(isset($this->options->wpFastestCacheNewPost) && isset($this->options->wpFastestCacheStatus)){
782
+ // add_filter ('save_post', array($this, 'deleteCache'));
783
+ // }
784
+ // }
785
+
786
+ public function on_all_status_transitions($new_status, $old_status, $post) {
787
+ if ( ! wp_is_post_revision($post->ID) ){
788
+ if(isset($this->options->wpFastestCacheNewPost) && isset($this->options->wpFastestCacheStatus)){
789
+ if($new_status == "publish" && $old_status != "publish"){
790
+ if(isset($this->options->wpFastestCacheNewPost_type) && $this->options->wpFastestCacheNewPost_type){
791
+ if($this->options->wpFastestCacheNewPost_type == "all"){
792
+ $this->deleteCache();
793
+ }else if($this->options->wpFastestCacheNewPost_type == "homepage"){
794
+ $this->deleteHomePageCache();
795
+ }
796
+ }else{
797
+ $this->deleteCache();
798
+ }
799
+ }
800
+ }
801
+
802
+ if($new_status == "publish" && $old_status == "publish"){
803
+ if(isset($this->options->wpFastestCacheUpdatePost) && isset($this->options->wpFastestCacheStatus)){
804
+
805
+ if($this->options->wpFastestCacheUpdatePost_type == "post"){
806
+ $this->singleDeleteCache(false, $post->ID);
807
+ }else if($this->options->wpFastestCacheUpdatePost_type == "all"){
808
+ $this->deleteCache();
809
+ }
810
+
811
+ }
812
+ }
813
+
814
+ if($new_status == "trash" && $old_status == "publish"){
815
+ $this->singleDeleteCache(false, $post->ID);
816
+ }else if(($new_status == "draft" || $new_status == "pending") && $old_status == "publish"){
817
+ $this->deleteCache();
818
+ }
819
+ }
820
+ }
821
+
822
+ protected function commentHooks(){
823
+ //it works when the status of a comment changes
824
+ add_filter ('wp_set_comment_status', array($this, 'singleDeleteCache'));
825
+
826
+ //it works when a comment is saved in the database
827
+ add_filter ('comment_post', array($this, 'detectNewComment'));
828
+ }
829
+
830
+ public function detectNewComment($comment_id){
831
+ if(current_user_can( 'manage_options') || !get_option('comment_moderation')){
832
+ $this->singleDeleteCache($comment_id);
833
+ }
834
+ }
835
+
836
+ public function singleDeleteCache($comment_id = false, $post_id = false){
837
+ if($comment_id){
838
+ $comment = get_comment($comment_id);
839
+
840
+ if($comment && $comment->comment_post_ID){
841
+ $post_id = $comment->comment_post_ID;
842
+ }
843
+ }
844
+
845
+ if($post_id){
846
+ $permalink = get_permalink($post_id);
847
+
848
+ $permalink = urldecode(get_permalink($post_id));
849
+
850
+ //for trash contents
851
+ $permalink = rtrim($permalink, "/");
852
+ $permalink = preg_replace("/__trashed$/", "", $permalink);
853
+
854
+ if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){
855
+ $path = $this->getWpContentDir()."/cache/all/".$out[1];
856
+ $mobile_path = $this->getWpContentDir()."/cache/wpfc-mobile-cache/".$out[1];
857
+
858
+ if(is_dir($path)){
859
+ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){
860
+ include_once $this->get_premium_path("logs.php");
861
+ $log = new WpFastestCacheLogs("delete");
862
+ $log->action();
863
+ }
864
+
865
+ $this->rm_folder_recursively($path);
866
+ }
867
+
868
+ if(is_dir($mobile_path)){
869
+ $this->rm_folder_recursively($mobile_path);
870
+ }
871
+ }
872
+
873
+ // Sometimes there is no path of post/page static pages
874
+ if(get_option('page_on_front') == $post_id){
875
+ @unlink($this->getWpContentDir()."/cache/all/index.html");
876
+ @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/index.html");
877
+ }
878
+
879
+ if(is_sticky($post_id)){
880
+ @unlink($this->getWpContentDir()."/cache/all/index.html");
881
+ @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/index.html");
882
+ }
883
+
884
+ // to check the post appears on homepage
885
+ if(!get_option('page_on_front')){
886
+ $numberposts = get_option("posts_per_page") - count(get_option('sticky_posts'));
887
+
888
+ if($numberposts > 0){
889
+ $recent_posts = wp_get_recent_posts(array(
890
+ 'numberposts' => $numberposts,
891
+ 'orderby' => 'post_date',
892
+ 'order' => 'DESC',
893
+ 'post_type' => 'post',
894
+ 'post_status' => 'publish',
895
+ 'suppress_filters' => true
896
+ ), ARRAY_A);
897
+
898
+ foreach ((array)$recent_posts as $key => $value) {
899
+ if($post_id == $value["ID"]){
900
+ @unlink($this->getWpContentDir()."/cache/all/index.html");
901
+ @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/index.html");
902
+ }
903
+ }
904
+ }
905
+ }
906
+
907
+ // to clear cache of cats which contains the post (only first page)
908
+ foreach (wp_get_post_categories($post_id) as $cat_key => $cat_id) {
909
+ $url = get_category_link($cat_id);
910
+
911
+ if(preg_match("/^http/", $url)){
912
+ $path = preg_replace("/https?\:\/\/[^\/]+/i", "", $url);
913
+ $path = trim($path, "/");
914
+
915
+ @unlink($this->getWpContentDir()."/cache/all/".$path."/index.html");
916
+ @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/".$path."/index.html");
917
+ }
918
+ }
919
+
920
+ // to clear cache of tags which contains the post (only first page)
921
+ foreach (wp_get_post_tags($post_id) as $tag_key => $tag_id) {
922
+ $url = get_tag_link($tag_id);
923
+
924
+ if(preg_match("/^http/", $url)){
925
+ $path = preg_replace("/https?\:\/\/[^\/]+/i", "", $url);
926
+ $path = trim($path, "/");
927
+
928
+ @unlink($this->getWpContentDir()."/cache/all/".$path."/index.html");
929
+ @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/".$path."/index.html");
930
+ }
931
+ }
932
+ }
933
+ }
934
+
935
+ public function deleteHomePageCache($log = true){
936
+ $site_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", site_url());
937
+ $home_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", home_url());
938
+
939
+ if($site_url_path){
940
+ $site_url_path = trim($site_url_path, "/");
941
+
942
+ if($site_url_path){
943
+ @unlink($this->getWpContentDir()."/cache/all/".$site_url_path."/index.html");
944
+ @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/".$site_url_path."/index.html");
945
+ }
946
+ }
947
+
948
+ if($home_url_path){
949
+ $home_url_path = trim($home_url_path, "/");
950
+
951
+ if($home_url_path){
952
+ @unlink($this->getWpContentDir()."/cache/all/".$home_url_path."/index.html");
953
+ @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/".$home_url_path."/index.html");
954
+ }
955
+ }
956
+
957
+ @unlink($this->getWpContentDir()."/cache/all/index.html");
958
+ @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/index.html");
959
+
960
+ if($log){
961
+ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){
962
+ include_once $this->get_premium_path("logs.php");
963
+
964
+ $log = new WpFastestCacheLogs("delete");
965
+ $log->action();
966
+ }
967
+ }
968
+ }
969
+
970
+ public function deleteCache($minified = false){
971
+ $this->set_preload();
972
+
973
+ $created_tmpWpfc = false;
974
+ $cache_deleted = false;
975
+ $minifed_deleted = false;
976
+
977
+ $cache_path = $this->getWpContentDir()."/cache/all";
978
+ $minified_cache_path = $this->getWpContentDir()."/cache/wpfc-minified";
979
+ $widget_cache_path = $this->getWpContentDir()."/cache/wpfc-widget-cache";
980
+
981
+ if(class_exists("WpFcMobileCache")){
982
+ $wpfc_mobile = new WpFcMobileCache();
983
+ $wpfc_mobile->delete_cache($this->getWpContentDir());
984
+ }
985
+
986
+ if(!is_dir($this->getWpContentDir()."/cache/tmpWpfc")){
987
+ if(@mkdir($this->getWpContentDir()."/cache/tmpWpfc", 0755, true)){
988
+ $created_tmpWpfc = true;
989
+ }else{
990
+ $created_tmpWpfc = false;
991
+ //$this->systemMessage = array("Permission of <strong>/wp-content/cache</strong> must be <strong>755</strong>", "error");
992
+ }
993
+ }else{
994
+ $created_tmpWpfc = true;
995
+ }
996
+
997
+ //to clear widget cache path
998
+ if(is_dir($widget_cache_path)){
999
+ if(@rename($widget_cache_path, $this->getWpContentDir()."/cache/tmpWpfc/w".time())){
1000
+ //DONE
1001
+ }
1002
+ }
1003
+
1004
+ if(is_dir($cache_path)){
1005
+ if(@rename($cache_path, $this->getWpContentDir()."/cache/tmpWpfc/".time())){
1006
+ delete_option("WpFastestCacheHTML");
1007
+ delete_option("WpFastestCacheHTMLSIZE");
1008
+ delete_option("WpFastestCacheMOBILE");
1009
+ delete_option("WpFastestCacheMOBILESIZE");
1010
+
1011
+ $cache_deleted = true;
1012
+ }
1013
+ }else{
1014
+ $cache_deleted = true;
1015
+ }
1016
+
1017
+ if($minified){
1018
+ if(is_dir($minified_cache_path)){
1019
+ if(@rename($minified_cache_path, $this->getWpContentDir()."/cache/tmpWpfc/m".time())){
1020
+ delete_option("WpFastestCacheCSS");
1021
+ delete_option("WpFastestCacheCSSSIZE");
1022
+ delete_option("WpFastestCacheJS");
1023
+ delete_option("WpFastestCacheJSSIZE");
1024
+
1025
+ $minifed_deleted = true;
1026
+ }
1027
+ }else{
1028
+ $minifed_deleted = true;
1029
+ }
1030
+ }else{
1031
+ $minifed_deleted = true;
1032
+ }
1033
+
1034
+ if($created_tmpWpfc && $cache_deleted && $minifed_deleted){
1035
+ $this->systemMessage = array("All cache files have been deleted","success");
1036
+
1037
+ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){
1038
+ include_once $this->get_premium_path("logs.php");
1039
+
1040
+ $log = new WpFastestCacheLogs("delete");
1041
+ $log->action();
1042
+ }
1043
+ }else{
1044
+ $this->systemMessage = array("Permissions Problem: <a href='http://www.wpfastestcache.com/warnings/delete-cache-problem-related-to-permission/' target='_blank'>Read More</a>", "error", array("light_box" => "delete_cache_permission_error"));
1045
+ }
1046
+
1047
+ // for ajax request
1048
+ if(isset($_GET["action"]) && in_array($_GET["action"], array("wpfc_delete_cache", "wpfc_delete_cache_and_minified"))){
1049
+ die(json_encode($this->systemMessage));
1050
+ }
1051
+ }
1052
+
1053
+ public function checkCronTime(){
1054
+ $crons = _get_cron_array();
1055
+
1056
+ foreach ((array)$crons as $cron_key => $cron_value) {
1057
+ foreach ( (array) $cron_value as $hook => $events ) {
1058
+ if(preg_match("/^wp\_fastest\_cache(.*)/", $hook, $id)){
1059
+ if(!$id[1] || preg_match("/^\_(\d+)$/", $id[1])){
1060
+ foreach ( (array) $events as $event_key => $event ) {
1061
+ add_action("wp_fastest_cache".$id[1], array($this, 'setSchedule'));
1062
+ }
1063
+ }
1064
+ }
1065
+ }
1066
+ }
1067
+
1068
+ add_action($this->slug()."_Preload", array($this, 'create_preload_cache'));
1069
+ }
1070
+
1071
+ public function set_preload(){
1072
+ $preload_arr = array();
1073
+
1074
+ if(!empty($_POST) && isset($_POST["wpFastestCachePreload"])){
1075
+ foreach ($_POST as $key => $value) {
1076
+ $key = esc_url_raw($key);
1077
+ $value = esc_url_raw($value);
1078
+
1079
+ preg_match("/wpFastestCachePreload_(.+)/", $key, $type);
1080
+
1081
+ if(!empty($type)){
1082
+ $value = preg_replace("/[^0-9]+/", "", $value);
1083
+
1084
+ if($type[1] == "number"){
1085
+ $preload_arr[$type[1]] = $value;
1086
+ }else{
1087
+ $preload_arr[$type[1]] = 0;
1088
+ }
1089
+ }
1090
+ }
1091
+ }
1092
+
1093
+ if($data = get_option("WpFastestCachePreLoad")){
1094
+ $preload_std = json_decode($data);
1095
+
1096
+ if(!empty($preload_arr)){
1097
+ foreach ($preload_arr as $key => &$value) {
1098
+ if(!empty($preload_std->$key)){
1099
+ if($key != "number"){
1100
+ $value = $preload_std->$key;
1101
+ }
1102
+ }
1103
+ }
1104
+
1105
+ $preload_std = $preload_arr;
1106
+ }else{
1107
+ foreach ($preload_std as $key => &$value) {
1108
+ if($key != "number"){
1109
+ $value = 0;
1110
+ }
1111
+ }
1112
+ }
1113
+
1114
+ update_option("WpFastestCachePreLoad", json_encode($preload_std));
1115
+
1116
+ if(!wp_next_scheduled($this->slug()."_Preload")){
1117
+ wp_schedule_event(time() + 5, 'everyfiveminute', $this->slug()."_Preload");
1118
+ }
1119
+ }else{
1120
+ if(!empty($preload_arr)){
1121
+ add_option("WpFastestCachePreLoad", json_encode($preload_arr), null, "yes");
1122
+
1123
+ if(!wp_next_scheduled($this->slug()."_Preload")){
1124
+ wp_schedule_event(time() + 5, 'everyfiveminute', $this->slug()."_Preload");
1125
+ }
1126
+ }else{
1127
+ //toDO
1128
+ }
1129
+ }
1130
+ }
1131
+
1132
+ public function create_preload_cache(){
1133
+ if($data = get_option("WpFastestCachePreLoad")){
1134
+ $count_posts = wp_count_posts("post");
1135
+ $count_pages = wp_count_posts('page');
1136
+
1137
+ $this->options = $this->getOptions();
1138
+
1139
+ $pre_load = json_decode($data);
1140
+ $number = $pre_load->number;
1141
+
1142
+ $urls_limit = isset($this->options->wpFastestCachePreload_number) ? $this->options->wpFastestCachePreload_number : 4; // must be even
1143
+ $urls = array();
1144
+
1145
+ if(isset($this->options->wpFastestCacheMobileTheme) && $this->options->wpFastestCacheMobileTheme){
1146
+ $mobile_theme = true;
1147
+ $number = $number/2;
1148
+ }else{
1149
+ $mobile_theme = false;
1150
+ }
1151
+
1152
+
1153
+ // HOME
1154
+ if($pre_load->homepage > -1){
1155
+ if($mobile_theme){
1156
+ array_push($urls, array("url" => get_option("home"), "user-agent" => "mobile"));
1157
+ $number--;
1158
+ }
1159
+
1160
+ array_push($urls, array("url" => get_option("home"), "user-agent" => "desktop"));
1161
+ $number--;
1162
+
1163
+ $pre_load->homepage = -1;
1164
+ }
1165
+
1166
+ // POST
1167
+ if($number > 0 && $pre_load->post > -1){
1168
+ $recent_posts = wp_get_recent_posts(array(
1169
+ 'numberposts' => $number,
1170
+ 'offset' => $pre_load->post,
1171
+ 'orderby' => 'ID',
1172
+ 'order' => 'DESC',
1173
+ 'post_type' => 'post',
1174
+ 'post_status' => 'publish',
1175
+ 'suppress_filters' => true
1176
+ ), ARRAY_A);
1177
+
1178
+ if(count($recent_posts) > 0){
1179
+ foreach ($recent_posts as $key => $post) {
1180
+ if($mobile_theme){
1181
+ array_push($urls, array("url" => get_permalink($post["ID"]), "user-agent" => "mobile"));
1182
+ $number--;
1183
+ }
1184
+
1185
+ array_push($urls, array("url" => get_permalink($post["ID"]), "user-agent" => "desktop"));
1186
+ $number--;
1187
+
1188
+ $pre_load->post = $pre_load->post + 1;
1189
+ }
1190
+ }else{
1191
+ $pre_load->post = -1;
1192
+ }
1193
+ }
1194
+
1195
+
1196
+ // PAGE
1197
+ if($number > 0 && $pre_load->page > -1){
1198
+ $pages = get_pages(array(
1199
+ 'sort_order' => 'DESC',
1200
+ 'sort_column' => 'ID',
1201
+ 'parent' => -1,
1202
+ 'hierarchical' => 0,
1203
+ 'number' => $number,
1204
+ 'offset' => $pre_load->page,
1205
+ 'post_type' => 'page',
1206
+ 'post_status' => 'publish'
1207
+ ));
1208
+
1209
+ if(count($pages) > 0){
1210
+ foreach ($pages as $key => $page) {
1211
+ $page_url = get_option("home")."/".get_page_uri($page->ID);
1212
+
1213
+ if($mobile_theme){
1214
+ array_push($urls, array("url" => $page_url, "user-agent" => "mobile"));
1215
+ $number--;
1216
+ }
1217
+
1218
+ array_push($urls, array("url" => $page_url, "user-agent" => "desktop"));
1219
+ $number--;
1220
+
1221
+ $pre_load->page = $pre_load->page + 1;
1222
+ }
1223
+ }else{
1224
+ $pre_load->page = -1;
1225
+ }
1226
+ }
1227
+
1228
+ // CATEGORY
1229
+ if(false && $number > 0 && $pre_load->category > -1){
1230
+ $categories = get_terms("category", array(
1231
+ 'orderby' => 'id',
1232
+ 'order' => 'DESC',
1233
+ 'hide_empty' => false,
1234
+ 'number' => $number,
1235
+ 'fields' => 'all',
1236
+ 'pad_counts' => false,
1237
+ 'offset' => $pre_load->category
1238
+ ));
1239
+
1240
+ if(count($categories) > 0){
1241
+ foreach ($categories as $key => $category) {
1242
+ if($mobile_theme){
1243
+ array_push($urls, array("url" => get_term_link($category->slug, "category"), "user-agent" => "mobile"));
1244
+ $number--;
1245
+ }
1246
+
1247
+ array_push($urls, array("url" => get_term_link($category->slug, "category"), "user-agent" => "desktop"));
1248
+ $number--;
1249
+
1250
+ $pre_load->category = $pre_load->category + 1;
1251
+
1252
+ }
1253
+
1254
+ if(count($categories) == 1){
1255
+ $pre_load->category = -1;
1256
+ }
1257
+ }else{
1258
+ $pre_load->category = -1;
1259
+ }
1260
+ }
1261
+
1262
+
1263
+ if(count($urls) > 0){
1264
+ foreach ($urls as $key => $arr) {
1265
+ $user_agent = "";
1266
+
1267
+ if($arr["user-agent"] == "desktop"){
1268
+ $user_agent = "WP Fastest Cache Preload Bot";
1269
+ }else if($arr["user-agent"] == "mobile"){
1270
+ $user_agent = "WP Fastest Cache Preload iPhone Mobile Bot";
1271
+ }
1272
+
1273
+ if($this->wpfc_remote_get($arr["url"], $user_agent)){
1274
+ $status = "<strong style=\"color:lightgreen;\">OK</strong>";
1275
+ }else{
1276
+ $status = "<strong style=\"color:red;\">ERROR</strong>";
1277
+ }
1278
+
1279
+ echo $status." ".$arr["url"]." (".$arr["user-agent"].")<br>";
1280
+ }
1281
+ echo "<br>";
1282
+ echo count($urls)." page have been cached";
1283
+
1284
+ update_option("WpFastestCachePreLoad", json_encode($pre_load));
1285
+
1286
+ echo "<br><br>";
1287
+
1288
+ // if(isset($pre_load->homepage)){
1289
+ // if($pre_load->homepage == -1){
1290
+ // echo "Homepage: 1/1"."<br>";
1291
+ // }
1292
+ // }
1293
+
1294
+ // if(isset($pre_load->post)){
1295
+ // if($pre_load->post > -1){
1296
+ // echo "Posts: ".$pre_load->post."/".$count_posts->publish."<br>";
1297
+ // }else{
1298
+ // echo "Posts: ".$count_posts->publish."/".$count_posts->publish."<br>";
1299
+ // }
1300
+ // }
1301
+
1302
+ // if(isset($pre_load->page)){
1303
+ // if($pre_load->page > -1){
1304
+ // echo "Pages: ".$pre_load->page."/".$count_pages->publish."<br>";
1305
+ // }else{
1306
+ // echo "Pages: ".$count_pages->publish."/".$count_pages->publish."<br>";
1307
+ // }
1308
+ // }
1309
+ }else{
1310
+ echo "Completed";
1311
+
1312
+ wp_clear_scheduled_hook("wp_fastest_cache_Preload");
1313
+ }
1314
+ }
1315
+
1316
+ die();
1317
+ }
1318
+
1319
+ public function wpfc_remote_get($url, $user_agent){
1320
+ $response = wp_remote_get($url, array('timeout' => 10, 'headers' => array("cache-control" => array("no-store, no-cache, must-revalidate", "post-check=0, pre-check=0"),'user-agent' => $user_agent)));
1321
+
1322
+ if (!$response || is_wp_error($response)){
1323
+ return false;
1324
+ }else{
1325
+ if(wp_remote_retrieve_response_code($response) != 200){
1326
+ return false;
1327
+ }
1328
+ }
1329
+
1330
+ return true;
1331
+ }
1332
+
1333
+ public function setSchedule($args = ""){
1334
+ if($args){
1335
+ $rule = json_decode($args);
1336
+
1337
+ if($rule->prefix == "all"){
1338
+ $this->deleteCache();
1339
+ }else if($rule->prefix == "homepage"){
1340
+ @unlink($this->getWpContentDir()."/cache/all/index.html");
1341
+ @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/index.html");
1342
+
1343
+ if(isset($this->options->wpFastestCachePreload_homepage) && $this->options->wpFastestCachePreload_homepage){
1344
+ $this->wpfc_remote_get(get_option("home"), "WP Fastest Cache Preload Bot - After Cache Timeout");
1345
+ $this->wpfc_remote_get(get_option("home"), "WP Fastest Cache Preload iPhone Mobile Bot - After Cache Timeout");
1346
+ }
1347
+ }else if($rule->prefix == "startwith"){
1348
+ if(!is_dir($this->getWpContentDir()."/cache/tmpWpfc")){
1349
+ if(@mkdir($this->getWpContentDir()."/cache/tmpWpfc", 0755, true)){}
1350
+ }
1351
+
1352
+ $rule->content = trim($rule->content, "/");
1353
+
1354
+ $files = glob($this->getWpContentDir()."/cache/all/".$rule->content."*");
1355
+
1356
+ foreach ((array)$files as $file) {
1357
+ $mobile_file = str_replace("/cache/all/", "/cache/wpfc-mobile-cache/", $file);
1358
+
1359
+ @rename($file, $this->getWpContentDir()."/cache/tmpWpfc/".time());
1360
+ @rename($mobile_file, $this->getWpContentDir()."/cache/tmpWpfc/mobile_".time());
1361
+ }
1362
+ }else if($rule->prefix == "exact"){
1363
+ $rule->content = trim($rule->content, "/");
1364
+
1365
+ @unlink($this->getWpContentDir()."/cache/all/".$rule->content."/index.html");
1366
+ @unlink($this->getWpContentDir()."/cache/wpfc-mobile-cache/".$rule->content."/index.html");
1367
+ }
1368
+
1369
+ if($rule->prefix != "all"){
1370
+ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){
1371
+ include_once $this->get_premium_path("logs.php");
1372
+ $log = new WpFastestCacheLogs("delete");
1373
+ $log->action($rule);
1374
+ }
1375
+ }
1376
+ }else{
1377
+ //for old cron job
1378
+ $this->deleteCache();
1379
+ }
1380
+ }
1381
+
1382
+ public function excludeRules(){
1383
+ $htaccess_page_rules = "";
1384
+ $htaccess_page_useragent = "";
1385
+ $htaccess_page_cookie = "";
1386
+
1387
+ if($rules_json = get_option("WpFastestCacheExclude")){
1388
+ if($rules_json != "null"){
1389
+ $rules_std = json_decode($rules_json);
1390
+
1391
+ foreach ($rules_std as $key => $value) {
1392
+ $value->type = isset($value->type) ? $value->type : "page";
1393
+
1394
+ if($value->type == "page"){
1395
+ if($value->prefix == "startwith"){
1396
+ $htaccess_page_rules = $htaccess_page_rules."RewriteCond %{REQUEST_URI} !^/".$value->content." [NC]\n";
1397
+ }
1398
+
1399
+ if($value->prefix == "contain"){
1400
+ $htaccess_page_rules = $htaccess_page_rules."RewriteCond %{REQUEST_URI} !".$value->content." [NC]\n";
1401
+ }
1402
+
1403
+ if($value->prefix == "exact"){
1404
+ $htaccess_page_rules = $htaccess_page_rules."RewriteCond %{REQUEST_URI} !\/".$value->content." [NC]\n";
1405
+ }
1406
+ }else if($value->type == "useragent"){
1407
+ $htaccess_page_useragent = $htaccess_page_useragent."RewriteCond %{HTTP_USER_AGENT} !".$value->content." [NC]\n";
1408
+ }else if($value->type == "cookie"){
1409
+ $htaccess_page_cookie = $htaccess_page_cookie."RewriteCond %{HTTP:Cookie} !".$value->content." [NC]\n";
1410
+ }
1411
+ }
1412
+ }
1413
+ }
1414
+
1415
+ return "# Start WPFC Exclude\n".$htaccess_page_rules.$htaccess_page_useragent.$htaccess_page_cookie."# End WPFC Exclude\n";
1416
+ }
1417
+
1418
+ public function getABSPATH(){
1419
+ $path = ABSPATH;
1420
+ $siteUrl = site_url();
1421
+ $homeUrl = home_url();
1422
+ $diff = str_replace($homeUrl, "", $siteUrl);
1423
+ $diff = trim($diff,"/");
1424
+
1425
+ $pos = strrpos($path, $diff);
1426
+
1427
+ if($pos !== false){
1428
+ $path = substr_replace($path, "", $pos, strlen($diff));
1429
+ $path = trim($path,"/");
1430
+ $path = "/".$path."/";
1431
+ }
1432
+ return $path;
1433
+ }
1434
+
1435
+ public function rm_folder_recursively($dir, $i = 1) {
1436
+ $files = @scandir($dir);
1437
+ foreach((array)$files as $file) {
1438
+ if($i > 50){
1439
+ return true;
1440
+ }else{
1441
+ $i++;
1442
+ }
1443
+ if ('.' === $file || '..' === $file) continue;
1444
+ if (is_dir("$dir/$file")){
1445
+ $this->rm_folder_recursively("$dir/$file", $i);
1446
+ }else{
1447
+ if(file_exists("$dir/$file")){
1448
+ @unlink("$dir/$file");
1449
+ }
1450
+ }
1451
+ }
1452
+
1453
+ if(is_dir($dir) && !isset($files[2])){
1454
+ @rmdir($dir);
1455
+ }
1456
+
1457
+ return true;
1458
+ }
1459
+
1460
+ protected function is_subdirectory_install(){
1461
+ if(strlen(site_url()) > strlen(home_url())){
1462
+ return true;
1463
+ }
1464
+ return false;
1465
+ }
1466
+
1467
+ protected function getMobileUserAgents(){
1468
+
1469
+ return implode("|", $this->get_mobile_browsers())."|".implode("|", $this->get_operating_systems());
1470
+
1471
+ //return "iphone|midp|sony|symbos|nokia|samsung|mobile|epoc|ericsson|panasonic|philips|sanyo|sharp|sie-|portalmmm|blazer|avantgo|danger|palm|series60|palmsource|pocketpc|android|blackberry|playbook|ipad|ipod|iemobile|palmos|webos|googlebot-mobile|bb10|xoom|p160u|nexus|SCH-I800|opera\smini|SM-G900R4|LG-|HTC|GT-I9505|WAP-Browser|Nokia309|Casper_VIA";
1472
+ }
1473
+
1474
+ public function get_premium_path($name){
1475
+ return WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/".$name;
1476
+ }
1477
+
1478
+ public function cron_add_minute( $schedules ) {
1479
+ $schedules['everyminute'] = array(
1480
+ 'interval' => 60*1,
1481
+ 'display' => __( 'Once Every 1 Minute' ),
1482
+ 'wpfc' => false
1483
+ );
1484
+
1485
+ $schedules['everyfiveminute'] = array(
1486
+ 'interval' => 60*5,
1487
+ 'display' => __( 'Once Every 5 Minutes' ),
1488
+ 'wpfc' => false
1489
+ );
1490
+
1491
+ $schedules['everyfifteenminute'] = array(
1492
+ 'interval' => 60*15,
1493
+ 'display' => __( 'Once Every 15 Minutes' ),
1494
+ 'wpfc' => true
1495
+ );
1496
+
1497
+ $schedules['twiceanhour'] = array(
1498
+ 'interval' => 60*30,
1499
+ 'display' => __( 'Twice an Hour' ),
1500
+ 'wpfc' => true
1501
+ );
1502
+
1503
+ $schedules['onceanhour'] = array(
1504
+ 'interval' => 60*60,
1505
+ 'display' => __( 'Once an Hour' ),
1506
+ 'wpfc' => true
1507
+ );
1508
+
1509
+ $schedules['everytwohours'] = array(
1510
+ 'interval' => 60*60*2,
1511
+ 'display' => __( 'Once Every 2 Hours' ),
1512
+ 'wpfc' => true
1513
+ );
1514
+
1515
+ $schedules['everythreehours'] = array(
1516
+ 'interval' => 60*60*3,
1517
+ 'display' => __( 'Once Every 3 Hours' ),
1518
+ 'wpfc' => true
1519
+ );
1520
+
1521
+ $schedules['everyfourhours'] = array(
1522
+ 'interval' => 60*60*4,
1523
+ 'display' => __( 'Once Every 4 Hours' ),
1524
+ 'wpfc' => true
1525
+ );
1526
+
1527
+ $schedules['everyfivehours'] = array(
1528
+ 'interval' => 60*60*5,
1529
+ 'display' => __( 'Once Every 5 Hours' ),
1530
+ 'wpfc' => true
1531
+ );
1532
+
1533
+ $schedules['everysixhours'] = array(
1534
+ 'interval' => 60*60*6,
1535
+ 'display' => __( 'Once Every 6 Hours' ),
1536
+ 'wpfc' => true
1537
+ );
1538
+
1539
+ $schedules['everysevenhours'] = array(
1540
+ 'interval' => 60*60*7,
1541
+ 'display' => __( 'Once Every 7 Hours' ),
1542
+ 'wpfc' => true
1543
+ );
1544
+
1545
+ $schedules['everyeighthours'] = array(
1546
+ 'interval' => 60*60*8,
1547
+ 'display' => __( 'Once Every 8 Hours' ),
1548
+ 'wpfc' => true
1549
+ );
1550
+
1551
+ $schedules['everyninehours'] = array(
1552
+ 'interval' => 60*60*9,
1553
+ 'display' => __( 'Once Every 9 Hours' ),
1554
+ 'wpfc' => true
1555
+ );
1556
+
1557
+ $schedules['everytenhours'] = array(
1558
+ 'interval' => 60*60*10,
1559
+ 'display' => __( 'Once Every 10 Hours' ),
1560
+ 'wpfc' => true
1561
+ );
1562
+
1563
+ $schedules['onceaday'] = array(
1564
+ 'interval' => 60*60*24,
1565
+ 'display' => __( 'Once a Day' ),
1566
+ 'wpfc' => true
1567
+ );
1568
+
1569
+ $schedules['weekly'] = array(
1570
+ 'interval' => 60*60*24*7,
1571
+ 'display' => __( 'Once a Week' ),
1572
+ 'wpfc' => true
1573
+ );
1574
+
1575
+ $schedules['weekly'] = array(
1576
+ 'interval' => 60*60*24*10,
1577
+ 'display' => __( 'Once Every 10 Days' ),
1578
+ 'wpfc' => true
1579
+ );
1580
+
1581
+ $schedules['montly'] = array(
1582
+ 'interval' => 60*60*24*30,
1583
+ 'display' => __( 'Once a Month' ),
1584
+ 'wpfc' => true
1585
+ );
1586
+
1587
+ $schedules['yearly'] = array(
1588
+ 'interval' => 60*60*24*30*12,
1589
+ 'display' => __( 'Once a Year' ),
1590
+ 'wpfc' => true
1591
+ );
1592
+
1593
+ return $schedules;
1594
+ }
1595
+
1596
+ public function setCustomInterval(){
1597
+ add_filter( 'cron_schedules', array($this, 'cron_add_minute'));
1598
+ }
1599
+
1600
+ public function isPluginActive( $plugin ) {
1601
+ return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || $this->isPluginActiveForNetwork( $plugin );
1602
+ }
1603
+
1604
+ public function isPluginActiveForNetwork( $plugin ) {
1605
+ if ( !is_multisite() )
1606
+ return false;
1607
+
1608
+ $plugins = get_site_option( 'active_sitewide_plugins');
1609
+ if ( isset($plugins[$plugin]) )
1610
+ return true;
1611
+
1612
+ return false;
1613
+ }
1614
+
1615
+ public function current_url(){
1616
+ if(defined('WP_CLI')){
1617
+ $_SERVER["SERVER_NAME"] = isset($_SERVER["SERVER_NAME"]) ? $_SERVER["SERVER_NAME"] : "";
1618
+ $_SERVER["SERVER_PORT"] = isset($_SERVER["SERVER_PORT"]) ? $_SERVER["SERVER_PORT"] : 80;
1619
+ }
1620
+
1621
+ $pageURL = 'http';
1622
+
1623
+ if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'){
1624
+ $pageURL .= 's';
1625
+ }
1626
+
1627
+ $pageURL .= '://';
1628
+
1629
+ if($_SERVER['SERVER_PORT'] != '80'){
1630
+ $pageURL .= $_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['REQUEST_URI'];
1631
+ }else{
1632
+ $pageURL .= $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
1633
+ }
1634
+
1635
+ return $pageURL;
1636
+ }
1637
+
1638
+ public function wpfc_load_plugin_textdomain(){
1639
+ load_plugin_textdomain('wp-fastest-cache', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' );
1640
+ }
1641
+
1642
+ public function cdn_replace_urls($matches){
1643
+ if(count($this->cdn) > 0){
1644
+ foreach ($this->cdn as $key => $cdn) {
1645
+ if(preg_match("/manifest\.json\.php/i", $matches[0])){
1646
+ return $matches[0];
1647
+ }
1648
+
1649
+ $cdn->file_types = str_replace(",", "|", $cdn->file_types);
1650
+
1651
+ if(!preg_match("/\.(".$cdn->file_types.")/i", $matches[0])){
1652
+ return $matches[0];
1653
+ }
1654
+
1655
+ if($cdn->keywords){
1656
+ $cdn->keywords = str_replace(",", "|", $cdn->keywords);
1657
+
1658
+ if(!preg_match("/".$cdn->keywords."/i", $matches[0])){
1659
+ return $matches[0];
1660
+ }
1661
+ }
1662
+
1663
+ if(preg_match("/\{\"concatemoji\"\:\"[^\"]+\"\}/i", $matches[0])){
1664
+ $matches[0] = preg_replace("/(http(s?)\:)?".preg_quote("\/\/", "/")."(www\.)?/i", "", $matches[0]);
1665
+ $matches[0] = preg_replace("/".preg_quote($cdn->originurl, "/")."/i", $cdn->cdnurl, $matches[0]);
1666
+ }else if(preg_match("/".preg_quote($cdn->originurl, "/")."/", $matches[2])){
1667
+ $matches[0] = preg_replace("/(http(s?)\:)?\/\/(www\.)?".preg_quote($cdn->originurl, "/")."/i", $cdn->cdnurl, $matches[0]);
1668
+ }else if(preg_match("/^(\/?)(wp-includes|wp-includes)/", $matches[2])){
1669
+ $matches[2] = preg_replace("/^\//", "", $matches[2]);
1670
+ $matches[0] = str_replace($matches[2], $cdn->cdnurl."/".$matches[2], $matches[0]);
1671
+ }
1672
+ }
1673
+ }
1674
+
1675
+ return $matches[0];
1676
+ }
1677
+
1678
+ public function read_file($url){
1679
+ if(!preg_match("/\.php/", $url)){
1680
+ $url = preg_replace("/\?.*/", "", $url);
1681
+ $path = preg_replace("/.+\/wp-content\/(.+)/", WPFC_WP_CONTENT_DIR."/"."$1", $url);
1682
+
1683
+ if(file_exists($path)){
1684
+ $filesize = filesize($path);
1685
+
1686
+ if($filesize > 0){
1687
+ $myfile = fopen($path, "r") or die("Unable to open file!");
1688
+ $data = fread($myfile, $filesize);
1689
+ fclose($myfile);
1690
+
1691
+ return $data;
1692
+ }else{
1693
+ return false;
1694
+ }
1695
+ }
1696
+ }
1697
+
1698
+ return false;
1699
+ }
1700
+
1701
+ public function get_operating_systems(){
1702
+ $operating_systems = array(
1703
+ 'Android',
1704
+ 'blackberry|\bBB10\b|rim\stablet\sos',
1705
+ 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino',
1706
+ 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b',
1707
+ 'Windows\sCE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window\sMobile|Windows\sPhone\s[0-9.]+|WCE;',
1708
+ 'Windows\sPhone\s10.0|Windows\sPhone\s8.1|Windows\sPhone\s8.0|Windows\sPhone\sOS|XBLWP7|ZuneWP7|Windows\sNT\s6\.[23]\;\sARM\;',
1709
+ '\biPhone.*Mobile|\biPod|\biPad',
1710
+ 'MeeGo',
1711
+ 'Maemo',
1712
+ 'J2ME\/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135
1713
+ 'webOS|hpwOS',
1714
+ '\bBada\b',
1715
+ 'BREW'
1716
+ );
1717
+ return $operating_systems;
1718
+ }
1719
+
1720
+ public function get_mobile_browsers(){
1721
+ $mobile_browsers = array(
1722
+ 'Vivaldi',
1723
+ '\bCrMo\b|CriOS|Android.*Chrome\/[.0-9]*\s(Mobile)?',
1724
+ '\bDolfin\b',
1725
+ 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+',
1726
+ 'Skyfire',
1727
+ 'Mobile\sSafari\/[.0-9]*\sEdge',
1728
+ 'IEMobile|MSIEMobile', // |Trident/[.0-9]+
1729
+ 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile',
1730
+ 'bolt',
1731
+ 'teashark',
1732
+ 'Blazer',
1733
+ 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari',
1734
+ 'Tizen',
1735
+ 'UC.*Browser|UCWEB',
1736
+ 'baiduboxapp',
1737
+ 'baidubrowser',
1738
+ 'DiigoBrowser',
1739
+ 'Puffin',
1740
+ '\bMercury\b',
1741
+ 'Obigo',
1742
+ 'NF-Browser',
1743
+ 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger',
1744
+ 'Android.*PaleMoon|Mobile.*PaleMoon'
1745
+ );
1746
+ return $mobile_browsers;
1747
+ }
1748
+
1749
+
1750
+ }
1751
+
1752
+ $GLOBALS["wp_fastest_cache"] = new WpFastestCache();
1753
+ ?>