Version Description
- safe-redirect-manager.php - Globalize SRM class for use in themes/plugins/scripts. Added create_redirect method to make importing easier.
Download this release
Release Info
| Developer | tlovett1 |
| Plugin | |
| Version | 1.3 |
| Comparing to | |
| See all releases | |
Code changes from version 1.2 to 1.3
- readme.txt +3 -0
- safe-redirect-manager.php +69 -27
readme.txt
CHANGED
|
@@ -24,6 +24,9 @@ Extract the zip file and just drop the contents in the wp-content/plugins/ direc
|
|
| 24 |
|
| 25 |
== Changelog ==
|
| 26 |
|
|
|
|
|
|
|
|
|
|
| 27 |
= 1.2 =
|
| 28 |
* safe-redirect-manager.php - manage_options capabilitiy required to use redirect manager, remove checkbox column, hide view switcher, fix search feature, hide privacy stuff for bulk edit
|
| 29 |
|
| 24 |
|
| 25 |
== Changelog ==
|
| 26 |
|
| 27 |
+
= 1.3 =
|
| 28 |
+
* safe-redirect-manager.php - Globalize SRM class for use in themes/plugins/scripts. Added create_redirect method to make importing easier.
|
| 29 |
+
|
| 30 |
= 1.2 =
|
| 31 |
* safe-redirect-manager.php - manage_options capabilitiy required to use redirect manager, remove checkbox column, hide view switcher, fix search feature, hide privacy stuff for bulk edit
|
| 32 |
|
safe-redirect-manager.php
CHANGED
|
@@ -4,7 +4,7 @@ Plugin Name: Safe Redirect Manager
|
|
| 4 |
Plugin URI: http://www.10up.com
|
| 5 |
Description: Easily and safely manage HTTP redirects.
|
| 6 |
Author: Taylor Lovett (10up LLC), VentureBeat
|
| 7 |
-
Version: 1.
|
| 8 |
Author URI: http://www.10up.com
|
| 9 |
|
| 10 |
GNU General Public License, Free Software Foundation <http://creativecommons.org/licenses/GPL/2.0/>
|
|
@@ -97,8 +97,10 @@ class SRM_Safe_Redirect_Manager {
|
|
| 97 |
/**
|
| 98 |
* Return distinct search results
|
| 99 |
*
|
|
|
|
| 100 |
* @param string $distinct
|
| 101 |
-
*
|
|
|
|
| 102 |
*/
|
| 103 |
public function filter_search_distinct( $distinct ) {
|
| 104 |
if ( $this->redirect_post_type != get_query_var( 'post_type' ) )
|
|
@@ -191,6 +193,45 @@ class SRM_Safe_Redirect_Manager {
|
|
| 191 |
return array();
|
| 192 |
}
|
| 193 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 194 |
/**
|
| 195 |
* Whether or not this is an admin page specific to the plugin
|
| 196 |
*
|
|
@@ -567,8 +608,8 @@ class SRM_Safe_Redirect_Manager {
|
|
| 567 |
if ( ! in_array( $with_www, $content ) ) $content[] = $with_www;
|
| 568 |
}
|
| 569 |
|
| 570 |
-
|
| 571 |
-
|
| 572 |
|
| 573 |
/**
|
| 574 |
* Force update on the redirect cache and return cache
|
|
@@ -649,7 +690,7 @@ class SRM_Safe_Redirect_Manager {
|
|
| 649 |
$this->whitelist_hosts[] = $parsed_redirect['host'];
|
| 650 |
add_filter( 'allowed_redirect_hosts' , array( $this, 'filter_allowed_redirect_hosts' ) );
|
| 651 |
}
|
| 652 |
-
|
| 653 |
// if we have a valid status code, then redirect with it
|
| 654 |
if ( in_array( $status_code, $this->valid_status_codes ) )
|
| 655 |
wp_safe_redirect( esc_url_raw( $redirect_to ), $status_code );
|
|
@@ -672,16 +713,16 @@ class SRM_Safe_Redirect_Manager {
|
|
| 672 |
* @return string
|
| 673 |
*/
|
| 674 |
public function sanitize_redirect_to( $path ) {
|
| 675 |
-
|
| 676 |
|
| 677 |
-
|
| 678 |
-
|
| 679 |
|
| 680 |
-
|
| 681 |
-
|
| 682 |
-
|
| 683 |
|
| 684 |
-
|
| 685 |
}
|
| 686 |
|
| 687 |
/**
|
|
@@ -694,23 +735,24 @@ class SRM_Safe_Redirect_Manager {
|
|
| 694 |
*/
|
| 695 |
public function sanitize_redirect_from( $path ) {
|
| 696 |
|
| 697 |
-
|
| 698 |
-
|
| 699 |
-
|
| 700 |
-
|
| 701 |
|
| 702 |
-
|
| 703 |
-
|
| 704 |
-
|
| 705 |
|
| 706 |
-
|
| 707 |
-
|
| 708 |
-
|
| 709 |
-
|
| 710 |
-
|
| 711 |
|
| 712 |
-
|
| 713 |
-
|
| 714 |
}
|
| 715 |
|
| 716 |
-
|
|
|
| 4 |
Plugin URI: http://www.10up.com
|
| 5 |
Description: Easily and safely manage HTTP redirects.
|
| 6 |
Author: Taylor Lovett (10up LLC), VentureBeat
|
| 7 |
+
Version: 1.3
|
| 8 |
Author URI: http://www.10up.com
|
| 9 |
|
| 10 |
GNU General Public License, Free Software Foundation <http://creativecommons.org/licenses/GPL/2.0/>
|
| 97 |
/**
|
| 98 |
* Return distinct search results
|
| 99 |
*
|
| 100 |
+
* @since 1.2
|
| 101 |
* @param string $distinct
|
| 102 |
+
* @uses get_query_var
|
| 103 |
+
* @return string
|
| 104 |
*/
|
| 105 |
public function filter_search_distinct( $distinct ) {
|
| 106 |
if ( $this->redirect_post_type != get_query_var( 'post_type' ) )
|
| 193 |
return array();
|
| 194 |
}
|
| 195 |
|
| 196 |
+
/**
|
| 197 |
+
* Creates a redirect post, this function will be useful for import/exports scripts
|
| 198 |
+
*
|
| 199 |
+
* @param string $redirect_from
|
| 200 |
+
* @param string $redirect_to
|
| 201 |
+
* @param int $status_code
|
| 202 |
+
* @since 1.3
|
| 203 |
+
* @uses wp_insert_post, update_post_meta
|
| 204 |
+
* @return int
|
| 205 |
+
*/
|
| 206 |
+
public function create_redirect( $redirect_from, $redirect_to, $status_code ) {
|
| 207 |
+
$sanitized_redirect_from = $this->sanitize_redirect_from( $redirect_from );
|
| 208 |
+
$sanitized_redirect_to = $this->sanitize_redirect_to( $redirect_to );
|
| 209 |
+
$sanitized_status_code = absint( $status_code );
|
| 210 |
+
|
| 211 |
+
// check and make sure no parameters are empty or invalid after sanitation
|
| 212 |
+
if ( empty( $sanitized_redirect_from ) || empty( $sanitized_redirect_to ) || ! in_array( $sanitized_status_code, $this->valid_status_codes ) )
|
| 213 |
+
return 0;
|
| 214 |
+
|
| 215 |
+
// create the post
|
| 216 |
+
$post_args = array(
|
| 217 |
+
'post_type' => $this->redirect_post_type,
|
| 218 |
+
'post_status' => 'publish',
|
| 219 |
+
'post_author' => 1
|
| 220 |
+
);
|
| 221 |
+
|
| 222 |
+
$post_id = wp_insert_post( $post_args );
|
| 223 |
+
|
| 224 |
+
if ( 0 >= $post_id )
|
| 225 |
+
return 0;
|
| 226 |
+
|
| 227 |
+
// update the posts meta info
|
| 228 |
+
update_post_meta( $post_id, $this->meta_key_redirect_from, $sanitized_redirect_from );
|
| 229 |
+
update_post_meta( $post_id, $this->meta_key_redirect_to, $sanitized_redirect_to );
|
| 230 |
+
update_post_meta( $post_id, $this->meta_key_redirect_status_code, $sanitized_status_code );
|
| 231 |
+
|
| 232 |
+
return $post_id;
|
| 233 |
+
}
|
| 234 |
+
|
| 235 |
/**
|
| 236 |
* Whether or not this is an admin page specific to the plugin
|
| 237 |
*
|
| 608 |
if ( ! in_array( $with_www, $content ) ) $content[] = $with_www;
|
| 609 |
}
|
| 610 |
|
| 611 |
+
return $content;
|
| 612 |
+
}
|
| 613 |
|
| 614 |
/**
|
| 615 |
* Force update on the redirect cache and return cache
|
| 690 |
$this->whitelist_hosts[] = $parsed_redirect['host'];
|
| 691 |
add_filter( 'allowed_redirect_hosts' , array( $this, 'filter_allowed_redirect_hosts' ) );
|
| 692 |
}
|
| 693 |
+
|
| 694 |
// if we have a valid status code, then redirect with it
|
| 695 |
if ( in_array( $status_code, $this->valid_status_codes ) )
|
| 696 |
wp_safe_redirect( esc_url_raw( $redirect_to ), $status_code );
|
| 713 |
* @return string
|
| 714 |
*/
|
| 715 |
public function sanitize_redirect_to( $path ) {
|
| 716 |
+
$path = trim( $path );
|
| 717 |
|
| 718 |
+
if ( preg_match( '/^www\./i', $path ) )
|
| 719 |
+
$path = 'http://' . $path;
|
| 720 |
|
| 721 |
+
if ( ! preg_match( '/^https?:\/\//i', $path ) )
|
| 722 |
+
if ( strpos( $path, '/' ) !== 0 )
|
| 723 |
+
$path = '/' . $path;
|
| 724 |
|
| 725 |
+
return esc_url_raw( $path );
|
| 726 |
}
|
| 727 |
|
| 728 |
/**
|
| 735 |
*/
|
| 736 |
public function sanitize_redirect_from( $path ) {
|
| 737 |
|
| 738 |
+
$path = trim( $path );
|
| 739 |
+
|
| 740 |
+
if ( empty( $path ) )
|
| 741 |
+
return '';
|
| 742 |
|
| 743 |
+
// dont accept paths starting with a .
|
| 744 |
+
if ( strpos( $path, '.' ) === 0 )
|
| 745 |
+
return '';
|
| 746 |
|
| 747 |
+
// turn path in to absolute
|
| 748 |
+
if ( preg_match( '/https?:\/\//i', $path ) )
|
| 749 |
+
$path = preg_replace( '/^(http:\/\/|https:\/\/)(www\.)?[^\/?]+\/?(.*)/i', '/$3', $path );
|
| 750 |
+
elseif ( strpos( $path, '/' ) !== 0 )
|
| 751 |
+
$path = '/' . $path;
|
| 752 |
|
| 753 |
+
return esc_url_raw( $path );
|
| 754 |
+
}
|
| 755 |
}
|
| 756 |
|
| 757 |
+
global $safe_redirect_manager;
|
| 758 |
+
$safe_redirect_manager = new SRM_Safe_Redirect_Manager();
|
