]> dev.renevier.net Git - syj.git/blob - application/views/helpers/AddParamToUrl.php
use parse_url in AddParamToUrl helper
[syj.git] / application / views / helpers / AddParamToUrl.php
1 <?php
2 /*  This file is part of Syj, Copyright (c) 2010-2011 Arnaud Renevier,
3     and is published under the AGPL license. */
4
5 class Syj_View_Helper_AddParamToUrl extends Zend_View_Helper_Abstract
6 {
7     public function addParamToUrl($url, $param, $value, $replace = false) {
8         if (strpos ($url, '?') === false) {
9             return $url . '?' . $param . '=' . $this->view->escape($value);
10         }
11
12         $query = parse_url($url, PHP_URL_QUERY);
13         $parts = explode('&', $query);
14
15         foreach (explode('&', $query) as $key => $part) {
16             if (substr($part, 0, strlen($param . '=')) === ($param . '=')) {
17                 if ($replace) {
18                     unset($parts[$key]);
19                 } else {
20                     return $url;
21                 }
22             }
23         }
24
25         $parts[] = $param . '=' . $this->view->escape($value);
26
27         return strstr($url, '?', true) . '?' . implode('&', $parts);
28     }
29 }