~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/php/phpBB3/includes/bbcode.php

  • Committer: William Grant
  • Date: 2009-02-23 23:47:02 UTC
  • mfrom: (1099.1.211 new-dispatch)
  • Revision ID: grantw@unimelb.edu.au-20090223234702-db4b1llly46ignwo
Merge from lp:~ivle-dev/ivle/new-dispatch.

Pretty much everything changes. Reread the setup docs. Backup your databases.
Every file is now in a different installed location, the configuration system
is rewritten, the dispatch system is rewritten, URLs are different, the
database is different, worksheets and exercises are no longer on the
filesystem, we use a templating engine, jail service protocols are rewritten,
we don't repeat ourselves, we have authorization rewritten, phpBB is gone,
and probably lots of other things that I cannot remember.

This is certainly the biggest commit I have ever made, and hopefully
the largest I ever will.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?php
2
 
/**
3
 
*
4
 
* @package phpBB3
5
 
* @version $Id: bbcode.php,v 1.114 2007/10/07 10:34:45 naderman Exp $
6
 
* @copyright (c) 2005 phpBB Group
7
 
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
8
 
*
9
 
*/
10
 
 
11
 
/**
12
 
* @ignore
13
 
*/
14
 
if (!defined('IN_PHPBB'))
15
 
{
16
 
        exit;
17
 
}
18
 
 
19
 
/**
20
 
* BBCode class
21
 
* @package phpBB3
22
 
*/
23
 
class bbcode
24
 
