| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 
							- <?php
 
- /**
 
-  * @file
 
-  * On behalf implementation of Feeds mapping API for entity_translation.module.
 
-  */
 
- /**
 
-  * Implements hook_feeds_presave().
 
-  */
 
- function entity_translation_feeds_presave(FeedsSource $source, $entity, $item, $entity_id) {
 
-   $entity_type = $entity->feeds_item->entity_type;
 
-   // Check that it's a real entity type, and translation is enabled.
 
-   if (!entity_get_info($entity_type) || !entity_translation_enabled($entity_type, $entity)) {
 
-     return;
 
-   }
 
-   if (!$handler = entity_translation_get_handler($entity_type, $entity)) {
 
-     return;
 
-   }
 
-   list(, , $bundle) = entity_extract_ids($entity_type, $entity);
 
-   $languages_seen = array();
 
-   foreach (field_info_instances($entity_type, $bundle) as $instance) {
 
-     $field_name = $instance['field_name'];
 
-     // No values in this field, skip it.
 
-     if (empty($entity->$field_name) || !is_array($entity->$field_name)) {
 
-       continue;
 
-     }
 
-     // Not translatable.
 
-     $info = field_info_field($field_name);
 
-     if (!$info || !$info['translatable']) {
 
-       continue;
 
-     }
 
-     // Init the translation handler.
 
-     if (empty($handler->getTranslations()->original)) {
 
-       $handler->initTranslations();
 
-     }
 
-     // Avoid invalid user configuration. Entity translation does this when
 
-     // loading the translation overview page.
 
-     if (count($entity->$field_name) === 1 && key($entity->$field_name) === LANGUAGE_NONE && $handler->getLanguage() !== LANGUAGE_NONE) {
 
-       $entity->{$field_name}[$handler->getLanguage()] = $entity->{$field_name}[LANGUAGE_NONE];
 
-       $entity->{$field_name}[LANGUAGE_NONE] = array();
 
-     }
 
-     // Look for languages we haven't created a translation for yet.
 
-     foreach (array_diff_key($entity->$field_name, $languages_seen) as $language => $v) {
 
-       if ($language === LANGUAGE_NONE) {
 
-         continue;
 
-       }
 
-       $languages_seen[$language] = TRUE;
 
-       if ($language === $handler->getLanguage()) {
 
-         continue;
 
-       }
 
-       $translation = array(
 
-         'translate' => 0,
 
-         'status' => 1,
 
-         'language' => $language,
 
-         'source' => $handler->getLanguage(),
 
-       );
 
-       $handler->setTranslation($translation, $entity);
 
-     }
 
-   }
 
-   // Loop through every language for the site, and remove translations for the
 
-   // ones that don't have any values.
 
-   foreach (language_list() as $language) {
 
-     if (!isset($languages_seen[$language->language])) {
 
-       $handler->removeTranslation($language->language);
 
-     }
 
-   }
 
- }
 
 
  |