You are here

class ReferencesCiviCrmImportSettings in CRM Core 7

Hierarchy

Expanded class hierarchy of ReferencesCiviCrmImportSettings

1 string reference to 'ReferencesCiviCrmImportSettings'
ReferencesCiviCrmImportSettings.inc in modules/crm_core_data_import/plugins/settings/ReferencesCiviCrmImportSettings.inc

File

modules/crm_core_data_import/plugins/settings/ReferencesCiviCrmImportSettings.inc, line 14

View source
class ReferencesCiviCrmImportSettings extends ReferencesImportSettingsBase {

  /**
   * Returns TRUE if conditions match for settings.
   */
  public function displayConditions($importer) {
    $active = FALSE;
    $settings = $importer
      ->getSettings();
    $entity_types = $this
      ->entityList($settings);
    if (is_a($importer->source_plugin, 'CivicrmDataSourceHandler')) {
      foreach ($entity_types as $entity_type) {
        $fields = field_info_instances($entity_type['entity_type'], $entity_type['bundle']);
        foreach ($fields as $field_name => $field) {
          $field_info = field_info_field($field_name);
          if ($field_info['type'] == 'entityreference') {
            $active = TRUE;
          }
        }
      }
    }
    return $active;
  }

  /**
   * Performs when import was successful.
   */
  public function postImport($importer, $imported_item) {
    $settings = $importer
      ->getSettings();
    if (!empty($settings['references']['enable']) && !empty($settings['references']['fields']) && is_a($importer->source_plugin, 'CivicrmDataSourceHandler')) {
      $list = $importer->source_plugin
        ->getEntitiesForReferences($settings['references'], $imported_item, $importer);
      if (!empty($list)) {
        $source_entity = entity_load_single($imported_item['entity_type'], $imported_item['entity_id']);
        $changed = FALSE;
        foreach ($list as $item) {
          $this
            ->attachReference($source_entity, $imported_item['entity_type'], $item['destination_entity'], $item['plugin_data'], $changed);
        }
        if ($changed) {
          entity_save($imported_item['entity_type'], $source_entity);
        }
      }
    }
  }

  /**
   * Create reference between entities.
   */
  public function attachReference(&$source_entity, $source_type, $destination_entity_info, $reference_settings, &$changed) {
    try {
      list(, , , $target_field) = explode(':', $reference_settings['reference_type']);
      $destination_entity = entity_load_single($destination_entity_info->entity_type, $destination_entity_info->id);
      $source_wrapper = entity_metadata_wrapper($source_type, $source_entity);
      if ($source_entity && $destination_entity) {
        $multivalue = FALSE;
        $field = field_info_field($target_field);
        if (!empty($field['cardinality']) && $field['cardinality'] != 1) {
          $multivalue = TRUE;
        }

        // Add value to entity.
        if ($source_entity && $destination_entity) {
          if ($multivalue) {
            $source_wrapper->{$target_field}[] = $destination_entity_info->id;
            $changed = TRUE;
          }
          else {
            $source_wrapper->{$target_field}
              ->set($destination_entity_info->id);
            $changed = TRUE;
          }
        }
      }
    } catch (Exception $e) {
      watchdog('crm_core_data_import', $e
        ->getMessage(), array(), WATCHDOG_ERROR);
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
CRMCoreDataImportSettings::cleanFormValues public function Clear form values.
CRMCoreDataImportSettings::entityList public function List of entities.
CRMCoreDataImportSettings::getMatchMappingEntity public function Returns entity from mapping which match to entity type and bundle.
CRMCoreDataImportSettings::preImport public function Pre import handler. 1
ReferencesCiviCrmImportSettings::attachReference public function Create reference between entities.
ReferencesCiviCrmImportSettings::displayConditions public function Returns TRUE if conditions match for settings. Overrides CRMCoreDataImportSettings::displayConditions
ReferencesCiviCrmImportSettings::postImport public function Performs when import was successful. Overrides CRMCoreDataImportSettings::postImport
ReferencesImportSettingsBase::configForm public function Configuration form for settings plugin. Overrides CRMCoreDataImportSettings::configForm
ReferencesImportSettingsBase::configFormSubmit public function Submission handler for configForm(). Overrides CRMCoreDataImportSettings::configFormSubmit
ReferencesImportSettingsBase::configFormValidate public function Validation handler for configForm(). Overrides CRMCoreDataImportSettings::configFormValidate
ReferencesImportSettingsBase::createReference public function Create reference between entities.
ReferencesImportSettingsBase::entityBundleIsAvailable public function Returns TRUE if entity bundle available in current settings.
ReferencesImportSettingsBase::entityTypeIsAvailable public function Returns TRUE if entity type available in current settings.
ReferencesImportSettingsBase::formAttachFieldReference public function Attach one reference field to form.
ReferencesImportSettingsBase::formAttachReferences public function Attach reference fields to form.
ReferencesImportSettingsBase::getAvailableReferences public function Build a list of available references relevant to current settings.