More robust ways to get pseudoconstant labels and names CRM-12464
authorColeman Watts <coleman@civicrm.org>
Tue, 30 Jul 2013 16:52:33 +0000 (09:52 -0700)
committerColeman Watts <coleman@civicrm.org>
Tue, 30 Jul 2013 17:02:40 +0000 (10:02 -0700)
----------------------------------------
* CRM-12464: Add PseudoConstants to Schema Metadata
  http://issues.civicrm.org/jira/browse/CRM-12464

CRM/Contact/BAO/Contact.php
CRM/Core/BAO/UFGroup.php
CRM/Core/DAO.php
CRM/Core/PseudoConstant.php
CRM/Profile/Selector/Listings.php
CRM/Report/Form/Grant/Detail.php
CRM/Utils/Token.php
tools/extensions/org.civicrm.report.grant/Grant.php

index d31a9469470d84533a1c8537cfa35782d0e451b2..2edbefdf598a5f3514f49cbddbc98352200a0871 100644 (file)
@@ -2356,7 +2356,7 @@ AND       civicrm_openid.is_primary = 1";
 
       // get preferred languages
       if (!empty($contact->preferred_language)) {
-        $values['preferred_language'] = CRM_Core_PseudoConstant::getValue('CRM_Contact_DAO_Contact', 'preferred_language', $contact->preferred_language);
+        $values['preferred_language'] = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'preferred_language', $contact->preferred_language);
       }
 
       // Calculating Year difference
