/** * Format a [quote] tag. * * This tag can come in a variety of flavors: * * ``` * [quote]...[/quote] * [quote=Tom]...[/quote] * [quote name="Tom"]...[/quote] * ``` * * In the third form, you can also add a date="" parameter to display the date * on which Tom wrote it, and you can add a url="" parameter to turn the author's * name into a link. A full example might be: * * ``` * [quote name="Tom" date="July 4, 1776 3:48 PM" url="http://www.constitution.gov"]...[/quote] * ``` * * The URL only allows http, https, mailto, gopher, ftp, and feed protocols for safety. * * @param BBCode $bbcode The {@link BBCode} object doing the parsing. * @param int $action The current action being performed on the tag. * @param string $name The name of the tag. * @param string $default The default value passed to the tag in the form: `[tag=default]`. * @param array $params All of the parameters passed to the tag. * @param string $content The content of the tag. Only available when {@link $action} is **BBCODE_OUTPUT**. * @return bool|string Returns the quote HTML or **true** if {@link $action} is **BBCode::BBCODE_CHECK**. */ public function doQuote(BBCode $bbcode, $action, $name, $default, $params, $content) { if ($action == BBCode::BBCODE_CHECK) { return true; } if (isset($params['name'])) { $title = htmlspecialchars(trim($params['name'])) . " wrote"; if (isset($params['date'])) { $title .= " on " . htmlspecialchars(trim($params['date'])); } $title .= ":"; if (isset($params['url'])) { $url = trim($params['url']); if ($bbcode->isValidURL($url)) { $title = "<a href=\"" . htmlspecialchars($params['url']) . "\">" . $title . "</a>"; } } } elseif (!is_string($default)) { $title = "Quote:"; } else { $title = htmlspecialchars(trim($default)) . " wrote:"; } return $bbcode->fillTemplate($bbcode->getQuoteTemplate(), array("title" => $title, "content" => $content)); }