| Current Path : /var/www/html/administrator/components/com_languages/src/Rule/ |
| Current File : /var/www/html/administrator/components/com_languages/src/Rule/DisallowQuotesRule.php |
<?php
/**
* @package Joomla.Administrator
* @subpackage com_languages
*
* @copyright (C) 2021 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace Joomla\Component\Languages\Administrator\Rule;
use Joomla\CMS\Factory;
use Joomla\CMS\Form\Form;
use Joomla\CMS\Form\FormRule;
use Joomla\CMS\Language\Text;
use Joomla\Registry\Registry;
// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects
/**
* The DisallowQuotesRule Class.
* Validates that non-superadmins can not use quotes or doublequotes in i18n overrides
*
* @since joomla 5.4.7
*/
class DisallowQuotesRule extends FormRule
{
/**
* @param \SimpleXMLElement $element The SimpleXMLElement object representing the `<field>` tag for the form
* field object.
* @param mixed $value The form field value to validate.
* @param ?string $group The field name group control value. This acts as an array container for the
* field. For example if the field has `name="foo"` and the group value is set
* to "bar" then the full field name would end up being "bar[foo]".
* @param ?Registry $input An optional Registry object with the entire data set to validate against
* the entire form.
* @param ?Form $form The form object for which the field is being tested.
*
* @return boolean
*
* @since 4.1.0
*/
public function test(\SimpleXMLElement $element, $value, $group = null, ?Registry $input = null, ?Form $form = null): bool
{
// User with core.admin can use quotes
if (Factory::getApplication()->getIdentity()->authorise('core.admin')) {
return true;
}
// Disallow double and single quotes in overrides
if (str_contains($value, '"') || str_contains($value, '\'')) {
Factory::getApplication()->enqueueMessage(
Text::_('COM_LANGUAGES_ERROR_QUOTES_IN_TEXT'),
'error'
);
return false;
}
return true;
}
}