Merge pull request #9661 from monishdeb/CRM-18141
[civicrm-core.git] / Civi / Token / TokenRow.php
index 439a138cdb1d106cab4db80d9fbd66d6626556a6..4f186d3d5c1ea9ccf3d84806cc76e7b8d834554c 100644 (file)
@@ -71,7 +71,7 @@ class TokenRow {
 
   /**
    * @param string $format
-   * @return $this
+   * @return TokenRow
    */
   public function format($format) {
     $this->format = $format;
@@ -84,7 +84,7 @@ class TokenRow {
    *
    * @param string|array $a
    * @param mixed $b
-   * @return $this
+   * @return TokenRow
    */
   public function context($a = NULL, $b = NULL) {
     if (is_array($a)) {
@@ -105,7 +105,7 @@ class TokenRow {
    * @param string|array $a
    * @param string|array $b
    * @param mixed $c
-   * @return $this
+   * @return TokenRow
    */
   public function tokens($a = NULL, $b = NULL, $c = NULL) {
     if (is_array($a)) {
@@ -126,6 +126,29 @@ class TokenRow {
     return $this;
   }
 
+  /**
+   * Update the value of a custom field token.
+   *
+   * @param string $entity
+   * @param int $customFieldID
+   * @param int $entityID
+   * @return TokenRow
+   */
+  public function customToken($entity, $customFieldID, $entityID) {
+    $customFieldName = "custom_" . $customFieldID;
+    $fieldValue = civicrm_api3($entity, 'getvalue', array(
+      'return' => $customFieldName,
+      'id' => $entityID,
+    ));
+
+    // format the raw custom field value into proper display value
+    if ($fieldValue) {
+      $fieldValue = \CRM_Core_BAO_CustomField::displayValue($fieldValue, $customFieldID);
+    }
+
+    return $this->tokens($entity, $customFieldName, $fieldValue);
+  }
+
   /**
    * Update the value of a token. Apply formatting based on DB schema.
    *
@@ -134,6 +157,8 @@ class TokenRow {
    * @param string $baoName
    * @param array $baoField
    * @param mixed $fieldValue
+   * @return TokenRow
+   * @throws \CRM_Core_Exception
    */
   public function dbToken($tokenEntity, $tokenField, $baoName, $baoField, $fieldValue) {
     if ($fieldValue === NULL || $fieldValue === '') {
@@ -171,7 +196,7 @@ class TokenRow {
    *
    * @param string $format
    *
-   * @return $this
+   * @return TokenRow
    */
   public function fill($format = NULL) {
     if ($format === NULL) {