APIv4 - Promote option `$language` from DAOActionTrait to AbstractAction
authorTim Otten <totten@civicrm.org>
Fri, 5 Aug 2022 10:22:58 +0000 (03:22 -0700)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Thu, 1 Sep 2022 02:57:26 +0000 (14:57 +1200)
Civi/Api4/Generic/AbstractAction.php
Civi/Api4/Generic/Traits/DAOActionTrait.php

index 9347394ada9d15cae280015073f09c0db43dc211..51c76450b7c5b35a0ee7793f4afbd2f0be4c3f6e 100644 (file)
@@ -32,6 +32,8 @@ use Civi\Api4\Utils\ReflectionUtils;
  * @method bool getDebug()
  * @method $this setChain(array $chain)
  * @method array getChain()
+ * @method $this setLanguage(string|null $language)
+ * @method string|null getLanguage()
  */
 abstract class AbstractAction implements \ArrayAccess {
 
@@ -44,6 +46,20 @@ abstract class AbstractAction implements \ArrayAccess {
    */
   protected $version = 4;
 
+  /**
+   * Preferred language (optional)
+   *
+   * This option will notify major localization subsystems (`ts()`, multilingual, etc)
+   * about which locale should be used for composing/formatting messaging.
+   *
+   * This indicates the preferred language. The effective language is determined
+   * by `Civi\Core\Locale::negotiate($preferredLanguage)`.
+   *
+   * @var string
+   * @optionsCallback getPreferredLanguageOptions
+   */
+  protected $language;
+
   /**
    * Additional api requests - will be called once per result.
    *
@@ -564,4 +580,15 @@ abstract class AbstractAction implements \ArrayAccess {
     }
   }
 
+  /**
+   * Get available preferred languages.
+   *
+   * @return array
+   */
+  protected function getPreferredLanguageOptions(): array {
+    $languages = \CRM_Contact_BAO_Contact::buildOptions('preferred_language');
+    ksort($languages);
+    return array_keys($languages);
+  }
+
 }
index 4e7dd548c48225fd0eadbd241f38e3bc57a0e15c..047cdd26c2744361b198582bfe86589566699071 100644 (file)
@@ -19,20 +19,13 @@ use Civi\Api4\Utils\CoreUtil;
 use Civi\Api4\Utils\ReflectionUtils;
 
 /**
- * @method string getLanguage()
- * @method $this setLanguage(string $language)
+ * Common properties and helper-methods used for DB-oriented actions.
  */
 trait DAOActionTrait {
 
   /**
-   * Specify the language to use if this is a multi-lingual environment.
-   *
-   * E.g. "en_US" or "fr_CA"
-   *
-   * @var string
+   * @var array
    */
-  protected $language;
-
   private $_maxWeights = [];
 
   /**