From 3a27e13e592dfdf9b0079bbfb2af4cc15d22175a Mon Sep 17 00:00:00 2001 From: eileen Date: Wed, 2 Oct 2019 09:23:43 +0200 Subject: [PATCH] Extract code for handling forced search --- CRM/Contribute/Form/Search.php | 17 +++++++++++------ CRM/Core/Form/Search.php | 21 +++++++++++++++++++++ 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/CRM/Contribute/Form/Search.php b/CRM/Contribute/Form/Search.php index 6fdb263afb..6923169fe6 100644 --- a/CRM/Contribute/Form/Search.php +++ b/CRM/Contribute/Form/Search.php @@ -99,12 +99,7 @@ class CRM_Contribute_Form_Search extends CRM_Core_Form_Search { } if ($this->_force) { - // Search field metadata is normally added in buildForm but we are bypassing that in this flow - // (I've always found the flow kinda confusing & perhaps that is the problem but this mitigates) - $this->addSearchFieldMetadata(['Contribution' => CRM_Contribute_BAO_Query::getSearchFieldMetadata()]); - $this->addSearchFieldMetadata(['ContributionRecur' => CRM_Contribute_BAO_ContributionRecur::getContributionRecurSearchFieldMetadata()]); - $this->postProcess(); - $this->set('force', 0); + $this->handleForcedSearch(); } $sortID = NULL; @@ -475,4 +470,14 @@ class CRM_Contribute_Form_Search extends CRM_Core_Form_Search { return ts('Find Contributions'); } + /** + * Set the metadata for the form. + * + * @throws \CiviCRM_API3_Exception + */ + protected function setSearchMetadata() { + $this->addSearchFieldMetadata(['Contribution' => CRM_Contribute_BAO_Query::getSearchFieldMetadata()]); + $this->addSearchFieldMetadata(['ContributionRecur' => CRM_Contribute_BAO_ContributionRecur::getContributionRecurSearchFieldMetadata()]); + } + } diff --git a/CRM/Core/Form/Search.php b/CRM/Core/Form/Search.php index fed155bbff..50499e9a51 100644 --- a/CRM/Core/Form/Search.php +++ b/CRM/Core/Form/Search.php @@ -491,4 +491,25 @@ class CRM_Core_Form_Search extends CRM_Core_Form { return (array) $this->get('formValues'); } + /** + * Set the metadata for the form. + * + * @throws \CiviCRM_API3_Exception + */ + protected function setSearchMetadata() {} + + /** + * Handle force=1 in the url. + * + * Search field metadata is normally added in buildForm but we are bypassing that in this flow + * (I've always found the flow kinda confusing & perhaps that is the problem but this mitigates) + * + * @throws \CiviCRM_API3_Exception + */ + protected function handleForcedSearch() { + $this->setSearchMetadata(); + $this->postProcess(); + $this->set('force', 0); + } + } -- 2.25.1