From b4c049327c0fef861374c07512c4c3a3e3328977 Mon Sep 17 00:00:00 2001 From: Simon DELAGE Date: Tue, 9 Feb 2016 02:30:36 +0100 Subject: [PATCH] Added new test before redirection --- action.php | 22 +++++++++++++--------- plugin.info.txt | 2 +- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/action.php b/action.php index 888aaa5..00b85dc 100644 --- a/action.php +++ b/action.php @@ -80,6 +80,7 @@ class action_plugin_userhomepage extends DokuWiki_Action_Plugin{ function redirect(&$event, $param) { global $conf; global $lang; + global $ID; if ($this->multiNsOk()) { $created = array(); @@ -148,15 +149,18 @@ class action_plugin_userhomepage extends DokuWiki_Action_Plugin{ array_push($wikistart, $language.':'.$conf['start'], ':'.$language.':'.$conf['start']); } } - // If Public page was just created, redirect to it and edit (or show) - if (($created['public']) && (page_exists($this->public_page))) { - send_redirect(wl($this->public_page, array('do='.$this->getConf('action')), true)); - // Else if private start page was just created and edit option is set, redirect to it and edit - } elseif (($created['private']) && (page_exists($this->private_page)) && ($this->getConf('edit_before_create'))) { - send_redirect(wl($this->private_page, array('do='.$this->getConf('action')), true)); - // Else if redirection is enabled and user's private page exists AND [(user isn't requesting a specific page OR he's requesting wiki start page) AND logged in 2sec ago max] - } elseif (($this->getConf('redirection')) && (page_exists($this->private_page)) && (((!isset($_GET['id'])) or (in_array($_GET['id'], $wikistart))) && (time()-$_SESSION["uhptimestamp"] <= 2))) { - send_redirect(wl($this->private_page, '', true)); + // If user isn't on public or private page yet, check for redirection conditions + if (($ID != $this->public_page) && ($ID != $this->private_page)) { + // If Public page was just created, redirect to it and edit (or show) + if (($created['public']) && (page_exists($this->public_page))) { + send_redirect(wl($this->public_page, array('do='.$this->getConf('action')), true)); + // Else if private start page was just created and edit option is set, redirect to it and edit + } elseif (($created['private']) && (page_exists($this->private_page)) && ($this->getConf('edit_before_create'))) { + send_redirect(wl($this->private_page, array('do='.$this->getConf('action')), true)); + // Else if redirection is enabled and user's private page exists AND [(user isn't requesting a specific page OR he's requesting wiki start page) AND logged in 2sec ago max] + } elseif (($this->getConf('redirection')) && (page_exists($this->private_page)) && (((!isset($_GET['id'])) or (in_array($_GET['id'], $wikistart))) && (time()-$_SESSION["uhptimestamp"] <= 2))) { + send_redirect(wl($this->private_page, '', true)); + } } } } else { diff --git a/plugin.info.txt b/plugin.info.txt index 4e51e28..8244ad8 100644 --- a/plugin.info.txt +++ b/plugin.info.txt @@ -1,7 +1,7 @@ base userhomepage author Simon Delage email simon.geekitude@gmail.com -date 2016-02-05 +date 2016-02-09 name User Homepage desc Automatically create user's private namespace and/or public page and redirects users to private namespace on login. url https://www.dokuwiki.org/plugin:userhomepage