X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Ffilter%2Ffilter.module;h=e1d3657574f85e86e8bedf770413aaa90d2b5204;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hp=e3095346ddaa8875230d916e9bd9e1c09ee04d4d;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;p=yaffs-website diff --git a/web/core/modules/filter/filter.module b/web/core/modules/filter/filter.module index e3095346d..e1d365757 100644 --- a/web/core/modules/filter/filter.module +++ b/web/core/modules/filter/filter.module @@ -74,7 +74,7 @@ function filter_theme() { 'caption' => NULL, 'classes' => NULL, ], - ] + ], ]; } @@ -287,7 +287,7 @@ function filter_fallback_format() { * @return \Drupal\Component\Render\MarkupInterface * The filtered text. * - * @see filter_process_text() + * @see \Drupal\filter\Plugin\FilterInterface::process() * * @ingroup sanitization */ @@ -496,8 +496,8 @@ function _filter_url($text, $filter) { $valid_url_query_chars = '[a-zA-Z0-9!?\*\'@\(\);:&=\+\$\/%#\[\]\-_\.,~|]'; $valid_url_query_ending_chars = '[a-zA-Z0-9_&=#\/]'; - //full path - //and allow @ in a url, but only in the middle. Catch things like http://example.com/@user/ + // full path + // and allow @ in a url, but only in the middle. Catch things like http://example.com/@user/ $valid_url_path = '(?:(?:' . $valid_url_path_characters . '*(?:' . $valid_url_balanced_parens . $valid_url_path_characters . '*)*' . $valid_url_ending_characters . ')|(?:@' . $valid_url_path_characters . '+\/))'; // Prepare domain name pattern. @@ -729,20 +729,28 @@ function _filter_autop($text) { } } elseif (!$ignore) { - $chunk = preg_replace('|\n*$|', '', $chunk) . "\n\n"; // just to make things a little easier, pad the end + // just to make things a little easier, pad the end + $chunk = preg_replace('|\n*$|', '', $chunk) . "\n\n"; $chunk = preg_replace('|
\s*
|', "\n\n", $chunk); - $chunk = preg_replace('!(<' . $block . '[^>]*>)!', "\n$1", $chunk); // Space things out a little - $chunk = preg_replace('!()!', "$1\n\n", $chunk); // Space things out a little - $chunk = preg_replace("/\n\n+/", "\n\n", $chunk); // take care of duplicates + // Space things out a little + $chunk = preg_replace('!(<' . $block . '[^>]*>)!', "\n$1", $chunk); + // Space things out a little + $chunk = preg_replace('!()!', "$1\n\n", $chunk); + // take care of duplicates + $chunk = preg_replace("/\n\n+/", "\n\n", $chunk); $chunk = preg_replace('/^\n|\n\s*\n$/', '', $chunk); - $chunk = '

' . preg_replace('/\n\s*\n\n?(.)/', "

\n

$1", $chunk) . "

\n"; // make paragraphs, including one at the end - $chunk = preg_replace("|

(|", "$1", $chunk); // problem with nested lists + // make paragraphs, including one at the end + $chunk = '

' . preg_replace('/\n\s*\n\n?(.)/', "

\n

$1", $chunk) . "

\n"; + // problem with nested lists + $chunk = preg_replace("|

(|", "$1", $chunk); $chunk = preg_replace('|

]*)>|i', "

", $chunk); $chunk = str_replace('

', '

', $chunk); - $chunk = preg_replace('|

\s*

\n?|', '', $chunk); // under certain strange conditions it could create a P of entirely whitespace + // under certain strange conditions it could create a P of entirely whitespace + $chunk = preg_replace('|

\s*

\n?|', '', $chunk); $chunk = preg_replace('!

\s*(]*>)!', "$1", $chunk); $chunk = preg_replace('!(]*>)\s*

!', "$1", $chunk); - $chunk = preg_replace('|(?)\s*\n|', "
\n", $chunk); // make line breaks + // make line breaks + $chunk = preg_replace('|(?)\s*\n|', "
\n", $chunk); $chunk = preg_replace('!(]*>)\s*
!', "$1", $chunk); $chunk = preg_replace('!
(\s*)!', '$1', $chunk); $chunk = preg_replace('/&([^#])(?![A-Za-z0-9]{1,8};)/', '&$1', $chunk); @@ -765,7 +773,7 @@ function _filter_html_escape($text) { function _filter_html_image_secure_process($text) { // Find the path (e.g. '/') to Drupal root. $base_path = base_path(); - $base_path_length = Unicode::strlen($base_path); + $base_path_length = mb_strlen($base_path); // Find the directory on the server where index.php resides. $local_dir = \Drupal::root() . '/'; @@ -781,11 +789,11 @@ function _filter_html_image_secure_process($text) { // Verify that $src starts with $base_path. // This also ensures that external images cannot be referenced. $src = $image->getAttribute('src'); - if (Unicode::substr($src, 0, $base_path_length) === $base_path) { + if (mb_substr($src, 0, $base_path_length) === $base_path) { // Remove the $base_path to get the path relative to the Drupal root. // Ensure the path refers to an actual image by prefixing the image source // with the Drupal root and running getimagesize() on it. - $local_image_path = $local_dir . Unicode::substr($src, $base_path_length); + $local_image_path = $local_dir . mb_substr($src, $base_path_length); $local_image_path = rawurldecode($local_image_path); if (@getimagesize($local_image_path)) { // The image has the right path. Erroneous images are dealt with below.