From 6fa71bbf513fc7cafbfceb16b3c6fbcd8ef5cb52 Mon Sep 17 00:00:00 2001 From: Thomas Portelange Date: Tue, 4 Jul 2023 03:34:12 +0200 Subject: [PATCH] ENH avoid multiple calls to records->count() In PermissionCheckboxSetField (#10839) these calls are not cached and lead to duplicate queries Co-authored-by: Michal Kleiner --- src/Security/PermissionCheckboxSetField.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Security/PermissionCheckboxSetField.php b/src/Security/PermissionCheckboxSetField.php index 51fa3ff06..8c82e0464 100644 --- a/src/Security/PermissionCheckboxSetField.php +++ b/src/Security/PermissionCheckboxSetField.php @@ -193,6 +193,7 @@ class PermissionCheckboxSetField extends FormField $privilegedPermissions = Permission::config()->privileged_permissions; // loop through all available categorized permissions and see if they're assigned for the given groups + $hasMultipleRecords = $this->records?->count() > 1; foreach ($this->source as $categoryName => $permissions) { $options .= "
  • $categoryName
  • "; foreach ($permissions as $code => $permission) { @@ -222,7 +223,7 @@ class PermissionCheckboxSetField extends FormField // interface $disabled = ' disabled="true"'; $inheritMessage = ' (' . join(', ', $inheritedCodes[$code]) . ')'; - } elseif ($this->records && $this->records->Count() > 1 && isset($uninheritedCodes[$code])) { + } elseif ($hasMultipleRecords && isset($uninheritedCodes[$code])) { // If code assignments are collected from more than one "source group", // show its origin automatically $inheritMessage = ' (' . join(', ', $uninheritedCodes[$code]) . ')';