Easy Updates Manager - Version 6.1.8

Version Description

Released 2016-07-07

  • Manual logs for translations now work with WordPress 4.6.
Download this release

Release Info

Developer ronalfy
Plugin Icon 128x128 Easy Updates Manager
Version 6.1.8
Comparing to
See all releases

Code changes from version 6.1.5 to 6.1.8

Files changed (3) hide show
  1. includes/MPSUM_Logs.php +280 -249
  2. main.php +1 -1
  3. readme.txt +10 -2
includes/MPSUM_Logs.php CHANGED
@@ -53,14 +53,14 @@ class MPSUM_Logs {
53
  *
54
  */
55
  private function __construct() {
56
- $table_version = get_site_option( 'mpsum_log_table_version', '0' );
57
- if ( version_compare( $table_version, $this->version ) < 0 ) {
58
- $this->build_table();
59
- update_site_option( 'mpsum_log_table_version', $this->version );
60
- }
61
-
62
- add_action( 'automatic_updates_complete', array( $this, 'automatic_updates' ) );
63
- add_action( 'upgrader_process_complete', array( $this, 'manual_updates' ), 10, 2 );
64
 
65
  } //end constructor
66
 
@@ -74,123 +74,123 @@ class MPSUM_Logs {
74
  *
75
  */
76
  public function automatic_updates( $update_results ) {
77
- global $wpdb;
78
- $tablename = $wpdb->base_prefix . 'eum_logs';
79
- if ( empty( $update_results ) ) return;
80
-
81
- foreach( $update_results as $type => $results ) {
82
- switch( $type ) {
83
- case 'core':
84
- $core = $results[ 0 ];
85
- $status = is_wp_error( $core->result ) ? 0: 1;
86
- $version = ( 1 == $status ) ? $core->result : '';
87
- $wpdb->insert(
88
- $tablename,
89
- array(
90
- 'name' => $core->name,
91
- 'type' => $type,
92
- 'version' => $version,
93
- 'action' => 'automatic',
94
- 'status' => $status,
95
- 'date' => current_time( 'mysql' ),
96
- ),
97
- array(
98
- '%s',
99
- '%s',
100
- '%s',
101
- '%s',
102
- '%s',
103
- '%s',
104
- )
105
- );
106
- break;
107
- case 'plugin':
108
- foreach( $results as $plugin ) {
109
- $status = is_wp_error( $plugin->result ) ? 0: 1;
110
- $version = isset( $plugin->item->new_version ) ? $plugin->item->new_version : '0.00';
111
- $name = ( isset( $plugin->name ) && !empty( $plugin->name ) ) ? $plugin->name : $plugin->item->slug;
112
- $wpdb->insert(
113
- $tablename,
114
- array(
115
- 'name' => $name,
116
- 'type' => $type,
117
- 'version' => $version,
118
- 'action' => 'automatic',
119
- 'status' => $status,
120
- 'date' => current_time( 'mysql' ),
121
- ),
122
- array(
123
- '%s',
124
- '%s',
125
- '%s',
126
- '%s',
127
- '%s',
128
- '%s',
129
- )
130
- );
131
- }
132
- break;
133
- case 'theme':
134
- foreach( $results as $theme ) {
135
- $status = ( is_wp_error( $theme->result ) || empty( $theme->result ) ) ? 0: 1;
136
- if ( 0 == $status ) {
137
- $theme_data_from_cache = wp_get_themes();
138
- $theme_data = $theme_data_from_cache[ $theme->item->theme ];
139
- $version = $theme_data->get( 'Version' );
140
- } else {
141
- $version = $theme->item->new_version;
142
- }
143
- $wpdb->insert(
144
- $tablename,
145
- array(
146
- 'name' => $theme->name,
147
- 'type' => $type,
148
- 'version' => $version,
149
- 'action' => 'automatic',
150
- 'status' => $status,
151
- 'date' => current_time( 'mysql' ),
152
- ),
153
- array(
154
- '%s',
155
- '%s',
156
- '%s',
157
- '%s',
158
- '%s',
159
- '%s',
160
- )
161
- );
162
- }
163
- break;
164
- case 'translation':
165
- foreach( $results as $translation ) {
166
-
167
- $status = is_wp_error( $translation->result ) ? 0: 1;
168
- $version = ( 1 == $status ) ? $translation->item->version : '';
169
- $slug = $translation->item->slug;
170
- $name = $this->get_name_for_update( $translation->item->type, $translation->item->slug );
171
- $wpdb->insert(
172
- $tablename,
173
- array(
174
- 'name' => $name . ' (' . $translation->item->language . ')',
175
- 'type' => $type,
176
- 'version' => $version,
177
- 'action' => 'automatic',
178
- 'status' => $status,
179
- 'date' => current_time( 'mysql' ),
180
- ),
181
- array(
182
- '%s',
183
- '%s',
184
- '%s',
185
- '%s',
186
- '%s',
187
- '%s',
188
- )
189
- );
190
- }
191
- break;
192
- }
193
- }
194
  }
195
 
196
  /**
@@ -199,14 +199,14 @@ class MPSUM_Logs {
199
  * @since 6.0.3
200
  * @access private
201
  *
202
- * @param string type of translation update
203
- * @param string $slug of item
204
  * @return string The name of the item being updated.
205
  */
206
  private function get_name_for_update( $type, $slug ) {
207
- if ( ! function_exists( 'get_plugins' ) ) {
208
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
209
- }
210
  switch ( $type ) {
211
  case 'core':
212
  return 'WordPress'; // Not translated
@@ -227,112 +227,143 @@ class MPSUM_Logs {
227
  }
228
 
229
  public function manual_updates( $upgrader_object, $options ) {
230
- if ( !isset( $options[ 'action' ] ) || 'update' !== $options[ 'action' ] ) return;
231
- global $wpdb;
232
- $tablename = $wpdb->base_prefix . 'eum_logs';
233
- $user_id = get_current_user_id();
234
- if ( 0 == $user_id ) return; // If there is no user, this is not a manual update
235
-
236
-
237
- switch( $options[ 'type' ] ) {
238
- case 'core':
239
- include( ABSPATH . WPINC . '/version.php' );
240
- $wpdb->insert(
241
- $tablename,
242
- array(
243
- 'user_id' => $user_id,
244
- 'name' => 'WordPress ' . $wp_version,
245
- 'type' => $options[ 'type' ],
246
- 'version' => $wp_version,
247
- 'action' => 'manual',
248
- 'status' => 1,
249
- 'date' => current_time( 'mysql' ),
250
- ),
251
- array(
252
- '%d',
253
- '%s',
254
- '%s',
255
- '%s',
256
- '%s',
257
- '%s',
258
- '%s',
259
- )
260
- );
261
- break;
262
- case 'plugin':
263
- $plugins = array();
264
- if ( ! function_exists( 'get_plugins' ) ) {
265
- require_once ABSPATH . 'wp-admin/includes/plugin.php';
266
- }
267
- $plugins_from_cache = get_plugins();
268
- wp_clean_plugins_cache();
269
- $plugins = get_plugins();
270
- if ( !empty( $plugins ) && isset( $options[ 'plugins' ] ) && !empty( $options[ 'plugins' ] ) ) {
271
- foreach( $options[ 'plugins' ] as $plugin ) {
272
- $plugin_data = isset( $plugins[ $plugin ] ) ? $plugins[ $plugin ] : false;
273
- $plugin_data_cache = isset( $plugins_from_cache[ $plugin ] ) ? $plugins_from_cache[ $plugin ] : false;
274
- if ( false !== $plugin_data && false !== $plugin_data_cache ) {
275
- $status = ( $plugin_data[ 'Version' ] == $plugin_data_cache[ 'Version' ] ) ? 0 : 1;
276
- $wpdb->insert(
277
- $tablename,
278
- array(
279
- 'user_id' => $user_id,
280
- 'name' => $plugin_data[ 'Name' ],
281
- 'type' => $options[ 'type' ],
282
- 'version' => $plugin_data[ 'Version' ],
283
- 'action' => 'manual',
284
- 'status' => $status,
285
- 'date' => current_time( 'mysql' ),
286
- ),
287
- array(
288
- '%d',
289
- '%s',
290
- '%s',
291
- '%s',
292
- '%s',
293
- '%s',
294
- '%s',
295
- )
296
- );
297
- }
298
- }
299
- }
300
- break;
301
- case 'theme':
302
- if ( isset( $options[ 'themes' ] ) && !empty( $options[ 'themes' ] ) ) {
303
- $theme_data_from_cache = wp_get_themes();
304
- wp_clean_themes_cache();
305
- foreach( $options[ 'themes' ] as $theme ) {
306
- $theme_data = wp_get_theme( $theme );
307
- $theme_from_cache = $theme_data_from_cache[ $theme ];
308
- if ( $theme_data->exists() ) {
309
- $status = ( $theme_from_cache->get( 'Version' ) == $theme_data->get( 'Version' ) ) ? 0 : 1;
310
- $wpdb->insert(
311
- $tablename,
312
- array(
313
- 'user_id' => $user_id,
314
- 'name' => $theme_data->get( 'Name' ),
315
- 'type' => $options[ 'type' ],
316
- 'version' => $theme_data->get( 'Version' ),
317
- 'action' => 'manual',
318
- 'status' => $status,
319
- 'date' => current_time( 'mysql' ),
320
- ),
321
- array(
322
- '%d',
323
- '%s',
324
- '%s',
325
- '%s',
326
- '%s',
327
- '%s',
328
- '%s',
329
- )
330
- );
331
- }
332
- }
333
- }
334
- break;
335
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
336
  }
337
 
338
  /**
@@ -345,10 +376,10 @@ class MPSUM_Logs {
345
  *
346
  */
347
  private function build_table() {
348
- global $wpdb;
349
- $tablename = $wpdb->base_prefix . 'eum_logs';
350
-
351
- // Get collation - From /wp-admin/includes/schema.php
352
  $charset_collate = '';
353
  if ( ! empty($wpdb->charset) )
354
  $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
@@ -365,7 +396,7 @@ class MPSUM_Logs {
365
  status VARCHAR(255) NOT NULL,
366
  date DATETIME NOT NULL,
367
  PRIMARY KEY (log_id)
368
- ) {$charset_collate};";
369
  require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
370
  dbDelta($sql);
371
  }
@@ -380,10 +411,10 @@ class MPSUM_Logs {
380
  *
381
  */
382
  public static function clear() {
383
- global $wpdb;
384
- $tablename = $wpdb->base_prefix . 'eum_logs';
385
- $sql = "delete from $tablename";
386
- $wpdb->query( $sql );
387
  }
388
 
389
  /**
@@ -396,9 +427,9 @@ class MPSUM_Logs {
396
  *
397
  */
398
  public static function drop() {
399
- global $wpdb;
400
- $tablename = $wpdb->base_prefix . 'eum_logs';
401
- $sql = "drop table if exists $tablename";
402
- $wpdb->query( $sql );
403
  }
404
  }
53
  *
54
  */
55
  private function __construct() {
56
+ $table_version = get_site_option( 'mpsum_log_table_version', '0' );
57
+ if ( version_compare( $table_version, $this->version ) < 0 ) {
58
+ $this->build_table();
59
+ update_site_option( 'mpsum_log_table_version', $this->version );
60
+ }
61
+
62
+ add_action( 'automatic_updates_complete', array( $this, 'automatic_updates' ) );
63
+ add_action( 'upgrader_process_complete', array( $this, 'manual_updates' ), 10, 2 );
64
 
65
  } //end constructor
66
 
74
  *
75
  */
76
  public function automatic_updates( $update_results ) {
77
+ global $wpdb;
78
+ $tablename = $wpdb->base_prefix . 'eum_logs';
79
+ if ( empty( $update_results ) ) return;
80
+
81
+ foreach( $update_results as $type => $results ) {
82
+ switch( $type ) {
83
+ case 'core':
84
+ $core = $results[ 0 ];
85
+ $status = is_wp_error( $core->result ) ? 0: 1;
86
+ $version = ( 1 == $status ) ? $core->result : '';
87
+ $wpdb->insert(
88
+ $tablename,
89
+ array(
90
+ 'name' => $core->name,
91
+ 'type' => $type,
92
+ 'version' => $version,
93
+ 'action' => 'automatic',
94
+ 'status' => $status,
95
+ 'date' => current_time( 'mysql' ),
96
+ ),
97
+ array(
98
+ '%s',
99
+ '%s',
100
+ '%s',
101
+ '%s',
102
+ '%s',
103
+ '%s',
104
+ )
105
+ );
106
+ break;
107
+ case 'plugin':
108
+ foreach( $results as $plugin ) {
109
+ $status = is_wp_error( $plugin->result ) ? 0: 1;
110
+ $version = isset( $plugin->item->new_version ) ? $plugin->item->new_version : '0.00';
111
+ $name = ( isset( $plugin->name ) && !empty( $plugin->name ) ) ? $plugin->name : $plugin->item->slug;
112
+ $wpdb->insert(
113
+ $tablename,
114
+ array(
115
+ 'name' => $name,
116
+ 'type' => $type,
117
+ 'version' => $version,
118
+ 'action' => 'automatic',
119
+ 'status' => $status,
120
+ 'date' => current_time( 'mysql' ),
121
+ ),
122
+ array(
123
+ '%s',
124
+ '%s',
125
+ '%s',
126
+ '%s',
127
+ '%s',
128
+ '%s',
129
+ )
130
+ );
131
+ }
132
+ break;
133
+ case 'theme':
134
+ foreach( $results as $theme ) {
135
+ $status = ( is_wp_error( $theme->result ) || empty( $theme->result ) ) ? 0: 1;
136
+ if ( 0 == $status ) {
137
+ $theme_data_from_cache = wp_get_themes();
138
+ $theme_data = $theme_data_from_cache[ $theme->item->theme ];
139
+ $version = $theme_data->get( 'Version' );
140
+ } else {
141
+ $version = $theme->item->new_version;
142
+ }
143
+ $wpdb->insert(
144
+ $tablename,
145
+ array(
146
+ 'name' => $theme->name,
147
+ 'type' => $type,
148
+ 'version' => $version,
149
+ 'action' => 'automatic',
150
+ 'status' => $status,
151
+ 'date' => current_time( 'mysql' ),
152
+ ),
153
+ array(
154
+ '%s',
155
+ '%s',
156
+ '%s',
157
+ '%s',
158
+ '%s',
159
+ '%s',
160
+ )
161
+ );
162
+ }
163
+ break;
164
+ case 'translation':
165
+ foreach( $results as $translation ) {
166
+
167
+ $status = is_wp_error( $translation->result ) ? 0: 1;
168
+ $version = ( 1 == $status ) ? $translation->item->version : '';
169
+ $slug = $translation->item->slug;
170
+ $name = $this->get_name_for_update( $translation->item->type, $translation->item->slug );
171
+ $wpdb->insert(
172
+ $tablename,
173
+ array(
174
+ 'name' => $name . ' (' . $translation->item->language . ')',
175
+ 'type' => $type,
176
+ 'version' => $version,
177
+ 'action' => 'automatic',
178
+ 'status' => $status,
179
+ 'date' => current_time( 'mysql' ),
180
+ ),
181
+ array(
182
+ '%s',
183
+ '%s',
184
+ '%s',
185
+ '%s',
186
+ '%s',
187
+ '%s',
188
+ )
189
+ );
190
+ }
191
+ break;
192
+ }
193
+ }
194
  }
195
 
196
  /**
199
  * @since 6.0.3
200
  * @access private
201
  *
202
+ * @param string type of translation update
203
+ * @param string $slug of item
204
  * @return string The name of the item being updated.
205
  */
206
  private function get_name_for_update( $type, $slug ) {
207
+ if ( ! function_exists( 'get_plugins' ) ) {
208
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
209
+ }
210
  switch ( $type ) {
211
  case 'core':
212
  return 'WordPress'; // Not translated
227
  }
228
 
229
  public function manual_updates( $upgrader_object, $options ) {
230
+ if ( !isset( $options[ 'action' ] ) || 'update' !== $options[ 'action' ] ) return;
231
+ global $wpdb;
232
+ $tablename = $wpdb->base_prefix . 'eum_logs';
233
+ $user_id = get_current_user_id();
234
+ if ( 0 == $user_id ) return; // If there is no user, this is not a manual update
235
+
236
+
237
+ switch( $options[ 'type' ] ) {
238
+ case 'core':
239
+ include( ABSPATH . WPINC . '/version.php' );
240
+ $wpdb->insert(
241
+ $tablename,
242
+ array(
243
+ 'user_id' => $user_id,
244
+ 'name' => 'WordPress ' . $wp_version,
245
+ 'type' => $options[ 'type' ],
246
+ 'version' => $wp_version,
247
+ 'action' => 'manual',
248
+ 'status' => 1,
249
+ 'date' => current_time( 'mysql' ),
250
+ ),
251
+ array(
252
+ '%d',
253
+ '%s',
254
+ '%s',
255
+ '%s',
256
+ '%s',
257
+ '%s',
258
+ '%s',
259
+ )
260
+ );
261
+ break;
262
+ case 'plugin':
263
+ $plugins = array();
264
+ if ( ! function_exists( 'get_plugins' ) ) {
265
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
266
+ }
267
+ $plugins_from_cache = get_plugins();
268
+ wp_clean_plugins_cache();
269
+ $plugins = get_plugins();
270
+ if ( !empty( $plugins ) && isset( $options[ 'plugins' ] ) && !empty( $options[ 'plugins' ] ) ) {
271
+ foreach( $options[ 'plugins' ] as $plugin ) {
272
+ $plugin_data = isset( $plugins[ $plugin ] ) ? $plugins[ $plugin ] : false;
273
+ $plugin_data_cache = isset( $plugins_from_cache[ $plugin ] ) ? $plugins_from_cache[ $plugin ] : false;
274
+ if ( false !== $plugin_data && false !== $plugin_data_cache ) {
275
+ $status = ( $plugin_data[ 'Version' ] == $plugin_data_cache[ 'Version' ] ) ? 0 : 1;
276
+ $wpdb->insert(
277
+ $tablename,
278
+ array(
279
+ 'user_id' => $user_id,
280
+ 'name' => $plugin_data[ 'Name' ],
281
+ 'type' => $options[ 'type' ],
282
+ 'version' => $plugin_data[ 'Version' ],
283
+ 'action' => 'manual',
284
+ 'status' => $status,
285
+ 'date' => current_time( 'mysql' ),
286
+ ),
287
+ array(
288
+ '%d',
289
+ '%s',
290
+ '%s',
291
+ '%s',
292
+ '%s',
293
+ '%s',
294
+ '%s',
295
+ )
296
+ );
297
+ }
298
+ }
299
+ }
300
+ break;
301
+ case 'theme':
302
+ if ( isset( $options[ 'themes' ] ) && !empty( $options[ 'themes' ] ) ) {
303
+ $theme_data_from_cache = wp_get_themes();
304
+ wp_clean_themes_cache();
305
+ foreach( $options[ 'themes' ] as $theme ) {
306
+ $theme_data = wp_get_theme( $theme );
307
+ $theme_from_cache = $theme_data_from_cache[ $theme ];
308
+ if ( $theme_data->exists() ) {
309
+ $status = ( $theme_from_cache->get( 'Version' ) == $theme_data->get( 'Version' ) ) ? 0 : 1;
310
+ $wpdb->insert(
311
+ $tablename,
312
+ array(
313
+ 'user_id' => $user_id,
314
+ 'name' => $theme_data->get( 'Name' ),
315
+ 'type' => $options[ 'type' ],
316
+ 'version' => $theme_data->get( 'Version' ),
317
+ 'action' => 'manual',
318
+ 'status' => $status,
319
+ 'date' => current_time( 'mysql' ),
320
+ ),
321
+ array(
322
+ '%d',
323
+ '%s',
324
+ '%s',
325
+ '%s',
326
+ '%s',
327
+ '%s',
328
+ '%s',
329
+ )
330
+ );
331
+ }
332
+ }
333
+ }
334
+ break;
335
+ case 'translation':
336
+ foreach( $options[ 'translations' ] as $translation ) {
337
+
338
+ $status = 1;
339
+ $version = $translation[ 'version' ];
340
+ $slug = $translation[ 'slug' ];
341
+ $name = $this->get_name_for_update( $translation[ 'type' ], $slug );
342
+ $wpdb->insert(
343
+ $tablename,
344
+ array(
345
+ 'user_id' => $user_id,
346
+ 'name' => $name . ' (' . $translation[ 'language' ] . ')',
347
+ 'type' => $translation[ 'type' ],
348
+ 'version' => $version,
349
+ 'action' => 'manual',
350
+ 'status' => $status,
351
+ 'date' => current_time( 'mysql' ),
352
+ ),
353
+ array(
354
+ '%d',
355
+ '%s',
356
+ '%s',
357
+ '%s',
358
+ '%s',
359
+ '%s',
360
+ '%s',
361
+ )
362
+ );
363
+ }
364
+ break;
365
+
366
+ }
367
  }
368
 
369
  /**
376
  *
377
  */
378
  private function build_table() {
379
+ global $wpdb;
380
+ $tablename = $wpdb->base_prefix . 'eum_logs';
381
+
382
+ // Get collation - From /wp-admin/includes/schema.php
383
  $charset_collate = '';
384
  if ( ! empty($wpdb->charset) )
385
  $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
396
  status VARCHAR(255) NOT NULL,
397
  date DATETIME NOT NULL,
398
  PRIMARY KEY (log_id)
399
+ ) {$charset_collate};";
400
  require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
401
  dbDelta($sql);
402
  }
411
  *
412
  */
413
  public static function clear() {
414
+ global $wpdb;
415
+ $tablename = $wpdb->base_prefix . 'eum_logs';
416
+ $sql = "delete from $tablename";
417
+ $wpdb->query( $sql );
418
  }
419
 
420
  /**
427
  *
428
  */
429
  public static function drop() {
430
+ global $wpdb;
431
+ $tablename = $wpdb->base_prefix . 'eum_logs';
432
+ $sql = "drop table if exists $tablename";
433
+ $wpdb->query( $sql );
434
  }
435
  }
main.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Easy Updates Manager
4
  Plugin URI: https://wordpress.org/plugins/stops-core-theme-and-plugin-updates/
5
  Description: Manage and disable WordPress updates, including core, plugin, theme, and automatic updates - Works with Multisite and has built-in logging features.
6
  Author: Easy Updates Manager Team
7
- Version: 6.1.5
8
  Requires at least: 4.4
9
  Author URI: https://wordpress.org/plugins/stops-core-theme-and-plugin-updates/
10
  Contributors: kidsguide, ronalfy
4
  Plugin URI: https://wordpress.org/plugins/stops-core-theme-and-plugin-updates/
5
  Description: Manage and disable WordPress updates, including core, plugin, theme, and automatic updates - Works with Multisite and has built-in logging features.
6
  Author: Easy Updates Manager Team
7
+ Version: 6.1.8
8
  Requires at least: 4.4
9
  Author URI: https://wordpress.org/plugins/stops-core-theme-and-plugin-updates/
10
  Contributors: kidsguide, ronalfy
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: kidsguide, ronalfy, roary86, bigwing
3
  Tags: updates manager, easy updates manager, disable updates manager, disable updates, update control, plugin updates, theme updates, core updates, automatic updates, multisite, logs
4
  Requires at least: 4.4
5
- Tested up to: 4.5
6
- Stable tag: 6.1.5
7
  License: GPLv2 or later
8
  Donate link: https://mediaron.com/contribute/
9
 
@@ -103,6 +103,11 @@ For additional information and FAQs for Easy Updates Manager check out our <a hr
103
 
104
  == Changelog ==
105
 
 
 
 
 
 
106
  = 6.1.5 =
107
  Released 2016-06-27
108
 
@@ -231,6 +236,9 @@ In version 5.0.0 we completely re-wrote the plugin to offer a faster and more se
231
 
232
  == Upgrade Notice ==
233
 
 
 
 
234
  = 6.1.5 =
235
  Bug Fix: Quick links in plugin and themes tab weren't working.
236
 
2
  Contributors: kidsguide, ronalfy, roary86, bigwing
3
  Tags: updates manager, easy updates manager, disable updates manager, disable updates, update control, plugin updates, theme updates, core updates, automatic updates, multisite, logs
4
  Requires at least: 4.4
5
+ Tested up to: 4.6
6
+ Stable tag: 6.1.8
7
  License: GPLv2 or later
8
  Donate link: https://mediaron.com/contribute/
9
 
103
 
104
  == Changelog ==
105
 
106
+ = 6.1.8 =
107
+ Released 2016-07-07
108
+
109
+ * Manual logs for translations now work with WordPress 4.6.
110
+
111
  = 6.1.5 =
112
  Released 2016-06-27
113
 
236
 
237
  == Upgrade Notice ==
238
 
239
+ = 6.1.8 =
240
+ Manual logs for translations now work with WordPress 4.6.
241
+
242
  = 6.1.5 =
243
  Bug Fix: Quick links in plugin and themes tab weren't working.
244