| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- <?php
 
- /**
 
-  * @file
 
-  * MigrateTranslationEntityHandler class for entity_translation.
 
-  */
 
- /**
 
-  * Destination handler implementing translatable fields.
 
-  */
 
- class MigrateTranslationEntityHandler extends MigrateDestinationHandler {
 
-   /**
 
-    * Registers all entites as handled by this class.
 
-    */
 
-   public function __construct() {
 
-     $this->registerTypes(array('entity'));
 
-   }
 
-   /**
 
-    * Handles Entity Translations.
 
-    *
 
-    * @param stdClass $entity
 
-    * @param stdClass $sourceRow
 
-    */
 
-   public function prepare($entity, stdClass $row) {
 
-     $migration = Migration::currentMigration();
 
-     $entity_type = $migration->getDestination()->getEntityType();
 
-     // Only continue if the entity type + bundle combination is enabled for
 
-     // entity_translation.
 
-     if (entity_translation_enabled($entity_type, $entity)) {
 
-       // Get the entity_translation handler and load any existing translations.
 
-       $handler = entity_translation_get_handler($entity_type, $entity);
 
-       $handler->loadTranslations();
 
-       $original_language = $handler->getLanguage();
 
-       // Get the bundle of the entity.
 
-       list(, , $bundle) = entity_extract_ids($entity_type, $entity);
 
-       // We need to get all of the possible translations to create. So we look
 
-       // for any translatable fields.
 
-       $translatable_fields = array();
 
-       foreach (field_info_instances($entity_type, $bundle) as $instance) {
 
-         $field_name = $instance['field_name'];
 
-         $field = field_info_field($field_name);
 
-         if ($field['translatable']) {
 
-           $translatable_fields[] = $field_name;
 
-         }
 
-       }
 
-       // In those fields we look for translated values to build out an array
 
-       // of languages we need to set translations for.
 
-       $translate_languages = array();
 
-       foreach ($translatable_fields as $translatable_field) {
 
-         if (!empty($entity->{$translatable_field})) {
 
-           $field_languages = array_keys($entity->{$translatable_field});
 
-           foreach ($field_languages as $field_language) {
 
-             $translate_languages[$field_language] = $field_language;
 
-           }
 
-         }
 
-       }
 
-       // Remove the LANGUAGE_NONE results.
 
-       unset($translate_languages[LANGUAGE_NONE]);
 
-       // Remove the original language.
 
-       unset($translate_languages[$original_language]);
 
-       // Anything we're left with is a translation that should be set.
 
-       foreach ($translate_languages as $translate_language) {
 
-         if (!isset($entity->translations->data[$translate_language])) {
 
-           // Add the new translation and store it.
 
-           $handler->setTranslation(array(
 
-             'translate' => 0,
 
-             'status' => 1,
 
-             'language' => $translate_language,
 
-             'source' => $original_language,
 
-             'uid' => (empty($entity->uid)) ? 0 : $entity->uid,
 
-             'changed' => (empty($entity->changed)) ? REQUEST_TIME : $entity->changed,
 
-             'created' => (empty($entity->created)) ? REQUEST_TIME : $entity->created,
 
-           ));
 
-         }
 
-       }
 
-     }
 
-   }
 
- }
 
 
  |