diff options
Diffstat (limited to 'phpBB/includes')
-rw-r--r-- | phpBB/includes/formatted_text.php | 596 |
1 files changed, 298 insertions, 298 deletions
diff --git a/phpBB/includes/formatted_text.php b/phpBB/includes/formatted_text.php index 848ddcd695..65bda8f185 100644 --- a/phpBB/includes/formatted_text.php +++ b/phpBB/includes/formatted_text.php @@ -1,298 +1,298 @@ -<?php
-/**
-*
-* @package phpBB3
-* @version
-* @copyright (c) 2005 phpBB Group
-* @license http://opensource.org/licenses/gpl-license.php GNU Public License
-*
-*/
-
-/**
-* @ignore
-*/
-if (!defined('IN_PHPBB'))
-{
- exit;
-}
-
-/**
- * Formatted text class to handle any text that can contain BBCodes, smielys, magic URLs or under word censor.
- */
-class formatted_text
-{
- /**
- * Unformated text.
- *
- * @var string
- */
- private $text;
-
- /**
- * Internal representation (first_pass data).
- *
- * @var string
- */
- private $meta;
-
- /**
- * Formatting options as bit flag.
- *
- * @see bbcode_parser
- *
- * @var int
- */
- private $flags;
-
- /**
- * Compiled $text. For dispaly.
- *
- * @var string
- */
- private $compiled;
-
- /**
- * Set to true if text, meta or flags have been changed, false otherwise.
- *
- * @var bool
- */
- private $changed;
-
- /**
- * DB table to update
- *
- * @var string
- */
- private $update_table = '';
-
- /**
- * Column in $update_table to update.
- *
- * @var string
- */
- private $update_column = '';
-
- /**
- * Where clause for auto update.
- *
- * @var string
- */
- private $update_where = '';
-
- /**
- * Creates a new instance.
- *
- * @param string $text
- * @param string $meta
- * @param int $flags
- */
- public function __construct($text, $meta = '', $flags = 0)
- {
- $this->text = $text;
- $this->meta = $meta;
- $this->flags = $flags;
- $this->compiled = '';
-
- if ($meta == '')
- {
- $this->changed = true;
- }
- else
- {
- $this->changed = false;
- }
- }
-
- public function __destruct()
- {
- if ($this->changed && $this->update_table)
- {
- $this->to_db($this->update_table, $this->update_column, $this->update_where);
- }
- }
-
- /**
- * Convieniently initialize a formatted_text object from
- * a database result set. The array must contain the following indexes:
- * $column, {$column}_meta and {$column}_flags
- *
- *
- * @param array $data
- * @param string $column
- * @return formatted_text
- */
- public static function from_db_data(array $data, $column)
- {
- return new formatted_text($data[$column], $data[$column . '_meta'], (int) $data[$column . '_flags']);
- }
-
- /**
- * Returns the $text formatted, ready to be displayed on a webpage.
- *
- * @return string
- */
- public function to_display()
- {
- $this->set_compiled();
- return $this->compiled;
- }
-
- /**
- * Updates $table, sets $column, {$column}_meta and {$column}_flags.
- * All 3 columns must exist.
- *
- * @param string $table
- * @param string $column
- * @param string $where
- * @return bool
- */
- public function to_db($table, $column, $where = '1')
- {
- global $db;
- $this->changed = false;
-
- $sql = 'UPDATE ' . $table . ' SET ' . $db->sql_build_query('UPDATE', $this->to_db_data($column))
- . ' WHERE ' . $where;
- return (bool) $db->sql_query($sql);
- }
-
- /**
- * Returns an array containing $column, {$column}_meta and {$column}_flags
- * indexes to be used with query generating functions.
- *
- * @param string $column
- * @return array
- */
- public function to_db_data($column)
- {
- $this->set_meta();
- return array($column => $this->text, $column . '_meta' => $this->meta, $column . '_flags' => $this->flags);
- }
-
- /**
- * Enable automatic database update on
- *
- * @param string $table
- * @param string $column
- * @param string $where
- */
- public function set_auto_update($table, $column, $where = '1')
- {
- $this->update_table = $table;
- $this->update_column = $column;
- $this->update_where = $where;
- }
-
- /**
- * Sets $meta if not set.
- */
- private function set_meta()
- {
- if (strlen($this->meta))
- {
- return;
- }
-
- $parser = new phpbb_bbcode_parser;
- $this->meta = $parser->first_pass($this->text);
- }
-
- /**
- * Sets $compiled if not set.
- */
- private function set_compiled()
- {
- $this->set_meta();
-
- if (strlen($this->compiled))
- {
- return;
- }
-
- $parser = new phpbb_bbcode_parser;
- $parser->set_flags($this->flags);
- $this->compiled = $parser->second_pass($this->meta);
- }
-
- /**
- * Sets $text.
- *
- * @param string $text
- */
- public function set_text($text)
- {
- if ($this->text != $text)
- {
- $this->text = (string) $text;
- $this->meta = '';
- $this->compiled = '';
- }
- }
-
- /**
- * Sets $flags.
- *
- * @param int $flags
- */
- public function set_flags($flags)
- {
- $flags = (int) $flags;
- if ($this->flags != $flags)
- {
- $this->flags = $flags;
- $this->compiled = '';
- }
- }
-
- /**
- * Returns the current text.
- *
- * @return string
- */
- public function get_text()
- {
- return $this->text;
- }
-
- /**
- * Returns the current(!!) metadata.
- *
- * @return string
- */
- public function get_meta()
- {
- return $this->meta;
- }
-
- /**
- * Returns the current flags.
- *
- * @return int
- */
- public function get_flags()
- {
- return $this->flags;
- }
-
- /**
- * Returns true if $this is equal to $other.
- * Objects are only equal if $text and $flags are equal.
- *
- * @param formatted_text $other
- * @return bool
- */
- public function eq(formatted_text $other)
- {
- return $this->flags == $other->get_flags() && $this->text == $other->get_text();
- }
-
- /**
- * Cast to string. Object is represented by the formatted version of $text with respect to $flags.
- *
- * @return string
- */
- public function __toString()
- {
- return $this->to_display();
- }
-}
+<?php +/** +* +* @package phpBB3 +* @version +* @copyright (c) 2005 phpBB Group +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +* +*/ + +/** +* @ignore +*/ +if (!defined('IN_PHPBB')) +{ + exit; +} + +/** + * Formatted text class to handle any text that can contain BBCodes, smielys, magic URLs or under word censor. + */ +class formatted_text +{ + /** + * Unformated text. + * + * @var string + */ + private $text; + + /** + * Internal representation (first_pass data). + * + * @var string + */ + private $meta; + + /** + * Formatting options as bit flag. + * + * @see bbcode_parser + * + * @var int + */ + private $flags; + + /** + * Compiled $text. For dispaly. + * + * @var string + */ + private $compiled; + + /** + * Set to true if text, meta or flags have been changed, false otherwise. + * + * @var bool + */ + private $changed; + + /** + * DB table to update + * + * @var string + */ + private $update_table = ''; + + /** + * Column in $update_table to update. + * + * @var string + */ + private $update_column = ''; + + /** + * Where clause for auto update. + * + * @var string + */ + private $update_where = ''; + + /** + * Creates a new instance. + * + * @param string $text + * @param string $meta + * @param int $flags + */ + public function __construct($text, $meta = '', $flags = 0) + { + $this->text = $text; + $this->meta = $meta; + $this->flags = $flags; + $this->compiled = ''; + + if ($meta == '') + { + $this->changed = true; + } + else + { + $this->changed = false; + } + } + + public function __destruct() + { + if ($this->changed && $this->update_table) + { + $this->to_db($this->update_table, $this->update_column, $this->update_where); + } + } + + /** + * Convieniently initialize a formatted_text object from + * a database result set. The array must contain the following indexes: + * $column, {$column}_meta and {$column}_flags + * + * + * @param array $data + * @param string $column + * @return formatted_text + */ + public static function from_db_data(array $data, $column) + { + return new formatted_text($data[$column], $data[$column . '_meta'], (int) $data[$column . '_flags']); + } + + /** + * Returns the $text formatted, ready to be displayed on a webpage. + * + * @return string + */ + public function to_display() + { + $this->set_compiled(); + return $this->compiled; + } + + /** + * Updates $table, sets $column, {$column}_meta and {$column}_flags. + * All 3 columns must exist. + * + * @param string $table + * @param string $column + * @param string $where + * @return bool + */ + public function to_db($table, $column, $where = '1') + { + global $db; + $this->changed = false; + + $sql = 'UPDATE ' . $table . ' SET ' . $db->sql_build_query('UPDATE', $this->to_db_data($column)) + . ' WHERE ' . $where; + return (bool) $db->sql_query($sql); + } + + /** + * Returns an array containing $column, {$column}_meta and {$column}_flags + * indexes to be used with query generating functions. + * + * @param string $column + * @return array + */ + public function to_db_data($column) + { + $this->set_meta(); + return array($column => $this->text, $column . '_meta' => $this->meta, $column . '_flags' => $this->flags); + } + + /** + * Enable automatic database update on + * + * @param string $table + * @param string $column + * @param string $where + */ + public function set_auto_update($table, $column, $where = '1') + { + $this->update_table = $table; + $this->update_column = $column; + $this->update_where = $where; + } + + /** + * Sets $meta if not set. + */ + private function set_meta() + { + if (strlen($this->meta)) + { + return; + } + + $parser = new phpbb_bbcode_parser; + $this->meta = $parser->first_pass($this->text); + } + + /** + * Sets $compiled if not set. + */ + private function set_compiled() + { + $this->set_meta(); + + if (strlen($this->compiled)) + { + return; + } + + $parser = new phpbb_bbcode_parser; + $parser->set_flags($this->flags); + $this->compiled = $parser->second_pass($this->meta); + } + + /** + * Sets $text. + * + * @param string $text + */ + public function set_text($text) + { + if ($this->text != $text) + { + $this->text = (string) $text; + $this->meta = ''; + $this->compiled = ''; + } + } + + /** + * Sets $flags. + * + * @param int $flags + */ + public function set_flags($flags) + { + $flags = (int) $flags; + if ($this->flags != $flags) + { + $this->flags = $flags; + $this->compiled = ''; + } + } + + /** + * Returns the current text. + * + * @return string + */ + public function get_text() + { + return $this->text; + } + + /** + * Returns the current(!!) metadata. + * + * @return string + */ + public function get_meta() + { + return $this->meta; + } + + /** + * Returns the current flags. + * + * @return int + */ + public function get_flags() + { + return $this->flags; + } + + /** + * Returns true if $this is equal to $other. + * Objects are only equal if $text and $flags are equal. + * + * @param formatted_text $other + * @return bool + */ + public function eq(formatted_text $other) + { + return $this->flags == $other->get_flags() && $this->text == $other->get_text(); + } + + /** + * Cast to string. Object is represented by the formatted version of $text with respect to $flags. + * + * @return string + */ + public function __toString() + { + return $this->to_display(); + } +} |