APIv4 - Add SortableEntity type which auto-adjusts weights
[civicrm-core.git] / CRM / Utils / PagerAToZ.php
index c9e15a636acb3f916ccaa53e95eb801e2f16bcd3..650dd715e35cc3175eea05658729bd4d27daa9a8 100644 (file)
@@ -114,6 +114,7 @@ class CRM_Utils_PagerAToZ {
    *
    * @return array
    *   with links
+   * @throws \CRM_Core_Exception
    */
   public static function createLinks(&$query, $sortByCharacter, $isDAO) {
     $AToZBar = self::getStaticCharacters();
@@ -135,9 +136,7 @@ class CRM_Utils_PagerAToZ {
       $qfKey = $query->_formValues['qfKey'] ?? NULL;
     }
     if (empty($qfKey)) {
-      // CRM-20943 Can only pass variables by reference and also cannot use $this so using $empty setting to NULL which is default.
-      $emptyVariable = NULL;
-      $qfKey = CRM_Utils_Request::retrieve('qfKey', 'String', $emptyVariable, FALSE, NULL, $_REQUEST);
+      $qfKey = CRM_Utils_Request::retrieve('qfKey', 'String');
     }
 
     $aToZBar = [];
@@ -153,7 +152,17 @@ class CRM_Utils_PagerAToZ {
           $element['class'] = "active";
           $klass = 'class="active"';
         }
-        $url = CRM_Utils_System::url($path, "force=1&qfKey=$qfKey&sortByCharacter=");
+        $urlParams = [
+          'force' => 1,
+          'qfKey' => $qfKey,
+        ];
+        if (($query->_context ?? '') === 'amtg') {
+          // See https://lab.civicrm.org/dev/core/-/issues/2333
+          // Seems to be needed in add to group flow.
+          $urlParams['_qf_Basic_display'] = 1;
+        }
+        $urlParams['sortByCharacter'] = '';
+        $url = CRM_Utils_System::url($path, $urlParams);
         // we do it this way since we want the url to be encoded but not the link character
         // since that seems to mess up drupal utf-8 encoding etc
         $url .= urlencode($link);