Map tags: load live organization tags and sanitize selections
This commit is contained in:
@@ -74,15 +74,33 @@ $GLOBALS['TL_DCA']['tl_module']['fields']['organizationTypeTags'] = [
|
||||
'exclude' => true,
|
||||
'inputType' => 'checkbox',
|
||||
'options_callback' => static function () {
|
||||
$database = Database::getInstance();
|
||||
$labelExpression = $database->fieldExists('title', 'tl_tags')
|
||||
? "COALESCE(NULLIF(t.title, ''), t.tag)"
|
||||
: 't.tag';
|
||||
|
||||
$rows = Database::getInstance()
|
||||
->prepare('SELECT DISTINCT t.id, t.tag FROM tl_tags t LEFT JOIN tl_tags_rel r ON r.tag_id=t.id AND r.ptable=? AND r.field=? ORDER BY t.tag ASC')
|
||||
->prepare(sprintf(
|
||||
'SELECT DISTINCT t.id, %1$s AS label
|
||||
FROM tl_tags_rel r
|
||||
INNER JOIN tl_tags t ON t.id=r.tag_id
|
||||
WHERE r.ptable=? AND r.field=?
|
||||
ORDER BY label ASC',
|
||||
$labelExpression,
|
||||
))
|
||||
->execute('tl_organization', 'tags')
|
||||
->fetchAllAssoc();
|
||||
|
||||
$options = [];
|
||||
|
||||
foreach ($rows as $row) {
|
||||
$options[(int) $row['id']] = (string) $row['tag'];
|
||||
$label = trim((string) ($row['label'] ?? ''));
|
||||
|
||||
if ('' === $label) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$options[(int) $row['id']] = $label;
|
||||
}
|
||||
|
||||
return $options;
|
||||
@@ -204,15 +222,33 @@ $GLOBALS['TL_DCA']['tl_module']['fields']['mapInitialOrganizationTagId'] = [
|
||||
'exclude' => true,
|
||||
'inputType' => 'select',
|
||||
'options_callback' => static function (): array {
|
||||
$rows = Database::getInstance()
|
||||
->prepare('SELECT DISTINCT t.id, t.tag FROM tl_tags t LEFT JOIN tl_tags_rel r ON r.tag_id=t.id AND r.ptable=? AND r.field=? ORDER BY t.tag ASC')
|
||||
$database = Database::getInstance();
|
||||
$labelExpression = $database->fieldExists('title', 'tl_tags')
|
||||
? "COALESCE(NULLIF(t.title, ''), t.tag)"
|
||||
: 't.tag';
|
||||
|
||||
$rows = $database
|
||||
->prepare(sprintf(
|
||||
'SELECT DISTINCT t.id, %1$s AS label
|
||||
FROM tl_tags_rel r
|
||||
INNER JOIN tl_tags t ON t.id=r.tag_id
|
||||
WHERE r.ptable=? AND r.field=?
|
||||
ORDER BY label ASC',
|
||||
$labelExpression,
|
||||
))
|
||||
->execute('tl_organization', 'tags')
|
||||
->fetchAllAssoc();
|
||||
|
||||
$options = [];
|
||||
|
||||
foreach ($rows as $row) {
|
||||
$options[(int) $row['id']] = (string) $row['tag'];
|
||||
$label = trim((string) ($row['label'] ?? ''));
|
||||
|
||||
if ('' === $label) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$options[(int) $row['id']] = $label;
|
||||
}
|
||||
|
||||
return $options;
|
||||
|
||||
Reference in New Issue
Block a user