From 9a6a61e4f142d3723161d5fe2b54c9a2c560ed2d Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel Date: Wed, 3 Mar 2010 14:36:24 +0100 Subject: [PATCH] Move redirection into the backend. --- framework/LoginTasks/lib/Horde/LoginTasks.php | 21 ++++++--------------- .../LoginTasks/lib/Horde/LoginTasks/Backend.php | 9 +++++++++ .../lib/Horde/LoginTasks/Backend/Horde.php | 13 +++++++++++++ .../test/Horde/LoginTasks/LoginTasksTest.php | 12 ++++++++---- .../LoginTasks/test/Horde/LoginTasks/Stubs.php | 9 +++++++++ 5 files changed, 45 insertions(+), 19 deletions(-) diff --git a/framework/LoginTasks/lib/Horde/LoginTasks.php b/framework/LoginTasks/lib/Horde/LoginTasks.php index feecd1c9b..e62af95ef 100644 --- a/framework/LoginTasks/lib/Horde/LoginTasks.php +++ b/framework/LoginTasks/lib/Horde/LoginTasks.php @@ -82,8 +82,7 @@ class Horde_LoginTasks $GLOBALS['registry'], $GLOBALS['prefs'], $app - ), - $app + ) ); } @@ -95,14 +94,10 @@ class Horde_LoginTasks * * @param string $app The name of the Horde application. */ - protected function __construct( - Horde_LoginTasks_Backend $backend, - $app - ) { + public function __construct(Horde_LoginTasks_Backend $backend) + { $this->_backend = $backend; - $this->_app = $app; - if (!$this->_backend->isAuthenticated()) { return; } @@ -217,7 +212,7 @@ class Horde_LoginTasks * have been confirmed by the user. * @param string $url The URL to redirect to when finished. */ - public function runTasks($confirmed = false, $url = null, $no_redirect = false) + public function runTasks($confirmed = false, $url = null) { if (!isset($this->_tasklist) || ($this->_tasklist === true)) { @@ -250,13 +245,9 @@ class Horde_LoginTasks if (!$processed && $need_display) { $this->_tasklist->target = $url; - if ($no_redirect) return $this->getLoginTasksUrl(); - header('Location: ' . $this->getLoginTasksUrl()); - exit; + return $this->_backend->redirect($this->getLoginTasksUrl()); } elseif ($processed && !$need_display) { - if ($no_redirect) return $tasklist_target; - header('Location: ' . $tasklist_target); - exit; + return $this->_backend->redirect($tasklist_target); } } diff --git a/framework/LoginTasks/lib/Horde/LoginTasks/Backend.php b/framework/LoginTasks/lib/Horde/LoginTasks/Backend.php index 56cfe9097..93dc64ef0 100644 --- a/framework/LoginTasks/lib/Horde/LoginTasks/Backend.php +++ b/framework/LoginTasks/lib/Horde/LoginTasks/Backend.php @@ -81,6 +81,15 @@ abstract class Horde_LoginTasks_Backend abstract public function markLastRun(); /** + * Redirect to the given URL. + * + * @param string $url The URL to redirect to. + * + * @return NULL + */ + abstract public function redirect($url); + + /** * Return the URL of the login tasks view. * * @return string The URL of the login tasks view diff --git a/framework/LoginTasks/lib/Horde/LoginTasks/Backend/Horde.php b/framework/LoginTasks/lib/Horde/LoginTasks/Backend/Horde.php index c34d190c9..b95be3ddb 100644 --- a/framework/LoginTasks/lib/Horde/LoginTasks/Backend/Horde.php +++ b/framework/LoginTasks/lib/Horde/LoginTasks/Backend/Horde.php @@ -169,6 +169,19 @@ extends Horde_LoginTasks_Backend } /** + * Redirect to the given URL. + * + * @param string $url The URL to redirect to. + * + * @return NULL + */ + public function redirect($url) + { + header('Location: ' . $url); + exit; + } + + /** * Return the URL of the login tasks view. * * @return string The URL of the login tasks view diff --git a/framework/LoginTasks/test/Horde/LoginTasks/LoginTasksTest.php b/framework/LoginTasks/test/Horde/LoginTasks/LoginTasksTest.php index edf7abde5..9ff3a222e 100644 --- a/framework/LoginTasks/test/Horde/LoginTasks/LoginTasksTest.php +++ b/framework/LoginTasks/test/Horde/LoginTasks/LoginTasksTest.php @@ -31,8 +31,6 @@ require_once dirname(__FILE__) . '/Autoload.php'; class Horde_LoginTasks_Class_LoginTasksTest extends PHPUnit_Framework_TestCase { - static private $_singleton_counter = 0; - public function testNoTasksAreRanIfNoUserIsAuthenticated() { Horde_LoginTasks_Stub_Task::$executed = array(); @@ -523,7 +521,7 @@ class Horde_LoginTasks_Class_LoginTasksTest extends PHPUnit_Framework_TestCase ); $last_time = serialize( array( - 'test' . self::$_singleton_counter => $last_time + 'test' => $last_time ) ); } @@ -539,6 +537,12 @@ class Horde_LoginTasks_Class_LoginTasksTest extends PHPUnit_Framework_TestCase $GLOBALS['registry']->expects($this->any()) ->method('getAppDrivers') ->will($this->returnValue($tasks)); - return Horde_LoginTasks::singleton('test' . self::$_singleton_counter++); + return new Horde_LoginTasks( + new Horde_LoginTasks_Stub_Backend( + $GLOBALS['registry'], + $GLOBALS['prefs'], + 'test' + ) + ); } } diff --git a/framework/LoginTasks/test/Horde/LoginTasks/Stubs.php b/framework/LoginTasks/test/Horde/LoginTasks/Stubs.php index 73e034e90..da1856843 100644 --- a/framework/LoginTasks/test/Horde/LoginTasks/Stubs.php +++ b/framework/LoginTasks/test/Horde/LoginTasks/Stubs.php @@ -37,6 +37,15 @@ extends Horde_LoginTasks_Task } } +class Horde_LoginTasks_Stub_Backend +extends Horde_LoginTasks_Backend_Horde +{ + public function redirect($url) + { + return $url; + } +} + class Horde_LoginTasks_Stub_TaskTwo extends Horde_LoginTasks_Stub_Task { -- 2.11.0