Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
15 / 15 |
acp_utils | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
6 | |
100.00% |
15 / 15 |
__construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
analyse_bbcode | |
100.00% |
1 / 1 |
5 | |
100.00% |
13 / 13 |
<?php | |
/** | |
* | |
* This file is part of the phpBB Forum Software package. | |
* | |
* @copyright (c) phpBB Limited <https://www.phpbb.com> | |
* @license GNU General Public License, version 2 (GPL-2.0) | |
* | |
* For full copyright and license information, please see | |
* the docs/CREDITS.txt file. | |
* | |
*/ | |
namespace phpbb\textformatter\s9e; | |
use phpbb\textformatter\acp_utils_interface; | |
use s9e\TextFormatter\Configurator\Exceptions\UnsafeTemplateException; | |
class acp_utils implements acp_utils_interface | |
{ | |
/** | |
* @var factory $factory | |
*/ | |
protected $factory; | |
/** | |
* @param factory $factory | |
*/ | |
public function __construct(factory $factory) | |
{ | |
$this->factory = $factory; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function analyse_bbcode(string $definition, string $template): array | |
{ | |
$configurator = $this->factory->get_configurator(); | |
$return = ['status' => self::BBCODE_STATUS_SAFE]; | |
// Capture and normalize the BBCode name manually because there's no easy way to retrieve | |
// it in TextFormatter <= 2.x | |
if (preg_match('(\\[([-\\w]++))', $definition, $m)) | |
{ | |
$return['name'] = strtoupper($m[1]); | |
} | |
try | |
{ | |
$configurator->BBCodes->addCustom($definition, $template); | |
} | |
catch (UnsafeTemplateException $e) | |
{ | |
$return['status'] = self::BBCODE_STATUS_UNSAFE; | |
$return['error_text'] = $e->getMessage(); | |
$return['error_html'] = $e->highlightNode('<span class="highlight">'); | |
} | |
catch (\Exception $e) | |
{ | |
$return['status'] = (preg_match('(xml|xpath|xsl)i', $e->getMessage())) ? self::BBCODE_STATUS_INVALID_TEMPLATE : self::BBCODE_STATUS_INVALID_DEFINITION; | |
$return['error_text'] = $e->getMessage(); | |
} | |
return $return; | |
} | |
} |