Consolidate getFormValues on contribution search
authoreileen <emcnaughton@wikimedia.org>
Thu, 3 Oct 2019 06:19:13 +0000 (08:19 +0200)
committereileen <emcnaughton@wikimedia.org>
Fri, 4 Oct 2019 03:58:48 +0000 (05:58 +0200)
This consolidates 2 places where formValues are determined on contribution search. In one place
force is handled in the other retrieving from the form is handled. It seems Ok to handle both in
one place & call that. This might help iron on some glitches Monish is hitting on #15370

We should probably add saved search retrieval in too

To confirm this works use this url
civicrm/contribute/search?reset=1&reset=1&sort_name=p&receive_date_high=20180101&force=1

- it should filter. If you add another criteria to the form afterwards the url criteria should
be present on the form from the url & the new one should also be respected. If you actively remove the url
criteria on the form it is ignored in the search

CRM/Contribute/Form/Search.php
CRM/Core/Form/Search.php

index fe892ed80159347a45f21ac0314f4486fdf465f8..6fdb263afb1a390e9cd1203e4439d16a2a3c0a81 100644 (file)
@@ -86,14 +86,7 @@ class CRM_Contribute_Form_Search extends CRM_Core_Form_Search {
 
     $this->loadStandardSearchOptionsFromUrl();
 
-    // get user submitted values
-    // get it from controller only if form has been submitted, else preProcess has set this
-    if (!empty($_POST)) {
-      $this->_formValues = $this->controller->exportValues($this->_name);
-    }
-    else {
-      $this->_formValues = $this->get('formValues');
-    }
+    $this->_formValues = $this->getFormValues();
 
     //membership ID
     $memberShipId = CRM_Utils_Request::retrieve('memberId', 'Positive', $this);
index 7fab1da759fb27a1949f9767420c11dfa9982948..fed155bbff75a8273d115a755ebe90ccdf455f18 100644 (file)
@@ -129,7 +129,7 @@ class CRM_Core_Form_Search extends CRM_Core_Form {
    *
    * @return array|NULL
    *   reference to the array of default values
-   * @throws \Exception
+   * @throws \CRM_Core_Exception
    */
   public function setDefaultValues() {
     $defaults = (array) $this->_formValues;
@@ -145,12 +145,7 @@ class CRM_Core_Form_Search extends CRM_Core_Form {
    * @throws \Exception
    */
   protected function setFormValues() {
-    if (!empty($_POST) && !$this->_force) {
-      $this->_formValues = $this->controller->exportValues($this->_name);
-    }
-    elseif ($this->_force) {
-      $this->_formValues = $this->setDefaultValues();
-    }
+    $this->_formValues = $this->getFormValues();
     $this->convertTextStringsToUseLikeOperator();
   }
 
@@ -477,4 +472,23 @@ class CRM_Core_Form_Search extends CRM_Core_Form {
     }
   }
 
+  /**
+   * Get the form values.
+   *
+   * @todo consolidate with loadFormValues()
+   *
+   * @return array
+   *
+   * @throws \CRM_Core_Exception
+   */
+  protected function getFormValues() {
+    if (!empty($_POST) && !$this->_force) {
+      return $this->controller->exportValues($this->_name);
+    }
+    if ($this->_force) {
+      return $this->setDefaultValues();
+    }
+    return (array) $this->get('formValues');
+  }
+
 }