[ticket/15403] Handle ellipsis at the beginning of context and add tests

PHPBB-15403
This commit is contained in:
Ruben Calvo 2024-07-14 12:37:34 +02:00
parent ec8bbf3da3
commit 6b5a632c12
No known key found for this signature in database
2 changed files with 20 additions and 1 deletions

View file

@ -419,7 +419,7 @@ function get_context(string $text, array $words, int $length = 400): string
$output[] = utf8_substr($fragment, $fragment_start, $fragment_end - $fragment_start + 1); $output[] = utf8_substr($fragment, $fragment_start, $fragment_end - $fragment_start + 1);
} }
return htmlentities(implode(' ... ', $output)) . ($end < $text_length - 1 ? ' ...' : ''); return ($fragments[0][0] != 0 ? '... ' : '') . htmlentities(implode(' ... ', $output)) . ($end < $text_length - 1 ? ' ...' : '');
} }
/** /**

View file

@ -89,6 +89,24 @@ class phpbb_functions_content_get_context_test extends TestCase
'length' => -10, 'length' => -10,
'expected' => '...', 'expected' => '...',
], ],
'ellipses_beginning' => [
'text' => 'foo foo foo foo foo foo foo foo bar',
'words' => ['bar'],
'length' => 10,
'expected' => '... foo foo bar',
],
'ellipsis_end' => [
'text' => 'bar foo foo foo foo foo foo foo foo',
'words' => ['bar'],
'length' => 10,
'expected' => 'bar foo foo ...',
],
'ellipsis_middle' => [
'text' => 'foo word1 foo foo foo foo foo foo foo foo foo word2 foo',
'words' => ['word1', 'word2'],
'length' => 10,
'expected' => '... word1 ... word2 ...',
],
]; ];
} }
@ -99,4 +117,5 @@ class phpbb_functions_content_get_context_test extends TestCase
{ {
$this->assertEquals($expected, get_context($text, $words, $length)); $this->assertEquals($expected, get_context($text, $words, $length));
} }
} }