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

« back to all changes in this revision

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

  • Committer: mattgiuca
  • Date: 2008-01-11 00:49:06 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:172
util: Added buildurl function.

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'