Speed Booster Pack - Version 3.7.4

Version Description

  • minor backend tweaks - notice
  • added language files
Download this release

Release Info

Developer machothemes
Plugin Icon 128x128 Speed Booster Pack
Version 3.7.4
Comparing to
See all releases

Code changes from version 3.7.2 to 3.7.4

css/style.css CHANGED
@@ -865,4 +865,62 @@ p.description-link {
865
  font-size: .8em;
866
  color: #555;
867
  height: 18px;
868
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
865
  font-size: .8em;
866
  color: #555;
867
  height: 18px;
868
+ }
869
+
870
+ /* Box */
871
+ .sbp-box {
872
+ height: 330px;
873
+ margin-top: 15px;
874
+ text-align: center;
875
+ background: #FFF;
876
+ position: relative;
877
+ border: 1px solid rgba(0, 0, 0, .1);
878
+ float: left;
879
+ }
880
+
881
+ .sbp-box img {
882
+ width: 125px;
883
+ height: 125px;
884
+ margin: 0 auto;
885
+ margin-bottom: 15px;
886
+ display: block;
887
+ border: none;
888
+ }
889
+
890
+ .sbp-box__name {
891
+ margin-bottom: 10px;
892
+ padding: 0 26px;
893
+ font-weight: 600;
894
+ }
895
+
896
+ .sbp-box__description {
897
+ font-size: 0.9em;
898
+ }
899
+
900
+ .sbp-box__action-bar {
901
+ position: absolute;
902
+ bottom: 0;
903
+ left: 0;
904
+ right: 0;
905
+ font-size: 15px;
906
+ margin: 0;
907
+ padding: 15px;
908
+ -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, .1);
909
+ box-shadow: inset 0 1px 0 rgba(0, 0, 0, .1);
910
+ white-space: nowrap;
911
+ text-overflow: ellipsis;
912
+ background: rgba(255, 255, 255, .65);
913
+ text-align: left;
914
+ }
915
+
916
+ .sbp-box__action-button {
917
+ position: absolute;
918
+ bottom: 0px;
919
+ right: 0px;
920
+ padding: 9px 10px 10px;
921
+ background: #f6f6f6;
922
+ border-top: 1px solid rgba(0, 0, 0, .1);
923
+ text-align: center;
924
+ width: 100%;
925
+ }
926
+
feedback/class-epsilon-feedback.php CHANGED
@@ -1,271 +1,271 @@
1
- <?php
2
-
3
- class Epsilon_Feedback {
4
-
5
- private $plugin_file = '';
6
- private $plugin_name = '';
7
-
8
- function __construct( $_plugin_file ) {
9
-
10
- $this->plugin_file = $_plugin_file;
11
- $this->plugin_name = basename( $this->plugin_file, '.php' );
12
-
13
- // Deactivation
14
- add_filter( 'plugin_action_links_' . plugin_basename( $this->plugin_file ), array(
15
- $this,
16
- 'filter_action_links',
17
- ) );
18
- add_action( 'admin_footer-plugins.php', array( $this, 'goodbye_ajax' ) );
19
- add_action( 'wp_ajax_epsilon_deactivate_plugin', array( $this, 'epsilon_deactivate_plugin_callback' ) );
20
-
21
- }
22
-
23
- /**
24
- * Filter the deactivation link to allow us to present a form when the user deactivates the plugin
25
- *
26
- * @since 1.0.0
27
- */
28
- public function filter_action_links( $links ) {
29
-
30
- if ( isset( $links['deactivate'] ) ) {
31
- $deactivation_link = $links['deactivate'];
32
- // Insert an onClick action to allow form before deactivating
33
- $deactivation_link = str_replace( '<a ', '<div class="epsilon-deactivate-form-wrapper"><span class="epsilon-deactivate-form" id="epsilon-deactivate-form-' . esc_attr( $this->plugin_name ) . '"></span></div><a onclick="javascript:event.preventDefault();" id="epsilon-deactivate-link-' . esc_attr( $this->plugin_name ) . '" ', $deactivation_link );
34
- $links['deactivate'] = $deactivation_link;
35
- }
36
-
37
- return $links;
38
- }
39
-
40
- /**
41
- * Form text strings
42
- * These can be filtered
43
- *
44
- * @since 1.0.0
45
- */
46
- public function goodbye_ajax() {
47
- // Get our strings for the form
48
- $form = $this->get_form_info();
49
-
50
- // Build the HTML to go in the form
51
- $html = '<div class="epsilon-deactivate-form-head"><strong>' . esc_html( $form['heading'] ) . '</strong></div>';
52
- $html .= '<div class="epsilon-deactivate-form-body"><p>' . esc_html( $form['body'] ) . '</p>';
53
- if ( is_array( $form['options'] ) ) {
54
- $html .= '<div class="epsilon-deactivate-options"><p>';
55
- foreach ( $form['options'] as $key => $option ) {
56
- if ( 'features' == $key ) {
57
- $html .= '<input type="radio" name="epsilon-deactivate-reason" checked="checked" id="' . esc_attr( $key ) . '" value="' . esc_attr( $key ) . '"> <label for="' . esc_attr( $key ) . '">' . esc_attr( $option ) . '</label><br>';
58
- } else {
59
- $html .= '<input type="radio" name="epsilon-deactivate-reason" id="' . esc_attr( $key ) . '" value="' . esc_attr( $key ) . '"> <label for="' . esc_attr( $key ) . '">' . esc_attr( $option ) . '</label><br>';
60
- }
61
- }
62
- $html .= '</p><label id="epsilon-deactivate-details-label" for="epsilon-deactivate-reasons"><strong>' . esc_html( $form['details'] ) . '</strong></label><textarea name="epsilon-deactivate-details" id="epsilon-deactivate-details" rows="2" style="width:100%"></textarea>';
63
- $html .= '<input type="checkbox" name="epsilon-deactivate-tracking" checked="" id="allow-tracking" value="yes"> <label for="allow-tracking">' . esc_html__( 'Allow us to get more information in order to improve our plugin', 'sb-pack' ) . '</label><br>';
64
- $html .= '</div><!-- .epsilon-deactivate-options -->';
65
- }
66
- $html .= '</div><!-- .epsilon-deactivate-form-body -->';
67
- $html .= '<p class="deactivating-spinner"><span class="spinner"></span> ' . __( 'Submitting form', 'sb-pack' ) . '</p>';
68
- $html .= '<div class="epsilon-deactivate-form-footer"><p><a id="epsilon-deactivate-plugin" href="#">' . __( 'Just Deactivate', 'sb-pack' ) . '</a><a id="epsilon-deactivate-submit-form" class="button button-primary" href="#">' . __( 'Submit and Deactivate', 'sb-pack' ) . '</a></p></div>'
69
- ?>
70
- <div class="epsilon-deactivate-form-bg"></div>
71
- <style type="text/css">
72
- .epsilon-deactivate-form-active .epsilon-deactivate-form-bg {
73
- background: rgba(0, 0, 0, .5);
74
- position: fixed;
75
- top: 0;
76
- left: 0;
77
- width: 100%;
78
- height: 100%;
79
- }
80
-
81
- .epsilon-deactivate-form-wrapper {
82
- position: relative;
83
- z-index: 999;
84
- display: none;
85
- }
86
-
87
- .epsilon-deactivate-form-active .epsilon-deactivate-form-wrapper {
88
- display: block;
89
- }
90
-
91
- .epsilon-deactivate-form {
92
- display: none;
93
- }
94
-
95
- .epsilon-deactivate-form-active .epsilon-deactivate-form {
96
- position: absolute;
97
- bottom: 30px;
98
- left: 0;
99
- max-width: 400px;
100
- background: #fff;
101
- white-space: normal;
102
- }
103
-
104
- .epsilon-deactivate-form-head {
105
- background: #272754;
106
- color: #fff;
107
- padding: 8px 18px;
108
- }
109
-
110
- .epsilon-deactivate-form-body {
111
- padding: 8px 18px;
112
- color: #444;
113
- }
114
-
115
- .deactivating-spinner {
116
- display: none;
117
- }
118
-
119
- .deactivating-spinner .spinner {
120
- float: none;
121
- margin: 4px 4px 0 18px;
122
- vertical-align: bottom;
123
- visibility: visible;
124
- }
125
-
126
- .epsilon-deactivate-form-footer {
127
- padding: 8px 18px;
128
- }
129
-
130
- .epsilon-deactivate-form-footer p {
131
- display: flex;
132
- align-items: center;
133
- justify-content: space-between;
134
- }
135
-
136
- .epsilon-deactivate-form.process-response .epsilon-deactivate-form-body,
137
- .epsilon-deactivate-form.process-response .epsilon-deactivate-form-footer {
138
- position: relative;
139
- }
140
-
141
- .epsilon-deactivate-form.process-response .epsilon-deactivate-form-body:after,
142
- .epsilon-deactivate-form.process-response .epsilon-deactivate-form-footer:after {
143
- content: "";
144
- display: block;
145
- position: absolute;
146
- top: 0;
147
- left: 0;
148
- width: 100%;
149
- height: 100%;
150
- background-color: rgba(255, 255, 255, .5);
151
- }
152
- </style>
153
- <script>
154
- jQuery( document ).ready( function( $ ) {
155
- var deactivateURL = $( "#epsilon-deactivate-link-<?php echo esc_attr( $this->plugin_name ); ?>" ),
156
- formContainer = $( '#epsilon-deactivate-form-<?php echo esc_attr( $this->plugin_name ); ?>' ),
157
- detailsStrings = {
158
- 'setup': '<?php echo __( 'What was the dificult part ?', 'sb-pack' ) ?>',
159
- 'documentation': '<?php echo __( 'What can we describe more ?', 'sb-pack' ) ?>',
160
- 'features': '<?php echo __( 'How could we improve ?', 'sb-pack' ) ?>',
161
- 'better-plugin': '<?php echo __( 'Can you mention it ?', 'sb-pack' ) ?>',
162
- 'incompatibility': '<?php echo __( 'With what plugin or theme is incompatible ?', 'sb-pack' ) ?>',
163
- };
164
-
165
- $( deactivateURL ).on( "click", function() {
166
- // We'll send the user to this deactivation link when they've completed or dismissed the form
167
- var url = deactivateURL.attr( 'href' );
168
- $( 'body' ).toggleClass( 'epsilon-deactivate-form-active' );
169
- formContainer.fadeIn();
170
- formContainer.html( '<?php echo $html; ?>' );
171
-
172
- formContainer.on( 'change', 'input[name="epsilon-deactivate-reason"]', function() {
173
- var detailsLabel = formContainer.find( '#epsilon-deactivate-details-label strong' );
174
- var value = formContainer.find( 'input[name="epsilon-deactivate-reason"]:checked' ).val();
175
- detailsLabel.text( detailsStrings[ value ] );
176
- } );
177
-
178
- formContainer.on( 'click', '#epsilon-deactivate-submit-form', function( e ) {
179
- var data = {
180
- 'action': 'epsilon_deactivate_plugin',
181
- 'security': "<?php echo wp_create_nonce( 'epsilon_deactivate_plugin' ); ?>",
182
- 'dataType': "json"
183
- };
184
- e.preventDefault();
185
- // As soon as we click, the body of the form should disappear
186
- formContainer.addClass( 'process-response' );
187
- // Fade in spinner
188
- formContainer.find( ".deactivating-spinner" ).fadeIn();
189
-
190
- data[ 'reason' ] = formContainer.find( 'input[name="epsilon-deactivate-reason"]:checked' ).val();
191
- data[ 'details' ] = formContainer.find( '#epsilon-deactivate-details' ).val();
192
- data[ 'tracking' ] = formContainer.find( '#allow-tracking:checked' ).length;
193
-
194
- $.post(
195
- ajaxurl,
196
- data,
197
- function( response ) {
198
- // Redirect to original deactivation URL
199
- window.location.href = url;
200
- }
201
- );
202
- } );
203
-
204
- formContainer.on( 'click', '#epsilon-deactivate-plugin', function( e ) {
205
- e.preventDefault();
206
- window.location.href = url;
207
- } );
208
-
209
- // If we click outside the form, the form will close
210
- $( '.epsilon-deactivate-form-bg' ).on( 'click', function() {
211
- formContainer.fadeOut();
212
- $( 'body' ).removeClass( 'epsilon-deactivate-form-active' );
213
- } );
214
- } );
215
- } );
216
- </script>
217
- <?php }
218
-
219
- /*
220
- * Form text strings
221
- * These are non-filterable and used as fallback in case filtered strings aren't set correctly
222
- * @since 1.0.0
223
- */
224
- public function get_form_info() {
225
- $form = array();
226
- $form['heading'] = __( 'Sorry to see you go', 'sb-pack' );
227
- $form['body'] = __( 'Before you deactivate the plugin, would you quickly give us your reason for doing so?', 'sb-pack' );
228
- $form['options'] = array(
229
- 'setup' => __( 'Set up is too difficult', 'sb-pack' ),
230
- 'documentation' => __( 'Lack of documentation', 'sb-pack' ),
231
- 'features' => __( 'Not the features I wanted', 'sb-pack' ),
232
- 'better-plugin' => __( 'Found a better plugin', 'sb-pack' ),
233
- 'incompatibility' => __( 'Incompatible with theme or plugin', 'sb-pack' ),
234
- );
235
- $form['details'] = __( 'How could we improve ?', 'sb-pack' );
236
-
237
- return $form;
238
- }
239
-
240
- public function epsilon_deactivate_plugin_callback() {
241
-
242
- check_ajax_referer( 'epsilon_deactivate_plugin', 'security' );
243
-
244
- if ( isset( $_POST['reason'] ) && isset( $_POST['details'] ) && isset( $_POST['tracking'] ) ) {
245
- require_once 'class-epsilon-plugin-request.php';
246
- $args = array(
247
- 'reason' => $_POST['reason'],
248
- 'details' => $_POST['details'],
249
- 'tracking' => $_POST['tracking'],
250
- );
251
- $request = new Epsilon_Plugin_Request( $this->plugin_file, $args );
252
- if ( $request->request_successful ) {
253
- echo json_encode( array(
254
- 'status' => 'ok',
255
- ) );
256
- } else {
257
- echo json_encode( array(
258
- 'status' => 'nok',
259
- ) );
260
- }
261
- } else {
262
- echo json_encode( array(
263
- 'status' => 'ok',
264
- ) );
265
- }
266
-
267
- die();
268
-
269
- }
270
-
271
  }
