phpBB

Development Wiki

Generate text for storage

From phpBB Development Wiki

Revision as of 15:39, 2 November 2013 by Brunoais (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

generate_text_for_storage –– Display custom parsed text on user-facing pages.

Description

  1.  string[] generate_text_for_storage(string &$text, string &$uid, string &$bitfield, int &$flags, bool $allow_bbcode = false, bool $allow_urls = false, bool $allow_smilies = false)

Grab data from the user, manipulate the input according to the parameters then it returns the information meant to be sent to the database
This function is located in the /includes/functions_content.php file.

Parameters

Parameter Usage
text Text string with the original text that is replaced with the text to send to the database generate_text_for_storage.
uid BBCode UID, a randomly generated unique identifier to mark the bbcodes identified by the first pass encoding (which uses regular expressions) so they can be replaced using the quicker str_replace in the second pass.
bitfield Bit field containing the information which bbcode is used in the text so only the relavant ones need to be loaded from the database.

BBCode bitfield. Used if $flags set BBCode enabled.

flags Integer flag containing the information whether bbcode, smilies and magic urls are enabled (OPTION_FLAG_BBCODE, OPTION_FLAG_SMILIES and OPTION_FLAG_LINKS). Sometimes you will find this separated into enable_bbcode, enable_smilies and enable_magic_url. Column names vary from table to table.

Return Values

Returns the text string to display to user.

Examples

Example #1 bbcode_options

This example uses the bbcode_options field which is used in forums and groups description parsing:

$sql 'SELECT text, bbcode_uid, bbcode_bitfield, bbcode_options
    FROM ' 
YOUR_TABLE '
    WHERE some_id = ' 
. (int) $example_id;
$result $db->sql_query($sql);
$row $db->sql_fetchrow($result);
$db->sql_freeresult($result);

$text generate_text_for_storage($row['text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']);

$template->assign_vars(array(
    
'TEXT'      => $text,
));

Example #2 Individual bbcode_options

This example uses the enable_bbcode, enable_smilies and enable_magic_url flags which can be used instead of a single options field and is used in parsing posts (for example).

$sql 'SELECT text, bbcode_uid, bbcode_bitfield, enable_bbcode, enable_smilies, enable_magic_url
    FROM ' 
YOUR_TABLE '
    WHERE some_id = ' 
. (int) $example_id;
$result $db->sql_query($sql);
$row $db->sql_fetchrow($result);
$db->sql_freeresult($result);

// Add up the flag options...
$bbcode_options = (($row['enable_bbcode']) ? OPTION_FLAG_BBCODE 0) +
    ((
$row['enable_smilies']) ? OPTION_FLAG_SMILIES 0) + 
    ((
$row['enable_magic_url']) ? OPTION_FLAG_LINKS 0);

$template->assign_vars(array(
    
'TEXT'      => generate_text_for_storage($row['text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $bbcode_options),
));

Example #3 Forums Table Real World Example

Real-world example of a query that could be performed on the forums table to display the forum description.

$sql 'SELECT forum_name, forum_desc, forum_desc_uid, forum_desc_bitfield, forum_desc_options
        FROM ' 
FORUMS_TABLE '
        WHERE forum_id = ' 
. (int) $forum_id;
$result $db->sql_query($sql);
$row $db->sql_fetchrow($result);
$db->sql_freeresult($result);

$template->assign_vars(array(
    
'FORUM_NAME'        => $row['forum_name'],
    
'FORUM_DESC'        => generate_text_for_storage($row['forum_desc'], $row['forum_desc_uid'], $row['forum_desc_bitfield'], $row['forum_desc_options']),
));

Notes

Option Text Flags

The OPTION_FLAG_* constants are defined as:
define('OPTION_FLAG_BBCODE', 1);
define('OPTION_FLAG_SMILIES', 2);
define('OPTION_FLAG_LINKS', 4);
Adding these constants together will result in all three options being enabled.

See Also