dev/core#2132 Fix for sort on search results
authoreileen <emcnaughton@wikimedia.org>
Mon, 26 Oct 2020 05:56:58 +0000 (18:56 +1300)
committereileen <emcnaughton@wikimedia.org>
Mon, 26 Oct 2020 20:24:48 +0000 (09:24 +1300)
Simpler fix - accept bad sql but catch it :-(

Ideally we would always be in exception mode

CRM/Contact/Selector.php

index 2296ddd2e43c8d7c262ea4055119131fbe5b206f..0986377581838dd60cb99d8699ce4cd043afba6f 100644 (file)
@@ -1018,6 +1018,8 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se
    */
   public function fillupPrevNextCache($sort, $cacheKey, $start = 0, $end = self::CACHE_SIZE) {
     $coreSearch = TRUE;
+    // This ensures exceptions are caught in the try-catch.
+    $handling = CRM_Core_TemporaryErrorScope::useException();
     // For custom searches, use the contactIDs method
     if (is_a($this, 'CRM_Contact_Selector_Custom')) {
       $sql = $this->_search->contactIDs($start, $end, $sort, TRUE);
@@ -1046,7 +1048,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se
     try {
       Civi::service('prevnext')->fillWithSql($cacheKey, $sql);
     }
-    catch (CRM_Core_Exception $e) {
+    catch (\Exception $e) {
       if ($coreSearch) {
         // in the case of error, try rebuilding cache using full sql which is used for search selector display
         // this fixes the bugs reported in CRM-13996 & CRM-14438