Commit af4f6e7e771ddaccc9f8a51d19394088db47fdf5

Authored by nbm
1 parent fa5cfc3b

Allow arbitrary query strings (string or dictionary) for redirects.


git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@3487 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 21 additions and 6 deletions
lib/dispatcher.inc.php
... ... @@ -16,22 +16,37 @@ class KTDispatcher {
16 16 $this->handleOutput($ret);
17 17 }
18 18  
19   - function errorRedirectTo($event, $error_message) {
  19 + function errorRedirectTo($event, $error_message, $sQuery = "") {
20 20 /* $method = 'do_main';
21 21 if (method_exists($this, 'do_' . $event)) {
22 22 $method = 'do_' . $event;
23 23 }*/
24 24 $_SESSION['KTErrorMessage'][] = $error_message;
25   - exit(redirect($_SERVER["PHP_SELF"] . '?action=' . $event));
  25 + //exit(redirect($_SERVER["PHP_SELF"] . '?action=' . $event));
  26 + exit($this->redirectTo($event, $sQuery));
26 27 //return $this->$method();
27 28 }
28 29  
29   - function redirectTo($event, $sQuery) {
30   - exit(redirect($_SERVER["PHP_SELF"] . '?action=' . $event . "&" . $sQuery));
  30 + function redirectTo($event, $sQuery = "") {
  31 + if (is_array($sQuery)) {
  32 + $sQuery['action'] = $event;
  33 + $aQueryStrings = array();
  34 + foreach ($sQuery as $k => $v) {
  35 + $aQueryStrings[] = urlencode($k) . "=" . urlencode($v);
  36 + }
  37 + $sQuery = "?" . join('&', $aQueryStrings);
  38 + } else {
  39 + if (!empty($sQuery)) {
  40 + $sQuery = '?action=' . $event . '&' . $sQuery;
  41 + } else {
  42 + $sQuery = '?action=' . $event;
  43 + }
  44 + }
  45 + exit(redirect($_SERVER["PHP_SELF"] . $sQuery));
31 46 }
32 47  
33   - function errorRedirectToMain($error_message) {
34   - return $this->errorRedirectTo('main', $error_message);
  48 + function errorRedirectToMain($error_message, $sQuery = "") {
  49 + return $this->errorRedirectTo('main', $error_message, $sQuery);
35 50 }
36 51  
37 52 function handleOutput($sOutput) {
... ...