/** * 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]; }