You are here

function pcp_get_tagged_profile_fields in Profile Complete Percent 7

Same name and namespace in other branches
  1. 5 pcp.module \pcp_get_tagged_profile_fields()
  2. 6.2 pcp.module \pcp_get_tagged_profile_fields()
  3. 6 pcp.module \pcp_get_tagged_profile_fields()

Get all the profile fields that have been tagged. If an $fiid is passed in, only the data for that field will be returned.

Parameters

$fiid: (optional) NULL The field instance id of the field data should be returned for. If null, all fields are returned.

$entity_type: (optional) NULL The type of entity to return fields for.

$bundle: (optional) NULL The bundle to return fields for.

Return value

field identifier (entity_type:bundle:field_name) and name(s).

3 calls to pcp_get_tagged_profile_fields()
pcp_admin_settings_form_data in includes/pcp.admin.inc
Function that sets up parameters to be used when the pcp_admin_settings_form() function is executed.
pcp_form_field_ui_field_edit_form_alter in ./pcp.module
Implements hook_form_FORM_ID_alter().
pcp_get_complete_percentage_data in ./pcp.module
Get the profile complete percentage data for a given user.

File

./pcp.module, line 302
Allows users with valid permissions to tag profile fields (core fields or Profile2 fields) for a users profile to be considered complete.

Code

function pcp_get_tagged_profile_fields($entity_type = NULL, $bundle = NULL, $field_name = NULL) {
  $enabled_fields = variable_get('pcp_enabled_fields', array());
  if (empty($enabled_fields)) {
    return array();
  }
  $query = db_select('field_config_instance', 'fci');
  $query
    ->addField('fci', 'field_name', 'field_name');
  $query
    ->condition('fci.deleted', 0);
  $or = db_or();
  foreach ($enabled_fields as $enabled_field_identifier) {
    $enabled_field_name_elements = explode(':', $enabled_field_identifier);
    if (count($enabled_field_name_elements) > 2) {
      $or
        ->condition('fci.field_name', $enabled_field_name_elements[2]);
    }
  }
  $query
    ->condition($or);
  if (isset($entity_type)) {
    $query
      ->condition('entity_type', $entity_type);
  }
  if (isset($bundle)) {
    $query
      ->condition('bundle', $bundle);
  }
  if (isset($field_name)) {
    $query
      ->condition('field_name', $field_name);
  }
  $result = $query
    ->execute();
  $fields = array();
  foreach ($result as $row) {
    $fields[$entity_type . ':' . $bundle . ':' . $row->field_name] = $row->field_name;
  }
  return $fields;
}