コード例 #1
0
 /**
  * Store and return an array of all active custom fields.
  *
  * @param string      $contactType   Contact type
  * @param boolean     $showAll       If true returns all fields (includes disabled fields)
  *
  * @return array      $fields - an array of active custom fields.
  *
  * @access public
  * @static
  */
 function &getFields($contactType = 'Individual', $showAll = false)
 {
     if (!$GLOBALS['_CRM_CORE_BAO_CUSTOMFIELD']['_importFields'] || !CRM_Utils_Array::value($contactType, $GLOBALS['_CRM_CORE_BAO_CUSTOMFIELD']['_importFields'])) {
         if (!$GLOBALS['_CRM_CORE_BAO_CUSTOMFIELD']['_importFields']) {
             $GLOBALS['_CRM_CORE_BAO_CUSTOMFIELD']['_importFields'] = array();
         }
         $cfTable = CRM_Core_BAO_CustomField::getTableName();
         $cgTable = CRM_Core_DAO_CustomGroup::getTableName();
         $extends = '';
         if ($contactType) {
             if (in_array($contactType, array('Individual', 'Household', 'Organization'))) {
                 $value = "'" . CRM_Utils_Type::escape($contactType, 'String') . "', 'Contact' ";
             } else {
                 $value = "'" . CRM_Utils_Type::escape($contactType, 'String') . "'";
             }
             $extends = "AND   {$cgTable}.extends IN ( {$value} ) ";
         }
         $query = "SELECT {$cfTable}.id, {$cfTable}.label,\n                            {$cgTable}.title,\n                            {$cfTable}.data_type, {$cfTable}.html_type,\n                            {$cfTable}.options_per_line,\n                            {$cgTable}.extends, {$cfTable}.is_search_range\n                     FROM {$cfTable}\n                     INNER JOIN {$cgTable}\n                     ON {$cfTable}.custom_group_id = {$cgTable}.id\n                     WHERE ";
         if (!$showAll) {
             $query .= "{$cfTable}.is_active = 1\n                          AND {$cgTable}.is_active = 1";
         } else {
             $query .= " 1 ";
         }
         $query .= " {$extends}\n                       ORDER BY {$cgTable}.weight, {$cgTable}.title,\n                                {$cfTable}.weight, {$cfTable}.label";
         $crmDAO =& new CRM_Core_DAO();
         $crmDAO->query($query);
         $result = $crmDAO->getDatabaseResult();
         $fields = array();
         while (($row = $result->fetchRow()) != null) {
             $id = array_shift($row);
             $fields[$id] = $row;
         }
         $GLOBALS['_CRM_CORE_BAO_CUSTOMFIELD']['_importFields'][$contactType] = $fields;
     }
     // CRM_Core_Error::debug( 's', self::$_importFields );
     return $GLOBALS['_CRM_CORE_BAO_CUSTOMFIELD']['_importFields'][$contactType];
 }