1
+ <?php
2
+
3
+ class Epsilon_Feedback {
4
+
5
+ private $plugin_file = '';
6
+ private $plugin_name = '';
7
+
8
+ function __construct( $_plugin_file ) {
9
+
10
+ $this->plugin_file = $_plugin_file;
11
+ $this->plugin_name = basename( $this->plugin_file, '.php' );
12
+
13
+ // Deactivation
14
+ add_filter( 'plugin_action_links_' . plugin_basename( $this->plugin_file ), array(
15
+ $this,
16
+ 'filter_action_links',
17
+ ) );
18
+ add_action( 'admin_footer-plugins.php', array( $this, 'goodbye_ajax' ) );
19
+ add_action( 'wp_ajax_epsilon_deactivate_plugin', array( $this, 'epsilon_deactivate_plugin_callback' ) );
20
+
21
+ }
22
+
23
+ /**
24
+ * Filter the deactivation link to allow us to present a form when the user deactivates the plugin
25
+ *
26
+ * @since 1.0.0
27
+ */
28
+ public function filter_action_links( $links ) {
29
+
30
+ if ( isset( $links['deactivate'] ) ) {
31
+ $deactivation_link = $links['deactivate'];
32
+ // Insert an onClick action to allow form before deactivating
33
+ $deactivation_link = str_replace( '<a ', '<div class="epsilon-deactivate-form-wrapper"><span class="epsilon-deactivate-form" id="epsilon-deactivate-form-' . esc_attr( $this->plugin_name ) . '"></span></div><a onclick="javascript:event.preventDefault();" id="epsilon-deactivate-link-' . esc_attr( $this->plugin_name ) . '" ', $deactivation_link );
34
+ $links['deactivate'] = $deactivation_link;
35
+ }
36
+
37
+ return $links;
38
+ }
39
+
40
+ /**
41
+ * Form text strings
42
+ * These can be filtered
43
+ *
44
+ * @since 1.0.0
45
+ */
46
+ public function goodbye_ajax() {
47
+ // Get our strings for the form
48
+ $form = $this->get_form_info();
49
+
50
+ // Build the HTML to go in the form
51
+ $html = '<div class="epsilon-deactivate-form-head"><strong>' . esc_html( $form['heading'] ) . '</strong></div>';
52
+ $html .= '<div class="epsilon-deactivate-form-body"><p>' . esc_html( $form['body'] ) . '</p>';
53
+ if ( is_array( $form['options'] ) ) {
54
+ $html .= '<div class="epsilon-deactivate-options"><p>';
55
+ foreach ( $form['options'] as $key => $option ) {
56
+ if ( 'features' == $key ) {
57
+ $html .= '<input type="radio" name="epsilon-deactivate-reason" checked="checked" id="' . esc_attr( $key ) . '" value="' . esc_attr( $key ) . '"> <label for="' . esc_attr( $key ) . '">' . esc_attr( $option ) . '</label><br>';
58
+ } else {
59
+ $html .= '<input type="radio" name="epsilon-deactivate-reason" id="' . esc_attr( $key ) . '" value="' . esc_attr( $key ) . '"> <label for="' . esc_attr( $key ) . '">' . esc_attr( $option ) . '</label><br>';
60
+ }
61
+ }
62
+ $html .= '</p><label id="epsilon-deactivate-details-label" for="epsilon-deactivate-reasons"><strong>' . esc_html( $form['details'] ) . '</strong></label><textarea name="epsilon-deactivate-details" id="epsilon-deactivate-details" rows="2" style="width:100%"></textarea>';
63
+ $html .= '<input type="checkbox" name="epsilon-deactivate-tracking" checked="" id="allow-tracking" value="yes"> <label for="allow-tracking">' . esc_html__( 'Allow us to get more information in order to improve our plugin', 'sb-pack' ) . '</label><br>';
64
+ $html .= '</div><!-- .epsilon-deactivate-options -->';
65
+ }
66
+ $html .= '</div><!-- .epsilon-deactivate-form-body -->';
67
+ $html .= '<p class="deactivating-spinner"><span class="spinner"></span> ' . __( 'Submitting form', 'sb-pack' ) . '</p>';
68
+ $html .= '<div class="epsilon-deactivate-form-footer"><p><a id="epsilon-deactivate-plugin" href="#">' . __( 'Just Deactivate', 'sb-pack' ) . '</a><a id="epsilon-deactivate-submit-form" class="button button-primary" href="#">' . __( 'Submit and Deactivate', 'sb-pack' ) . '</a></p></div>'
69
+ ?>
70
+ <div class="epsilon-deactivate-form-bg"></div>
71
+ <style type="text/css">
72
+ .epsilon-deactivate-form-active .epsilon-deactivate-form-bg {
73
+ background: rgba(0, 0, 0, .5);
74
+ position: fixed;
75
+ top: 0;
76
+ left: 0;
77
+ width: 100%;
78
+ height: 100%;
79
+ }
80
+
81
+ .epsilon-deactivate-form-wrapper {
82
+ position: relative;
83
+ z-index: 999;
84
+ display: none;
85
+ }
86
+
87
+ .epsilon-deactivate-form-active .epsilon-deactivate-form-wrapper {
88
+ display: block;
89
+ }
90
+
91
+ .epsilon-deactivate-form {
92
+ display: none;
93
+ }
94
+
95
+ .epsilon-deactivate-form-active .epsilon-deactivate-form {
96
+ position: absolute;
97
+ bottom: 30px;
98
+ left: 0;
99
+ max-width: 400px;
100
+ background: #fff;
101
+ white-space: normal;
102
+ }
103
+
104
+ .epsilon-deactivate-form-head {
105
+ background: #272754;
106
+ color: #fff;
107
+ padding: 8px 18px;
108
+ }
109
+
110
+ .epsilon-deactivate-form-body {
111
+ padding: 8px 18px;
112
+ color: #444;
113
+ }
114
+
115
+ .deactivating-spinner {
116
+ display: none;
117
+ }
118
+
119
+ .deactivating-spinner .spinner {
120
+ float: none;
121
+ margin: 4px 4px 0 18px;
122
+ vertical-align: bottom;
123
+ visibility: visible;
124
+ }
125
+
126
+ .epsilon-deactivate-form-footer {
127
+ padding: 8px 18px;
128
+ }
129
+
130
+ .epsilon-deactivate-form-footer p {
131
+ display: flex;
132
+ align-items: center;
133
+ justify-content: space-between;
134
+ }
135
+
136
+ .epsilon-deactivate-form.process-response .epsilon-deactivate-form-body,
137
+ .epsilon-deactivate-form.process-response .epsilon-deactivate-form-footer {
138
+ position: relative;
139
+ }
140
+
141
+ .epsilon-deactivate-form.process-response .epsilon-deactivate-form-body:after,
142
+ .epsilon-deactivate-form.process-response .epsilon-deactivate-form-footer:after {
143
+ content: "";
144
+ display: block;
145
+ position: absolute;
146
+ top: 0;
147
+ left: 0;
148
+ width: 100%;
149
+ height: 100%;
150
+ background-color: rgba(255, 255, 255, .5);
151
+ }
152
+ </style>
153
+ <script>
154
+ jQuery( document ).ready( function( $ ) {
155
+ var deactivateURL = $( "#epsilon-deactivate-link-<?php echo esc_attr( $this->plugin_name ); ?>" ),
156
+ formContainer = $( '#epsilon-deactivate-form-<?php echo esc_attr( $this->plugin_name ); ?>' ),
157
+ detailsStrings = {
158
+ 'setup': '<?php echo __( 'What was the dificult part ?', 'sb-pack' ) ?>',
159
+ 'documentation': '<?php echo __( 'What can we describe more ?', 'sb-pack' ) ?>',
160
+ 'features': '<?php echo __( 'How could we improve ?', 'sb-pack' ) ?>',
161
+ 'better-plugin': '<?php echo __( 'Can you mention it ?', 'sb-pack' ) ?>',
162
+ 'incompatibility': '<?php echo __( 'With what plugin or theme is incompatible ?', 'sb-pack' ) ?>',
163
+ };
164
+
165
+ $( deactivateURL ).on( "click", function() {
166
+ // We'll send the user to this deactivation link when they've completed or dismissed the form
167
+ var url = deactivateURL.attr( 'href' );
168
+ $( 'body' ).toggleClass( 'epsilon-deactivate-form-active' );
169
+ formContainer.fadeIn();
170
+ formContainer.html( '<?php echo $html; ?>' );
171
+
172
+ formContainer.on( 'change', 'input[name="epsilon-deactivate-reason"]', function() {
173
+ var detailsLabel = formContainer.find( '#epsilon-deactivate-details-label strong' );
174
+ var value = formContainer.find( 'input[name="epsilon-deactivate-reason"]:checked' ).val();
175
+ detailsLabel.text( detailsStrings[ value ] );
176
+ } );
177
+
178
+ formContainer.on( 'click', '#epsilon-deactivate-submit-form', function( e ) {
179
+ var data = {
180
+ 'action': 'epsilon_deactivate_plugin',
181
+ 'security': "<?php echo wp_create_nonce( 'epsilon_deactivate_plugin' ); ?>",
182
+ 'dataType': "json"
183
+ };
184
+ e.preventDefault();
185
+ // As soon as we click, the body of the form should disappear
186
+ formContainer.addClass( 'process-response' );
187
+ // Fade in spinner
188
+ formContainer.find( ".deactivating-spinner" ).fadeIn();
189
+
190
+ data[ 'reason' ] = formContainer.find( 'input[name="epsilon-deactivate-reason"]:checked' ).val();
191
+ data[ 'details' ] = formContainer.find( '#epsilon-deactivate-details' ).val();
192
+ data[ 'tracking' ] = formContainer.find( '#allow-tracking:checked' ).length;
193
+
194
+ $.post(
195
+ ajaxurl,
196
+ data,
197
+ function( response ) {
198
+ // Redirect to original deactivation URL
199
+ window.location.href = url;
200
+ }
201
+ );
202
+ } );
203
+
204
+ formContainer.on( 'click', '#epsilon-deactivate-plugin', function( e ) {
205
+ e.preventDefault();
206
+ window.location.href = url;
207
+ } );
208
+
209
+ // If we click outside the form, the form will close
210
+ $( '.epsilon-deactivate-form-bg' ).on( 'click', function() {
211
+ formContainer.fadeOut();
212
+ $( 'body' ).removeClass( 'epsilon-deactivate-form-active' );
213
+ } );
214
+ } );
215
+ } );
216
+ </script>
217
+ <?php }
218
+
219
+ /*
220
+ * Form text strings
221
+ * These are non-filterable and used as fallback in case filtered strings aren't set correctly
222
+ * @since 1.0.0
223
+ */
224
+ public function get_form_info() {
225
+ $form = array();
226
+ $form['heading'] = __( 'Sorry to see you go', 'sb-pack' );
227
+ $form['body'] = __( 'Before you deactivate the plugin, would you quickly give us your reason for doing so?', 'sb-pack' );
228
+ $form['options'] = array(
229
+ 'setup' => __( 'Set up is too difficult', 'sb-pack' ),
230
+ 'documentation' => __( 'Lack of documentation', 'sb-pack' ),
231
+ 'features' => __( 'Not the features I wanted', 'sb-pack' ),
232
+ 'better-plugin' => __( 'Found a better plugin', 'sb-pack' ),
233
+ 'incompatibility' => __( 'Incompatible with theme or plugin', 'sb-pack' ),
234
+ );
235
+ $form['details'] = __( 'How could we improve ?', 'sb-pack' );
236
+
237
+ return $form;
238
+ }
239
+
240
+ public function epsilon_deactivate_plugin_callback() {
241
+
242
+ check_ajax_referer( 'epsilon_deactivate_plugin', 'security' );
243
+
244
+ if ( isset( $_POST['reason'] ) && isset( $_POST['details'] ) && isset( $_POST['tracking'] ) ) {
245
+ require_once 'class-epsilon-plugin-request.php';
246
+ $args = array(
247
+ 'reason' => $_POST['reason'],
248
+ 'details' => $_POST['details'],
249
+ 'tracking' => $_POST['tracking'],
250
+ );
251
+ $request = new Epsilon_Plugin_Request( $this->plugin_file, $args );
252
+ if ( $request->request_successful ) {
253
+ echo json_encode( array(
254
+ 'status' => 'ok',
255
+ ) );
256
+ } else {
257
+ echo json_encode( array(
258
+ 'status' => 'nok',
259
+ ) );
260
+ }
261
+ } else {
262
+ echo json_encode( array(
263
+ 'status' => 'ok',
264
+ ) );
265
+ }
266
+
267
+ die();
268
+
269
+ }
270
+
271
  }
