/** * Override EntityReferenceHandler::settingsForm(). */ public static function settingsForm($field, $instance) { $form = parent::settingsForm($field, $instance); $entity_type = $field['settings']['target_type']; $entity_info = entity_get_info($entity_type); $bundles = array(); foreach ($entity_info['bundles'] as $bundle_name => $bundle_info) { if (og_is_group_type($entity_type, $bundle_name)) { $bundles[$bundle_name] = $bundle_info['label']; } } if (!$bundles) { $form['target_bundles'] = array('#type' => 'item', '#title' => t('Target bundles'), '#markup' => t('Error: The selected "Target type" %entity does not have bundles that are a group type', array('%entity' => $entity_info['label']))); } else { $settings = $field['settings']['handler_settings']; $settings += array('target_bundles' => array(), 'membership_type' => OG_MEMBERSHIP_TYPE_DEFAULT); $form['target_bundles'] = array('#type' => 'select', '#title' => t('Target bundles'), '#options' => $bundles, '#default_value' => $settings['target_bundles'], '#size' => 6, '#multiple' => TRUE, '#description' => t('The bundles of the entity type acting as group, that can be referenced. Optional, leave empty for all bundles.')); $options = array(); foreach (og_membership_type_load() as $og_membership) { $options[$og_membership->name] = $og_membership->description; } $form['membership_type'] = array('#type' => 'select', '#title' => t('OG membership type'), '#description' => t('Select the membership type that will be used for a subscribing user.'), '#options' => $options, '#default_value' => $settings['membership_type'], '#required' => TRUE); } return $form; }
/** * Override settings form(). */ public static function settingsForm($field, $instance) { $form = parent::settingsForm($field, $instance); $entity_type = $field['settings']['target_type']; $entity_info = entity_get_info($entity_type); $bundles = array(); foreach ($entity_info['bundles'] as $bundle_name => $bundle_info) { if (og_is_group_type($entity_type, $bundle_name)) { $bundles[$bundle_name] = $bundle_info['label']; } } if (!$bundles) { $form['target_bundles'] = array('#type' => 'item', '#title' => t('Target bundles'), '#markup' => t('Error: The selected "Target type" %entity does not have bundles that are a group type', array('%entity' => $entity_info['label']))); } else { $settings = $field['settings']['handler_settings']; $settings += array('target_bundles' => array(), 'membership_type' => OG_MEMBERSHIP_TYPE_DEFAULT, 'reference_type' => 'my_groups', 'primary_field' => FALSE, 'hide_secondary_field' => TRUE); $form['target_bundles'] = array('#type' => 'select', '#title' => t('Target bundles'), '#options' => $bundles, '#default_value' => $settings['target_bundles'], '#size' => 6, '#multiple' => TRUE, '#description' => t('The bundles of the entity type acting as group, that can be referenced. Optional, leave empty for all bundles.')); $options = array(); foreach (og_membership_type_load() as $og_membership) { $options[$og_membership->name] = $og_membership->description; } $form['membership_type'] = array('#type' => 'select', '#title' => t('OG membership type'), '#description' => t('Select the membership type that will be used for a subscribing user.'), '#options' => $options, '#default_value' => $settings['membership_type'], '#required' => TRUE); $form['reference_type'] = array('#type' => 'select', '#title' => t('Reference'), '#options' => array('my_groups' => t('My groups'), 'other_groups' => t('Other groups'), 'all_groups' => t('All groups')), '#description' => t('What groups should be referenced.'), '#default_value' => $settings['reference_type']); $options = array('0' => t('None')); // Get all the other group audience fields in this bundle. $entity_type = $instance['entity_type']; $bundle = $instance['bundle']; $fields_info = field_info_fields(); foreach (field_info_instances($entity_type, $bundle) as $field_name => $field_instance) { if ($field_name == $field['field_name']) { // This is the current field. continue; } if ($fields_info[$field_name]['type'] != 'entityreference' || $fields_info[$field_name]['settings']['handler'] != 'og') { // This is not an Entity reference field. continue; } if (!empty($fields_info[$field_name]['settings']['handler_settings']['primary_field'])) { // Field is already a secondary field. continue; } $options[$field_name] = $field_instance['label'] . ' (' . $field_name . ')'; } $form['primary_field'] = array('#type' => 'select', '#title' => t('Primary field'), '#description' => t('Select a field that will be populated with the values of this field.'), '#options' => $options, '#default_value' => $settings['primary_field'], '#required' => TRUE, '#element_validate' => array('og_handler_primary_field_validate')); $form['hide_secondary_field'] = array('#type' => 'checkbox', '#title' => t('Hide secondary field'), '#description' => t('Show the secondary field only to users with "administer group" permission.'), '#default_value' => $settings['hide_secondary_field'], '#states' => array('invisible' => array(':input[name="field[settings][handler_settings][primary_field]"]' => array('value' => 0)))); form_load_include($form_state, 'php', 'og', '/plugins/selection/og.class'); } return $form; }