From 12485e4fe120acb0c38bf1d0af080d95956ace5e Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Tue, 19 Apr 2022 14:51:42 -0400 Subject: [PATCH] ManagedEntities - Refactor class variable $declarations to local variable --- CRM/Core/ManagedEntities.php | 56 ++++++++++-------------------------- 1 file changed, 15 insertions(+), 41 deletions(-) diff --git a/CRM/Core/ManagedEntities.php b/CRM/Core/ManagedEntities.php index b5259db39c..25a4e8ff5b 100644 --- a/CRM/Core/ManagedEntities.php +++ b/CRM/Core/ManagedEntities.php @@ -28,13 +28,6 @@ class CRM_Core_ManagedEntities { */ protected $moduleIndex; - /** - * @var array - * List of all entity declarations. - * @see CRM_Utils_Hook::managed() - */ - protected $declarations; - /** * Get an instance. * @param bool $fresh @@ -114,8 +107,8 @@ class CRM_Core_ManagedEntities { */ public function reconcile($modules = NULL) { $modules = $modules ? (array) $modules : NULL; - $this->loadDeclarations($modules); - $plan = $this->createPlan($modules); + $declarations = $this->getDeclarations($modules); + $plan = $this->createPlan($declarations, $modules); $this->reconcileEntities($plan); } @@ -128,8 +121,8 @@ class CRM_Core_ManagedEntities { $mgd = new \CRM_Core_DAO_Managed(); $mgd->copyValues($params); $mgd->find(TRUE); - $this->loadDeclarations([$mgd->module]); - $declarations = CRM_Utils_Array::findAll($this->declarations, [ + $declarations = $this->getDeclarations([$mgd->module]); + $declarations = CRM_Utils_Array::findAll($declarations, [ 'module' => $mgd->module, 'name' => $mgd->name, 'entity' => $mgd->entity_type, @@ -171,7 +164,7 @@ class CRM_Core_ManagedEntities { * @return array */ private function filterPlanByAction(array $plan, string $action): array { - return CRM_Utils_Array::findAll($thisplan, ['managed_action' => $action]); + return CRM_Utils_Array::findAll($plan, ['managed_action' => $action]); } /** @@ -373,15 +366,6 @@ class CRM_Core_ManagedEntities { } } - /** - * Get declarations. - * - * @return array|null - */ - protected function getDeclarations() { - return $this->declarations; - } - /** * @param array $modules * Array. @@ -473,21 +457,6 @@ class CRM_Core_ManagedEntities { return isset($this->moduleIndex[FALSE][$module]); } - /** - * @param array $declarations - * @param string $moduleName - * Filter to a single module. - */ - protected function setDeclarations(array $declarations, $moduleName = NULL) { - $this->declarations = []; - foreach ($declarations as $name => $declare) { - $declare += ['name' => $name]; - if (!$moduleName || $declare['module'] === $moduleName) { - $this->declarations[$name] = $declare; - } - } - } - /** * @param string $entity * @param string $action @@ -528,14 +497,15 @@ class CRM_Core_ManagedEntities { } /** - * Load declarations into the class property. + * Load managed entity declarations. * * This picks it up from hooks and enabled components. * * @param array|null $modules * Limit reconciliation specified modules. + * @return array[] */ - protected function loadDeclarations($modules = NULL): void { + protected function getDeclarations($modules = NULL): array { $declarations = []; // Exclude components if given a module name. if (!$modules || $modules === ['civicrm']) { @@ -545,16 +515,20 @@ class CRM_Core_ManagedEntities { } CRM_Utils_Hook::managed($declarations, $modules); $this->validate($declarations); - $this->setDeclarations($declarations); + foreach (array_keys($declarations) as $name) { + $declarations[$name] += ['name' => $name]; + } + return $declarations; } /** * Builds $this->managedActions array * + * @param array $declarations * @param array|null $modules * @return array[] */ - protected function createPlan($modules = NULL): array { + protected function createPlan(array $declarations, $modules = NULL): array { $where = $modules ? [['module', 'IN', $modules]] : []; $managedEntities = Managed::get(FALSE) ->setWhere($where) @@ -566,7 +540,7 @@ class CRM_Core_ManagedEntities { $action = $this->isModuleDisabled($managedEntity['module']) ? 'disable' : 'delete'; $plan[$key] = array_merge($managedEntity, ['managed_action' => $action]); } - foreach ($this->declarations as $declaration) { + foreach ($declarations as $declaration) { $key = "{$declaration['module']}_{$declaration['name']}_{$declaration['entity']}"; if (isset($plan[$key])) { $plan[$key]['params'] = $declaration['params']; -- 2.25.1