public function FeedsFieldCollectionProcessor::entitysave in Field collection feeds 7
Save a entity.
File
- plugins/
FeedsFieldCollectionProcessor.inc, line 54 - Class definition of FeedsFieldCollectionProcessor.
Class
- FeedsFieldCollectionProcessor
- Creates field collection from feed items.
Code
public function entitysave($entity) {
$values = (array) $entity;
$skip_host_save = FALSE;
$field_collection_item = entity_create('field_collection_item', $values);
if (!empty($entity->hostEntityId)) {
$hostEntity_array = entity_load($this->config['host_entity_type'], array(
$entity->hostEntityId,
));
$hostEntity = reset($hostEntity_array);
$field_collection_item
->setHostEntity($this->config['host_entity_type'], $hostEntity);
//update by set item_id
if ($this->config['update_existing'] == FEEDS_UPDATE_EXISTING && isset($field_collection_item->identifier_field) && isset($this->config['identifier_field_name'])) {
$query = new EntityFieldQuery();
$query
->entityCondition('entity_type', 'field_collection_item');
$query
->entityCondition('bundle', $this->config['field_name']);
$items = isset($hostEntity->{$this->config['field_name']}[LANGUAGE_NONE]) ? $hostEntity->{$this->config['field_name']}[LANGUAGE_NONE] : array();
$ids = field_collection_field_item_to_ids($items);
if (!empty($ids)) {
$query
->entityCondition('entity_id', $ids, 'IN');
$query
->fieldCondition($this->config['identifier_field_name'], 'value', $field_collection_item->identifier_field);
$result = $query
->execute();
list($EntityType, $data) = each($result);
$field_collection_item->item_id = $data ? key($data) : FALSE;
}
if (!empty($field_collection_item->item_id)) {
$field_collection_item->is_new = NULL;
$old_field_collection_item = field_collection_item_load($field_collection_item->item_id);
$field_collection_item->revision_id = $old_field_collection_item->revision_id;
$skip_host_save = TRUE;
}
//drupal_set_message('123:'.$field_collection_item->item_id);
}
}
$field_collection_item
->save($skip_host_save);
}