X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FContact%2FSelector.php;h=c0faf5b46331337edd8a21cb10f0a4b3e8ec0b26;hb=530f7d9dfc8239c7179751ef666a80e9f9cf8e8e;hp=53833b01ddd0788e44e3de661d10d382a5609239;hpb=76f7a8b859656ae44823c29002f1d9e76c0f9146;p=civicrm-core.git diff --git a/CRM/Contact/Selector.php b/CRM/Contact/Selector.php index 53833b01dd..c0faf5b463 100644 --- a/CRM/Contact/Selector.php +++ b/CRM/Contact/Selector.php @@ -195,6 +195,13 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se $this->_returnProperties['contact_type'] = 1; $this->_returnProperties['contact_sub_type'] = 1; $this->_returnProperties['sort_name'] = 1; + if (!empty($this->_returnProperties['location']) && is_array($this->_returnProperties['location'])) { + foreach ($this->_returnProperties['location'] as $key => $property) { + if (!empty($property['email'])) { + $this->_returnProperties['location'][$key]['on_hold'] = 1; + } + } + } } $displayRelationshipType = CRM_Utils_Array::value('display_relationship_type', $this->_formValues); @@ -301,7 +308,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se 'qs' => $qs, 'title' => $value['title'], 'ref' => $value['ref'], - 'class' => CRM_Utils_Array::value('class', $value), + 'class' => $value['class'] ?? NULL, ]; } } @@ -708,6 +715,15 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se } $row[$property] = $websiteUrl; } + elseif (strpos($property, '-email') !== FALSE) { + list($locType) = explode("-email", $property); + $onholdProperty = "{$locType}-on_hold"; + + $row[$property] = isset($result->$property) ? $result->$property : NULL; + if (!empty($row[$property]) && !empty($result->$onholdProperty)) { + $row[$property] .= " (On Hold)"; + } + } else { $row[$property] = isset($result->$property) ? $result->$property : NULL; } @@ -1000,6 +1016,8 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se * @param string $cacheKey * @param int $start * @param int $end + * + * @throws \CRM_Core_Exception */ public function fillupPrevNextCache($sort, $cacheKey, $start = 0, $end = self::CACHE_SIZE) { $coreSearch = TRUE; @@ -1023,11 +1041,13 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se // the other alternative of running the FULL query will just be incredibly inefficient // and slow things down way too much on large data sets / complex queries - $selectSQL = "SELECT DISTINCT %1, contact_a.id, contact_a.sort_name"; + $selectSQL = CRM_Core_DAO::composeQuery("SELECT DISTINCT %1, contact_a.id, contact_a.sort_name", [1 => [$cacheKey, 'String']]); + + $sql = str_ireplace(['SELECT contact_a.id as contact_id', 'SELECT contact_a.id as id'], $selectSQL, $sql); + $sql = str_ireplace('ORDER BY `contact_id`', 'ORDER BY `id`', $sql, $sql); - $sql = str_ireplace(["SELECT contact_a.id as contact_id", "SELECT contact_a.id as id"], $selectSQL, $sql); try { - Civi::service('prevnext')->fillWithSql($cacheKey, $sql, [1 => [$cacheKey, 'String']]); + Civi::service('prevnext')->fillWithSql($cacheKey, $sql); } catch (CRM_Core_Exception $e) { if ($coreSearch) {