Ejemplo n.º 1
0
 /**
  * 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));
 }