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

« back to all changes in this revision

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

Dispatch now generates an index for each plugin type, allowing plugins to
be written which are aware of other plugins, and other plugin types.

All view plugins now subclass from ivle.webapp.base.plugins.ViewPlugin,
as opposed to subclassing BasePlugin directly. This will allow us to
easily re-write console as an OverlayPlugin, and allow future new
plugins types to be created.

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'