Merge pull request #6933 from MrPetovan/bug/smilies-wrong-escape
Fix wrong code block escaping in Smilies
This commit is contained in:
commit
22f884484a
|
@ -6,6 +6,7 @@ Version 2019.06 (UNRELEASED) (2019-06-?)
|
||||||
Fixed the timezone of Friendica logs [nupplaphil]
|
Fixed the timezone of Friendica logs [nupplaphil]
|
||||||
Fixed tag completion painfully slow [AlfredSK]
|
Fixed tag completion painfully slow [AlfredSK]
|
||||||
Fixed a regression in notifications [MrPetovan]
|
Fixed a regression in notifications [MrPetovan]
|
||||||
|
Fixed an issue with smilies and code blocks [MrPetovan]
|
||||||
General Code cleaning and restructuring [nupplaphil]
|
General Code cleaning and restructuring [nupplaphil]
|
||||||
Added frio color scheme sharing [JeroenED]
|
Added frio color scheme sharing [JeroenED]
|
||||||
Added syslog and stream Logger [nupplaphil]
|
Added syslog and stream Logger [nupplaphil]
|
||||||
|
|
|
@ -213,7 +213,6 @@ class Smilies
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
||||||
$text = preg_replace_callback('/<pre>(.*?)<\/pre>/ism' , 'self::encode', $text);
|
|
||||||
$text = preg_replace_callback('/<code>(.*?)<\/code>/ism', 'self::encode', $text);
|
$text = preg_replace_callback('/<code>(.*?)<\/code>/ism', 'self::encode', $text);
|
||||||
|
|
||||||
if ($no_images) {
|
if ($no_images) {
|
||||||
|
@ -231,7 +230,6 @@ class Smilies
|
||||||
$text = preg_replace_callback('/<(3+)/', 'self::pregHeart', $text);
|
$text = preg_replace_callback('/<(3+)/', 'self::pregHeart', $text);
|
||||||
$text = self::strOrigReplace($smilies['texts'], $smilies['icons'], $text);
|
$text = self::strOrigReplace($smilies['texts'], $smilies['icons'], $text);
|
||||||
|
|
||||||
$text = preg_replace_callback('/<pre>(.*?)<\/pre>/ism', 'self::decode', $text);
|
|
||||||
$text = preg_replace_callback('/<code>(.*?)<\/code>/ism', 'self::decode', $text);
|
$text = preg_replace_callback('/<code>(.*?)<\/code>/ism', 'self::decode', $text);
|
||||||
|
|
||||||
return $text;
|
return $text;
|
||||||
|
@ -244,7 +242,7 @@ class Smilies
|
||||||
*/
|
*/
|
||||||
private static function encode($m)
|
private static function encode($m)
|
||||||
{
|
{
|
||||||
return(str_replace($m[1], Strings::base64UrlEncode($m[1]), $m[0]));
|
return '<code>' . Strings::base64UrlEncode($m[1]) . '</code>';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -255,7 +253,7 @@ class Smilies
|
||||||
*/
|
*/
|
||||||
private static function decode($m)
|
private static function decode($m)
|
||||||
{
|
{
|
||||||
return(str_replace($m[1], Strings::base64UrlDecode($m[1]), $m[0]));
|
return '<code>' . Strings::base64UrlDecode($m[1]) . '</code>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
69
tests/src/Content/SmiliesTest.php
Normal file
69
tests/src/Content/SmiliesTest.php
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by PhpStorm.
|
||||||
|
* User: benlo
|
||||||
|
* Date: 25/03/19
|
||||||
|
* Time: 21:36
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Friendica\Test\src\Content;
|
||||||
|
|
||||||
|
use Friendica\Content\Smilies;
|
||||||
|
use Friendica\Test\MockedTest;
|
||||||
|
use Friendica\Test\Util\AppMockTrait;
|
||||||
|
use Friendica\Test\Util\L10nMockTrait;
|
||||||
|
use Friendica\Test\Util\VFSTrait;
|
||||||
|
|
||||||
|
class SmiliesTest extends MockedTest
|
||||||
|
{
|
||||||
|
use VFSTrait;
|
||||||
|
use AppMockTrait;
|
||||||
|
use L10nMockTrait;
|
||||||
|
|
||||||
|
protected function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
$this->setUpVfsDir();
|
||||||
|
$this->mockApp($this->root);
|
||||||
|
$this->app->videowidth = 425;
|
||||||
|
$this->app->videoheight = 350;
|
||||||
|
$this->configMock->shouldReceive('get')
|
||||||
|
->with('system', 'no_smilies')
|
||||||
|
->andReturn(false);
|
||||||
|
$this->configMock->shouldReceive('get')
|
||||||
|
->with(false, 'system', 'no_smilies')
|
||||||
|
->andReturn(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dataLinks()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
/** @see https://github.com/friendica/friendica/pull/6933 */
|
||||||
|
'bug-6933-1' => [
|
||||||
|
'data' => '<code>/</code>',
|
||||||
|
'smilies' => ['texts' => [], 'icons' => []],
|
||||||
|
'expected' => '<code>/</code>',
|
||||||
|
],
|
||||||
|
'bug-6933-2' => [
|
||||||
|
'data' => '<code>code</code>',
|
||||||
|
'smilies' => ['texts' => [], 'icons' => []],
|
||||||
|
'expected' => '<code>code</code>',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test replace smilies in different texts
|
||||||
|
* @dataProvider dataLinks
|
||||||
|
*
|
||||||
|
* @param string $text Test string
|
||||||
|
* @param array $smilies List of smilies to replace
|
||||||
|
* @param string $expected Expected result
|
||||||
|
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
|
||||||
|
*/
|
||||||
|
public function testReplaceFromArray($text, $smilies, $expected)
|
||||||
|
{
|
||||||
|
$output = Smilies::replaceFromArray($text, $smilies);
|
||||||
|
$this->assertEquals($expected, $output);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue