diff --git a/feeds.module b/feeds.module index 908b2f80d13363ff3326f37200d155185988d275..9d9f6ed6d8f0d5785670f66135db3c4e89d07048 100644 --- a/feeds.module +++ b/feeds.module @@ -1255,6 +1255,12 @@ function feeds_entity_property_info_alter(&$info) { 'description' => t('Nid of the Feed Node that imported this entity.'), 'getter callback' => 'feeds_get_feed_nid_entity_callback', ); + $info[$entity_type]['properties']['feed_node'] = array( + 'label' => 'Feed node', + 'type' => 'node', + 'description' => t('Feed Node that imported this entity.'), + 'getter callback' => 'feeds_get_feed_nid_entity_callback', + ); } } @@ -1264,10 +1270,17 @@ function feeds_entity_property_info_alter(&$info) { function feeds_get_feed_nid_entity_callback($entity, array $options, $name, $entity_type) { list($entity_id, , ) = entity_extract_ids($entity_type, $entity); - $feed_nid = feeds_get_feed_nid($entity_id, $entity_type); - - if ($feed_nid === FALSE) { - return NULL; + $feed_nid = NULL; + if ($entity_id) { + $feed_nid = feeds_get_feed_nid($entity_id, $entity_type); + if ($feed_nid === FALSE) { + return NULL; + } + } + // If the entity has no ID (yet) try read the feed nid from the object + // directly. + elseif (isset($entity->feeds_item->feed_nid)) { + $feed_nid = $entity->feeds_item->feed_nid; } return $feed_nid; }