/
Url.php
85 lines (72 loc) · 2.53 KB
/
Url.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
namespace Concrete\Core\Utility\Service;
use Loader;
class Url
{
public function setVariable($variable, $value = false, $url = false)
{
// either it's key/value as variables, or it's an associative array of key/values
if ($url == false) {
$url = Loader::helper('security')->sanitizeString($_SERVER['REQUEST_URI']);
} elseif (!strstr($url, '?')) {
$url = $url . '?' . Loader::helper('security')->sanitizeString($_SERVER['QUERY_STRING']);
}
$vars = array();
if (!is_array($variable)) {
$vars[$variable] = $value;
} else {
$vars = $variable;
}
foreach ($vars as $variable => $value) {
$url = preg_replace('/(.*)(\?|&)' . $variable . '=[^&]*?(&)(.*)/i', '$1$2$4', $url . '&');
$url = substr($url, 0, -1);
if (strpos($url, '?') === false) {
$url = $url . '?' . $variable . '=' . $value;
} else {
$url = $url . '&' . $variable . '=' . $value;
}
}
// THIS DOES NOT WORK. SOMEONE WILL NEED TO FIX THIS PROPERLY IF THE W3C FOLKS WANT IT TO WORK
//$url = str_replace('&', '&', $url);
return $url;
}
public function unsetVariable($variable, $url = false)
{
// either it's key/value as variables, or it's an associative array of key/values
if ($url == false) {
$url = $_SERVER['REQUEST_URI'];
} elseif (!strstr($url, '?')) {
$url = $url . '?' . $_SERVER['QUERY_STRING'];
}
$vars = array();
if (!is_array($variable)) {
$vars[] = $variable;
} else {
$vars = $variable;
}
foreach ($vars as $variable) {
$url = preg_replace('/(.*)(\?|&)' . $variable . '=[^&]*?(&)(.*)/i', '$1$2$4', $url . '&');
$url = substr($url, 0, -1);
}
// THIS DOES NOT WORK. SOMEONE WILL NEED TO FIX THIS PROPERLY IF THE W3C FOLKS WANT IT TO WORK
//$url = str_replace('&', '&', $url);
return $url;
}
public function buildQuery($url, $params)
{
return $url . '?' . http_build_query($params, '', '&');
}
/**
* Shortens a given url with the tiny url api.
*
* @param string $strURL
*
* @return string $url
*/
public function shortenURL($strURL)
{
$file = Loader::helper('file');
$url = $file->getContents("http://tinyurl.com/api-create.php?url=".$strURL);
return $url;
}
}