From 77339b7e75b967af425347d555a7b1a32988bc37 Mon Sep 17 00:00:00 2001 From: Maxime Rainville Date: Wed, 26 Sep 2018 17:24:06 +1200 Subject: [PATCH 1/2] MINOR Add caching to the TreeDropdownField tree action --- src/Forms/TreeDropdownField.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Forms/TreeDropdownField.php b/src/Forms/TreeDropdownField.php index f96379c75..97df4b679 100644 --- a/src/Forms/TreeDropdownField.php +++ b/src/Forms/TreeDropdownField.php @@ -453,6 +453,8 @@ class TreeDropdownField extends FormField /** @var DataObject|Hierarchy $obj */ $obj = null; $sourceObject = $this->getSourceObject(); + + Hierarchy::prepopulate_numchildren_cache($sourceObject); if ($id && !$request->requestVar('forceFullTree')) { $obj = DataObject::get_by_id($sourceObject, $id); $isSubTree = true; From 13c89d0ed05def6fa17bdaf009c2b7740f458354 Mon Sep 17 00:00:00 2001 From: Maxime Rainville Date: Mon, 1 Oct 2018 11:29:51 +1300 Subject: [PATCH 2/2] Add a comment and only apply caching if using the standard NumChildrenMethod --- src/Forms/TreeDropdownField.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Forms/TreeDropdownField.php b/src/Forms/TreeDropdownField.php index 97df4b679..56954f415 100644 --- a/src/Forms/TreeDropdownField.php +++ b/src/Forms/TreeDropdownField.php @@ -454,7 +454,13 @@ class TreeDropdownField extends FormField $obj = null; $sourceObject = $this->getSourceObject(); - Hierarchy::prepopulate_numchildren_cache($sourceObject); + // Precache numChildren count if possible. + if ($this->getNumChildrenMethod() == 'numChildren') { + // We're not calling `Hierarchy::prepopulateTreeDataCache()` because we're not customising results based + // on version or Fluent locales. So there would be no performance gain from additional caching. + Hierarchy::prepopulate_numchildren_cache($sourceObject); + } + if ($id && !$request->requestVar('forceFullTree')) { $obj = DataObject::get_by_id($sourceObject, $id); $isSubTree = true;