/lenasys/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/lenasys/trunk

« back to all changes in this revision

Viewing changes to codeigniter/system/helpers/url_helper.php

  • Committer: Erik Wikström
  • Date: 2013-04-09 09:21:05 UTC
  • mto: (21.1.1 lenasys)
  • mto: This revision was merged to the branch mainline in revision 22.
  • Revision ID: wikxen@gmail.com-20130409092105-u1u3gxbql1vx65a7
Added missing WebGL javascript files, moved bothe them and the existing ones to /js. Updated references

Show diffs side-by-side

added added

removed removed

Lines of Context:
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 */
 
 
b'\\ No newline at end of file'