{
25
 
        var $bbcode_uid = '';
26
 
        var $bbcode_bitfield = '';
27
 
        var $bbcode_cache = array();
28
 
        var $bbcode_template = array();
29
 
 
30
 
        var $bbcodes = array();
31
 
 
32
 
        var $template_bitfield;
33
 
        var $template_filename = '';
34
 
 
35
 
        /**
36
 
        * Constructor
37
 
        * Init bbcode cache entries if bitfield is specified
38
 
        */
39
 
        function bbcode($bitfield = '')
40
 
        {
41
 
                if ($bitfield)
42
 
                {
43
 
                        $this->bbcode_bitfield = $bitfield;
44
 
                        $this->bbcode_cache_init();
45
 
                }
46
 
        }
47
 
 
48
 
        /**
49
 
        * Second pass bbcodes
50
 
        */
51
 
        function bbcode_second_pass(&$message, $bbcode_uid = '', $bbcode_bitfield = false)
52
 
        {
53
 
                if ($bbcode_uid)
54
 
                {
55
 
                        $this->bbcode_uid = $bbcode_uid;
56
 
                }
57
 
 
58
 
                if ($bbcode_bitfield !== false)
59
 
                {
60
 
                        $this->bbcode_bitfield = $bbcode_bitfield;
61
 
 
62
 
                        // Init those added with a new bbcode_bitfield (already stored codes will not get parsed again)
63
 
                        $this->bbcode_cache_init();
64
 
                }
65
 
 
66
 
                if (!$this->bbcode_bitfield)
67
 
                {
68
 
                        // Remove the uid from tags that have not been transformed into HTML
69
 
                        if ($this->bbcode_uid)
70
 
                        {
71
 
                                $message = str_replace(':' . $this->bbcode_uid, '', $message);
72
 
                        }
73
 
 
74
 
                        return;
75
 
                }
76
 
 
77
 
                $str = array('search' => array(), 'replace' => array());
78
 
                $preg = array('search' => array(), 'replace' => array());
79
 
 
80
 
                $bitfield = new bitfield($this->bbcode_bitfield);
81
 
                $bbcodes_set = $bitfield->get_all_set();
82
 
 
83
 
                $undid_bbcode_specialchars = false;
84
 
                foreach ($bbcodes_set as $bbcode_id)
85
 
                {
86
 
                        if (!empty($this->bbcode_cache[$bbcode_id]))
87
 
                        {
88
 
                                foreach ($this->bbcode_cache[$bbcode_id] as $type => $array)
89
 
                                {
90
 
                                        foreach ($array as $search => $replace)
91
 
                                        {
92
 
                                                ${$type}['search'][] = str_replace('$uid', $this->bbcode_uid, $search);
93
 
                                                ${$type}['replace'][] = $replace;
94
 
                                        }
95
 
 
96
 
                                        if (sizeof($str['search']))
97
 
                                        {
98
 
                                                $message = str_replace($str['search'], $str['replace'], $message);
99
 
                                                $str = array('search' => array(), 'replace' => array());
100
 
                                        }
101
 
 
102
 
                                        if (sizeof($preg['search']))
103
 
                                        {
104
 
                                                // we need to turn the entities back into their original form to allow the
105
 
                                                // search patterns to work properly
106
 
                                                if (!$undid_bbcode_specialchars)
107
 
                                                {
108
 
                                                        $message = str_replace(array('&#58;', '&#46;'), array(':', '.'), $message);
109
 
                                                        $undid_bbcode_specialchars = true;
110
 
                                                }
111
 
 
112
 
                                                $message = preg_replace($preg['search'], $preg['replace'], $message);
113
 
                                                $preg = array('search' => array(), 'replace' => array());
114
 
                                        }
115
 
                                }
116
 
                        }
117
 
                }
118
 
 
119
 
                // Remove the uid from tags that have not been transformed into HTML
120
 
                $message = str_replace(':' . $this->bbcode_uid, '', $message);
121
 
        }
122
 
 
123
 
        /**
124
 
        * Init bbcode cache
125
 
        *
126
 
        * requires: $this->bbcode_bitfield
127
 
        * sets: $this->bbcode_cache with bbcode templates needed for bbcode_bitfield
128
 
        */
129
 
        function bbcode_cache_init()
130
 
        {
131
 
                global $user, $phpbb_root_path;
132
 
 
133
 
                if (empty($this->template_filename))
134
 
                {
135
 
                        $this->template_bitfield = new bitfield($user->theme['bbcode_bitfield']);
136
 
                        $this->template_filename = $phpbb_root_path . 'styles/' . $user->theme['template_path'] . '/template/bbcode.html';
137
 
 
138
 
                        if (!@file_exists($this->template_filename))
139
 
                        {
140
 
                                trigger_error('The file ' . $this->template_filename . ' is missing.', E_USER_ERROR);
141
 
                        }
142
 
                }
143
 
 
144
 
                $bbcode_ids = $rowset = $sql = array();
145
 
 
146
 
                $bitfield = new bitfield($this->bbcode_bitfield);
147
 
                $bbcodes_set = $bitfield->get_all_set();
148
 
 
149
 
                foreach ($bbcodes_set as $bbcode_id)
150
 
                {
151
 
                        if (isset($this->bbcode_cache[$bbcode_id]))
152
 
                        {
153
 
                                // do not try to re-cache it if it's already in
154
 
                                continue;
155
 
                        }
156
 
                        $bbcode_ids[] = $bbcode_id;
157
 
 
158
 
                        if ($bbcode_id > NUM_CORE_BBCODES)
159
 
                        {
160
 
                                $sql[] = $bbcode_id;
161
 
                        }
162
 
                }
163
 
 
164
 
                if (sizeof($sql))
165
 
                {
166
 
                        global $db;
167
 
 
168
 
                        $sql = 'SELECT *
169
 
                                FROM ' . BBCODES_TABLE . '
170
 
                                WHERE ' . $db->sql_in_set('bbcode_id', $sql);
171
 
                        $result = $db->sql_query($sql, 3600);
172
 
 
173
 
                        while ($row = $db->sql_fetchrow($result))
174
 
                        {
175
 
                                // To circumvent replacing newlines with <br /> for the generated html,
176
 
                                // we use carriage returns here. They are later changed back to newlines
177
 
                                $row['bbcode_tpl'] = str_replace("\n", "\r", $row['bbcode_tpl']);
178
 
                                $row['second_pass_replace'] = str_replace("\n", "\r", $row['second_pass_replace']);
179
 
 
180
 
                                $rowset[$row['bbcode_id']] = $row;
181
 
                        }
182
 
                        $db->sql_freeresult($result);
183
 
                }
184
 
 
185
 
                foreach ($bbcode_ids as $bbcode_id)
186
 
                {
187
 
                        switch ($bbcode_id)
188
 
                        {
189
 
                                case 0:
190
 
                                        $this->bbcode_cache[$bbcode_id] = array(
191
 
                                                'str' => array(
192
 
                                                        '[/quote:$uid]' => $this->bbcode_tpl('quote_close', $bbcode_id)
193
 
                                                ),
194
 
                                                'preg' => array(
195
 
                                                        '#\[quote(?:=&quot;(.*?)&quot;)?:$uid\]((?!\[quote(?:=&quot;.*?&quot;)?:$uid\]).)?#ise' => "\$this->bbcode_second_pass_quote('\$1', '\$2')"
196
 
                                                )
197
 
                                        );
198
 
                                break;
199
 
 
200
 
                                case 1:
201
 
                                        $this->bbcode_cache[$bbcode_id] = array(
202
 
                                                'str' => array(
203
 
                                                        '[b:$uid]'      => $this->bbcode_tpl('b_open', $bbcode_id),
204
 
                                                        '[/b:$uid]'     => $this->bbcode_tpl('b_close', $bbcode_id),
205
 
                                                )
206
 
                                        );
207
 
                                break;
208
 
 
209
 
                                case 2:
210
 
                                        $this->bbcode_cache[$bbcode_id] = array(
211
 
                                                'str' => array(
212
 
                                                        '[i:$uid]'      => $this->bbcode_tpl('i_open', $bbcode_id),
213
 
                                                        '[/i:$uid]'     => $this->bbcode_tpl('i_close', $bbcode_id),
214
 
                                                )
215
 
                                        );
216
 
                                break;
217
 
 
218
 
                                case 3:
219
 
                                        $this->bbcode_cache[$bbcode_id] = array(
220
 
                                                'preg' => array(
221
 
                                                        '#\[url:$uid\]((.*?))\[/url:$uid\]#s'                   => $this->bbcode_tpl('url', $bbcode_id),
222
 
                                                        '#\[url=([^\[]+?):$uid\](.*?)\[/url:$uid\]#s'   => $this->bbcode_tpl('url', $bbcode_id),
223
 
                                                )
224
 
                                        );
225
 
                                break;
226
 
 
227
 
                                case 4:
228
 
                                        if ($user->optionget('viewimg'))
229
 
                                        {
230
 
                                                $this->bbcode_cache[$bbcode_id] = array(
231
 
                                                        'preg' => array(
232
 
                                                                '#\[img:$uid\](.*?)\[/img:$uid\]#s'             => $this->bbcode_tpl('img', $bbcode_id),
233
 
                                                        )
234
 
                                                );
235
 
                                        }
236
 
                                        else
237
 
                                        {
238
 
                                                $this->bbcode_cache[$bbcode_id] = array(
239
 
                                                        'preg' => array(
240
 
                                                                '#\[img:$uid\](.*?)\[/img:$uid\]#s'             => str_replace('$2', '[ img ]', $this->bbcode_tpl('url', $bbcode_id, true)),
241
 
                                                        )
242
 
                                                );
243
 
                                        }
244
 
                                break;
245
 
 
246
 
                                case 5:
247
 
                                        $this->bbcode_cache[$bbcode_id] = array(
248
 
                                                'preg' => array(
249
 
                                                        '#\[size=([\-\+]?\d+):$uid\](.*?)\[/size:$uid\]#s'      => $this->bbcode_tpl('size', $bbcode_id),
250
 
                                                )
251
 
                                        );
252
 
                                break;
253
 
 
254
 
                                case 6:
255
 
                                        $this->bbcode_cache[$bbcode_id] = array(
256
 
                                                'preg' => array(
257
 
                                                        '!\[color=(#[0-9a-f]{6}|[a-z\-]+):$uid\](.*?)\[/color:$uid\]!is'        => $this->bbcode_tpl('color', $bbcode_id),
258
 
                                                )
259
 
                                        );
260
 
                                break;
261
 
 
262
 
                                case 7:
263
 
                                        $this->bbcode_cache[$bbcode_id] = array(
264
 
                                                'str' => array(
265
 
                                                        '[u:$uid]'      => $this->bbcode_tpl('u_open', $bbcode_id),
266
 
                                                        '[/u:$uid]'     => $this->bbcode_tpl('u_close', $bbcode_id),
267
 
                                                )
268
 
                                        );
269
 
                                break;
270
 
 
271
 
                                case 8:
272
 
                                        $this->bbcode_cache[$bbcode_id] = array(
273
 
                                                'preg' => array(
274
 
                                                        '#\[code(?:=([a-z]+))?:$uid\](.*?)\[/code:$uid\]#ise'   => "\$this->bbcode_second_pass_code('\$1', '\$2')",
275
 
                                                )
276
 
                                        );
277
 
                                break;
278
 
 
279
 
                                case 9:
280
 
                                        $this->bbcode_cache[$bbcode_id] = array(
281
 
                                                'preg' => array(
282
 
                                                        '#(\[\/?(list|\*):[mou]?:?$uid\])[\n]{1}#'      => "\$1",
283
 
                                                        '#(\[list=([^\[]+):$uid\])[\n]{1}#'                     => "\$1",
284
 
                                                        '#\[list=([^\[]+):$uid\]#e'                                     => "\$this->bbcode_list('\$1')",
285
 
                                                ),
286
 
                                                'str' => array(
287
 
                                                        '[list:$uid]'           => $this->bbcode_tpl('ulist_open_default', $bbcode_id),
288
 
                                                        '[/list:u:$uid]'        => $this->bbcode_tpl('ulist_close', $bbcode_id),
289
 
                                                        '[/list:o:$uid]'        => $this->bbcode_tpl('olist_close', $bbcode_id),
290
 
                                                        '[*:$uid]'                      => $this->bbcode_tpl('listitem', $bbcode_id),
291
 
                                                        '[/*:$uid]'                     => $this->bbcode_tpl('listitem_close', $bbcode_id),
292
 
                                                        '[/*:m:$uid]'           => $this->bbcode_tpl('listitem_close', $bbcode_id)
293
 
                                                ),
294
 
                                        );
295
 
                                break;
296
 
 
297
 
                                case 10:
298
 
                                        $this->bbcode_cache[$bbcode_id] = array(
299
 
                                                'preg' => array(
300
 
                                                        '#\[email:$uid\]((.*?))\[/email:$uid\]#is'                      => $this->bbcode_tpl('email', $bbcode_id),
301
 
                                                        '#\[email=([^\[]+):$uid\](.*?)\[/email:$uid\]#is'       => $this->bbcode_tpl('email', $bbcode_id)
302
 
                                                )
303
 
                                        );
304
 
                                break;
305
 
 
306
 
                                case 11:
307
 
                                        if ($user->optionget('viewflash'))
308
 
                                        {
309
 
                                                $this->bbcode_cache[$bbcode_id] = array(
310
 
                                                        'preg' => array(
311
 
                                                                '#\[flash=([0-9]+),([0-9]+):$uid\](.*?)\[/flash:$uid\]#'        => $this->bbcode_tpl('flash', $bbcode_id),
312
 
                                                        )
313
 
                                                );
314
 
                                        }
315
 
                                        else
316
 
                                        {
317
 
                                                $this->bbcode_cache[$bbcode_id] = array(
318
 
                                                        'preg' => array(
319
 
                                                                '#\[flash=([0-9]+),([0-9]+):$uid\](.*?)\[/flash:$uid\]#'        => str_replace('$1', '$3', str_replace('$2', '[ flash ]', $this->bbcode_tpl('url', $bbcode_id, true)))
320
 
                                                        )
321
 
                                                );
322
 
                                        }
323
 
                                break;
324
 
 
325
 
                                case 12:
326
 
                                        $this->bbcode_cache[$bbcode_id] = array(
327
 
                                                'str'   => array(
328
 
                                                        '[/attachment:$uid]'    => $this->bbcode_tpl('inline_attachment_close', $bbcode_id)
329
 
                                                ),
330
 
                                                'preg'  => array(
331
 
                                                        '#\[attachment=([0-9]+):$uid\]#'        => $this->bbcode_tpl('inline_attachment_open', $bbcode_id)
332
 
                                                )
333
 
                                        );
334
 
                                break;
335
 
 
336
 
                                default:
337
 
                                        if (isset($rowset[$bbcode_id]))
338
 
                                        {
339
 
                                                if ($this->template_bitfield->get($bbcode_id))
340
 
                                                {
341
 
                                                        // The bbcode requires a custom template to be loaded
342
 
                                                        if (!$bbcode_tpl = $this->bbcode_tpl($rowset[$bbcode_id]['bbcode_tag'], $bbcode_id))
343
 
                                                        {
344
 
                                                                // For some reason, the required template seems not to be available, use the default template
345
 
                                                                $bbcode_tpl = (!empty($rowset[$bbcode_id]['second_pass_replace'])) ? $rowset[$bbcode_id]['second_pass_replace'] : $rowset[$bbcode_id]['bbcode_tpl'];
346
 
                                                        }
347
 
                                                        else
348
 
                                                        {
349
 
                                                                // In order to use templates with custom bbcodes we need
350
 
                                                                // to replace all {VARS} to corresponding backreferences
351
 
                                                                // Note that backreferences are numbered from bbcode_match
352
 
                                                                if (preg_match_all('/\{(URL|LOCAL_URL|EMAIL|TEXT|SIMPLETEXT|IDENTIFIER|COLOR|NUMBER)[0-9]*\}/', $rowset[$bbcode_id]['bbcode_match'], $m))
353
 
                                                                {
354
 
                                                                        foreach ($m[0] as $i => $tok)
355
 
                                                                        {
356
 
                                                                                $bbcode_tpl = str_replace($tok, '$' . ($i + 1), $bbcode_tpl);
357
 
                                                                        }
358
 
                                                                }
359
 
                                                        }
360
 
                                                }
361
 
                                                else
362
 
                                                {
363
 
                                                        // Default template
364
 
                                                        $bbcode_tpl = (!empty($rowset[$bbcode_id]['second_pass_replace'])) ? $rowset[$bbcode_id]['second_pass_replace'] : $rowset[$bbcode_id]['bbcode_tpl'];
365
 
                                                }
366
 
 
367
 
                                                // Replace {L_*} lang strings
368
 
                                                $bbcode_tpl = preg_replace('/{L_([A-Z_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $bbcode_tpl);
369
 
 
370
 
                                                if (!empty($rowset[$bbcode_id]['second_pass_replace']))
371
 
                                                {
372
 
                                                        // The custom BBCode requires second-pass pattern replacements
373
 
                                                        $this->bbcode_cache[$bbcode_id] = array(
374
 
                                                                'preg' => array($rowset[$bbcode_id]['second_pass_match'] => $bbcode_tpl)
375
 
                                                        );
376
 
                                                }
377
 
                                                else
378
 
                                                {
379
 
                                                        $this->bbcode_cache[$bbcode_id] = array(
380
 
                                                                'str' => array($rowset[$bbcode_id]['second_pass_match'] => $bbcode_tpl)
381
 
                                                        );
382
 
                                                }
383
 
                                        }
384
 
                                        else
385
 
                                        {
386
 
                                                $this->bbcode_cache[$bbcode_id] = false;
387
 
                                        }
388
 
                                break;
389
 
                        }
390
 
                }
391
 
        }
392
 
 
393
 
        /**
394
 
        * Return bbcode template
395
 
        */
396
 
        function bbcode_tpl($tpl_name, $bbcode_id = -1, $skip_bitfield_check = false)
397
 
        {
398
 
                static $bbcode_hardtpl = array();
399
 
                if (empty($bbcode_hardtpl))
400
 
                {
401
 
                        global $user;
402
 
                        
403
 
                        $bbcode_hardtpl = array(
404
 
                                'b_open'        => '<span style="font-weight: bold">',
405
 
                                'b_close'       => '</span>',
406
 
                                'i_open'        => '<span style="font-style: italic">',
407
 
                                'i_close'       => '</span>',
408
 
                                'u_open'        => '<span style="text-decoration: underline">',
409
 
                                'u_close'       => '</span>',
410
 
                                'img'           => '<img src="$1" alt="' . $user->lang['IMAGE'] . '" />',
411
 
                                'size'          => '<span style="font-size: $1%; line-height: normal">$2</span>',
412
 
                                'color'         => '<span style="color: $1">$2</span>',
413
 
                                'email'         => '<a href="mailto:$1">$2</a>'
414
 
                        );
415
 
                }
416
 
 
417
 
                if ($bbcode_id != -1 && !$skip_bitfield_check && !$this->template_bitfield->get($bbcode_id))
418
 
                {
419
 
                        return (isset($bbcode_hardtpl[$tpl_name])) ? $bbcode_hardtpl[$tpl_name] : false;
420
 
                }
421
 
 
422
 
                if (empty($this->bbcode_template))
423
 
                {
424
 
                        if (($tpl = file_get_contents($this->template_filename)) === false)
425
 
                        {
426
 
                                trigger_error('Could not load bbcode template', E_USER_ERROR);
427
 
                        }
428
 
 
429
 
                        // replace \ with \\ and then ' with \'.
430
 
                        $tpl = str_replace('\\', '\\\\', $tpl);
431
 
                        $tpl = str_replace("'", "\'", $tpl);
432
 
 
433
 
                        // strip newlines and indent
434
 
                        $tpl = preg_replace("/\n[\n\r\s\t]*/", '', $tpl);
435
 
 
436
 
                        // Turn template blocks into PHP assignment statements for the values of $bbcode_tpl..
437
 
                        $this->bbcode_template = array();
438
 
 
439
 
                        $matches = preg_match_all('#<!-- BEGIN (.*?) -->(.*?)<!-- END (?:.*?) -->#', $tpl, $match);
440
 
 
441
 
                        for ($i = 0; $i < $matches; $i++)
442
 
                        {
443
 
                                if (empty($match[1][$i]))
444
 
                                {
445
 
                                        continue;
446
 
                                }
447
 
 
448
 
                                $this->bbcode_template[$match[1][$i]] = $this->bbcode_tpl_replace($match[1][$i], $match[2][$i]);
449
 
                        }
450
 
                }
451
 
 
452
 
                return (isset($this->bbcode_template[$tpl_name])) ? $this->bbcode_template[$tpl_name] : ((isset($bbcode_hardtpl[$tpl_name])) ? $bbcode_hardtpl[$tpl_name] : false);
453
 
        }
454
 
 
455
 
        /**
456
 
        * Return bbcode template replacement
457
 
        */
458
 
        function bbcode_tpl_replace($tpl_name, $tpl)
459
 
        {
460
 
                global $user;
461
 
 
462
 
                static $replacements = array(
463
 
                        'quote_username_open'   => array('{USERNAME}'   => '$1'),
464
 
                        'color'                                 => array('{COLOR}'              => '$1', '{TEXT}'                       => '$2'),
465
 
                        'size'                                  => array('{SIZE}'               => '$1', '{TEXT}'                       => '$2'),
466
 
                        'img'                                   => array('{URL}'                => '$1'),
467
 
                        'flash'                                 => array('{WIDTH}'              => '$1', '{HEIGHT}'                     => '$2', '{URL}'        => '$3'),
468
 
                        'url'                                   => array('{URL}'                => '$1', '{DESCRIPTION}'        => '$2'),
469
 
                        'email'                                 => array('{EMAIL}'              => '$1', '{DESCRIPTION}'        => '$2')
470
 
                );
471
 
 
472
 
                $tpl = preg_replace('/{L_([A-Z_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $tpl);
473
 
 
474
 
                if (!empty($replacements[$tpl_name]))
475
 
                {
476
 
                        $tpl = strtr($tpl, $replacements[$tpl_name]);
477
 
                }
478
 
 
479
 
                return trim($tpl);
480
 
        }
481
 
 
482
 
        /**
483
 
        * Second parse list bbcode
484
 
        */
485
 
        function bbcode_list($type)
486
 
        {
487
 
                if ($type == '')
488
 
                {
489
 
                        $tpl = 'ulist_open_default';
490
 
                        $type = 'default';
491
 
                }
492
 
                else if ($type == 'i')
493
 
                {
494
 
                        $tpl = 'olist_open';
495
 
                        $type = 'lower-roman';
496
 
                }
497
 
                else if ($type == 'I')
498
 
                {
499
 
                        $tpl = 'olist_open';
500
 
                        $type = 'upper-roman';
501
 
                }
502
 
                else if (preg_match('#^(disc|circle|square)$#i', $type))
503
 
                {
504
 
                        $tpl = 'ulist_open';
505
 
                        $type = strtolower($type);
506
 
                }
507
 
                else if (preg_match('#^[a-z]$#', $type))
508
 
                {
509
 
                        $tpl = 'olist_open';
510
 
                        $type = 'lower-alpha';
511
 
                }
512
 
                else if (preg_match('#[A-Z]#', $type))
513
 
                {
514
 
                        $tpl = 'olist_open';
515
 
                        $type = 'upper-alpha';
516
 
                }
517
 
                else if (is_numeric($type))
518
 
                {
519
 
                        $tpl = 'olist_open';
520
 
                        $type = 'arabic-numbers';
521
 
                }
522
 
                else
523
 
                {
524
 
                        $tpl = 'olist_open';
525
 
                        $type = 'arabic-numbers';
526
 
                }
527
 
 
528
 
                return str_replace('{LIST_TYPE}', $type, $this->bbcode_tpl($tpl));
529
 
        }
530
 
 
531
 
        /**
532
 
        * Second parse quote tag
533
 
        */
534
 
        function bbcode_second_pass_quote($username, $quote)
535
 
        {
536
 
                // when using the /e modifier, preg_replace slashes double-quotes but does not
537
 
                // seem to slash anything else
538
 
                $quote = str_replace('\"', '"', $quote);
539
 
                $username = str_replace('\"', '"', $username);
540
 
 
541
 
                // remove newline at the beginning
542
 
                if ($quote == "\n")
543
 
                {
544
 
                        $quote = '';
545
 
                }
546
 
 
547
 
                $quote = (($username) ? str_replace('$1', $username, $this->bbcode_tpl('quote_username_open')) : $this->bbcode_tpl('quote_open')) . $quote;
548
 
 
549
 
                return $quote;
550
 
        }
551
 
 
552
 
        /**
553
 
        * Second parse code tag
554
 
        */
555
 
        function bbcode_second_pass_code($type, $code)
556
 
        {
557
 
                // when using the /e modifier, preg_replace slashes double-quotes but does not
558
 
                // seem to slash anything else
559
 
                $code = str_replace('\"', '"', $code);
560
 
 
561
 
                switch ($type)
562
 
                {
563
 
                        case 'php':
564
 
                                // Not the english way, but valid because of hardcoded syntax highlighting
565
 
                                if (strpos($code, '<span class="syntaxdefault"><br /></span>') === 0)
566
 
                                {
567
 
                                        $code = substr($code, 41);
568
 
                                }
569
 
 
570
 
                        // no break;
571
 
 
572
 
                        default:
573
 
                                $code = str_replace("\t", '&nbsp; &nbsp;', $code);
574
 
                                $code = str_replace('  ', '&nbsp; ', $code);
575
 
                                $code = str_replace('  ', ' &nbsp;', $code);
576
 
 
577
 
                                // remove newline at the beginning
578
 
                                if (!empty($code) && $code[0] == "\n")
579
 
                                {
580
 
                                        $code = substr($code, 1);
581
 
                                }
582
 
                        break;
583
 
                }
584
 
 
585
 
                $code = $this->bbcode_tpl('code_open') . $code . $this->bbcode_tpl('code_close');
586
 
 
587
 
                return $code;
588
 
        }
589
 
}
590
 
 
591
 
?>
 
 
b'\\ No newline at end of file'