diff options
-rw-r--r-- | index.php | 40 |
1 files changed, 1 insertions, 39 deletions
@@ -486,45 +486,7 @@ function renderPage($conf, $pluginManager, $bookmarkService, $history, $sessionM | |||
486 | 486 | ||
487 | // -------- User clicks on a tag in a link: The tag is added to the list of searched tags (searchtags=...) | 487 | // -------- User clicks on a tag in a link: The tag is added to the list of searched tags (searchtags=...) |
488 | if (isset($_GET['addtag'])) { | 488 | if (isset($_GET['addtag'])) { |
489 | // Get previous URL (http_referer) and add the tag to the searchtags parameters in query. | 489 | header('Location: ./add-tag/'. $_GET['addtag']); |
490 | if (empty($_SERVER['HTTP_REFERER'])) { | ||
491 | // In case browser does not send HTTP_REFERER | ||
492 | header('Location: ?searchtags='.urlencode($_GET['addtag'])); | ||
493 | exit; | ||
494 | } | ||
495 | parse_str(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY), $params); | ||
496 | |||
497 | // Prevent redirection loop | ||
498 | if (isset($params['addtag'])) { | ||
499 | unset($params['addtag']); | ||
500 | } | ||
501 | |||
502 | // Check if this tag is already in the search query and ignore it if it is. | ||
503 | // Each tag is always separated by a space | ||
504 | if (isset($params['searchtags'])) { | ||
505 | $current_tags = explode(' ', $params['searchtags']); | ||
506 | } else { | ||
507 | $current_tags = array(); | ||
508 | } | ||
509 | $addtag = true; | ||
510 | foreach ($current_tags as $value) { | ||
511 | if ($value === $_GET['addtag']) { | ||
512 | $addtag = false; | ||
513 | break; | ||
514 | } | ||
515 | } | ||
516 | // Append the tag if necessary | ||
517 | if (empty($params['searchtags'])) { | ||
518 | $params['searchtags'] = trim($_GET['addtag']); | ||
519 | } elseif ($addtag) { | ||
520 | $params['searchtags'] = trim($params['searchtags']).' '.trim($_GET['addtag']); | ||
521 | } | ||
522 | |||
523 | // We also remove page (keeping the same page has no sense, since the | ||
524 | // results are different) | ||
525 | unset($params['page']); | ||
526 | |||
527 | header('Location: ?'.http_build_query($params)); | ||
528 | exit; | 490 | exit; |
529 | } | 491 | } |
530 | 492 | ||