]> git.mxchange.org Git - friendica.git/blobdiff - src/Content/Text/BBCode.php
Blanks replaced
[friendica.git] / src / Content / Text / BBCode.php
index bb92640a1dabe2a0b46527f795d0c9fe6c1e1ab1..4f7ff1f2411f9a78945627df8402470e72ed71ec 100644 (file)
@@ -1204,7 +1204,7 @@ class BBCode
                $text = DI::cache()->get($cache_key);
 
                if (is_null($text)) {
-                       $curlResult = DI::httpClient()->head($match[1], HttpClientAccept::DEFAULT, [HttpClientOptions::TIMEOUT => DI::config()->get('system', 'xrd_timeout')]);
+                       $curlResult = DI::httpClient()->head($match[1], [HttpClientOptions::TIMEOUT => DI::config()->get('system', 'xrd_timeout')]);
                        if ($curlResult->isSuccess()) {
                                $mimetype = $curlResult->getHeader('Content-Type')[0] ?? '';
                        } else {
@@ -1275,7 +1275,7 @@ class BBCode
                        return $text;
                }
 
-               $curlResult = DI::httpClient()->head($match[1], HttpClientAccept::DEFAULT, [HttpClientOptions::TIMEOUT => DI::config()->get('system', 'xrd_timeout')]);
+               $curlResult = DI::httpClient()->head($match[1], [HttpClientOptions::TIMEOUT => DI::config()->get('system', 'xrd_timeout')]);
                if ($curlResult->isSuccess()) {
                        $mimetype = $curlResult->getHeader('Content-Type')[0] ?? '';
                } else {
@@ -2086,11 +2086,15 @@ class BBCode
         * @param string $text The text with BBCode
         * @return string The same text - but without "abstract" element
         */
-       public static function stripAbstract($text)
+       public static function stripAbstract(string $text): string
        {
                DI::profiler()->startRecording('rendering');
-               $text = preg_replace("/[\s|\n]*\[abstract\].*?\[\/abstract\][\s|\n]*/ism", ' ', $text);
-               $text = preg_replace("/[\s|\n]*\[abstract=.*?\].*?\[\/abstract][\s|\n]*/ism", ' ', $text);
+
+               $text = BBCode::performWithEscapedTags($text, ['code', 'noparse', 'nobb', 'pre'], function ($text) {
+                       $text = preg_replace("/[\s|\n]*\[abstract\].*?\[\/abstract\][\s|\n]*/ism", ' ', $text);
+                       $text = preg_replace("/[\s|\n]*\[abstract=.*?\].*?\[\/abstract][\s|\n]*/ism", ' ', $text);
+                       return $text;
+               });
 
                DI::profiler()->stopRecording();
                return $text;
@@ -2099,30 +2103,26 @@ class BBCode
        /**
         * Returns the value of the "abstract" element
         *
-        * @param string $text The text that maybe contains the element
+        * @param string $text  The text that maybe contains the element
         * @param string $addon The addon for which the abstract is meant for
         * @return string The abstract
         */
-       public static function getAbstract($text, $addon = '')
+       public static function getAbstract(string $text, string $addon = ''): string
        {
                DI::profiler()->startRecording('rendering');
-               $abstract = '';
-               $abstracts = [];
                $addon = strtolower($addon);
 
-               if (preg_match_all("/\[abstract=(.*?)\](.*?)\[\/abstract\]/ism", $text, $results, PREG_SET_ORDER)) {
-                       foreach ($results as $result) {
-                               $abstracts[strtolower($result[1])] = $result[2];
+               $abstract = BBCode::performWithEscapedTags($text, ['code', 'noparse', 'nobb', 'pre'], function ($text) use ($addon) {
+                       if ($addon && preg_match('#\[abstract=' . preg_quote($addon, '#') . '](.*?)\[/abstract]#ism', $text, $matches)) {
+                               return $matches[1];
                        }
-               }
 
-               if (isset($abstracts[$addon])) {
-                       $abstract = $abstracts[$addon];
-               }
+                       if (preg_match("#\[abstract](.*?)\[/abstract]#ism", $text, $matches)) {
+                               return $matches[1];
+                       }
 
-               if ($abstract == '' && preg_match("/\[abstract\](.*?)\[\/abstract\]/ism", $text, $result)) {
-                       $abstract = $result[1];
-               }
+                       return '';
+               });
 
                DI::profiler()->stopRecording();
                return $abstract;
@@ -2337,11 +2337,9 @@ class BBCode
         * @param array    $tagList A list of tag names, e.g ['noparse', 'nobb', 'pre']
         * @param callable $callback
         * @return string
-        * @throws Exception
-        *@see Strings::performWithEscapedBlocks
-        *
+        * @see Strings::performWithEscapedBlocks
         */
-       public static function performWithEscapedTags(string $text, array $tagList, callable $callback)
+       public static function performWithEscapedTags(string $text, array $tagList, callable $callback): string
        {
                $tagList = array_map('preg_quote', $tagList);