add cms, add todo
[ssproject1617.git] / testcms-final-anon / system / classes / url.php
1 <?php defined('IN_CMS') or die('No direct access allowed.');
2
3 class Url {
4
5 private static $base_url, $index_page;
6
7 public static function make($uri = '') {
8 if(empty(static::$base_url)) {
9 static::$base_url = Config::get('application.base_url');
10 }
11
12 if(empty(static::$index_page)) {
13 static::$index_page = Config::get('application.index_page') ? Config::get('application.index_page') . '/' : '';
14 }
15
16 return static::$base_url . static::$index_page . ltrim($uri, '/');
17 }
18
19 public static function build($segments = array()) {
20 // make sure we have all the fragments
21 foreach(array('scheme', 'host', 'port', 'user', 'pass', 'path', 'query', 'fragment') as $fragment) {
22 if(isset($segments[$fragment]) === false) {
23 // set missing default
24 switch($fragment) {
25 case 'scheme':
26 $segments[$fragment] = 'http';
27 break;
28 case 'host':
29 $segments[$fragment] = Input::server('http_host');
30 break;
31 default:
32 $segments[$fragment] = '';
33 }
34 }
35 }
36
37 $url = $segments['scheme'] . '://';
38
39 if($segments['user']) {
40 $url .= $segments['user'];
41
42 if($segments['pass']) {
43 $url .= ':' . $segments['pass'];
44 }
45
46 $url .= '@';
47 }
48
49 $url .= trim($segments['host'], '/');
50
51 if($segments['port']) {
52 $url .= ':' . $segments['port'];
53 }
54
55 if($segments['path']) {
56 $url .= '/' . ltrim($segments['path'], '/');
57 }
58
59 if($segments['query']) {
60 if(is_array($segments['query'])) {
61 $segments['query'] = http_build_query($segments['query']);
62 }
63
64 $url .= '?' . htmlentities($segments['query'], ENT_COMPAT, 'UTF-8', false);
65 }
66
67 if($segments['fragment']) {
68 $url .= '#' . urlencode($segments['fragment']);
69 }
70
71 return $url;
72 }
73
74 public static function current() {
75 return parse_url(Input::server('REQUEST_URI'), PHP_URL_PATH);
76 }
77
78 public static function title($str) {
79 $search = '_';
80 $replace = '-';
81
82 $trans = array(
83 '&\#\d+?;' => '',
84 '&\S+?;' => '',
85 '\s+' => $replace,
86 '[^a-z0-9\-\._]' => '',
87 $replace.'+' => $replace,
88 $replace.'$' => '',
89 '^'.$replace => '',
90 '\.+$' => ''
91 );
92
93 $str = strip_tags($str);
94
95 foreach($trans as $key => $val) {
96 $str = preg_replace("#" . $key . "#i", $val, $str);
97 }
98
99 $str = strtolower($str);
100
101 return trim(stripslashes($str));
102 }
103
104 }