You are here

public function UserContactImportSettings::configForm in CRM Core 7

Configuration form for settings plugin.

Overrides CRMCoreDataImportSettings::configForm

File

modules/crm_core_data_import/plugins/settings/UserContactImportSettings.inc, line 34

Class

UserContactImportSettings

Code

public function configForm(&$form, &$form_state, $importer, $label) {
  $settings = $importer
    ->getSettings();
  if (!empty($settings['user_contact']) && empty($form_state['values']['user_contact'])) {
    $form_state['values']['user_contact'] = $settings['user_contact'];
  }
  $state_settings = array(
    'visible' => array(
      ':input[name="user_contact[create_automatically]"]' => array(
        'checked' => FALSE,
      ),
    ),
  );
  $form['user_contact'] = array(
    '#type' => 'container',
    '#weight' => -11,
  );
  $form['user_contact']['title'] = array(
    '#type' => 'item',
    '#title' => $label,
  );

  // Ability to disable automatic creation only if crm_core_user_sync enabled.
  if (module_exists('crm_core_user_sync')) {
    $form['user_contact']['create_automatically'] = array(
      '#type' => 'checkbox',
      '#title' => t('Create а contact for imported users?'),
      '#default_value' => !empty($form_state['values']['user_contact']['create_automatically']) ? $form_state['values']['user_contact']['create_automatically'] : FALSE,
    );
  }

  // If contact entity in import.
  $contact = FALSE;
  $entities = $this
    ->entityList($settings);
  foreach ($entities as $entity_info) {
    if ($entity_info['entity_type'] == 'crm_core_contact' && $entity_info['bundle'] == 'individual') {
      $contact = TRUE;
    }
  }
  if ($contact) {
    $form['user_contact']['user_type'] = array(
      '#type' => 'select',
      '#title' => t('Add user'),
      '#options' => $this
        ->getAvailableUsers($settings),
      '#states' => $state_settings,
    );
    $form['user_contact']['add_user_contact'] = array(
      '#type' => 'button',
      '#id' => 'add-user-contact',
      '#value' => t('Add'),
      '#name' => 'add-user-contact',
      '#states' => $state_settings,
      '#ajax' => array(
        'callback' => '_crm_core_data_import_user_contact_callback',
        'method' => 'replace',
        'wrapper' => 'user-contact-form-fields-wrapper',
      ),
    );
    $form['user_contact']['fields'] = array(
      '#type' => 'container',
      '#prefix' => '<div id="user-contact-form-fields-wrapper">',
      '#suffix' => '</div>',
      '#states' => $state_settings,
      '#attributes' => array(
        'class' => array(
          'settings-fieldset-wrapper',
        ),
      ),
    );
    $this
      ->formAttachUserContact($form, $form_state, $settings);
  }
}