APIv4 $languages - Adapt based on 'partial_locales' setting
authorTim Otten <totten@civicrm.org>
Tue, 30 Aug 2022 01:48:22 +0000 (18:48 -0700)
committerTim Otten <totten@civicrm.org>
Fri, 2 Sep 2022 00:38:39 +0000 (17:38 -0700)
Civi/Api4/Action/GetActions.php
Civi/Api4/Generic/AbstractAction.php

index 1720ee701655f33bc10c327498611366f2332fe8..5f3dbd9a619761e8d3e4e94ec3e860a5caa486dd 100644 (file)
@@ -99,14 +99,6 @@ class GetActions extends BasicGetAction {
           }
           if ($this->_isFieldSelected('params')) {
             $this->_actions[$actionName]['params'] = $action->getParamInfo();
-            // Language param is only relevant on multilingual sites
-            $languageLimit = (array) \Civi::settings()->get('languageLimit');
-            if (count($languageLimit) < 2) {
-              unset($this->_actions[$actionName]['params']['language']);
-            }
-            elseif (isset($this->_actions[$actionName]['params']['language'])) {
-              $this->_actions[$actionName]['params']['language']['options'] = array_keys($languageLimit);
-            }
           }
         }
       }
index 51c76450b7c5b35a0ee7793f4afbd2f0be4c3f6e..5ad1a3e45826d6a92fa0925ec940a15c52ec8ec9 100644 (file)
@@ -56,7 +56,7 @@ abstract class AbstractAction implements \ArrayAccess {
    * by `Civi\Core\Locale::negotiate($preferredLanguage)`.
    *
    * @var string
-   * @optionsCallback getPreferredLanguageOptions
+   * @optionsCallback getLanguageOptions
    */
   protected $language;
 
@@ -585,10 +585,15 @@ abstract class AbstractAction implements \ArrayAccess {
    *
    * @return array
    */
-  protected function getPreferredLanguageOptions(): array {
+  protected function getLanguageOptions(): array {
     $languages = \CRM_Contact_BAO_Contact::buildOptions('preferred_language');
     ksort($languages);
-    return array_keys($languages);
+    $result = array_keys($languages);
+    if (!\Civi::settings()->get('partial_locales')) {
+      $uiLanguages = \CRM_Core_I18n::uiLanguages(TRUE);
+      $result = array_values(array_intersect($result, $uiLanguages));
+    }
+    return $result;
   }
 
 }