diff --git a/lib/Config/Initializer.php b/lib/Config/Initializer.php index 80eb5217b1..5e2a7a3db0 100644 --- a/lib/Config/Initializer.php +++ b/lib/Config/Initializer.php @@ -4,6 +4,7 @@ namespace MailPoet\Config; use MailPoet\Cron\CronTrigger; use MailPoet\Router; use MailPoet\API; +use MailPoet\Util\ConflictResolver; use MailPoet\WP\Notice as WPNotice; if(!defined('ABSPATH')) exit; @@ -112,6 +113,7 @@ class Initializer { $this->setupShortcodes(); $this->setupImages(); $this->setupCronTrigger(); + $this->setupConflictResolver(); $this->plugin_initialized = true; } catch(\Exception $e) { @@ -222,6 +224,11 @@ class Initializer { add_image_size('mailpoet_newsletter_max', 1320); } + function setupConflictResolver() { + $conflict_resolver = new ConflictResolver(); + $conflict_resolver->init(); + } + function handleFailedInitialization($message) { return WPNotice::displayError($message); } diff --git a/lib/Router/Router.php b/lib/Router/Router.php index 8b6e9c931e..db4ae81d99 100644 --- a/lib/Router/Router.php +++ b/lib/Router/Router.php @@ -37,6 +37,7 @@ class Router { if(!method_exists($endpoint, $this->action) || !in_array($this->action, $endpoint->allowed_actions)) { return $this->terminateRequest(self::RESPONSE_ERROR, __('Invalid router endpoint action.', 'mailpoet')); } + do_action('mailpoet_conflict_url_query_parameters'); return call_user_func( array( $endpoint, diff --git a/lib/Util/ConflictResolver.php b/lib/Util/ConflictResolver.php new file mode 100644 index 0000000000..5699dfa20d --- /dev/null +++ b/lib/Util/ConflictResolver.php @@ -0,0 +1,13 @@ +equals($data); } + function testItExecutesUrlParameterConflictResolverAction() { + $data = array('data' => 'dummy data'); + $result = $this->router->init(); + expect((boolean) did_action('mailpoet_conflict_url_query_parameters'))->true(); + } + function testItCanEncodeRequestData() { $data = array('data' => 'dummy data'); $result = Router::encodeRequestData($data); diff --git a/tests/unit/Util/ConflictResolverTest.php b/tests/unit/Util/ConflictResolverTest.php new file mode 100644 index 0000000000..c2032e710e --- /dev/null +++ b/tests/unit/Util/ConflictResolverTest.php @@ -0,0 +1,24 @@ +conflict_resolver = new ConflictResolver(); + $this->conflict_resolver = $this->conflict_resolver->init(); + global $wp_filter; + $this->wp_filter = $wp_filter; + } + + function testItResolvesRouterUrlQueryParametersConflict() { + expect(!empty($this->wp_filter['mailpoet_conflict_url_query_parameters']))->true(); + // it should unset action & endpoint GET variables + $_GET['endpoint'] = $_GET['action'] = $_GET['test'] = 'test'; + do_action('mailpoet_conflict_url_query_parameters'); + expect(empty($_GET['endpoint']))->true(); + expect(empty($_GET['action']))->true(); + expect(empty($_GET['test']))->false(); + } +} \ No newline at end of file