X-Git-Url: https://git.llucax.com/mecon/meconlib.git/blobdiff_plain/7bf8c6564e60cc22ab1d2bd0ff46b26e2f26bbd8..c6b15817758e60270fb968945fb7f3164c3f4ef9:/lib/MECON/HTML/Link.php diff --git a/lib/MECON/HTML/Link.php b/lib/MECON/HTML/Link.php index ae2458b..08e5275 100644 --- a/lib/MECON/HTML/Link.php +++ b/lib/MECON/HTML/Link.php @@ -107,29 +107,18 @@ class MECON_HTML_Link extends HTML_Common { * @return string * @access public */ - function toHtml() // ~X2C + function toHtml() { $attrs = ''; foreach ($this->getAttributes() as $key => $val) { if ($key == 'href') { - $vars = array(); - foreach ($this->_getVars as $var => $v) { - if (is_object($v) and method_exists($v, 'tostring')) { - $v = $v->tostring(); - } elseif (is_object($v) or is_array($v)) { - $v = serialize($v); - } - $vars[] = urlencode($var) . '=' . urlencode($v); - } - if ($vars) { - $val .= '?' . join('&', $vars); - } + $val = $this->getURI(); } else { $val = htmlentities($val); } $attrs .= ' ' . $key . '="' . $val . '"'; } - return "" . $this->getContents() . ''; + return "" . $this->getContents() . ''; } /** @@ -138,7 +127,7 @@ class MECON_HTML_Link extends HTML_Common { * @return string * @access public */ - function getHref() // ~X2C + function getHref() { return $this->getAttribute('href'); } @@ -151,7 +140,7 @@ class MECON_HTML_Link extends HTML_Common { * @return void * @access public */ - function setHref($href) // ~X2C + function setHref($href) { $this->updateAttributes(array('href' => $href)); } @@ -165,7 +154,7 @@ class MECON_HTML_Link extends HTML_Common { * @return void * @access public */ - function setGetVar($key, $value) // ~X2C + function setGetVar($key, $value) { $this->_getVars[$key] = $value; } @@ -179,9 +168,12 @@ If they doesn't exists, they are added, if they exists, they are updated. * @return void * @access public */ - function updateGetVars($vars) // ~X2C + function updateGetVars($vars) { - $this->_getVars += $vars; + foreach ($vars as $key => $value) + { + $this->_getVars[$key] = $value; + } } /** @@ -192,7 +184,7 @@ If they doesn't exists, they are added, if they exists, they are updated. * @return void * @access public */ - function unsetGetVars($key) // ~X2C + function unsetGetVars($key) { $keys = func_get_args(); foreach ($keys as $key) { @@ -204,20 +196,26 @@ If they doesn't exists, they are added, if they exists, they are updated. * Adds contents to the link. * * @param mixed &$contents Contents to add. Can be an object with a toHtml() method. + * @param bool $front Tells where to put the new content. * * @return void * @access public */ - function addContents($contents) // ~X2C + function addContents($contents, $front = false) { - $this->_contents[] = $contents; + if ($front) { + array_unshift($this->_contents, $contents); + } + else { + $this->_contents[] = $contents; + } } /** * @return string * @access public */ - function getContents() // ~X2C + function getContents() { $html = ''; foreach ($this->_contents as $c) { @@ -236,7 +234,7 @@ If they doesn't exists, they are added, if they exists, they are updated. * @return void * @access public */ - function setContents($contents) // ~X2C + function setContents($contents) { $this->_contents = array($contents); } @@ -252,6 +250,42 @@ If they doesn't exists, they are added, if they exists, they are updated. return '/MECON/css/html/link'; } + /** + * Gets the query string generated with the GET vars. + * + * @return GET query string. + */ + function getQueryString() + { + $vars = array(); + foreach ($this->_getVars as $var => $v) { + if (is_object($v) and method_exists($v, 'tostring')) { + $v = $v->tostring(); + } elseif (is_object($v)) { + $v = serialize($v); + } + if (is_array($v)) { + foreach ($v as $i) { + $vars[] = urlencode($var) . '[]=' . urlencode($i); + } + } else { + $vars[] = urlencode($var) . '=' . urlencode($v); + } + } + return join('&', $vars); + } + + /** + * Gets the URI (base page with the query string). + * + * @return URI string. + */ + function getURI() + { + $query = $this->getQueryString(); + return $this->getAttribute('href') . ($query ? "?$query" : ''); + } + } ?> \ No newline at end of file