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; | |
| } | |
| } |