feedback/class-epsilon-plugin-request.php CHANGED
@@ -1,225 +1,225 @@
1
- <?php
2
-
3
- class Epsilon_Plugin_Request {
4
-
5
- /**
6
- * Url for the request
7
- *
8
- * @var string
9
- */
10
- private $url = 'https://tamewp.com/';
11
- /**
12
- * Api endpoint
13
- *
14
- * @var string
15
- */
16
- private $endpoint = 'wp-json/epsilon/v1/add-tracking-data';
17
- /**
18
- * Private data
19
- *
20
- * @var array
21
- */
22
- private $data = array(
23
- 'server' => array(),
24
- 'user' => array(),
25
- 'wordpress' => array(
26
- 'deactivated_plugin' => array(),
27
- ),
28
- );
29
- /**
30
- * Plugin file
31
- *
32
- * @var string
33
- */
34
- private $plugin_file = '';
35
-
36
- private $allow_tracking = 0;
37
-
38
- public $request_successful = false;
39
-
40
- function __construct( $_plugin_file, $args ) {
41
-
42
- // Set variables
43
- $this->allow_tracking = $args['tracking'];
44
- $this->plugin_file = $_plugin_file;
45
- $this->data['unique'] = md5( home_url() . get_bloginfo( 'admin_email' ) );
46
- $this->data['wordpress']['deactivated_plugin']['uninstall_reason'] = $args['reason'];
47
- $this->data['wordpress']['deactivated_plugin']['uninstall_details'] = $args['details'];
48
-
49
- // Start collecting data
50
- $this->_collect_data();
51
- $this->_generate_url();
52
- $this->request_successful = $this->_send_request();
53
- }
54
-
55
- /**
56
- * Collect all data for the request.
57
- *
58
- */
59
- private function _collect_data() {
60
-
61
- $current_plugin = get_plugin_data( $this->plugin_file );
62
-
63
- // Plugin data
64
- $this->data['wordpress']['deactivated_plugin']['slug'] = $current_plugin['TextDomain'];
65
- $this->data['wordpress']['deactivated_plugin']['name'] = $current_plugin['Name'];
66
- $this->data['wordpress']['deactivated_plugin']['version'] = $current_plugin['Version'];
67
- $this->data['wordpress']['deactivated_plugin']['author'] = $current_plugin['AuthorName'];
68
-
69
- if ( $this->allow_tracking ) {
70
- $this->_collect_wordpress_data();
71
- $this->_collect_server_data();
72
- $this->_collect_user_data();
73
- }
74
-
75
- }
76
-
77
- /**
78
- * Collect WordPress data.
79
- *
80
- */
81
- private function _collect_wordpress_data() {
82
- $this->data['wordpress']['locale'] = ( get_bloginfo( 'version' ) >= 4.7 ) ? get_user_locale() : get_locale();
83
- $this->data['wordpress']['wp_version'] = get_bloginfo( 'version' );
84
- $this->data['wordpress']['multisite'] = is_multisite();
85
-
86
- $this->data['wordpress']['themes'] = $this->get_themes();
87
- $this->data['wordpress']['plugins'] = $this->get_plugins();
88
- }
89
-
90
- /**
91
- * Collect server data.
92
- *
93
- */
94
- private function _collect_server_data() {
95
- $this->data['server']['server'] = isset( $_SERVER['SERVER_SOFTWARE'] ) ? $_SERVER['SERVER_SOFTWARE'] : '';
96
- $this->data['server']['php_version'] = phpversion();
97
- $this->data['server']['url'] = home_url();
98
- }
99
-
100
- /**
101
- * Collect user data.
102
- *
103
- */
104
- private function _collect_user_data() {
105
- $admin = get_user_by( 'email', get_bloginfo( 'admin_email' ) );
106
- if ( ! $admin ) {
107
- $this->data['user']['email'] = '';
108
- $this->data['user']['first_name'] = '';
109
- $this->data['user']['last_name'] = '';
110
- }else{
111
- $this->data['user']['email'] = get_bloginfo( 'admin_email' );
112
- $this->data['user']['first_name'] = $admin->first_name;
113
- $this->data['user']['last_name'] = $admin->last_name;
114
- }
115
- }
116
-
117
- /**
118
- * Get current themes
119
- *
120
- * @return array
121
- */
122
- private function get_themes() {
123
- $theme = wp_get_theme();
124
-
125
- return array(
126
- 'installed' => $this->_get_installed_themes(),
127
- 'active' => array(
128
- 'slug' => get_stylesheet(),
129
- 'name' => $theme->get( 'Name' ),
130
- 'version' => $theme->get( 'Version' ),
131
- 'author' => $theme->get( 'Author' ),
132
- ),
133
- );
134
- }
135
-
136
- /**
137
- * Get an array of installed themes
138
- */
139
- private function _get_installed_themes() {
140
- $installed = wp_get_themes();
141
- $theme = get_stylesheet();
142
- $arr = array();
143
-
144
- foreach ( $installed as $slug => $info ) {
145
- if ( $slug === $theme ) {
146
- continue;
147
- }
148
- $arr[ $slug ] = array(
149
- 'slug' => $slug,
150
- 'name' => $info->get( 'Name' ),
151
- 'version' => $info->get( 'Version' ),
152
- 'author' => $info->get( 'Author' )
153
- );
154
- };
155
-
156
- return $arr;
157
- }
158
-
159
- /**
160
- * Get a list of installed plugins
161
- */
162
- private function get_plugins() {
163
- if ( ! function_exists( 'get_plugins' ) ) {
164
- include ABSPATH . '/wp-admin/includes/plugin.php';
165
- }
166
-
167
- $plugins = get_plugins();
168
- $option = get_option( 'active_plugins', array() );
169
- $active = array();
170
- $installed = array();
171
- foreach ( $plugins as $id => $info ) {
172
- if ( in_array( $id, $active ) ) {
173
- continue;
174
- }
175
-
176
- $id = explode( '/', $id );
177
- $id = ucwords( str_replace( '-', ' ', $id[0] ) );
178
-
179
- $installed[] = $id;
180
- }
181
-
182
- foreach ( $option as $id ) {
183
- $id = explode( '/', $id );
184
- $id = ucwords( str_replace( '-', ' ', $id[0] ) );
185
-
186
- $active[] = $id;
187
- }
188
-
189
- return array(
190
- 'installed' => $installed,
191
- 'active' => $active,
192
- );
193
- }
194
-
195
- /**
196
- * Generate the url
197
- */
198
- protected function _generate_url() {
199
- $this->url = $this->url . $this->endpoint;
200
- }
201
-
202
- /**
203
- * Send dat to server.
204
- *
205
- */
206
- private function _send_request() {
207
-
208
- $request = wp_remote_post( $this->url, array(
209
- 'method' => 'POST',
210
- 'timeout' => 20,
211
- 'redirection' => 5,
212
- 'httpversion' => '1.1',
213
- 'blocking' => true,
214
- 'body' => $this->data,
215
- 'user-agent' => 'MT/EPSILON-CUSTOMER-TRACKING/' . esc_url( home_url() )
216
- ) );
217
-
218
- if ( is_wp_error( $request ) ) {
219
- return false;
220
- }
221
-
222
- return true;
223
-
224
- }
225
  }