index 3755d2be4ac097fba5c93d18ba70a022ed70422c..20d4465d4fd53a76a762d3e67158b8d3020a35e3 100644 (file)
@@ -982,7 +982,7 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup {
         }
         elseif ($name === 'preferred_language') {
           $params[$index] = $details->$name;
-          $values[$index] = CRM_Core_PseudoConstant::getValue('CRM_Contact_DAO_Contact', 'preferred_language', $details->$name);
+          $values[$index] = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'preferred_language', $details->$name);
         }
         elseif ($name == 'group') {
           $groups = CRM_Contact_BAO_GroupContact::getContactGroup($cid, 'Added', NULL, FALSE, TRUE);
index bbf4eebc875a4ec517bd7f7bf230fd98eb1fc3a5..6e7159e7147a62fb62009cf6496449810da2fb46 100644 (file)
@@ -1782,7 +1782,7 @@ EOS;
     foreach ($fields as $field) {
       $name = CRM_Utils_Array::value('name', $field);
       if ($name && isset($this->$name)) {
-        $label = CRM_Core_PseudoConstant::getValue(get_class($this), $name, $this->$name);
+        $label = CRM_Core_PseudoConstant::getLabel(get_class($this), $name, $this->$name);
         if ($label !== FALSE) {
           // Append 'label' onto the field name
           $labelName = $name . '_label';
index 097cfa3d3b25c2ff029f33ee597071a0b7c93c78..ef8b6daca7e38bb897c0da2054afb4c779d612b1 100644 (file)
@@ -440,20 +440,41 @@ class CRM_Core_PseudoConstant {
   }
 
   /**
-   * Fetch the label (or other value) for a field given its key
+   * Fetch the translated label for a field given its key
    *
-   * @param String $daoName
+   * @param String $baoName
    * @param String $fieldName
    * @param String|Int $key
-   * @param Array $params will be passed into self::get
+   *
+   * TODO: Accept multivalued input?
    *
    * @return bool|null|string
    *   FALSE if the given field has no associated option list
    *   NULL if the given key has no corresponding option
    *   String if label is found
    */
-  static function getValue($daoName, $fieldName, $key, $params = array()) {
-    $values = self::get($daoName, $fieldName, $params, 'get');
+  static function getLabel($baoName, $fieldName, $key) {
+    $values = $baoName::buildOptions($fieldName, 'get');
+    if ($values === FALSE) {
+      return FALSE;
+    }
+    return CRM_Utils_Array::value($key, $values);
+  }
+
+  /**
+   * Fetch the machine name for a field given its key
+   *
+   * @param String $baoName
+   * @param String $fieldName
+   * @param String|Int $key
+   *
+   * @return bool|null|string
+   *   FALSE if the given field has no associated option list
+   *   NULL if the given key has no corresponding option
+   *   String if label is found
+   */
+  static function getName($baoName, $fieldName, $key) {
+    $values = $baoName::buildOptions($fieldName, 'validate');
     if ($values === FALSE) {
       return FALSE;
     }
@@ -463,18 +484,17 @@ class CRM_Core_PseudoConstant {
   /**
    * Fetch the key for a field option given its name
    *
-   * @param String $daoName
+   * @param String $baoName
    * @param String $fieldName
    * @param String|Int $value
-   * @param Array $params will be passed into self::get
    *
    * @return bool|null|string|number
    *   FALSE if the given field has no associated option list
    *   NULL if the given key has no corresponding option
    *   String|Number if key is found
    */
-  static function getKey($daoName, $fieldName, $value, $params = array()) {
-    $values = self::get($daoName, $fieldName, $params, 'validate');
+  static function getKey($baoName, $fieldName, $value) {
+    $values = $baoName::buildOptions($fieldName, 'validate');
     if ($values === FALSE) {
       return FALSE;
     }
index 65e08c04715bf1549daa64c11483d8ddfcb8f9f4..25506a4a74ae574768cf41501f595b23c06fe330 100644 (file)
@@ -605,7 +605,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR
         ) {
           $url      = CRM_Utils_System::fixURL($result->$name);
           $typeId   = substr($name, 0, -4) . "-website_type_id";
-          $typeName = CRM_Core_PseudoConstant::getValue('CRM_Core_DAO_Website', 'website_type_id', $result->$typeId);
+          $typeName = CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_Website', 'website_type_id', $result->$typeId);
           if ($typeName) {
             $row[] = "<a href=\"$url\">{$result->$name} (${typeName})</a>";
           }
@@ -614,7 +614,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR
           }
         }
         elseif ($name == 'preferred_language') {
-          $row[] = CRM_Core_PseudoConstant::getValue('CRM_Contact_DAO_Contact', 'preferred_language', $result->$name);
+          $row[] = CRM_Core_PseudoConstant::getLabel('CRM_Contact_DAO_Contact', 'preferred_language', $result->$name);
         }
         elseif ($multipleSelectFields &&
           array_key_exists($name, $multipleSelectFields)
@@ -641,7 +641,7 @@ class CRM_Profile_Selector_Listings extends CRM_Core_Selector_Base implements CR
         elseif (strpos($name, '-im')) {
           if (!empty($result->$name)) {
             $providerId   = $name . "-provider_id";
-            $providerName = CRM_Core_PseudoConstant::getValue('CRM_Core_DAO_IM', 'provider_id', $result->$providerId);
+            $providerName = CRM_Core_PseudoConstant::getLabel('CRM_Core_DAO_IM', 'provider_id', $result->$providerId);
             $row[]        = $result->$name . " ({$providerName})";
           }
           else {
index edaa9abab4c5d59376031f2f0120543ea80c689e..80b5354f356d57106675e3e7b193db18a792ee85 100644 (file)
@@ -360,13 +360,13 @@ class CRM_Report_Form_Grant_Detail extends CRM_Report_Form {
 
       if (array_key_exists('civicrm_grant_grant_type_id', $row)) {
         if ($value = $row['civicrm_grant_grant_type_id']) {
-          $rows[$rowNum]['civicrm_grant_grant_type_id'] = CRM_Core_PseudoConstant::getValue('CRM_Grant_DAO_Grant', 'grant_type_id', $value);
+          $rows[$rowNum]['civicrm_grant_grant_type_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Grant_DAO_Grant', 'grant_type_id', $value);
         }
         $entryFound = TRUE;
       }
       if (array_key_exists('civicrm_grant_status_id', $row)) {
         if ($value = $row['civicrm_grant_status_id']) {
-          $rows[$rowNum]['civicrm_grant_status_id'] = CRM_Core_PseudoConstant::getValue('CRM_Grant_DAO_Grant', 'status_id', $value);
+          $rows[$rowNum]['civicrm_grant_status_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Grant_DAO_Grant', 'status_id', $value);
         }
         $entryFound = TRUE;
       }
index cbe44e723d1727c728d2c0deda5304488c52a146..6ca9aa722eda8fb872c5b018e321bb8b796bd385 100644 (file)
@@ -460,7 +460,7 @@ class CRM_Utils_Token {
         break;
 
       case 'approvalStatus':
-        $value = CRM_Core_PseudoConstant::getValue('CRM_Mailing_DAO_Mailing', 'approval_status_id', $mailing->approval_status_id);
+        $value = CRM_Core_PseudoConstant::getLabel('CRM_Mailing_DAO_Mailing', 'approval_status_id', $mailing->approval_status_id);
         break;
 
       case 'approvalNote':
index ca69ce7533bc3db9be3fc0c818e38d1b32076130..dd4b734dc2e2eaf9b58784a34f7ae207048d1940 100644 (file)
@@ -309,13 +309,13 @@ class org_civicrm_report_grant extends CRM_Report_Form {
     foreach ($rows as $rowNum => $row) {
       if (array_key_exists('civicrm_grant_grant_type_id', $row)) {
         if ($value = $row['civicrm_grant_grant_type_id']) {
-          $rows[$rowNum]['civicrm_grant_grant_type_id'] = CRM_Core_PseudoConstant::getValue('CRM_Grant_DAO_Grant', 'grant_type_id', $value);
+          $rows[$rowNum]['civicrm_grant_grant_type_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Grant_DAO_Grant', 'grant_type_id', $value);
         }
         $entryFound = TRUE;
       }
       if (array_key_exists('civicrm_grant_status_id', $row)) {
         if ($value = $row['civicrm_grant_status_id']) {
-          $rows[$rowNum]['civicrm_grant_status_id'] = CRM_Core_PseudoConstant::getValue('CRM_Grant_DAO_Grant', 'status_id', $value);
+          $rows[$rowNum]['civicrm_grant_status_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Grant_DAO_Grant', 'status_id', $value);
         }
         $entryFound = TRUE;
       }