bbcode_firstpass::bbcode_init PHP Méthode

bbcode_init() public méthode

Init bbcode data for later parsing
public bbcode_init ( $allow_custom_bbcode = true )
    function bbcode_init($allow_custom_bbcode = true)
    {
        global $phpbb_dispatcher;
        static $rowset;
        // This array holds all bbcode data. BBCodes will be processed in this
        // order, so it is important to keep [code] in first position and
        // [quote] in second position.
        // To parse multiline URL we enable dotall option setting only for URL text
        // but not for link itself, thus [url][/url] is not affected.
        //
        // To perform custom validation in extension, use $this->validate_bbcode_by_extension()
        // method which accepts variable number of parameters
        $this->bbcodes = array('code' => array('bbcode_id' => 8, 'regexp' => array('#\\[code(?:=([a-z]+))?\\](.+\\[/code\\])#uise' => "\$this->bbcode_code('\$1', '\$2')")), 'quote' => array('bbcode_id' => 0, 'regexp' => array('#\\[quote(?:="(.*?)")?\\](.+)\\[/quote\\]#uise' => "\$this->bbcode_quote('\$0')")), 'attachment' => array('bbcode_id' => 12, 'regexp' => array('#\\[attachment=([0-9]+)\\](.*?)\\[/attachment\\]#uise' => "\$this->bbcode_attachment('\$1', '\$2')")), 'b' => array('bbcode_id' => 1, 'regexp' => array('#\\[b\\](.*?)\\[/b\\]#uise' => "\$this->bbcode_strong('\$1')")), 'i' => array('bbcode_id' => 2, 'regexp' => array('#\\[i\\](.*?)\\[/i\\]#uise' => "\$this->bbcode_italic('\$1')")), 'url' => array('bbcode_id' => 3, 'regexp' => array('#\\[url(=(.*))?\\](?(1)((?s).*(?-s))|(.*))\\[/url\\]#uiUe' => "\$this->validate_url('\$2', ('\$3') ? '\$3' : '\$4')")), 'img' => array('bbcode_id' => 4, 'regexp' => array('#\\[img\\](.*)\\[/img\\]#uiUe' => "\$this->bbcode_img('\$1')")), 'size' => array('bbcode_id' => 5, 'regexp' => array('#\\[size=([\\-\\+]?\\d+)\\](.*?)\\[/size\\]#uise' => "\$this->bbcode_size('\$1', '\$2')")), 'color' => array('bbcode_id' => 6, 'regexp' => array('!\\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\\-]+)\\](.*?)\\[/color\\]!uise' => "\$this->bbcode_color('\$1', '\$2')")), 'u' => array('bbcode_id' => 7, 'regexp' => array('#\\[u\\](.*?)\\[/u\\]#uise' => "\$this->bbcode_underline('\$1')")), 'list' => array('bbcode_id' => 9, 'regexp' => array('#\\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\\[/list]#uise' => "\$this->bbcode_parse_list('\$0')")), 'email' => array('bbcode_id' => 10, 'regexp' => array('#\\[email=?(.*?)?\\](.*?)\\[/email\\]#uise' => "\$this->validate_email('\$1', '\$2')")), 'flash' => array('bbcode_id' => 11, 'regexp' => array('#\\[flash=([0-9]+),([0-9]+)\\](.*?)\\[/flash\\]#uie' => "\$this->bbcode_flash('\$1', '\$2', '\$3')")));
        // Zero the parsed items array
        $this->parsed_items = array();
        foreach ($this->bbcodes as $tag => $bbcode_data) {
            $this->parsed_items[$tag] = 0;
        }
        if (!$allow_custom_bbcode) {
            return;
        }
        if (!is_array($rowset)) {
            global $db;
            $rowset = array();
            $sql = 'SELECT *
				FROM ' . BBCODES_TABLE;
            $result = $db->sql_query($sql);
            while ($row = $db->sql_fetchrow($result)) {
                $rowset[] = $row;
            }
            $db->sql_freeresult($result);
        }
        foreach ($rowset as $row) {
            $this->bbcodes[$row['bbcode_tag']] = array('bbcode_id' => (int) $row['bbcode_id'], 'regexp' => array($row['first_pass_match'] => str_replace('$uid', $this->bbcode_uid, $row['first_pass_replace'])));
        }
        $bbcodes = $this->bbcodes;
        /**
         * Event to modify the bbcode data for later parsing
         *
         * @event core.modify_bbcode_init
         * @var array	bbcodes		Array of bbcode data for use in parsing
         * @var array	rowset		Array of bbcode data from the database
         * @since 3.1.0-a3
         */
        $vars = array('bbcodes', 'rowset');
        extract($phpbb_dispatcher->trigger_event('core.modify_bbcode_init', compact($vars)));
        $this->bbcodes = $bbcodes;
    }

Usage Example

Exemple #1
0
 /**
  * @dataProvider url_bbcode_test_data
  */
 public function test_url($description, $message, $expected)
 {
     global $user;
     $user = new phpbb_mock_user();
     $bbcode = new bbcode_firstpass();
     $bbcode->message = $message;
     $bbcode->bbcode_init(false);
     $bbcode->parse_bbcode();
     $this->assertEquals($expected, $bbcode->message);
 }
All Usage Examples Of bbcode_firstpass::bbcode_init