Eggplant 301 Redirects - Version 2.2.6

Version Description

Added support for custom plugin directories.

Download this release

Release Info

Developer shawn@eggplantstudios.ca
Plugin Icon 128x128 Eggplant 301 Redirects
Version 2.2.6
Comparing to
See all releases

Code changes from version 2.2.5 to 2.2.6

css/eps_redirect.css CHANGED
@@ -261,6 +261,21 @@ select.eps-small-select { display: inline-block; }
261
 
262
  .padding { padding: 16px; }
263
  .padding-lots { padding: 32px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  /*----------------------------------------------------------*/
265
  /*-------------------- media queries ---------------------*/
266
  /*----------------------------------------------------------*/
261
 
262
  .padding { padding: 16px; }
263
  .padding-lots { padding: 32px; }
264
+
265
+
266
+ .eps-notice {
267
+ padding: 16px;
268
+ margin: 6px auto;
269
+ background: white;
270
+ box-shadow: 1px 1px 4px #dddddd;
271
+ border-left: 3px solid #888888;
272
+ font-weight: bold;
273
+ font-size: 14px;
274
+ }
275
+ .eps-notice.eps-warning {
276
+ border-left: 3px solid #940000;
277
+ color: #940000;
278
+ }
279
  /*----------------------------------------------------------*/
280
  /*-------------------- media queries ---------------------*/
281
  /*----------------------------------------------------------*/
eps-301-redirects.php CHANGED
@@ -13,19 +13,19 @@
13
  * PHP version 5
14
  *
15
  *
16
- * @package EPS 301 Redirects Pro
17
  * @author Shawn Wernig ( shawn@eggplantstudios.ca )
18
- * @version 2.2.2
19
  */
20
 
21
 
22
 
23
 
24
  /*
25
- Plugin Name: Eggplant 301 Redirects Pro
26
  Plugin URI: http://www.eggplantstudios.ca
27
  Description: Create your own 301 redirects using this powerful plugin.
28
- Version: 2.2.2
29
  Author: Shawn Wernig http://www.eggplantstudios.ca
30
  License: GPLv2 or later
31
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -34,21 +34,20 @@ License URI: http://www.gnu.org/licenses/gpl-2.0.html
34
  if( ! defined( 'EPS_REDIRECT_PRO' ) )
35
  {
36
 
37
-
38
  define ( 'EPS_REDIRECT_PATH', plugin_dir_path(__FILE__) );
39
- define ( 'EPS_REDIRECT_URL', plugin_dir_url( __FILE__ ) );
40
- define ( 'EPS_REDIRECT_VERSION', '2.2.2');
41
- define ( 'EPS_REDIRECT_PRO', true);
42
 
43
- include(EPS_REDIRECT_PATH.'eps-form-elements.php');
44
- include(EPS_REDIRECT_PATH.'class.drop-down-pages.php');
45
- include(EPS_REDIRECT_PATH.'libs/eps-plugin.php');
46
- include(EPS_REDIRECT_PATH.'libs/eps-plugin-options.php');
47
- include(EPS_REDIRECT_PATH.'plugin.php');
48
 
49
 
50
 
51
- class EPS_Redirects_Pro {
52
 
53
  /**
54
  *
@@ -151,6 +150,10 @@ class EPS_Redirects_Pro {
151
  *
152
  */
153
  private function format_from_url( $string ) {
 
 
 
 
154
  $complete = home_url() . '/' . $string;
155
  list($uprotocol,$uempty,$uhost,$from) = explode( '/', $complete, 4);
156
  $from = '/' . $from;
@@ -521,67 +524,11 @@ class EPS_Redirects_Pro {
521
  file_put_contents(EPS_REDIRECT_PATH. '/error_activation.html', ob_get_contents());
522
  }
523
 
524
-
525
- /**
526
- *
527
- * 404 Stuff!
528
- *
529
- * This function will output a variable containing the admin ajax url for use in javascript.
530
- *
531
- * @author epstudios
532
- *
533
- */
534
-
535
- public static function get_404s() {
536
- global $wpdb;
537
- $table_name = $wpdb->prefix . "redirects";
538
-
539
- $results = $wpdb->get_results(
540
- "SELECT * FROM $table_name WHERE status = 404 ORDER BY id DESC"
541
- );
542
-
543
- return $results;
544
- }
545
  public static function check_404()
546
  {
547
- global $wp_query;
548
 
549
- if ( $wp_query->is_404() )
550
- {
551
- $entries = array(
552
- array(
553
- 'url_from' => ltrim( self::get_url(), '/' ),
554
- 'url_to' => '',
555
- 'type' => '',
556
- 'status' => 404,
557
- 'count' => 1
558
- )
559
- );
560
-
561
- if( $entry = self::redirect_exists( $entries[0] ) )
562
- {
563
- self::increment_field($entry->id, 'count');
564
- }
565
- else
566
- {
567
- self::_save_redirects( $entries );
568
- }
569
- }
570
  }
571
- public static function list_404s(){
572
- $redirects = self::get_404s( );
573
- $html = '';
574
- if (empty($redirects)) return false;
575
- ob_start();
576
- foreach ($redirects as $redirect ) {
577
- $dfrom = urldecode($redirect->url_from);
578
- include( EPS_REDIRECT_PATH . 'templates/template.404-entry.php');
579
- }
580
- $html = ob_get_contents();
581
- ob_end_clean();
582
- return $html;
583
- }
584
-
585
 
586
  }
587
 
@@ -614,12 +561,12 @@ function eps_view( $object ) {
614
 
615
 
616
  // Run the plugin.
617
- $EPS_Redirects = new EPS_Redirects_Pro();
618
 
619
  }
620
  else
621
  {
622
- if( EPS_REDIRECT_PRO === false )
623
  {
624
  add_action( 'admin_notices', 'eps_redirects_pro_conflict' );
625
  function eps_redirects_pro_conflict()
13
  * PHP version 5
14
  *
15
  *
16
+ * @package EPS 301 Redirects
17
  * @author Shawn Wernig ( shawn@eggplantstudios.ca )
18
+ * @version 2.2.6
19
  */
20
 
21
 
22
 
23
 
24
  /*
25
+ Plugin Name: Eggplant 301 Redirects
26
  Plugin URI: http://www.eggplantstudios.ca
27
  Description: Create your own 301 redirects using this powerful plugin.
28
+ Version: 2.2.6
29
  Author: Shawn Wernig http://www.eggplantstudios.ca
30
  License: GPLv2 or later
31
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
34
  if( ! defined( 'EPS_REDIRECT_PRO' ) )
35
  {
36
 
 
37
  define ( 'EPS_REDIRECT_PATH', plugin_dir_path(__FILE__) );
38
+ define ( 'EPS_REDIRECT_URL', plugins_url() . '/eps-301-redirects/');
39
+ define ( 'EPS_REDIRECT_VERSION', '2.2.6');
40
+ define ( 'EPS_REDIRECT_PRO', false);
41
 
42
+ include( EPS_REDIRECT_PATH.'eps-form-elements.php');
43
+ include( EPS_REDIRECT_PATH.'class.drop-down-pages.php');
44
+ include( EPS_REDIRECT_PATH.'libs/eps-plugin.php');
45
+ include( EPS_REDIRECT_PATH.'libs/eps-plugin-options.php');
46
+ include( EPS_REDIRECT_PATH.'plugin.php');
47
 
48
 
49
 
50
+ class EPS_Redirects {
51
 
52
  /**
53
  *
150
  *
151
  */
152
  private function format_from_url( $string ) {
153
+ //$from = home_url() . '/' . $string;
154
+ //return strtolower( rtrim( $from,'/') );
155
+
156
+
157
  $complete = home_url() . '/' . $string;
158
  list($uprotocol,$uempty,$uhost,$from) = explode( '/', $complete, 4);
159
  $from = '/' . $from;
524
  file_put_contents(EPS_REDIRECT_PATH. '/error_activation.html', ob_get_contents());
525
  }
526
 
527
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
528
  public static function check_404()
529
  {
 
530
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
531
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
532
 
533
  }
534
 
561
 
562
 
563
  // Run the plugin.
564
+ $EPS_Redirects = new EPS_Redirects();
565
 
566
  }
567
  else
568
  {
569
+ if( EPS_REDIRECT_PRO === true )
570
  {
571
  add_action( 'admin_notices', 'eps_redirects_pro_conflict' );
572
  function eps_redirects_pro_conflict()
libs/eps-plugin-options.php CHANGED
@@ -51,16 +51,63 @@ class EPS_Plugin_Options {
51
  *
52
  */
53
  private function build_settings() {
54
- $this->settings = $this->parse_json_from_url( $this->plugin->config('path') . 'options.json' );
55
  }
56
 
57
- private function parse_json_from_url( $uri )
58
  {
59
- $json = file_get_contents( $uri );
60
- $data = json_decode($json,true);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  return $data;
62
  }
63
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  /**
65
  *
66
  * Build the setting slug based on section.
@@ -147,6 +194,8 @@ class EPS_Plugin_Options {
147
 
148
  }
149
 
 
 
150
  /**
151
  *
152
  * Outputs the Sections intro HTML. A callback.
@@ -156,7 +205,7 @@ class EPS_Plugin_Options {
156
  * @param $args
157
  *
158
  */
159
- function section_callback( $args ) {
160
  if( isset( $_GET['tab'] ) )
161
  {
162
  $tab = $_GET['tab'];
@@ -166,7 +215,6 @@ class EPS_Plugin_Options {
166
  $sections = array_keys( $this->settings );
167
  $tab = $sections[0];
168
  }
169
-
170
  echo $this->settings[$tab]['description'];
171
  }
172
 
@@ -271,7 +319,7 @@ class EPS_Plugin_Options {
271
  if ( $this->tab_exists( $tab ) ) {
272
 
273
 
274
- if(has_action( $tab.'_admin_tab'))
275
  {
276
  do_action( $tab.'_admin_tab', $this->settings[$tab] );
277
  }
51
  *
52
  */
53
  private function build_settings() {
54
+ $this->settings = $this->read_settings( EPS_REDIRECT_PATH . 'options.json' );
55
  }
56
 
57
+ private function read_settings( $uri )
58
  {
59
+ if( file_exists( $uri ) )
60
+ {
61
+ if ( is_readable( $uri ) )
62
+ {
63
+ $data = $this->read_json_from_file($uri);
64
+ }
65
+ else
66
+ {
67
+ chmod($uri, 0644);
68
+ $data = $this->read_json_from_file($uri);
69
+ if( $data )
70
+ {
71
+ $data = array(
72
+ 'error' => array(
73
+ "title" => "Oops!",
74
+ "description" => "An essential file (options.json) could not be read. Please check your folder permissions.",
75
+ "callback" => "error",
76
+ "fields" => ''
77
+ )
78
+ );
79
+ }
80
+ }
81
+ }
82
+ else
83
+ {
84
+ $data = array(
85
+ 'error' => array(
86
+ "title" => "Oops!",
87
+ "description" => "An essential file (options.json) could not be found. Please re-install the plugin.",
88
+ "callback" => "error",
89
+ "fields" => ''
90
+ )
91
+ );
92
+ }
93
+
94
+
95
  return $data;
96
  }
97
 
98
+ private function read_json_from_file($uri)
99
+ {
100
+ try
101
+ {
102
+ $json = file_get_contents( $uri );
103
+ return json_decode($json,true);
104
+ }
105
+ catch( Exception $e )
106
+ {
107
+ return false;
108
+ }
109
+ }
110
+
111
  /**
112
  *
113
  * Build the setting slug based on section.
194
 
195
  }
196
 
197
+
198
+
199
  /**
200
  *
201
  * Outputs the Sections intro HTML. A callback.
205
  * @param $args
206
  *
207
  */
208
+ function section_callback( $args ) {
209
  if( isset( $_GET['tab'] ) )
210
  {
211
  $tab = $_GET['tab'];
215
  $sections = array_keys( $this->settings );
216
  $tab = $sections[0];
217
  }
 
218
  echo $this->settings[$tab]['description'];
219
  }
220
 
319
  if ( $this->tab_exists( $tab ) ) {
320
 
321
 
322
+ if( has_action( $tab.'_admin_tab'))
323
  {
324
  do_action( $tab.'_admin_tab', $this->settings[$tab] );
325
  }
libs/eps-plugin.php CHANGED
@@ -8,8 +8,6 @@
8
  * @package EPS Boilerplate
9
  */
10
 
11
- require_once('eps-plugin-options.php');
12
-
13
  if( ! class_exists('EPS_Plugin') )
14
  {
15
  class EPS_Plugin {
@@ -51,11 +49,13 @@ if( ! class_exists('EPS_Plugin') )
51
  */
52
  public function __construct(){
53
  $this->config['url'] = plugins_url() . $this->config['directory'] . '/';
54
- $this->config['path'] = ABSPATH . 'wp-content/plugins/' . $this->config['directory'] . '/';
55
- $this->settings = new EPS_Plugin_Options( $this );
 
 
56
 
57
- register_activation_hook( __FILE__, array($this->name, '_activation'));
58
- register_deactivation_hook( __FILE__, array($this->name, '_deactivation'));
59
  if ( !self::is_current_version() ) self::update_self();
60
  add_action('init', array($this, 'plugin_resources'));
61
  }
@@ -109,17 +109,17 @@ if( ! class_exists('EPS_Plugin') )
109
 
110
  public function _deactivation() {}
111
 
112
- public function is_current_version()
113
  {
114
- return version_compare( $this->current_version(), $this->config['version'], '=') ? true : false;
115
  }
116
- public function current_version()
117
  {
118
- return get_option( $this->config['option_slug'] . '_version' );
119
  }
120
- public function set_current_version( $version )
121
  {
122
- update_option( $this->config['option_slug'] . '_version', $version );
123
  }
124
  /**
125
  *
8
  * @package EPS Boilerplate
9
  */
10
 
 
 
11
  if( ! class_exists('EPS_Plugin') )
12
  {
13
  class EPS_Plugin {
49
  */
50
  public function __construct(){
51
  $this->config['url'] = plugins_url() . $this->config['directory'] . '/';
52
+ $this->config['path'] = EPS_REDIRECT_PATH . $this->config['directory'] . '/';
53
+
54
+ if( class_exists('EPS_Plugin_Options') )
55
+ $this->settings = new EPS_Plugin_Options( $this );
56
 
57
+ register_activation_hook( __FILE__, array($this, '_activation'));
58
+ register_deactivation_hook( __FILE__, array($this, '_deactivation'));
59
  if ( !self::is_current_version() ) self::update_self();
60
  add_action('init', array($this, 'plugin_resources'));
61
  }
109
 
110
  public function _deactivation() {}
111
 
112
+ public static function is_current_version()
113
  {
114
+ return version_compare( self::current_version(), EPS_REDIRECT_VERSION, '=') ? true : false; // TODO decouple
115
  }
116
+ public static function current_version()
117
  {
118
+ return get_option( 'eps_redirects_version' ); // TODO decouple
119
  }
120
+ public static function set_current_version( $version )
121
  {
122
+ update_option( 'eps_redirects_version', $version );
123
  }
124
  /**
125
  *
plugin.php CHANGED
@@ -7,6 +7,8 @@
7
  *
8
  */
9
 
 
 
10
 
11
  class EPS_Redirects_Plugin extends EPS_Plugin {
12
 
@@ -33,16 +35,22 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
33
  // Template Hooks
34
  add_action( 'redirects_admin_tab', array($this, 'admin_tab_redirects'), 10, 1 );
35
  add_action( '404s_admin_tab', array($this, 'admin_tab_404s'), 10, 1 );
 
36
  add_action( 'import-export_admin_tab', array($this, 'admin_tab_import_export'), 10, 1 );
37
  add_action( 'eps_redirects_panels_left', array($this, 'admin_panel_cache'));
38
  add_action( 'eps_redirects_panels_right', array($this, 'admin_panel_donate'));
39
- add_action('eps_redirects_admin_head', array($this, 'admin_header_notices'));
40
 
41
  // Actions
42
- add_action('admin_init', array($this, 'check_plugin_actions'));
43
 
44
  }
45
 
 
 
 
 
 
46
  /**
47
  *
48
  * update_self
@@ -55,9 +63,7 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
55
  */
56
  public function update_self()
57
  {
58
-
59
  $version = get_option( 'eps_redirects_version' );
60
- $this->_create_tables(); // Maybe create the tables
61
 
62
  if( version_compare($version, '2.0.0', '<')) {
63
  // migrate old format to new format.
@@ -94,7 +100,7 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
94
  );
95
  }
96
 
97
- EPS_Redirects_Pro::_save_redirects( $new_redirects );
98
  }
99
 
100
  /**
@@ -107,7 +113,7 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
107
  * @author epstudios
108
  *
109
  */
110
- public function _create_tables()
111
  {
112
  global $wpdb;
113
 
@@ -146,6 +152,8 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
146
  global $EPS_Redirects_Plugin;
147
  if( is_admin() && isset($_GET['page']) && $_GET['page'] == $EPS_Redirects_Plugin->config('page_slug') ) {
148
  wp_enqueue_script('jquery');
 
 
149
  wp_enqueue_script('eps_redirect_script', EPS_REDIRECT_URL .'js/scripts.js');
150
  wp_enqueue_style('eps_redirect_styles', EPS_REDIRECT_URL .'css/eps_redirect.css');
151
  }
@@ -185,7 +193,7 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
185
 
186
  // Save Redirects
187
  if ( isset( $_POST['eps_redirect_submit'] ) && wp_verify_nonce( $_POST['eps_redirect_nonce_submit'], 'eps_redirect_nonce') ) {
188
- self::_save_redirects( EPS_Redirects_Pro::_parse_serial_array($_POST['redirect']) );
189
  }
190
  }
191
  }
@@ -201,7 +209,7 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
201
  */
202
  public static function export_csv()
203
  {
204
- $entries = EPS_Redirects_Pro::get_all();
205
  $filename = sprintf("%s-redirects.csv",
206
  date('Y-m-d')
207
  );
@@ -310,19 +318,19 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
310
  switch( strtolower( $_POST['eps_redirect_upload_method'] ) )
311
  {
312
  case 'skip':
313
- if( ! EPS_Redirects_Pro::redirect_exists( $redirect ) )
314
  {
315
  $save_redirects[] = $redirect;
316
  }
317
  break;
318
  case 'update':
319
- if( $entry = EPS_Redirects_Pro::redirect_exists( $redirect ) )
320
  {
321
  $redirect['id'] = $entry->id;
322
  }
323
  $save_redirects[] = $redirect;
324
  break;
325
- case 'ignore':
326
  $save_redirects[] = $redirect;
327
  break;
328
  }
@@ -330,7 +338,7 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
330
 
331
  if( ! empty( $save_redirects ) )
332
  {
333
- EPS_Redirects_Pro::_save_redirects( $save_redirects );
334
  add_action( 'admin_notices', array($this, 'admin_notice_upload_success') );
335
  }
336
  else
@@ -376,6 +384,10 @@ class EPS_Redirects_Plugin extends EPS_Plugin {
376
  {
377
  include ( EPS_REDIRECT_PATH . 'templates/admin-tab-import-export.php' );
378
  }
 
 
 
 
379
 
380
  public static function admin_header_notices()
381
  {
7
  *
8
  */
9
 
10
+ register_activation_hook( __FILE__, array('EPS_Redirects_Plugin', '_activation'));
11
+ register_deactivation_hook( __FILE__, array('EPS_Redirects_Plugin', '_deactivation'));
12
 
13
  class EPS_Redirects_Plugin extends EPS_Plugin {
14
 
35
  // Template Hooks
36
  add_action( 'redirects_admin_tab', array($this, 'admin_tab_redirects'), 10, 1 );
37
  add_action( '404s_admin_tab', array($this, 'admin_tab_404s'), 10, 1 );
38
+ add_action( 'error_admin_tab', array($this, 'admin_tab_error'), 10, 1 );
39
  add_action( 'import-export_admin_tab', array($this, 'admin_tab_import_export'), 10, 1 );
40
  add_action( 'eps_redirects_panels_left', array($this, 'admin_panel_cache'));
41
  add_action( 'eps_redirects_panels_right', array($this, 'admin_panel_donate'));
42
+ add_action( 'eps_redirects_admin_head', array($this, 'admin_header_notices'));
43
 
44
  // Actions
45
+ add_action( 'admin_init', array($this, 'check_plugin_actions'));
46
 
47
  }
48
 
49
+ public function _activation()
50
+ {
51
+ self::_create_redirect_table(); // Maybe create the tables
52
+ if ( !self::is_current_version() ) self::update_self();
53
+ }
54
  /**
55
  *
56
  * update_self
63
  */
64
  public function update_self()
65
  {
 
66
  $version = get_option( 'eps_redirects_version' );
 
67
 
68
  if( version_compare($version, '2.0.0', '<')) {
69
  // migrate old format to new format.
100
  );
101
  }
102
 
103
+ EPS_Redirects::_save_redirects( $new_redirects );
104
  }
105
 
106
  /**
113
  * @author epstudios
114
  *
115
  */
116
+ public static function _create_redirect_table()
117
  {
118
  global $wpdb;
119
 
152
  global $EPS_Redirects_Plugin;
153
  if( is_admin() && isset($_GET['page']) && $_GET['page'] == $EPS_Redirects_Plugin->config('page_slug') ) {
154
  wp_enqueue_script('jquery');
155
+
156
+
157
  wp_enqueue_script('eps_redirect_script', EPS_REDIRECT_URL .'js/scripts.js');
158
  wp_enqueue_style('eps_redirect_styles', EPS_REDIRECT_URL .'css/eps_redirect.css');
159
  }
193
 
194
  // Save Redirects
195
  if ( isset( $_POST['eps_redirect_submit'] ) && wp_verify_nonce( $_POST['eps_redirect_nonce_submit'], 'eps_redirect_nonce') ) {
196
+ self::_save_redirects( EPS_Redirects::_parse_serial_array($_POST['redirect']) );
197
  }
198
  }
199
  }
209
  */
210
  public static function export_csv()
211
  {
212
+ $entries = EPS_Redirects::get_all();
213
  $filename = sprintf("%s-redirects.csv",
214
  date('Y-m-d')
215
  );
318
  switch( strtolower( $_POST['eps_redirect_upload_method'] ) )
319
  {
320
  case 'skip':
321
+ if( ! EPS_Redirects::redirect_exists( $redirect ) )
322
  {
323
  $save_redirects[] = $redirect;
324
  }
325
  break;
326
  case 'update':
327
+ if( $entry = EPS_Redirects::redirect_exists( $redirect ) )
328
  {
329
  $redirect['id'] = $entry->id;
330
  }
331
  $save_redirects[] = $redirect;
332
  break;
333
+ default:
334
  $save_redirects[] = $redirect;
335
  break;
336
  }
338
 
339
  if( ! empty( $save_redirects ) )
340
  {
341
+ EPS_Redirects::_save_redirects( $save_redirects );
342
  add_action( 'admin_notices', array($this, 'admin_notice_upload_success') );
343
  }
344
  else
384
  {
385
  include ( EPS_REDIRECT_PATH . 'templates/admin-tab-import-export.php' );
386
  }
387
+ public static function admin_tab_error( $options )
388
+ {
389
+ include ( EPS_REDIRECT_PATH . 'templates/admin-tab-error.php' );
390
+ }
391
 
392
  public static function admin_header_notices()
393
  {
readme.txt CHANGED
@@ -10,7 +10,7 @@ Requires at least: 3.0.1
10
 
11
  Tested up to: 4.2.1
12
 
13
- Stable tag: 2.2.5
14
 
15
  License: GPLv2 or later
16
 
@@ -116,6 +116,15 @@ By default, any URL with a query string is considered unique, and will redirect
116
 
117
  == Changelog ==
118
 
 
 
 
 
 
 
 
 
 
119
  = 2.2.0 =
120
  Minor bug fixes. Greatly improved import feature. Redirects include query strings. Export feature added. Http/Https agnostic. Pro version added with 404 management.
121
 
@@ -164,6 +173,12 @@ Overhauled the entire plugin. Redirects are stored in their own table. Gracefull
164
 
165
  == Upgrade Notice ==
166
 
 
 
 
 
 
 
167
  = 2.2.0 =
168
  Minor bug fixes. Greatly improved import feature, added Export feature plus many other updates. A Pro Version is now available with 404 Management!
169
 
10
 
11
  Tested up to: 4.2.1
12
 
13
+ Stable tag: 2.2.6
14
 
15
  License: GPLv2 or later
16
 
116
 
117
  == Changelog ==
118
 
119
+ = 2.2.6 =
120
+ Added support for custom plugin directories.
121
+
122
+ = 2.2.4 =
123
+ Support for older versions of PHP.
124
+
125
+ = 2.2.3 =
126
+ Fixed an issue where the redirect database tables were not being created, causing 'Invalid Destination URL' errors.
127
+
128
  = 2.2.0 =
129
  Minor bug fixes. Greatly improved import feature. Redirects include query strings. Export feature added. Http/Https agnostic. Pro version added with 404 management.
130
 
173
 
174
  == Upgrade Notice ==
175
 
176
+ = 2.2.6 =
177
+ Added support for custom plugin directories.
178
+
179
+ = 2.2.4 =
180
+ Support for older versions of PHP.
181
+
182
  = 2.2.0 =
183
  Minor bug fixes. Greatly improved import feature, added Export feature plus many other updates. A Pro Version is now available with 404 Management!
184
 
templates/admin-tab-404s.php CHANGED
@@ -13,16 +13,28 @@
13
  <div class="wrap">
14
  <?php do_action('eps_redirects_admin_head'); ?>
15
 
16
- <table id="eps-redirect-entries" class="eps-table eps-table-striped">
17
- <tr>
18
- <th colspan="2">Request URL</th>
19
- <th class="redirect-hits">Hits</th>
20
- <th class="redirect-actions">Actions</th>
21
- </tr>
22
- <?php
23
- echo EPS_Redirects_Pro::list_404s();
24
- ?>
25
- </table>
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
 
28
  <div class="right">
@@ -32,7 +44,7 @@
32
  <?php do_action('eps_redirects_panels_left'); ?>
33
  </div>
34
  </div>
35
-
36
-
37
-
38
-
13
  <div class="wrap">
14
  <?php do_action('eps_redirects_admin_head'); ?>
15
 
16
+ <div class="eps-panel eps-margin-top group">
17
+ <div class="eps-redirects-50 group">
18
+ <h1>Take your redirects to the next level!</h1>
19
+ <p class="eps-redirects-lead">The <a href="http://www.eggplantstudios.ca/cart/?add_to_cart=2974" target="_blank">Pro Version of EPS 301 Redirects</a> will add a new 404 tracking feature. Every 404 error will be logged, and you will have the power and flexibility to redirect them wherever you want them to go.</p>
20
+
21
+ <ul id="eps-redirects-checklist">
22
+ <li><span>See which Request URLs are causing 404 errors on your site.</span></li>
23
+ <li><span>Discover which 404 errors are receiving the most traffic.</span></li>
24
+ <li><span>Improve SEO by lowering your total number of 404 errors.</span></li>
25
+ <li><span>Easily fix the 404 errors by turning them into redirects.</span></li>
26
+ </ul>
27
+ </div>
28
+ <div class="eps-redirects-50 group">
29
+ <div class="padding-lots">
30
+ <a href="http://www.eggplantstudios.ca/cart/?add_to_cart=2974" target="_blank">
31
+ <img class="eps-redirects-fit" src="<?php echo EPS_REDIRECT_URL; ?>/images/icon-eps-redirects.jpg" title="Upgrade EPS 301 Redirects">
32
+ </a>
33
+ <a class="eps-redirects-big-button" href="http://www.eggplantstudios.ca/cart/?add_to_cart=2974" target="_blank">BUY NOW &bull; ONLY $15.00</a>
34
+
35
+ </div>
36
+ </div>
37
+ </div>
38
 
39
 
40
  <div class="right">
44
  <?php do_action('eps_redirects_panels_left'); ?>
45
  </div>
46
  </div>
47
+
48
+
49
+
50
+
templates/admin-tab-error.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ *
4
+ * The Redirects Tab.
5
+ *
6
+ * The main admin area for the redirects tab.
7
+ *
8
+ * @package EPS 301 Redirects
9
+ * @author Shawn Wernig ( shawn@eggplantstudios.ca )
10
+ */
11
+ ?>
12
+
13
+
14
+ <div class="wrap">
15
+ <?php do_action('eps_redirects_admin_head'); ?>
16
+
17
+ <div class="eps-notice eps-warning">
18
+ <?php echo $options['description']; ?>
19
+ </div>
20
+
21
+
22
+ <div class="right">
23
+ <?php do_action('eps_redirects_panels_right'); ?>
24
+ </div>
25
+ <div class="left">
26
+ <?php do_action('eps_redirects_panels_left'); ?>
27
+ </div>
28
+ </div>
29
+
30
+
31
+
32
+
templates/admin-tab-import-export.php CHANGED
@@ -23,7 +23,6 @@
23
  <p>
24
  <input type="radio" name="eps_redirect_upload_method" value="skip" checked="checked"> Skip Duplicates
25
  &nbsp;&nbsp;&nbsp;<input type="radio" name="eps_redirect_upload_method" value="update"> Update Duplicates
26
- &nbsp;&nbsp;&nbsp;<input type="radio" name="eps_redirect_upload_method" value="ignore"> Ignore Duplicates
27
  </p>
28
 
29
  <br><small class="eps-grey-text">Supply Columns: <strong>Status</strong> (301,302,inactive), <strong>Request URL</strong>, <strong>Redirect To</strong> (ID or URL). <a href="<?php echo EPS_REDIRECT_URL . 'example.csv'?>" target="_blank">Download Example CSV</a></small>
23
  <p>
24
  <input type="radio" name="eps_redirect_upload_method" value="skip" checked="checked"> Skip Duplicates
25
  &nbsp;&nbsp;&nbsp;<input type="radio" name="eps_redirect_upload_method" value="update"> Update Duplicates
 
26
  </p>
27
 
28
  <br><small class="eps-grey-text">Supply Columns: <strong>Status</strong> (301,302,inactive), <strong>Request URL</strong>, <strong>Redirect To</strong> (ID or URL). <a href="<?php echo EPS_REDIRECT_URL . 'example.csv'?>" target="_blank">Download Example CSV</a></small>
templates/admin-tab-redirects.php CHANGED
@@ -25,8 +25,8 @@
25
  <tr id="eps-redirect-add" style="display:none"><td colspan="4"><a href="#" id="eps-redirect-new"><span>+</span></a></td></tr>
26
 
27
  <?php
28
- echo EPS_Redirects_Pro::get_inline_edit_entry();
29
- echo EPS_Redirects_Pro::list_redirects();
30
  ?>
31
  </table>
32
 
25
  <tr id="eps-redirect-add" style="display:none"><td colspan="4"><a href="#" id="eps-redirect-new"><span>+</span></a></td></tr>
26
 
27
  <?php
28
+ echo EPS_Redirects::get_inline_edit_entry();
29
+ echo EPS_Redirects::list_redirects();
30
  ?>
31
  </table>
32
 
templates/template.404-entry.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
- /**
3
- *
4
- * The 404 List Entry Template.
5
- *
6
- *
7
- * @package EPS 301 Redirects
8
- * @author Shawn Wernig ( shawn@eggplantstudios.ca )
9
- */
10
-
11
- global $EPS_Redirects_Plugin;
12
- $query_args = array( 'page' => $EPS_Redirects_Plugin->config('page_slug'), 'delete_redirect' => esc_attr( $redirect->id ) );
13
-
14
- ?>
15
- <tr class="redirect-entry <?php echo esc_attr( $redirect->status ); ?> id-<?php echo esc_attr( $redirect->id ); ?>" data-id="<?php echo esc_attr( $redirect->id ); ?>" data-status="<?php echo esc_attr( $redirect->status ); ?>">
16
- <td colspan="2">
17
- <a target="_blank" class="eps-url" href="<?php bloginfo('url'); ?>/<?php echo esc_attr($dfrom); ?>" title="<?php bloginfo('url'); ?>/<?php echo esc_attr($dfrom); ?>">
18
- <span class="eps-url-root eps-url-startcap"><?php echo ($redirect->status == 'inactive' ) ? 'OFF': esc_attr($redirect->status); ?></span><span class="eps-url-root"><?php bloginfo('url'); ?>/</span><span class="eps-url-fragment eps-url-endcap"><?php echo esc_attr($dfrom); ?></span>
19
- </a>
20
- </td>
21
- <td class="redirect-hits"><strong><?php echo esc_attr( $redirect->count ); ?></strong></td>
22
- <td class="redirect-actions">
23
- <a class="button eps-redirect-edit" href="#eps-redirect-edit" data-id="<?php echo esc_attr( $redirect->id ); ?>">Redirect</a>
24
- <a class="button eps-redirect-remove" href="<?php echo add_query_arg( $query_args, admin_url( '/options-general.php' ) ); ?>" data-id="<?php echo esc_attr( $redirect->id ); ?>">&times;</a>
25
- </td>
26
- </tr>