$this->searchFieldMetadata = array_merge($this->searchFieldMetadata, $searchFieldMetadata);
}
+ /**
+ * Prepare for search by loading options from the url, handling force searches, retrieving form values.
+ *
+ * @throws \CRM_Core_Exception
+ * @throws \CiviCRM_API3_Exception
+ */
+ public function preProcess() {
+ $this->loadStandardSearchOptionsFromUrl();
+ if ($this->_force) {
+ $this->handleForcedSearch();
+ }
+ $this->_formValues = $this->getFormValues();
+ }
+
/**
* This virtual function is used to set the default values of various form elements.
*
* @throws \CRM_Core_Exception
*/
public function setDefaultValues() {
- $defaults = (array) $this->_formValues;
+ // Use the form values stored to the form. Ideally 'formValues'
+ // would remain 'pure' & another array would be wrangled.
+ // We don't do that - so we want the version of formValues stored early on.
+ $defaults = (array) $this->get('formValues');
foreach (array_keys($this->getSearchFieldMetadata()) as $entity) {
$defaults = array_merge($this->getEntityDefaults($entity), $defaults);
}
*/
protected function setFormValues() {
$this->_formValues = $this->getFormValues();
+ $this->set('formValues', $this->_formValues);
$this->convertTextStringsToUseLikeOperator();
}
return (array) $this->get('formValues');
}
+ /**
+ * Get the string processed to determine sort order.
+ *
+ * This looks like 'sort_name_u' for Sort name ascending.
+ *
+ * @return string|null
+ */
+ protected function getSortID() {
+ if ($this->get(CRM_Utils_Sort::SORT_ID)) {
+ return CRM_Utils_Sort::sortIDValue($this->get(CRM_Utils_Sort::SORT_ID),
+ $this->get(CRM_Utils_Sort::SORT_DIRECTION)
+ );
+ }
+ return NULL;
+ }
+
/**
* Set the metadata for the form.
*
*/
protected function handleForcedSearch() {
$this->setSearchMetadata();
+ $this->addContactSearchFields();
$this->postProcess();
$this->set('force', 0);
}