Spaces:
No application file
No application file
File size: 1,340 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<?php
namespace Mautic\LeadBundle\Helper;
use Mautic\LeadBundle\Entity\LeadField;
use Mautic\LeadBundle\Model\FieldModel;
class FieldAliasHelper
{
public function __construct(
private FieldModel $fieldModel
) {
}
/**
* Cleans the alias and if it's not unique it will make it unique.
*/
public function makeAliasUnique(LeadField $field): LeadField
{
// alias cannot be changed for existing fields
if ($field->getId()) {
return $field;
}
// set alias as name if alias is empty
$alias = ($field->getAlias() ?: $field->getName()) ?: '';
// clean the alias
$alias = $this->fieldModel->cleanAlias($alias, 'f_', 25);
// make sure alias is not already taken
$repo = $this->fieldModel->getRepository();
$testAlias = $alias;
$aliases = $repo->getAliases($field->getId(), false, true, null);
$count = (int) in_array($testAlias, $aliases);
$aliasTag = $count;
while ($count) {
$testAlias = $alias.$aliasTag;
$count = (int) in_array($testAlias, $aliases);
++$aliasTag;
}
if ($testAlias !== $alias) {
$alias = $testAlias;
}
$field->setAlias($alias);
return $field;
}
}
|