1
+ <?php
2
+
3
+ class Epsilon_Plugin_Request {
4
+
5
+ /**
6
+ * Url for the request
7
+ *
8
+ * @var string
9
+ */
10
+ private $url = 'https://tamewp.com/';
11
+ /**
12
+ * Api endpoint
13
+ *
14
+ * @var string
15
+ */
16
+ private $endpoint = 'wp-json/epsilon/v1/add-tracking-data';
17
+ /**
18
+ * Private data
19
+ *
20
+ * @var array
21
+ */
22
+ private $data = array(
23
+ 'server' => array(),
24
+ 'user' => array(),
25
+ 'wordpress' => array(
26
+ 'deactivated_plugin' => array(),
27
+ ),
28
+ );
29
+ /**
30
+ * Plugin file
31
+ *
32
+ * @var string
33
+ */
34
+ private $plugin_file = '';
35
+
36
+ private $allow_tracking = 0;
37
+
38
+ public $request_successful = false;
39
+
40
+ function __construct( $_plugin_file, $args ) {
41
+
42
+ // Set variables
43
+ $this->allow_tracking = $args['tracking'];
44
+ $this->plugin_file = $_plugin_file;
45
+ $this->data['unique'] = md5( home_url() . get_bloginfo( 'admin_email' ) );
46
+ $this->data['wordpress']['deactivated_plugin']['uninstall_reason'] = $args['reason'];
47
+ $this->data['wordpress']['deactivated_plugin']['uninstall_details'] = $args['details'];
48
+
49
+ // Start collecting data
50
+ $this->_collect_data();
51
+ $this->_generate_url();
52
+ $this->request_successful = $this->_send_request();
53
+ }
54
+
55
+ /**
56
+ * Collect all data for the request.
57
+ *
58
+ */
59
+ private function _collect_data() {
60
+
61
+ $current_plugin = get_plugin_data( $this->plugin_file );
62
+
63
+ // Plugin data
64
+ $this->data['wordpress']['deactivated_plugin']['slug'] = $current_plugin['TextDomain'];
65
+ $this->data['wordpress']['deactivated_plugin']['name'] = $current_plugin['Name'];
66
+ $this->data['wordpress']['deactivated_plugin']['version'] = $current_plugin['Version'];
67
+ $this->data['wordpress']['deactivated_plugin']['author'] = $current_plugin['AuthorName'];
68
+
69
+ if ( $this->allow_tracking ) {
70
+ $this->_collect_wordpress_data();
71
+ $this->_collect_server_data();
72
+ $this->_collect_user_data();
73
+ }
74
+
75
+ }
76
+
77
+ /**
78
+ * Collect WordPress data.
79
+ *
80
+ */
81
+ private function _collect_wordpress_data() {
82
+ $this->data['wordpress']['locale'] = ( get_bloginfo( 'version' ) >= 4.7 ) ? get_user_locale() : get_locale();
83
+ $this->data['wordpress']['wp_version'] = get_bloginfo( 'version' );
84
+ $this->data['wordpress']['multisite'] = is_multisite();
85
+
86
+ $this->data['wordpress']['themes'] = $this->get_themes();
87
+ $this->data['wordpress']['plugins'] = $this->get_plugins();
88
+ }
89
+
90
+ /**
91
+ * Collect server data.
92
+ *
93
+ */
94
+ private function _collect_server_data() {
95
+ $this->data['server']['server'] = isset( $_SERVER['SERVER_SOFTWARE'] ) ? $_SERVER['SERVER_SOFTWARE'] : '';
96
+ $this->data['server']['php_version'] = phpversion();
97
+ $this->data['server']['url'] = home_url();
98
+ }
99
+
100
+ /**
101
+ * Collect user data.
102
+ *
103
+ */
104
+ private function _collect_user_data() {
105
+ $admin = get_user_by( 'email', get_bloginfo( 'admin_email' ) );
106
+ if ( ! $admin ) {
107
+ $this->data['user']['email'] = '';
108
+ $this->data['user']['first_name'] = '';
109
+ $this->data['user']['last_name'] = '';
110
+ }else{
111
+ $this->data['user']['email'] = get_bloginfo( 'admin_email' );
112
+ $this->data['user']['first_name'] = $admin->first_name;
113
+ $this->data['user']['last_name'] = $admin->last_name;
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Get current themes
119
+ *
120
+ * @return array
121
+ */
122
+ private function get_themes() {
123
+ $theme = wp_get_theme();
124
+
125
+ return array(
126
+ 'installed' => $this->_get_installed_themes(),
127
+ 'active' => array(
128
+ 'slug' => get_stylesheet(),
129
+ 'name' => $theme->get( 'Name' ),
130
+ 'version' => $theme->get( 'Version' ),
131
+ 'author' => $theme->get( 'Author' ),
132
+ ),
133
+ );
134
+ }
135
+
136
+ /**
137
+ * Get an array of installed themes
138
+ */
139
+ private function _get_installed_themes() {
140
+ $installed = wp_get_themes();
141
+ $theme = get_stylesheet();
142
+ $arr = array();
143
+
144
+ foreach ( $installed as $slug => $info ) {
145
+ if ( $slug === $theme ) {
146
+ continue;
147
+ }
148
+ $arr[ $slug ] = array(
149
+ 'slug' => $slug,
150
+ 'name' => $info->get( 'Name' ),
151
+ 'version' => $info->get( 'Version' ),
152
+ 'author' => $info->get( 'Author' )
153
+ );
154
+ };
155
+
156
+ return $arr;
157
+ }
158
+
159
+ /**
160
+ * Get a list of installed plugins
161
+ */
162
+ private function get_plugins() {
163
+ if ( ! function_exists( 'get_plugins' ) ) {
164
+ include ABSPATH . '/wp-admin/includes/plugin.php';
165
+ }
166
+
167
+ $plugins = get_plugins();
168
+ $option = get_option( 'active_plugins', array() );
169
+ $active = array();
170
+ $installed = array();
171
+ foreach ( $plugins as $id => $info ) {
172
+ if ( in_array( $id, $active ) ) {
173
+ continue;
174
+ }
175
+
176
+ $id = explode( '/', $id );
177
+ $id = ucwords( str_replace( '-', ' ', $id[0] ) );
178
+
179
+ $installed[] = $id;
180
+ }
181
+
182
+ foreach ( $option as $id ) {
183
+ $id = explode( '/', $id );
184
+ $id = ucwords( str_replace( '-', ' ', $id[0] ) );
185
+
186
+ $active[] = $id;
187
+ }
188
+
189
+ return array(
190
+ 'installed' => $installed,
191
+ 'active' => $active,
192
+ );
193
+ }
194
+
195
+ /**
196
+ * Generate the url
197
+ */
198
+ protected function _generate_url() {
199
+ $this->url = $this->url . $this->endpoint;
200
+ }
201
+
202
+ /**
203
+ * Send dat to server.
204
+ *
205
+ */
206
+ private function _send_request() {
207
+
208
+ $request = wp_remote_post( $this->url, array(
209
+ 'method' => 'POST',
210
+ 'timeout' => 20,
211
+ 'redirection' => 5,
212
+ 'httpversion' => '1.1',
213
+ 'blocking' => true,
214
+ 'body' => $this->data,
215
+ 'user-agent' => 'MT/EPSILON-CUSTOMER-TRACKING/' . esc_url( home_url() )
216
+ ) );
217
+
218
+ if ( is_wp_error( $request ) ) {
219
+ return false;
220
+ }
221
+
222
+ return true;
223
+
224
+ }
225
  }
inc/crazy-lazy.class.php ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * CrazyLazy plugin class
4
+ *
5
+ * @package CrazyLazy
6
+ */
7
+
8
+ /* Quit */
9
+ defined( 'ABSPATH' ) or exit;
10
+
11
+
12
+ /**
13
+ * Class CrazyLazy
14
+ */
15
+ final class CrazyLazy {
16
+
17
+
18
+ /**
19
+ * Class instance
20
+ *
21
+ * @since 0.0.1
22
+ * @change 0.0.1
23
+ */
24
+ public static function instance() {
25
+ new self();
26
+ }
27
+
28
+
29
+ /**
30
+ * Class constructor
31
+ *
32
+ * @since 0.0.1
33
+ * @change 0.0.9
34
+ */
35
+ public function __construct() {
36
+ /* Go home */
37
+ if ( is_feed() || ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || ( defined( 'DOING_CRON' ) && DOING_CRON ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) ) {
38
+ return;
39
+ }
40
+
41
+ /* Hooks */
42
+ add_filter(
43
+ 'the_content',
44
+ array(
45
+ __CLASS__,
46
+ 'prepare_images',
47
+ ),
48
+ 12 /* Important for galleries */
49
+ );
50
+ add_filter(
51
+ 'post_thumbnail_html',
52
+ array(
53
+ __CLASS__,
54
+ 'prepare_images',
55
+ )
56
+ );
57
+ add_action(
58
+ 'wp_enqueue_scripts',
59
+ array(
60
+ __CLASS__,
61
+ 'print_scripts',
62
+ )
63
+ );
64
+ }
65
+
66
+
67
+ /**
68
+ * Prepare content images for Crazy Lazy usage
69
+ *
70
+ * @since 0.0.1
71
+ * @change 1.0.0
72
+ *
73
+ * @param string $content The original post content.
74
+ *
75
+ * @return string The modified post content.
76
+ */
77
+ public static function prepare_images( $content ) {
78
+ /* No lazy images? */
79
+ if ( strpos( $content, '-image' ) === false ) {
80
+ return $content;
81
+ }
82
+
83
+ /* Replace images */
84
+ return preg_replace_callback(
85
+ '/(?P<all> (?# match the whole img tag )
86
+ <img(?P<before>[^>]*) (?# the opening of the img and some optional attributes )
87
+ ( (?# match a class attribute followed by some optional ones and the src attribute )
88
+ class=["\'](?P<class1>.*?(?:wp-image-|wp-post-image)[^>"\']*)["\']
89
+ (?P<between1>[^>]*)
90
+ src=["\'](?P<src1>[^>"\']*)["\']
91
+ | (?# match same as before, but with the src attribute before the class attribute )
92
+ src=["\'](?P<src2>[^>"\']*)["\']
93
+ (?P<between2>[^>]*)
94
+ class=["\'](?P<class2>.*?(?:wp-image-|wp-post-image)[^>"\']*)["\']
95
+ )
96
+ (?P<after>[^>]*) (?# match any additional optional attributes )
97
+ (?P<closing>\/?)> (?# match the closing of the img tag with or without a self closing slash )
98
+ )/x',
99
+ array( 'CrazyLazy', 'replace_images' ),
100
+ $content
101
+ );
102
+ }
103
+
104
+ /**
105
+ * The callback function for the preg_match_callback to modify the img tags.
106
+ *
107
+ * @since 1.0.0
108
+ *
109
+ * @param array $matches The regex matches.
110
+ *
111
+ * @return string The modified content string.
112
+ */
113
+ public static function replace_images( $matches ) {
114
+ /* Empty gif */
115
+ $null = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
116
+ // Return unmodified image if the "data skip" attribute was found or the image has already been processed.
117
+ if ( false !== strpos( $matches['all'], 'data-crazy-lazy="exclude"' ) || false !== strpos( $matches['class1'] . $matches['class2'], 'crazy_lazy' ) ) {
118
+ return $matches['all'];
119
+ } else {
120
+ return '<img ' . $matches['before']
121
+ . ' style="display:none" '
122
+ . ' class="crazy_lazy ' . $matches['class1'] . $matches['class2'] . '" src="' . $null . '" '
123
+ . $matches['between1'] . $matches['between2']
124
+ . ' data-src="' . $matches['src1'] . $matches['src2'] . '" '
125
+ . $matches['after']
126
+ . $matches['closing'] . '><noscript>' . $matches['all'] . '</noscript>';
127
+ }
128
+ }
129
+
130
+
131
+ /**
132
+ * Print lazy load scripts in footer
133
+ *
134
+ * @since 0.0.1
135
+ * @change 0.0.6
136
+ */
137
+ public static function print_scripts() {
138
+ /* Globals */
139
+ global $wp_scripts;
140
+
141
+ /* Check for jQuery */
142
+ if ( ! empty( $wp_scripts ) && (bool) $wp_scripts->query( 'jquery' ) ) { /* hot fix for buggy wp_script_is() */
143
+ self::_print_jquery_lazyload();
144
+ } else {
145
+ self::_print_javascript_lazyload();
146
+ }
147
+ }
148
+
149
+
150
+ /**
151
+ * Call unveil lazy load jQuery plugin
152
+ *
153
+ * @since 0.0.5
154
+ * @change 0.0.9
155
+ */
156
+ private static function _print_jquery_lazyload() {
157
+ // wp_enqueue_script( 'unveil.js', plugins_url( '/js/jquery.unveil.min.js', CRAZY_LAZY_BASE ), array( 'jquery' ), '', true );
158
+ wp_enqueue_script( 'unveil.js', plugin_dir_url( __FILE__ ) . 'js/jquery.unveil.min.js', array( 'jquery' ), SPEED_BOOSTER_PACK_VERSION, true );
159
+ }
160
+
161
+
162
+ /**
163
+ * Call pure javascript lazyload.js
164
+ *
165
+ * @since 0.0.5
166
+ * @change 0.0.9
167
+ */
168
+ private static function _print_javascript_lazyload() {
169
+ // wp_enqueue_script( 'lazyload.js', plugins_url( '/js/lazyload.min.js', CRAZY_LAZY_BASE ), array(), '', true );
170
+ wp_enqueue_script( 'lazyload.js', plugin_dir_url( __FILE__ ) . 'js/lazyload.min.js', array( 'jquery' ), SPEED_BOOSTER_PACK_VERSION, true );
171
+ }
172
+ }
inc/crazy-lazy.php ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ Copyright (C) 2013-2015 Sergej Müller & https://github.com/pluginkollektiv/crazy-lazy
5
+
6
+ This program is free software; you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation; either version 2 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License along
17
+ with this program; if not, write to the Free Software Foundation, Inc.,
18
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
+ */
20
+
21
+
22
+ /* Quit */
23
+ defined( 'ABSPATH' ) || exit;
24
+
25
+
26
+ /* FE only */
27
+ if ( is_admin() ) {
28
+ return;
29
+ }
30
+
31
+
32
+ /* Fire! */
33
+ define( 'CRAZY_LAZY_BASE', plugin_basename( __FILE__ ) );
34
+
35
+ require_once( SPEED_BOOSTER_PACK_PATH . 'inc/crazy-lazy.class.php' );
36
+
37
+ add_action( 'wp', array( 'CrazyLazy', 'instance' ) );
inc/images/logo.png ADDED
Binary file
inc/images/sp.png DELETED
Binary file
inc/js/jquery.unveil.js ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * jQuery Unveil
3
+ * A very lightweight jQuery plugin to lazy load images
4
+ * http://luis-almeida.github.com/unveil
5
+ *
6
+ * Modified by Sergej Müller
7
+ * http://wpcoder.de
8
+ *
9
+ * Licensed under the MIT license.
10
+ */
11
+
12
+ ;(function($) {
13
+ $.fn.unveil = function() {
14
+
15
+ var $w = $(window),
16
+ images = this,
17
+ loaded,
18
+ inview,
19
+ source;
20
+
21
+ this.one(
22
+ 'unveil',
23
+ function() {
24
+ var $$ = $(this),
25
+ source = $$.data('src') || $$.attr('data-src');
26
+
27
+ if ( source) {
28
+ $$
29
+ .css('opacity', 0)
30
+ .attr('src', source)
31
+ .animate(
32
+ {
33
+ 'opacity': 1
34
+ },
35
+ 200
36
+ );
37
+ }
38
+ }
39
+ );
40
+
41
+ function unveil() {
42
+ inview = images.filter(
43
+ function() {
44
+ var $e = $(this),
45
+ wt = $w.scrollTop(),
46
+ wb = wt + $w.height(),
47
+ et = $e.offset().top,
48
+ eb = et + $e.height();
49
+
50
+ return eb >= wt && et <= wb;
51
+ }
52
+ );
53
+
54
+ loaded = inview.trigger('unveil');
55
+ images = images.not(loaded);
56
+ }
57
+
58
+ $w.scroll(unveil);
59
+ $w.resize(unveil);
60
+
61
+ unveil();
62
+
63
+ return this;
64
+ };
65
+ })(window.jQuery);
66
+
67
+
68
+ jQuery(document).ready(
69
+ function(){
70
+ jQuery("img.crazy_lazy").css('display', '').unveil();
71
+ }
72
+ );
inc/js/jquery.unveil.min.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * jQuery Unveil
3
+ * A very lightweight jQuery plugin to lazy load images
4
+ * http://luis-almeida.github.com/unveil
5
+ *
6
+ * Modified by Sergej Müller
7
+ * http://wpcoder.de
8
+ *
9
+ * Licensed under the MIT license.
10
+ */
11
+
12
+ (function(c){c.fn.unveil=function(){function b(){e=a.filter(function(){var f=c(this),g=d.scrollTop(),b=g+d.height(),a=f.offset().top;return a+f.height()>=g&&a<=b});h=e.trigger("unveil");a=a.not(h)}var d=c(window),a=this,h,e;this.one("unveil",function(){var a=c(this),b=a.data("src")||a.attr("data-src");b&&a.css("opacity",0).attr("src",b).animate({opacity:1},200)});d.scroll(b);d.resize(b);b();return this}})(window.jQuery);jQuery(document).ready(function(){jQuery("img.crazy_lazy").css("display","").unveil()});
inc/js/lazyload.js ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* lazyload.js (c) Lorenzo Giuliani
2
+ * MIT License (http://www.opensource.org/licenses/mit-license.html)
3
+ *
4
+ * Modified by Sergej Müller | http://wpcoder.de
5
+ */
6
+
7
+
8
+ window.onload = function() {
9
+ var $q = function(q, res){
10
+ if (document.querySelectorAll) {
11
+ res = document.querySelectorAll(q);
12
+ } else {
13
+ var d=document,
14
+ a=d.styleSheets[0] || d.createStyleSheet();
15
+
16
+ a.addRule(q,'f:b');
17
+ for(var l=d.all,b=0,c=[],f=l.length;b<f;b++)
18
+ l[b].currentStyle.f && c.push(l[b]);
19
+
20
+ a.removeRule(0);
21
+ res = c;
22
+ }
23
+
24
+ return res;
25
+ },
26
+
27
+ addEventListener = function(evt, fn) {
28
+ window.addEventListener
29
+ ? this.addEventListener(evt, fn, false)
30
+ : (window.attachEvent)
31
+ ? this.attachEvent('on' + evt, fn)
32
+ : this['on' + evt] = fn;
33
+ },
34
+
35
+ _has = function(obj, key) {
36
+ return Object.prototype.hasOwnProperty.call(obj, key);
37
+ };
38
+
39
+ function loadImage (el, fn) {
40
+ var img = new Image(),
41
+ src = el.getAttribute('data-src');
42
+
43
+ img.onload = function() {
44
+ if ( !! el.parent )
45
+ el.parent.replaceChild(img, el)
46
+ else
47
+ el.src = src;
48
+
49
+ if ( fn ) fn();
50
+ }
51
+
52
+ img.src = src;
53
+ }
54
+
55
+ function elementInViewport(el) {
56
+ var rect = el.getBoundingClientRect();
57
+
58
+ return (
59
+ rect.top >= 0
60
+ && rect.left >= 0
61
+ && rect.top <= (window.innerHeight || document.documentElement.clientHeight)
62
+ );
63
+ }
64
+
65
+ var images = new Array(),
66
+ query = $q('img.crazy_lazy'),
67
+ processScroll = function() {
68
+ for (var i = 0; i < images.length; i++) {
69
+ if (elementInViewport(images[i])) {
70
+ loadImage(
71
+ images[i],
72
+ function () {
73
+ images.splice(i, i);
74
+ }
75
+ );
76
+ }
77
+ }
78
+ };
79
+
80
+ for (var i = 0; i < query.length; i++) {
81
+ query[i].removeAttribute('style');
82
+ images.push(query[i]);
83
+ };
84
+
85
+ processScroll();
86
+
87
+ addEventListener(
88
+ 'scroll',
89
+ processScroll
90
+ );
91
+ };
inc/js/lazyload.min.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ /* lazyload.js (c) Lorenzo Giuliani
2
+ * MIT License (http://www.opensource.org/licenses/mit-license.html)
3
+ *
4
+ * Modified by Sergej Müller | http://wpcoder.de
5
+ */
6
+
7
+ window.onload=function(){function h(a,e){var c=new Image,b=a.getAttribute("data-src");c.onload=function(){a.parent?a.parent.replaceChild(c,a):a.src=b;e&&e()};c.src=b}function k(a){a=a.getBoundingClientRect();return 0<=a.top&&0<=a.left&&a.top<=(window.innerHeight||document.documentElement.clientHeight)}for(var b=[],f=function(a,e){if(document.querySelectorAll)e=document.querySelectorAll(a);else{var c=document,b=c.styleSheets[0]||c.createStyleSheet();b.addRule(a,"f:b");for(var c=c.all,d=0,f=[],g=c.length;d<
8
+ g;d++)c[d].currentStyle.f&&f.push(c[d]);b.removeRule(0);e=f}return e}("img.crazy_lazy"),g=function(){for(var a=0;a<b.length;a++)k(b[a])&&h(b[a],function(){b.splice(a,a)})},d=0;d<f.length;d++)f[d].removeAttribute("style"),b.push(f[d]);g();(function(a,b){window.addEventListener?this.addEventListener(a,b,!1):window.attachEvent?this.attachEvent("on"+a,b):this["on"+a]=b})("scroll",g)};
inc/template/notice.php CHANGED
@@ -1,17 +1,35 @@
1
- <div class='notice notice-warning' id='sbp-news' style="padding-top: 7px">
2
- <div style="float:right;"><a href="javascript:dismissNews()" class="button" style="margin-top:10px;"><?php _e('Dismiss','sb-pack');?></a></div>
3
- <strong><?php _e('Speed Booster Pack','sb-pack');?></strong>
4
- <p><?php printf(__('Check out the %s Plugin settings %s for new features that can make your site load faster.','sb-pack'), '<a href="admin.php?page=sbp-options">', '</a>');?></p>
 
 
 
 
 
 
5
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
6
  <script>
7
- function dismissNews() {
8
- jQuery("#sbp-news").hide();
9
- var data = { action : 'sbp_dismiss_notices'};
10
- jQuery.get('<?php echo admin_url('admin-ajax.php'); ?>', data, function(response) {
11
- data = JSON.parse(response);
12
- if(data["Status"] == 0) {
13
- console.log("dismissed");
14
- }
15
- });
16
- }
17
  </script>
1
+ <div class="notice sbp-notice" id="sbp-notice">
2
+ <img src="<?php echo esc_url( plugins_url( 'images/logo.png', dirname( __FILE__ ) ) ); ?>" width="80">
3
+
4
+ <h1><?php esc_html_e( 'Welcome to Speed Booster Pack', 'sb-pack' ); ?></h1>
5
+
6
+ <p><?php printf( esc_html__( 'Welcome! Thank you for installing Speed Booster Pack! Check out the %sPlugin settings%s for new features that can make your site load faster.', 'sb-pack' ), '<a href="admin.php?page=sbp-options">', '</a>' ); ?></p>
7
+
8
+ <p><a href="admin.php?page=sbp-options" class="button button-primary button-hero"><?php esc_html_e( 'Get started with Speed Booster Pack', 'sb-pack' ); ?></a></p>
9
+
10
+ <button type="button" onclick="sbp_dismissNotice();" class="notice-dismiss"><span class="screen-reader-text"><?php esc_html_e( 'Dismiss this notice.', 'sb-pack' ); ?></span></button>
11
  </div>
12
+
13
+ <style>
14
+ .sbp-notice {
15
+ background: #e9eff3;
16
+ border: 10px solid #fff;
17
+ color: #608299;
18
+ padding: 30px;
19
+ text-align: center;
20
+ position: relative;
21
+ }
22
+ </style>
23
+
24
  <script>
25
+ function sbp_dismissNotice() {
26
+ jQuery("#sbp-notice").hide();
27
+ var data = { action : 'sbp_dismiss_notices'};
28
+ jQuery.get('<?php echo esc_url( admin_url( 'admin-ajax.php' ) ); ?>', data, function(response) {
29
+ data = JSON.parse(response);
30
+ if(data["Status"] == 0) {
31
+ console.log("dismissed");
32
+ }
33
+ });
34
+ }
35
  </script>
inc/template/options.php CHANGED
@@ -25,7 +25,7 @@ if ( is_array( $option_arr ) && in_array( 'defer-from-footer', $option_arr ) ) {
25
  <div class="about-text">
26
  <?php
27
  /* Translators: Welcome Screen Description. */
28
- echo esc_html__( 'Speed Booster Pack is a lightweight, frequently updated, easy to use and well supported plugin which allows you to improve your website’s loading speed. Visitors usually close a website if it doesn’t load in a few seconds and the slower a site loads the greater the chances are that the visitors will leave. And you don’t want that to happen, do you?
29
  ', 'sb-pack' );
30
  ?>
31
  </div>
@@ -83,10 +83,11 @@ if ( is_array( $option_arr ) && in_array( 'defer-from-footer', $option_arr ) ) {
83
  </div>
84
 
85
  <h2 class="nav-tab-wrapper wp-clearfix">
86
- <a class="nav-tab" href="#general-options"><?php _e( 'General', 'sb-pack' ); ?></a>
87
- <a class="nav-tab" href="#advanced-options"><?php _e( 'Advanced', 'sb-pack' ); ?></a>
88
- <a class="nav-tab" href="#image-options"><?php _e( 'Image Optimization', 'sb-pack' ); ?></a>
89
- <a class="nav-tab" href="#support"><?php _e( 'Support', 'sb-pack' ); ?></a>
 
90
  </h2>
91
 
92
  <form method="post" action="options.php">
@@ -440,82 +441,6 @@ if ( is_array( $option_arr ) && in_array( 'defer-from-footer', $option_arr ) ) {
440
  </div>
441
 
442
  <div id="image-options" class="sb-pack-tab">
443
-
444
- <br />
445
- <?php
446
- $plugins = array(
447
- 'shortpixel-image-optimiser' => array(
448
- 'title' => esc_html__( 'ShortPixel Image Optimizer', 'sb-pack' ),
449
- 'description' => esc_html__( 'Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimizing any image or PDF document on your website. ', 'sb-pack' ),
450
- 'more' => 'https://shortpixel.com/h/af/IVAKFSX31472',
451
- ),
452
-
453
- );
454
-
455
- if ( ! function_exists( 'get_plugins' ) || ! function_exists( 'is_plugin_active' ) ) {
456
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
457
- }
458
-
459
- $installed_plugins = get_plugins();
460
-
461
- function sbp_get_plugin_basename_from_slug( $slug, $installed_plugins ) {
462
- $keys = array_keys( $installed_plugins );
463
- foreach ( $keys as $key ) {
464
- if ( preg_match( '|^' . $slug . '/|', $key ) ) {
465
- return $key;
466
- }
467
- }
468
-
469
- return $slug;
470
- }
471
-
472
- ?>
473
-
474
- <div class="sbp-recommended-plugins">
475
- <?php
476
- foreach ( $plugins as $slug => $plugin ) {
477
-
478
- $label = __( 'Install + Activate & get 500 free credits', 'sb-pack' );
479
- $action = 'install';
480
- $plugin_path = sbp_get_plugin_basename_from_slug( $slug, $installed_plugins );
481
- $url = '#';
482
- $class = '';
483
-
484
- if ( file_exists( ABSPATH . 'wp-content/plugins/' . $plugin_path ) ) {
485
-
486
- if ( is_plugin_active( $plugin_path ) ) {
487
- $label = __( 'Activated', 'sb-pack' );
488
- $action = 'disable';
489
- $class = 'disabled';
490
- } else {
491
- $label = __( 'Activate & get 500 free credits', 'sb-pack' );
492
- $action = 'activate';
493
- $url = wp_nonce_url( add_query_arg( array(
494
- 'action' => 'activate',
495
- 'plugin' => $plugin_path,
496
- ), admin_url( 'plugins.php' ) ), 'activate-plugin_' . $plugin_path );
497
- }
498
- }
499
-
500
- ?>
501
- <div class="sbp-recommended-plugin">
502
- <div class="plugin-image">
503
- <img src="https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819">
504
- </div>
505
- <div class="plugin-information">
506
- <h3 class="plugin-name">
507
- <strong><?php echo esc_html( $plugin['title'] ); ?></strong></h3>
508
- <p class="plugin-description"><?php echo esc_html( $plugin['description'] ); ?></p>
509
-
510
- <a href="<?php echo esc_url( $url ); ?>" data-action="<?php echo esc_attr( $action ); ?>" data-slug="<?php echo esc_attr( $plugin_path ); ?>" data-message="<?php esc_html_e( 'Activated', 'sb-pack' ); ?>" class="button-primary sbp-plugin-button <?php echo esc_attr( $class ); ?>"><?php echo esc_html( $label ); ?></a>
511
- <?php if ( isset( $plugin['more'] ) ) : ?>
512
- <a href="<?php echo esc_url( $plugin['more'] ); ?>" class="button-secondary" target="_blank"><?php esc_html_e( 'Test your site for free', 'sb-pack' ); ?></a>
513
- <?php endif ?>
514
- </div>
515
- </div>
516
- <?php } ?>
517
- </div>
518
-
519
  <h3><?php _e( 'Change the default image compression level', 'sb-pack' ); ?></h3>
520
 
521
  <script type='text/javascript'>
@@ -623,6 +548,25 @@ if ( is_array( $option_arr ) && in_array( 'defer-from-footer', $option_arr ) ) {
623
  </div>
624
  </div><!--#support-->
625
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
626
  <div class="textright">
627
  <hr />
628
  <?php submit_button( '', 'button button-primary button-hero' ); ?>
25
  <div class="about-text">
26
  <?php
27
  /* Translators: Welcome Screen Description. */
28
+ echo esc_html__( 'Speed Booster Pack is a lightweight, frequently updated, easy to use and well supported plugin which allows you to improve your website’s loading speed. Visitors usually close a website if it doesn’t load in a few seconds and the slower a site loads the greater the chances are that the visitors will leave. And you don’t want that to happen, do you?
29
  ', 'sb-pack' );
30
  ?>
31
  </div>
83
  </div>
84
 
85
  <h2 class="nav-tab-wrapper wp-clearfix">
86
+ <a class="nav-tab" href="#general-options"><?php esc_html_e( 'General', 'sb-pack' ); ?></a>
87
+ <a class="nav-tab" href="#advanced-options"><?php esc_html_e( 'Advanced', 'sb-pack' ); ?></a>
88
+ <a class="nav-tab" href="#image-options"><?php esc_html_e( 'Image Optimization', 'sb-pack' ); ?></a>
89
+ <a class="nav-tab" href="#support"><?php esc_html_e( 'Support', 'sb-pack' ); ?></a>
90
+ <a class="nav-tab" href="#optimize-more"><?php esc_html_e( 'Optimize More', 'sb-pack' ); ?></a>
91
  </h2>
92
 
93
  <form method="post" action="options.php">
441
  </div>
442
 
443
  <div id="image-options" class="sb-pack-tab">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
444
  <h3><?php _e( 'Change the default image compression level', 'sb-pack' ); ?></h3>
445
 
446
  <script type='text/javascript'>
548
  </div>
549
  </div><!--#support-->
550
 
551
+ <div id="optimize-more" class="sb-pack-tab three-col">
552
+
553
+ <div class="col sbp-box">
554
+ <img src="https://ps.w.org/shortpixel-image-optimiser/assets/icon-128x128.png?rev=1038819">
555
+ <div class="sbp-box__name"><?php esc_html_e( 'ShortPixel Image Optimizer', 'sb-pack' ); ?></div>
556
+
557
+ <div class="sbp-box__description">
558
+ <?php esc_html_e( 'Increase your website’s SEO ranking, number of visitors and ultimately your sales by optimizing any image or PDF document on your website. ', 'sb-pack' ); ?>
559
+ </div>
560
+
561
+ <div class="sbp-box__action-bar">
562
+ <span class="sbp-box__action-button">
563
+ <a class="button" href="<?php echo esc_url( 'https://shortpixel.com/h/af/IVAKFSX31472' ); ?>" target="_blank"><?php esc_html_e( 'Test your site for free', 'sb-pack' ); ?></a>
564
+ </span>
565
+ </div>
566
+ </div>
567
+
568
+ </div><!--#optimize-more-->
569
+
570
  <div class="textright">
571
  <hr />
572
  <?php submit_button( '', 'button button-primary button-hero' ); ?>
lang/sb-pack.pot ADDED
@@ -0,0 +1,582 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #, fuzzy
2
+ msgid ""
3
+ msgstr ""
4
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
+ "Project-Id-Version: Speed Booster Pack\n"
6
+ "POT-Creation-Date: 2018-12-03 17:01+0200\n"
7
+ "PO-Revision-Date: 2018-12-03 17:01+0200\n"
8
+ "Last-Translator: \n"
9
+ "Language-Team: \n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Poedit 2.0.2\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "X-Poedit-Flags-xgettext: --add-comments=translators:\n"
16
+ "X-Poedit-WPHeader: speed-booster-pack.php\n"
17
+ "X-Poedit-SourceCharset: UTF-8\n"
18
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
19
+ "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
20
+ "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
21
+ "X-Poedit-SearchPath-0: .\n"
22
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
23
+
24
+ #: feedback/class-epsilon-feedback.php:63
25
+ msgid "Allow us to get more information in order to improve our plugin"
26
+ msgstr ""
27
+
28
+ #: feedback/class-epsilon-feedback.php:67
29
+ msgid "Submitting form"
30
+ msgstr ""
31
+
32
+ #: feedback/class-epsilon-feedback.php:68
33
+ msgid "Just Deactivate"
34
+ msgstr ""
35
+
36
+ #: feedback/class-epsilon-feedback.php:68
37
+ msgid "Submit and Deactivate"
38
+ msgstr ""
39
+
40
+ #: feedback/class-epsilon-feedback.php:158
41
+ msgid "What was the dificult part ?"
42
+ msgstr ""
43
+
44
+ #: feedback/class-epsilon-feedback.php:159
45
+ msgid "What can we describe more ?"
46
+ msgstr ""
47
+
48
+ #: feedback/class-epsilon-feedback.php:160
49
+ #: feedback/class-epsilon-feedback.php:235
50
+ msgid "How could we improve ?"
51
+ msgstr ""
52
+
53
+ #: feedback/class-epsilon-feedback.php:161
54
+ msgid "Can you mention it ?"
55
+ msgstr ""
56
+
57
+ #: feedback/class-epsilon-feedback.php:162
58
+ msgid "With what plugin or theme is incompatible ?"
59
+ msgstr ""
60
+
61
+ #: feedback/class-epsilon-feedback.php:226
62
+ msgid "Sorry to see you go"
63
+ msgstr ""
64
+
65
+ #: feedback/class-epsilon-feedback.php:227
66
+ msgid ""
67
+ "Before you deactivate the plugin, would you quickly give us your reason for "
68
+ "doing so?"
69
+ msgstr ""
70
+
71
+ #: feedback/class-epsilon-feedback.php:229
72
+ msgid "Set up is too difficult"
73
+ msgstr ""
74
+
75
+ #: feedback/class-epsilon-feedback.php:230
76
+ msgid "Lack of documentation"
77
+ msgstr ""
78
+
79
+ #: feedback/class-epsilon-feedback.php:231
80
+ msgid "Not the features I wanted"
81
+ msgstr ""
82
+
83
+ #: feedback/class-epsilon-feedback.php:232
84
+ msgid "Found a better plugin"
85
+ msgstr ""
86
+
87
+ #: feedback/class-epsilon-feedback.php:233
88
+ msgid "Incompatible with theme or plugin"
89
+ msgstr ""
90
+
91
+ #: inc/settings.php:179
92
+ msgid "Speed Booster Options"
93
+ msgstr ""
94
+
95
+ #: inc/settings.php:179
96
+ msgid "Speed Booster"
97
+ msgstr ""
98
+
99
+ #: inc/settings.php:190
100
+ msgid "You do not have sufficient permissions to access this page."
101
+ msgstr ""
102
+
103
+ #: inc/template/notice.php:4
104
+ msgid "Welcome to Speed Booster Pack"
105
+ msgstr ""
106
+
107
+ #: inc/template/notice.php:6
108
+ #, php-format
109
+ msgid ""
110
+ "Welcome! Thank you for installing Speed Booster Pack! Check out the %sPlugin "
111
+ "settings%s for new features that can make your site load faster."
112
+ msgstr ""
113
+
114
+ #: inc/template/notice.php:8
115
+ msgid "Get started with Speed Booster Pack"
116
+ msgstr ""
117
+
118
+ #: inc/template/notice.php:10
119
+ msgid "Dismiss this notice."
120
+ msgstr ""
121
+
122
+ #: inc/template/options.php:28
123
+ msgid ""
124
+ "Speed Booster Pack is a lightweight, frequently updated, easy to use and "
125
+ "well supported plugin which allows you to improve your website’s loading "
126
+ "speed. Visitors usually close a website if it doesn’t load in a few seconds "
127
+ "and the slower a site loads the greater the chances are that the visitors "
128
+ "will leave. And you don’t want that to happen, do you?\n"
129
+ msgstr ""
130
+
131
+ #: inc/template/options.php:35
132
+ msgid "Page load: "
133
+ msgstr ""
134
+
135
+ #: inc/template/options.php:36
136
+ msgid " sec"
137
+ msgstr ""
138
+
139
+ #: inc/template/options.php:62
140
+ msgid "DB Queries"
141
+ msgstr ""
142
+
143
+ #: inc/template/options.php:67
144
+ msgid "Memory: "
145
+ msgstr ""
146
+
147
+ #: inc/template/options.php:74
148
+ msgid "Plugins: "
149
+ msgstr ""
150
+
151
+ #: inc/template/options.php:80
152
+ msgid "Analyse"
153
+ msgstr ""
154
+
155
+ #: inc/template/options.php:86 inc/template/options.php:101
156
+ msgid "General"
157
+ msgstr ""
158
+
159
+ #: inc/template/options.php:87
160
+ msgid "Advanced"
161
+ msgstr ""
162
+
163
+ #: inc/template/options.php:88
164
+ msgid "Image Optimization"
165
+ msgstr ""
166
+
167
+ #: inc/template/options.php:89
168
+ msgid "Support"
169
+ msgstr ""
170
+
171
+ #: inc/template/options.php:90
172
+ msgid "Optimize More"
173
+ msgstr ""
174
+
175
+ #: inc/template/options.php:105
176
+ msgid "Move scripts to the footer"
177
+ msgstr ""
178
+
179
+ #: inc/template/options.php:107
180
+ msgid ""
181
+ "This option move all scripts to the footer while keeping stylesheets in the "
182
+ "header to improve page loading speed and get a higher score on the major "
183
+ "speed testing sites such as GTmetrix or other website speed testing tools."
184
+ msgstr ""
185
+
186
+ #: inc/template/options.php:115
187
+ msgid "Load JS from Google Libraries"
188
+ msgstr ""
189
+
190
+ #: inc/template/options.php:117
191
+ msgid ""
192
+ "Loading WordPress javascript files from Google’s Libraries rather than "
193
+ "serving it from your WordPress install directly, will reduce latency, "
194
+ "increase parallelism and improve caching."
195
+ msgstr ""
196
+
197
+ #: inc/template/options.php:124
198
+ msgid "Minify HTML"
199
+ msgstr ""
200
+
201
+ #: inc/template/options.php:126
202
+ msgid ""
203
+ "Activate this option only if you don’t want to use other minify plugins or "
204
+ "other speed optimization plugin that has minify option included. If "
205
+ "something goes wrong, simply uncheck this option and save the settings."
206
+ msgstr ""
207
+
208
+ #: inc/template/options.php:133
209
+ msgid "Defer parsing of javascript files"
210
+ msgstr ""
211
+
212
+ #: inc/template/options.php:135
213
+ msgid ""
214
+ "!!!Note: This will be disabled IF Move Scripts to Footer is enabled. By "
215
+ "deferring parsing of unneeded JavaScript until it needs to be executed, you "
216
+ "can reduce the initial load time of your page. Please note that this option "
217
+ "will not defer the main WordPress jQuery script if Load JS from Google "
218
+ "Libraries option is not checked."
219
+ msgstr ""
220
+
221
+ #: inc/template/options.php:142
222
+ msgid "Remove query strings"
223
+ msgstr ""
224
+
225
+ #: inc/template/options.php:144
226
+ msgid ""
227
+ "Since most proxies do not cache resources with a ? in their URL, this option "
228
+ "allows you to remove any query strings (version numbers) from static "
229
+ "resources like CSS & JS files, thus improving your speed scores in services "
230
+ "like GTmetrix, PageSpeed, YSlow and Pingdoom."
231
+ msgstr ""
232
+
233
+ #: inc/template/options.php:151
234
+ msgid "Removes extra Font Awesome styles"
235
+ msgstr ""
236
+
237
+ #: inc/template/options.php:153
238
+ msgid ""
239
+ "Use this option only if your theme uses Font Awesome, to prevent other "
240
+ "plugins that uses Font Awesome, to add their stylesheets to your theme. In "
241
+ "other words, this option removes extra Font Awesome stylesheets added to "
242
+ "your theme by certain plugins."
243
+ msgstr ""
244
+
245
+ #: inc/template/options.php:158
246
+ msgid "More settings"
247
+ msgstr ""
248
+
249
+ #: inc/template/options.php:162
250
+ msgid "Remove WordPress Emoji scripts"
251
+ msgstr ""
252
+
253
+ #: inc/template/options.php:164
254
+ msgid ""
255
+ "Emojis are fun and all, but if you are aren’t using them they actually load "
256
+ "a JavaScript file (wp-emoji-release.min.js) on every page of your website. "
257
+ "For a lot of businesses, this is not needed and simply adds load time to "
258
+ "your site. So we recommend disabling this."
259
+ msgstr ""
260
+
261
+ #: inc/template/options.php:171
262
+ msgid "Remove WordPress Shortlink"
263
+ msgstr ""
264
+
265
+ #: inc/template/options.php:173
266
+ msgid ""
267
+ "WordPress URL shortening is sometimes useful, but it automatically adds an "
268
+ "ugly code in your header, so you can remove it."
269
+ msgstr ""
270
+
271
+ #: inc/template/options.php:180
272
+ msgid "Remove Adjacent Posts Links"
273
+ msgstr ""
274
+
275
+ #: inc/template/options.php:182
276
+ msgid ""
277
+ "WordPress incorrectly implements this feature that supposedly should fix a "
278
+ "pagination issues but it messes up, so there is no reason to keep these "
279
+ "around. However, some browsers may use Adjacent Posts Links to navigate your "
280
+ "site, although you can remove it if you run a well designed theme."
281
+ msgstr ""
282
+
283
+ #: inc/template/options.php:189
284
+ msgid "Remove Windows Manifest"
285
+ msgstr ""
286
+
287
+ #: inc/template/options.php:191
288
+ msgid ""
289
+ "Windows Live Writer (WLW) is a Microsoft application for composing and "
290
+ "managing blog posts offline and publish them later. If you are not using "
291
+ "Windows Live Writer application, you can remove it from the WP head."
292
+ msgstr ""
293
+
294
+ #: inc/template/options.php:198
295
+ msgid "Remove RSD(Really Simple Discovery) Link"
296
+ msgstr ""
297
+
298
+ #: inc/template/options.php:200
299
+ msgid ""
300
+ "This type of link is used by blog clients. If you edit your site from your "
301
+ "browser then you don’t need this. It is also used by some 3rd party "
302
+ "applications that utilize XML-RPC requests. In most cases, this is just "
303
+ "unnecessary code."
304
+ msgstr ""
305
+
306
+ #: inc/template/options.php:207
307
+ msgid "Remove the WordPress Version"
308
+ msgstr ""
309
+
310
+ #: inc/template/options.php:209
311
+ msgid "This option is added for security reasons and cleaning the header."
312
+ msgstr ""
313
+
314
+ #: inc/template/options.php:216
315
+ msgid "Remove all rss feed links"
316
+ msgstr ""
317
+
318
+ #: inc/template/options.php:218
319
+ msgid ""
320
+ "This option wil remove all rss feed links to cleanup your WordPress header. "
321
+ "It is also useful on Unicorn – The W3C Markup Validation Service to get rid "
322
+ "out the “feed does not validate” error."
323
+ msgstr ""
324
+
325
+ #: inc/template/options.php:225
326
+ msgid "Disable XML-RPC"
327
+ msgstr ""
328
+
329
+ #: inc/template/options.php:227
330
+ msgid ""
331
+ "XML-RPC was added in WordPress 3.5 and allows for remote connections, and "
332
+ "unless you are using your mobile device to post to WordPress it does more "
333
+ "bad than good. In fact, it can open your site up to a bunch of security "
334
+ "risks. There are a few plugins that utilize this such as JetPack, but we "
335
+ "don’t recommend using JetPack for performance reasons."
336
+ msgstr ""
337
+
338
+ #: inc/template/options.php:232
339
+ msgid "Need even more speed?"
340
+ msgstr ""
341
+
342
+ #: inc/template/options.php:236
343
+ msgid "Inline all CSS styles"
344
+ msgstr ""
345
+
346
+ #: inc/template/options.php:238
347
+ msgid ""
348
+ "Checking this option will inline the contents of all your stylesheets. This "
349
+ "helps with the annoying render blocking error Google Page Speed Insights "
350
+ "displays."
351
+ msgstr ""
352
+
353
+ #: inc/template/options.php:245
354
+ msgid "Minify all (previously) inlined CSS styles"
355
+ msgstr ""
356
+
357
+ #: inc/template/options.php:247
358
+ msgid ""
359
+ "Minifying all inlined CSS styles will optimize the CSS delivery and will "
360
+ "eliminate the annoying message on Google Page Speed regarding to render-"
361
+ "blocking css."
362
+ msgstr ""
363
+
364
+ #: inc/template/options.php:254
365
+ msgid "Move all inlined CSS into the footer"
366
+ msgstr ""
367
+
368
+ #: inc/template/options.php:256
369
+ msgid ""
370
+ "Inserting all CSS styles inline to the footer is a sensitive option that "
371
+ "will eliminate render-blocking CSS warning in Google Page Speed test. If "
372
+ "there is something broken after activation, you need to disable this option. "
373
+ "Please note that before enabling this sensitive option, it is strongly "
374
+ "recommended that you also enable the “ Move scripts to the footer” option."
375
+ msgstr ""
376
+
377
+ #: inc/template/options.php:263
378
+ msgid "Disable all above CSS options on mobile devices"
379
+ msgstr ""
380
+
381
+ #: inc/template/options.php:265
382
+ msgid ""
383
+ "Disable all above CSS options on mobile devices: this option was added to "
384
+ "avoid some appearance issues on mobile devices."
385
+ msgstr ""
386
+
387
+ #: inc/template/options.php:272
388
+ msgid "Exclude styles from being inlined and/or minified option: "
389
+ msgstr ""
390
+
391
+ #: inc/template/options.php:277
392
+ msgid ""
393
+ "Enter one by line, the handles of css files or the final part of the style "
394
+ "URL. For example: <code>font-awesome</code> or <code>font-awesome.min.css</"
395
+ "code>"
396
+ msgstr ""
397
+
398
+ #: inc/template/options.php:283
399
+ msgid ""
400
+ "As a guidance, here is a list of css handles of each enqueued style detected "
401
+ "by our plugin:"
402
+ msgstr ""
403
+
404
+ #: inc/template/options.php:289
405
+ msgid "CSS Handle"
406
+ msgstr ""
407
+
408
+ #: inc/template/options.php:311 inc/template/options.php:315
409
+ msgid "Exclude scripts from being moved to the footer"
410
+ msgstr ""
411
+
412
+ #: inc/template/options.php:320 inc/template/options.php:352
413
+ msgid "Script Handle"
414
+ msgstr ""
415
+
416
+ #: inc/template/options.php:322
417
+ msgid "Enter one js handle per text field."
418
+ msgstr ""
419
+
420
+ #: inc/template/options.php:322 inc/template/options.php:503
421
+ #: inc/template/options.php:515 inc/template/options.php:527
422
+ msgid "Read more"
423
+ msgstr ""
424
+
425
+ #: inc/template/options.php:323
426
+ msgid "detailed instructions"
427
+ msgstr ""
428
+
429
+ #: inc/template/options.php:323
430
+ msgid "on this option on plugin documentation."
431
+ msgstr ""
432
+
433
+ #: inc/template/options.php:346
434
+ msgid ""
435
+ "As a guidance, here is a list of script handles and script paths of each "
436
+ "enqueued script detected by our plugin:"
437
+ msgstr ""
438
+
439
+ #: inc/template/options.php:353
440
+ msgid "Script Path"
441
+ msgstr ""
442
+
443
+ #: inc/template/options.php:408 inc/template/options.php:412
444
+ msgid "Exclude scripts from being deferred"
445
+ msgstr ""
446
+
447
+ #: inc/template/options.php:434
448
+ msgid ""
449
+ "Enter one by text field, the handle part of the js files that you want to be "
450
+ "excluded from defer parsing option. For example: <code>jquery-core</code> If "
451
+ "you want to exclude more than 4 scripts, you can use the following filter: "
452
+ "<code>sbp_exclude_defer_scripts</code> which takes an array of script "
453
+ "handles as params. If you don't know how to handle this, feel free to post "
454
+ "on our support forums."
455
+ msgstr ""
456
+
457
+ #: inc/template/options.php:444
458
+ msgid "Change the default image compression level"
459
+ msgstr ""
460
+
461
+ #: inc/template/options.php:451
462
+ msgid "Compression level:"
463
+ msgstr ""
464
+
465
+ #: inc/template/options.php:461
466
+ msgid ""
467
+ "The default image compression setting in WordPress is 90%. Compressing your "
468
+ "images further than the default will make your file sizes even smaller and "
469
+ "will boost your site performance. As a reference, a lower level of "
470
+ "compression means more performance but might induce quality loss. We "
471
+ "recommend you choose a compression level between 50 and 75."
472
+ msgstr ""
473
+
474
+ #: inc/template/options.php:465
475
+ msgid ""
476
+ "Note that any changes you make will only affect new images uploaded to your "
477
+ "site. A specialized plugin can optimize all your present images and will "
478
+ "also optimize new ones as they are added. "
479
+ msgstr ""
480
+
481
+ #: inc/template/options.php:481
482
+ msgid "Contact Support"
483
+ msgstr ""
484
+
485
+ #: inc/template/options.php:484
486
+ msgid "We offer support through WordPress.org's support forums."
487
+ msgstr ""
488
+
489
+ #: inc/template/options.php:487
490
+ msgid "Post on our support forums"
491
+ msgstr ""
492
+
493
+ #: inc/template/options.php:497
494
+ msgid "Our Bluehost Hosting Review"
495
+ msgstr ""
496
+
497
+ #: inc/template/options.php:500
498
+ msgid ""
499
+ "Despite its popularity, though, Bluehost often carries a negative perception "
500
+ "among WordPress professionals. So as we dig into this Bluehost review, we'll "
501
+ "be looking to figure out whether Bluehost's performance and features "
502
+ "actually justify that reputation."
503
+ msgstr ""
504
+
505
+ #: inc/template/options.php:509
506
+ msgid "Our InMotion Hosting Review"
507
+ msgstr ""
508
+
509
+ #: inc/template/options.php:512
510
+ msgid ""
511
+ "InMotion Hosting is a popular independent web host that serves over 300,000 "
512
+ "customers. They're notably not a part of the EIG behemoth (the parent "
513
+ "company behind Bluehost, HostGator, and more), which is a plus in my book."
514
+ msgstr ""
515
+
516
+ #: inc/template/options.php:521
517
+ msgid "Our A2 Hosting Review"
518
+ msgstr ""
519
+
520
+ #: inc/template/options.php:524
521
+ msgid ""
522
+ "When it comes to affordable WordPress hosting, A2 Hosting is a name that "
523
+ "often comes up in various WordPress groups for offering quick-loading "
524
+ "performance that belies its low price tag."
525
+ msgstr ""
526
+
527
+ #: inc/template/options.php:535
528
+ msgid "Lend a hand & share your thoughts"
529
+ msgstr ""
530
+
531
+ #: inc/template/options.php:541
532
+ #, php-format
533
+ msgid ""
534
+ "We've been working hard on making %1$s the best one out there. We're "
535
+ "interested in hearing your thoughts about %1$s and what we could do to "
536
+ "<u>make it even better</u>.<br/> <br/> %2$sHave your say%3$s"
537
+ msgstr ""
538
+
539
+ #: inc/template/options.php:555
540
+ msgid "ShortPixel Image Optimizer"
541
+ msgstr ""
542
+
543
+ #: inc/template/options.php:558
544
+ msgid ""
545
+ "Increase your website’s SEO ranking, number of visitors and ultimately your "
546
+ "sales by optimizing any image or PDF document on your website. "
547
+ msgstr ""
548
+
549
+ #: inc/template/options.php:563
550
+ msgid "Test your site for free"
551
+ msgstr ""
552
+
553
+ #: widgets/dashboard-widget.php:4 widgets/dashboard-widget.php:44
554
+ msgid "Speed Booster Pack Overview"
555
+ msgstr ""
556
+
557
+ #. Author URI of the plugin/theme
558
+ #: widgets/dashboard-widget.php:42
559
+ msgid "https://www.machothemes.com/"
560
+ msgstr ""
561
+
562
+ #: widgets/dashboard-widget.php:43
563
+ msgid "https://www.machothemes.com/blog/feed/"
564
+ msgstr ""
565
+
566
+ #. Plugin Name of the plugin/theme
567
+ msgid "Speed Booster Pack"
568
+ msgstr ""
569
+
570
+ #. Plugin URI of the plugin/theme
571
+ msgid "http://wordpress.org/plugins/speed-booster-pack/"
572
+ msgstr ""
573
+
574
+ #. Description of the plugin/theme
575
+ msgid ""
576
+ "Speed Booster Pack allows you to improve your page loading speed and get a "
577
+ "higher score on the major"
578
+ msgstr ""
579
+
580
+ #. Author of the plugin/theme
581
+ msgid "Macho Themes"
582
+ msgstr ""
readme.txt CHANGED
@@ -1,10 +1,10 @@
1
  === Speed Booster Pack ===
2
  Contributors: machothemes, silkalns
3
- Tags: speed, optimization, performance, scripts to the footer, google libraries, font awesome cdn, defer parsing of javascript, remove query strings, lazy load images, gtmetrix, google pageSpeed, yslow, eliminate external render-blocking javascript and css, compression, async, render-blocking css
4
  Requires at least: 3.6
5
  Tested up to: 4.9
6
  Requires PHP: 5.6
7
- Stable tag: trunk
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
@@ -62,7 +62,7 @@ Future Development:
62
  * [Simple Author Box](http://wordpress.org/plugins/simple-author-box/) - A simple but cool author box with social icons.
63
 
64
  **About us:**
65
- We are a young team of WordPress aficionados who love building WordPress plugins & <a href="https://www.machothemes.com/" target="_blank" title="Premium WordPress themes">Premium WordPress themes</a> over on our theme shop. We’re also blogging and wish to help our users find the <a href="https://www.machothemes.com/blog/best-cheap-wordpress-hosting/" target="_blank" title="Best Cheap WordPress Hosting">Best Cheap WordPress Hosting</a> available on the market. Check out our blog.
66
 
67
 
68
  == Installation ==
@@ -78,11 +78,18 @@ We are a young team of WordPress aficionados who love building WordPress plugins
78
 
79
  == Changelog ==
80
 
81
- = 3.7.2 =
 
 
 
 
 
 
 
82
  * minor tweaks & version bump
83
  * removed ShortPixel aff integration
84
 
85
- = 3.7.1 =
86
  * Temporarily remove lazyLoad as the bundled JS files, namely, CrazyLazy don't seem to be working properly with the latest jQuery version.
87
 
88
  = 3.7 =
1
  === Speed Booster Pack ===
2
  Contributors: machothemes, silkalns
3
+ Tags: speed, optimization, performance, scripts to the footer, google libraries, font awesome cdn, defer parsing of javascript, remove query strings, gtmetrix, google pageSpeed, yslow, compression, render-blocking css
4
  Requires at least: 3.6
5
  Tested up to: 4.9
6
  Requires PHP: 5.6
7
+ Stable tag: 3.7.4
8
  License: GPLv3 or later
9
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
10
 
62
  * [Simple Author Box](http://wordpress.org/plugins/simple-author-box/) - A simple but cool author box with social icons.
63
 
64
  **About us:**
65
+ We are a young team of WordPress aficionados who love building WordPress plugins & <a href="https://www.machothemes.com/" target="_blank" title="Premium WordPress themes">Premium WordPress themes</a> over on our theme shop. We’re also blogging and wish to help our users find the <a href="https://www.machothemes.com/blog/best-cheap-wordpress-hosting/" target="_blank" title="Best Cheap WordPress Hosting">Best Cheap WordPress Hosting</a> available on the market. Check out our blog.
66
 
67
 
68
  == Installation ==
78
 
79
  == Changelog ==
80
 
81
+ = 3.7.4 =
82
+ * minor backend tweaks - notice
83
+ * added language files
84
+
85
+ = 3.7.3 =
86
+ * minor backend tweaks
87
+
88
+ = 3.7.2 =
89
  * minor tweaks & version bump
90
  * removed ShortPixel aff integration
91
 
92
+ = 3.7.1 =
93
  * Temporarily remove lazyLoad as the bundled JS files, namely, CrazyLazy don't seem to be working properly with the latest jQuery version.
94
 
95
  = 3.7 =
speed-booster-pack.php CHANGED
@@ -5,10 +5,12 @@
5
  * Description: Speed Booster Pack allows you to improve your page loading speed and get a higher score on the major
6
  * speed testing services such as <a href="http://gtmetrix.com/">GTmetrix</a>, <a
7
  * href="http://developers.google.com/speed/pagespeed/insights/">Google PageSpeed</a> or other speed testing tools.
8
- * Version: 3.7.2
9
  * Author: Macho Themes
10
  * Author URI: https://www.machothemes.com/
11
  * License: GPLv3
 
 
12
  */
13
 
14
  /* Copyright 2018 Macho Themes (email : support [at] machothemes [dot] com)
@@ -65,7 +67,7 @@ $sbp_options = get_option( 'sbp_settings', (array) $sbp_defaults ); // retrie
65
  -----------------------------------------------------------------------------------------------------------*/
66
 
67
  define( 'SPEED_BOOSTER_PACK_PATH', plugin_dir_path( __FILE__ ) ); // Defining plugin dir path
68
- define( 'SPEED_BOOSTER_PACK_VERSION', '3.7.2' ); // Defining plugin version
69
  define( 'SBP_FOOTER', 10 ); // Defining css position
70
  define( 'SBP_FOOTER_LAST', 99999 ); // Defining css last position
71
 
5
  * Description: Speed Booster Pack allows you to improve your page loading speed and get a higher score on the major
6
  * speed testing services such as <a href="http://gtmetrix.com/">GTmetrix</a>, <a
7
  * href="http://developers.google.com/speed/pagespeed/insights/">Google PageSpeed</a> or other speed testing tools.
8
+ * Version: 3.7.4
9
  * Author: Macho Themes
10
  * Author URI: https://www.machothemes.com/
11
  * License: GPLv3
12
+ * Text Domain : sb-pack
13
+ * Domain Path: /lang
14
  */
15
 
16
  /* Copyright 2018 Macho Themes (email : support [at] machothemes [dot] com)
67
  -----------------------------------------------------------------------------------------------------------*/
68
 
69
  define( 'SPEED_BOOSTER_PACK_PATH', plugin_dir_path( __FILE__ ) ); // Defining plugin dir path
70
+ define( 'SPEED_BOOSTER_PACK_VERSION', '3.7.4' ); // Defining plugin version
71
  define( 'SBP_FOOTER', 10 ); // Defining css position
72
  define( 'SBP_FOOTER_LAST', 99999 ); // Defining css last position
73