bzr branch
http://gegoxaren.bato24.eu/bzr/lenasys/trunk
20.1.1
by galaxyAbstractor
* Added an simple admin panel to the codeviewer-cmssy stuff |
1 |
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); |
2 |
/**
|
|
3 |
* CodeIgniter
|
|
4 |
*
|
|
5 |
* An open source application development framework for PHP 5.1.6 or newer
|
|
6 |
*
|
|
7 |
* @package CodeIgniter
|
|
8 |
* @author ExpressionEngine Dev Team
|
|
9 |
* @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
|
|
10 |
* @license http://codeigniter.com/user_guide/license.html
|
|
11 |
* @link http://codeigniter.com
|
|
12 |
* @since Version 1.0
|
|
13 |
* @filesource
|
|
14 |
*/
|
|
15 |
||
16 |
// ------------------------------------------------------------------------
|
|
17 |
||
18 |
/**
|
|
19 |
* CodeIgniter URL Helpers
|
|
20 |
*
|
|
21 |
* @package CodeIgniter
|
|
22 |
* @subpackage Helpers
|
|
23 |
* @category Helpers
|
|
24 |
* @author ExpressionEngine Dev Team
|
|
25 |
* @link http://codeigniter.com/user_guide/helpers/url_helper.html
|
|
26 |
*/
|
|
27 |
||
28 |
// ------------------------------------------------------------------------
|
|
29 |
||
30 |
/**
|
|
31 |
* Site URL
|
|
32 |
*
|
|
33 |
* Create a local URL based on your basepath. Segments can be passed via the
|
|
34 |
* first parameter either as a string or an array.
|
|
35 |
*
|
|
36 |
* @access public
|
|
37 |
* @param string
|
|
38 |
* @return string
|
|
39 |
*/
|
|
40 |
if ( ! function_exists('site_url')) |
|
41 |
{
|
|
42 |
function site_url($uri = '') |
|
43 |
{
|
|
44 |
$CI =& get_instance(); |
|
45 |
return $CI->config->site_url($uri); |
|
46 |
}
|
|
47 |
}
|
|
48 |
||
49 |
// ------------------------------------------------------------------------
|
|
50 |
||
51 |
/**
|
|
52 |
* Base URL
|
|
53 |
*
|
|
54 |
* Create a local URL based on your basepath.
|
|
55 |
* Segments can be passed in as a string or an array, same as site_url
|
|
56 |
* or a URL to a file can be passed in, e.g. to an image file.
|
|
57 |
*
|
|
58 |
* @access public
|
|
59 |
* @param string
|
|
60 |
* @return string
|
|
61 |
*/
|
|
62 |
if ( ! function_exists('base_url')) |
|
63 |
{
|
|
64 |
function base_url($uri = '') |
|
65 |
{
|
|
66 |
$CI =& get_instance(); |
|
67 |
return $CI->config->base_url($uri); |
|
68 |
}
|
|
69 |
}
|
|
70 |
||
71 |
// ------------------------------------------------------------------------
|
|
72 |
||
73 |
/**
|
|
74 |
* Current URL
|
|
75 |
*
|
|
76 |
* Returns the full URL (including segments) of the page where this
|
|
77 |
* function is placed
|
|
78 |
*
|
|
79 |
* @access public
|
|
80 |
* @return string
|
|
81 |
*/
|
|
82 |
if ( ! function_exists('current_url')) |
|
83 |
{
|
|
84 |
function current_url() |
|
85 |
{
|
|
86 |
$CI =& get_instance(); |
|
87 |
return $CI->config->site_url($CI->uri->uri_string()); |
|
88 |
}
|
|
89 |
}
|
|
90 |
||
91 |
// ------------------------------------------------------------------------
|
|
92 |
/**
|
|
93 |
* URL String
|
|
94 |
*
|
|
95 |
* Returns the URI segments.
|
|
96 |
*
|
|
97 |
* @access public
|
|
98 |
* @return string
|
|
99 |
*/
|
|
100 |
if ( ! function_exists('uri_string')) |
|
101 |
{
|
|
102 |
function uri_string() |
|
103 |
{
|
|
104 |
$CI =& get_instance(); |
|
105 |
return $CI->uri->uri_string(); |
|
106 |
}
|
|
107 |
}
|
|
108 |
||
109 |
// ------------------------------------------------------------------------
|
|
110 |
||
111 |
/**
|
|
112 |
* Index page
|
|
113 |
*
|
|
114 |
* Returns the "index_page" from your config file
|
|
115 |
*
|
|
116 |
* @access public
|
|
117 |
* @return string
|
|
118 |
*/
|
|
119 |
if ( ! function_exists('index_page')) |
|
120 |
{
|
|
121 |
function index_page() |
|
122 |
{
|
|
123 |
$CI =& get_instance(); |
|
124 |
return $CI->config->item('index_page'); |
|
125 |
}
|
|
126 |
}
|
|
127 |
||
128 |
// ------------------------------------------------------------------------
|
|
129 |
||
130 |
/**
|
|
131 |
* Anchor Link
|
|
132 |
*
|
|
133 |
* Creates an anchor based on the local URL.
|
|
134 |
*
|
|
135 |
* @access public
|
|
136 |
* @param string the URL
|
|
137 |
* @param string the link title
|
|
138 |
* @param mixed any attributes
|
|
139 |
* @return string
|
|
140 |
*/
|
|
141 |
if ( ! function_exists('anchor')) |
|
142 |
{
|
|
143 |
function anchor($uri = '', $title = '', $attributes = '') |
|
144 |
{
|
|
145 |
$title = (string) $title; |
|
146 |
||
147 |
if ( ! is_array($uri)) |
|
148 |
{
|
|
149 |
$site_url = ( ! preg_match('!^\w+://! i', $uri)) ? site_url($uri) : $uri; |
|
150 |
}
|
|
151 |
else
|
|
152 |
{
|
|
153 |
$site_url = site_url($uri); |
|
154 |
}
|
|
155 |
||
156 |
if ($title == '') |
|
157 |
{
|
|
158 |
$title = $site_url; |
|
159 |
}
|
|
160 |
||
161 |
if ($attributes != '') |
|
162 |
{
|
|
163 |
$attributes = _parse_attributes($attributes); |
|
164 |
}
|
|
165 |
||
166 |
return '<a href="'.$site_url.'"'.$attributes.'>'.$title.'</a>'; |
|
167 |
}
|
|
168 |
}
|
|
169 |
||
170 |
// ------------------------------------------------------------------------
|
|
171 |
||
172 |
/**
|
|
173 |
* Anchor Link - Pop-up version
|
|
174 |
*
|
|
175 |
* Creates an anchor based on the local URL. The link
|
|
176 |
* opens a new window based on the attributes specified.
|
|
177 |
*
|
|
178 |
* @access public
|
|
179 |
* @param string the URL
|
|
180 |
* @param string the link title
|
|
181 |
* @param mixed any attributes
|
|
182 |
* @return string
|
|
183 |
*/
|
|
184 |
if ( ! function_exists('anchor_popup')) |
|
185 |
{
|
|
186 |
function anchor_popup($uri = '', $title = '', $attributes = FALSE) |
|
187 |
{
|
|
188 |
$title = (string) $title; |
|
189 |
||
190 |
$site_url = ( ! preg_match('!^\w+://! i', $uri)) ? site_url($uri) : $uri; |
|
191 |
||
192 |
if ($title == '') |
|
193 |
{
|
|
194 |
$title = $site_url; |
|
195 |
}
|
|
196 |
||
197 |
if ($attributes === FALSE) |
|
198 |
{
|
|
199 |
return "<a href='javascript:void(0);' onclick=\"window.open('".$site_url."', '_blank');\">".$title."</a>"; |
|
200 |
}
|
|
201 |
||
202 |
if ( ! is_array($attributes)) |
|
203 |
{
|
|
204 |
$attributes = array(); |
|
205 |
}
|
|
206 |
||
207 |
foreach (array('width' => '800', 'height' => '600', 'scrollbars' => 'yes', 'status' => 'yes', 'resizable' => 'yes', 'screenx' => '0', 'screeny' => '0', ) as $key => $val) |
|
208 |
{
|
|
209 |
$atts[$key] = ( ! isset($attributes[$key])) ? $val : $attributes[$key]; |
|
210 |
unset($attributes[$key]); |
|
211 |
}
|
|
212 |
||
213 |
if ($attributes != '') |
|
214 |
{
|
|
215 |
$attributes = _parse_attributes($attributes); |
|
216 |
}
|
|
217 |
||
218 |
return "<a href='javascript:void(0);' onclick=\"window.open('".$site_url."', '_blank', '"._parse_attributes($atts, TRUE)."');\"$attributes>".$title."</a>"; |
|
219 |
}
|
|
220 |
}
|
|
221 |
||
222 |
// ------------------------------------------------------------------------
|
|
223 |
||
224 |
/**
|
|
225 |
* Mailto Link
|
|
226 |
*
|
|
227 |
* @access public
|
|
228 |
* @param string the email address
|
|
229 |
* @param string the link title
|
|
230 |
* @param mixed any attributes
|
|
231 |
* @return string
|
|
232 |
*/
|
|
233 |
if ( ! function_exists('mailto')) |
|
234 |
{
|
|
235 |
function mailto($email, $title = '', $attributes = '') |
|
236 |
{
|
|
237 |
$title = (string) $title; |
|
238 |
||
239 |
if ($title == "") |
|
240 |
{
|
|
241 |
$title = $email; |
|
242 |
}
|
|
243 |
||
244 |
$attributes = _parse_attributes($attributes); |
|
245 |
||
246 |
return '<a href="mailto:'.$email.'"'.$attributes.'>'.$title.'</a>'; |
|
247 |
}
|
|
248 |
}
|
|
249 |
||
250 |
// ------------------------------------------------------------------------
|
|
251 |
||
252 |
/**
|
|
253 |
* Encoded Mailto Link
|
|
254 |
*
|
|
255 |
* Create a spam-protected mailto link written in Javascript
|
|
256 |
*
|
|
257 |
* @access public
|
|
258 |
* @param string the email address
|
|
259 |
* @param string the link title
|
|
260 |
* @param mixed any attributes
|
|
261 |
* @return string
|
|
262 |
*/
|
|
263 |
if ( ! function_exists('safe_mailto')) |
|
264 |
{
|
|
265 |
function safe_mailto($email, $title = '', $attributes = '') |
|
266 |
{
|
|
267 |
$title = (string) $title; |
|
268 |
||
269 |
if ($title == "") |
|
270 |
{
|
|
271 |
$title = $email; |
|
272 |
}
|
|
273 |
||
274 |
for ($i = 0; $i < 16; $i++) |
|
275 |
{
|
|
276 |
$x[] = substr('<a href="mailto:', $i, 1); |
|
277 |
}
|
|
278 |
||
279 |
for ($i = 0; $i < strlen($email); $i++) |
|
280 |
{
|
|
281 |
$x[] = "|".ord(substr($email, $i, 1)); |
|
282 |
}
|
|
283 |
||
284 |
$x[] = '"'; |
|
285 |
||
286 |
if ($attributes != '') |
|
287 |
{
|
|
288 |
if (is_array($attributes)) |
|
289 |
{
|
|
290 |
foreach ($attributes as $key => $val) |
|
291 |
{
|
|
292 |
$x[] = ' '.$key.'="'; |
|
293 |
for ($i = 0; $i < strlen($val); $i++) |
|
294 |
{
|
|
295 |
$x[] = "|".ord(substr($val, $i, 1)); |
|
296 |
}
|
|
297 |
$x[] = '"'; |
|
298 |
}
|
|
299 |
}
|
|
300 |
else
|
|
301 |
{
|
|
302 |
for ($i = 0; $i < strlen($attributes); $i++) |
|
303 |
{
|
|
304 |
$x[] = substr($attributes, $i, 1); |
|
305 |
}
|
|
306 |
}
|
|
307 |
}
|
|
308 |
||
309 |
$x[] = '>'; |
|
310 |
||
311 |
$temp = array(); |
|
312 |
for ($i = 0; $i < strlen($title); $i++) |
|
313 |
{
|
|
314 |
$ordinal = ord($title[$i]); |
|
315 |
||
316 |
if ($ordinal < 128) |
|
317 |
{
|
|
318 |
$x[] = "|".$ordinal; |
|
319 |
}
|
|
320 |
else
|
|
321 |
{
|
|
322 |
if (count($temp) == 0) |
|
323 |
{
|
|
324 |
$count = ($ordinal < 224) ? 2 : 3; |
|
325 |
}
|
|
326 |
||
327 |
$temp[] = $ordinal; |
|
328 |
if (count($temp) == $count) |
|
329 |
{
|
|
330 |
$number = ($count == 3) ? (($temp['0'] % 16) * 4096) + (($temp['1'] % 64) * 64) + ($temp['2'] % 64) : (($temp['0'] % 32) * 64) + ($temp['1'] % 64); |
|
331 |
$x[] = "|".$number; |
|
332 |
$count = 1; |
|
333 |
$temp = array(); |
|
334 |
}
|
|
335 |
}
|
|
336 |
}
|
|
337 |
||
338 |
$x[] = '<'; $x[] = '/'; $x[] = 'a'; $x[] = '>'; |
|
339 |
||
340 |
$x = array_reverse($x); |
|
341 |
ob_start(); |
|
342 |
||
343 |
?><script type="text/javascript"> |
|
344 |
//<![CDATA[
|
|
345 |
var l=new Array();
|
|
346 |
<?php |
|
347 |
$i = 0; |
|
348 |
foreach ($x as $val){ ?>l[<?php echo $i++; ?>]='<?php echo $val; ?>';<?php } ?> |
|
349 |
||
350 |
for (var i = l.length-1; i >= 0; i=i-1){
|
|
351 |
if (l[i].substring(0, 1) == '|') document.write("&#"+unescape(l[i].substring(1))+";");
|
|
352 |
else document.write(unescape(l[i]));}
|
|
353 |
//]]>
|
|
354 |
</script><?php |
|
355 |
||
356 |
$buffer = ob_get_contents(); |
|
357 |
ob_end_clean(); |
|
358 |
return $buffer; |
|
359 |
}
|
|
360 |
}
|
|
361 |
||
362 |
// ------------------------------------------------------------------------
|
|
363 |
||
364 |
/**
|
|
365 |
* Auto-linker
|
|
366 |
*
|
|
367 |
* Automatically links URL and Email addresses.
|
|
368 |
* Note: There's a bit of extra code here to deal with
|
|
369 |
* URLs or emails that end in a period. We'll strip these
|
|
370 |
* off and add them after the link.
|
|
371 |
*
|
|
372 |
* @access public
|
|
373 |
* @param string the string
|
|
374 |
* @param string the type: email, url, or both
|
|
375 |
* @param bool whether to create pop-up links
|
|
376 |
* @return string
|
|
377 |
*/
|
|
378 |
if ( ! function_exists('auto_link')) |
|
379 |
{
|
|
380 |
function auto_link($str, $type = 'both', $popup = FALSE) |
|
381 |
{
|
|
382 |
if ($type != 'email') |
|
383 |
{
|
|
384 |
if (preg_match_all("#(^|\s|\()((http(s?)://)|(www\.))(\w+[^\s\)\<]+)#i", $str, $matches)) |
|
385 |
{
|
|
386 |
$pop = ($popup == TRUE) ? " target=\"_blank\" " : ""; |
|
387 |
||
388 |
for ($i = 0; $i < count($matches['0']); $i++) |
|
389 |
{
|
|
390 |
$period = ''; |
|
391 |
if (preg_match("|\.$|", $matches['6'][$i])) |
|
392 |
{
|
|
393 |
$period = '.'; |
|
394 |
$matches['6'][$i] = substr($matches['6'][$i], 0, -1); |
|
395 |
}
|
|
396 |
||
397 |
$str = str_replace($matches['0'][$i], |
|
398 |
$matches['1'][$i].'<a href="http'. |
|
399 |
$matches['4'][$i].'://'. |
|
400 |
$matches['5'][$i]. |
|
401 |
$matches['6'][$i].'"'.$pop.'>http'. |
|
402 |
$matches['4'][$i].'://'. |
|
403 |
$matches['5'][$i]. |
|
404 |
$matches['6'][$i].'</a>'. |
|
405 |
$period, $str); |
|
406 |
}
|
|
407 |
}
|
|
408 |
}
|
|
409 |
||
410 |
if ($type != 'url') |
|
411 |
{
|
|
412 |
if (preg_match_all("/([a-zA-Z0-9_\.\-\+]+)@([a-zA-Z0-9\-]+)\.([a-zA-Z0-9\-\.]*)/i", $str, $matches)) |
|
413 |
{
|
|
414 |
for ($i = 0; $i < count($matches['0']); $i++) |
|
415 |
{
|
|
416 |
$period = ''; |
|
417 |
if (preg_match("|\.$|", $matches['3'][$i])) |
|
418 |
{
|
|
419 |
$period = '.'; |
|
420 |
$matches['3'][$i] = substr($matches['3'][$i], 0, -1); |
|
421 |
}
|
|
422 |
||
423 |
$str = str_replace($matches['0'][$i], safe_mailto($matches['1'][$i].'@'.$matches['2'][$i].'.'.$matches['3'][$i]).$period, $str); |
|
424 |
}
|
|
425 |
}
|
|
426 |
}
|
|
427 |
||
428 |
return $str; |
|
429 |
}
|
|
430 |
}
|
|
431 |
||
432 |
// ------------------------------------------------------------------------
|
|
433 |
||
434 |
/**
|
|
435 |
* Prep URL
|
|
436 |
*
|
|
437 |
* Simply adds the http:// part if no scheme is included
|
|
438 |
*
|
|
439 |
* @access public
|
|
440 |
* @param string the URL
|
|
441 |
* @return string
|
|
442 |
*/
|
|
443 |
if ( ! function_exists('prep_url')) |
|
444 |
{
|
|
445 |
function prep_url($str = '') |
|
446 |
{
|
|
447 |
if ($str == 'http://' OR $str == '') |
|
448 |
{
|
|
449 |
return ''; |
|
450 |
}
|
|
451 |
||
452 |
$url = parse_url($str); |
|
453 |
||
454 |
if ( ! $url OR ! isset($url['scheme'])) |
|
455 |
{
|
|
456 |
$str = 'http://'.$str; |
|
457 |
}
|
|
458 |
||
459 |
return $str; |
|
460 |
}
|
|
461 |
}
|
|
462 |
||
463 |
// ------------------------------------------------------------------------
|
|
464 |
||
465 |
/**
|
|
466 |
* Create URL Title
|
|
467 |
*
|
|
468 |
* Takes a "title" string as input and creates a
|
|
469 |
* human-friendly URL string with a "separator" string
|
|
470 |
* as the word separator.
|
|
471 |
*
|
|
472 |
* @access public
|
|
473 |
* @param string the string
|
|
474 |
* @param string the separator
|
|
475 |
* @return string
|
|
476 |
*/
|
|
477 |
if ( ! function_exists('url_title')) |
|
478 |
{
|
|
479 |
function url_title($str, $separator = '-', $lowercase = FALSE) |
|
480 |
{
|
|
481 |
if ($separator == 'dash') |
|
482 |
{
|
|
483 |
$separator = '-'; |
|
484 |
}
|
|
485 |
else if ($separator == 'underscore') |
|
486 |
{
|
|
487 |
$separator = '_'; |
|
488 |
}
|
|
489 |
||
490 |
$q_separator = preg_quote($separator); |
|
491 |
||
492 |
$trans = array( |
|
493 |
'&.+?;' => '', |
|
494 |
'[^a-z0-9 _-]' => '', |
|
495 |
'\s+' => $separator, |
|
496 |
'('.$q_separator.')+' => $separator |
|
497 |
);
|
|
498 |
||
499 |
$str = strip_tags($str); |
|
500 |
||
501 |
foreach ($trans as $key => $val) |
|
502 |
{
|
|
503 |
$str = preg_replace("#".$key."#i", $val, $str); |
|
504 |
}
|
|
505 |
||
506 |
if ($lowercase === TRUE) |
|
507 |
{
|
|
508 |
$str = strtolower($str); |
|
509 |
}
|
|
510 |
||
511 |
return trim($str, $separator); |
|
512 |
}
|
|
513 |
}
|
|
514 |
||
515 |
// ------------------------------------------------------------------------
|
|
516 |
||
517 |
/**
|
|
518 |
* Header Redirect
|
|
519 |
*
|
|
520 |
* Header redirect in two flavors
|
|
521 |
* For very fine grained control over headers, you could use the Output
|
|
522 |
* Library's set_header() function.
|
|
523 |
*
|
|
524 |
* @access public
|
|
525 |
* @param string the URL
|
|
526 |
* @param string the method: location or redirect
|
|
527 |
* @return string
|
|
528 |
*/
|
|
529 |
if ( ! function_exists('redirect')) |
|
530 |
{
|
|
531 |
function redirect($uri = '', $method = 'location', $http_response_code = 302) |
|
532 |
{
|
|
533 |
if ( ! preg_match('#^https?://#i', $uri)) |
|
534 |
{
|
|
535 |
$uri = site_url($uri); |
|
536 |
}
|
|
537 |
||
538 |
switch($method) |
|
539 |
{
|
|
540 |
case 'refresh' : header("Refresh:0;url=".$uri); |
|
541 |
break; |
|
542 |
default : header("Location: ".$uri, TRUE, $http_response_code); |
|
543 |
break; |
|
544 |
}
|
|
545 |
exit; |
|
546 |
}
|
|
547 |
}
|
|
548 |
||
549 |
// ------------------------------------------------------------------------
|
|
550 |
||
551 |
/**
|
|
552 |
* Parse out the attributes
|
|
553 |
*
|
|
554 |
* Some of the functions use this
|
|
555 |
*
|
|
556 |
* @access private
|
|
557 |
* @param array
|
|
558 |
* @param bool
|
|
559 |
* @return string
|
|
560 |
*/
|
|
561 |
if ( ! function_exists('_parse_attributes')) |
|
562 |
{
|
|
563 |
function _parse_attributes($attributes, $javascript = FALSE) |
|
564 |
{
|
|
565 |
if (is_string($attributes)) |
|
566 |
{
|
|
567 |
return ($attributes != '') ? ' '.$attributes : ''; |
|
568 |
}
|
|
569 |
||
570 |
$att = ''; |
|
571 |
foreach ($attributes as $key => $val) |
|
572 |
{
|
|
573 |
if ($javascript == TRUE) |
|
574 |
{
|
|
575 |
$att .= $key . '=' . $val . ','; |
|
576 |
}
|
|
577 |
else
|
|
578 |
{
|
|
579 |
$att .= ' ' . $key . '="' . $val . '"'; |
|
580 |
}
|
|
581 |
}
|
|
582 |
||
583 |
if ($javascript == TRUE AND $att != '') |
|
584 |
{
|
|
585 |
$att = substr($att, 0, -1); |
|
586 |
}
|
|
587 |
||
588 |
return $att; |
|
589 |
}
|
|
590 |
}
|
|
591 |
||
592 |
||
593 |
/* End of file url_helper.php */
|
|
594 |
/* Location: ./system/helpers/url_helper.php */
|