Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

utils.php

Zuletzt modifiziert: 09.10.2024, 12:54 - Dateigröße: 3.76 KiB


 001  <?php
 002  /**
 003  *
 004  * This file is part of the phpBB Forum Software package.
 005  *
 006  * @copyright (c) phpBB Limited <https://www.phpbb.com>
 007  * @license GNU General Public License, version 2 (GPL-2.0)
 008  *
 009  * For full copyright and license information, please see
 010  * the docs/CREDITS.txt file.
 011  *
 012  */
 013   
 014  namespace phpbb\textformatter\s9e;
 015   
 016  /**
 017  * Text manipulation utilities
 018  */
 019  class utils implements \phpbb\textformatter\utils_interface
 020  {
 021      /**
 022      * Replace BBCodes and other formatting elements with whitespace
 023      *
 024      * NOTE: preserves smilies as text
 025      *
 026      * @param  string $xml Parsed text
 027      * @return string      Plain text
 028      */
 029      public function clean_formatting($xml)
 030      {
 031          // Insert a space before <s> and <e> then remove formatting
 032          $xml = preg_replace('#<[es]>#', ' $0', $xml);
 033   
 034          return \s9e\TextFormatter\Utils::removeFormatting($xml);
 035      }
 036   
 037      /**
 038      * Format given string to be used as an attribute value
 039      *
 040      * Will return the string as-is if it can be used in a BBCode without quotes. Otherwise,
 041      * it will use either single- or double- quotes depending on whichever requires less escaping.
 042      * Quotes and backslashes are escaped with backslashes where necessary
 043      *
 044      * @param  string $str Original string
 045      * @return string      Same string if possible, escaped string within quotes otherwise
 046      */
 047      protected function format_attribute_value($str)
 048      {
 049          if (!preg_match('/[ "\'\\\\\\]]/', $str))
 050          {
 051              // Return as-is if it contains none of: space, ' " \ or ]
 052              return $str;
 053          }
 054          $singleQuoted = "'" . addcslashes($str, "\\'") . "'";
 055          $doubleQuoted = '"' . addcslashes($str, '\\"') . '"';
 056   
 057          return (strlen($singleQuoted) < strlen($doubleQuoted)) ? $singleQuoted : $doubleQuoted;
 058      }
 059   
 060      /**
 061      * {@inheritdoc}
 062      */
 063      public function generate_quote($text, array $attributes = array())
 064      {
 065          $text = trim($text);
 066          $quote = '[quote';
 067          if (isset($attributes['author']))
 068          {
 069              // Add the author as the BBCode's default attribute
 070              $quote .= '=' . $this->format_attribute_value($attributes['author']);
 071              unset($attributes['author']);
 072          }
 073   
 074          if (isset($attributes['user_id']) && $attributes['user_id'] == ANONYMOUS)
 075          {
 076              unset($attributes['user_id']);
 077          }
 078   
 079          ksort($attributes);
 080          foreach ($attributes as $name => $value)
 081          {
 082              $quote .= ' ' . $name . '=' . $this->format_attribute_value($value);
 083          }
 084          $quote .= ']';
 085          $newline = (strlen($quote . $text . '[/quote]') > 80 || strpos($text, "\n") !== false) ? "\n" : '';
 086          $quote .= $newline . $text . $newline . '[/quote]';
 087   
 088          return $quote;
 089      }
 090   
 091      /**
 092      * Get a list of quote authors, limited to the outermost quotes
 093      *
 094      * @param  string   $xml Parsed text
 095      * @return string[]      List of authors
 096      */
 097      public function get_outermost_quote_authors($xml)
 098      {
 099          $authors = array();
 100          if (strpos($xml, '<QUOTE ') === false)
 101          {
 102              return $authors;
 103          }
 104   
 105          $dom = new \DOMDocument;
 106          $dom->loadXML($xml);
 107          $xpath = new \DOMXPath($dom);
 108          foreach ($xpath->query('//QUOTE[not(ancestor::QUOTE)]/@author') as $author)
 109          {
 110              $authors[] = $author->textContent;
 111          }
 112   
 113          return $authors;
 114      }
 115   
 116      /**
 117      * Remove given BBCode and its content, at given nesting depth
 118      *
 119      * @param  string  $xml         Parsed text
 120      * @param  string  $bbcode_name BBCode's name
 121      * @param  integer $depth       Minimum nesting depth (number of parents of the same name)
 122      * @return string               Parsed text
 123      */
 124      public function remove_bbcode($xml, $bbcode_name, $depth = 0)
 125      {
 126          return \s9e\TextFormatter\Utils::removeTag($xml, strtoupper($bbcode_name), $depth);
 127      }
 128   
 129      /**
 130      * Return a parsed text to its original form
 131      *
 132      * @param  string $xml Parsed text
 133      * @return string      Original plain text
 134      */
 135      public function unparse($xml)
 136      {
 137          return \s9e\TextFormatter\Unparser::unparse($xml);
 138      }
 139   
 140      /**
 141       * {@inheritdoc}
 142       */
 143      public function is_empty($text)
 144      {
 145          if ($text === null || $text === '')
 146          {
 147              return true;
 148          }
 149   
 150          return trim($this->unparse($text)) === '';
 151      }
 152  }
 153