| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Support for migrate module.
 
-  *
 
-  * With Migrate 2.4 or later, you can use the subfield syntax to set the title
 
-  * and attributes:
 
-  *
 
-  * @code
 
-  * $this->addFieldMapping('field_my_link', 'source_url');
 
-  * $this->addFieldMapping('field_my_link:title', 'source_title');
 
-  * $this->addFieldMapping('field_my_link:attributes', 'source_attributes');
 
-  * @endcode
 
-  *
 
-  * With earlier versions of Migrate, you must pass an arguments array:
 
-  *
 
-  * @code
 
-  * $link_args = array(
 
-  *   'title' => array('source_field' => 'source_title'),
 
-  *   'attributes' => array('source_field' => 'source_attributes'),
 
-  * );
 
-  * $this->addFieldMapping('field_my_link', 'source_url')
 
-  *      ->arguments($link_args);
 
-  * @endcode
 
-  */
 
- /**
 
-  * Implements hook_migrate_api().
 
-  */
 
- function link_migrate_api() {
 
-   return array(
 
-     'api' => 2,
 
-     'field handlers' => array('MigrateLinkFieldHandler'),
 
-   );
 
- }
 
- class MigrateLinkFieldHandler extends MigrateFieldHandler {
 
-   public function __construct() {
 
-     $this->registerTypes(array('link_field'));
 
-   }
 
-   static function arguments($title = NULL, $attributes = NULL, $language = NULL) {
 
-     $arguments = array();
 
-     if (!is_null($title)) {
 
-       $arguments['title'] = $title;
 
-     }
 
-     if (!is_null($attributes)) {
 
-       $arguments['attributes'] = $attributes;
 
-     }
 
-     if (!is_null($language)) {
 
-       $arguments['language'] = $language;
 
-     }
 
-     return $arguments;
 
-   }
 
-   /**
 
-    * Implementation of MigrateFieldHandler::fields().
 
-    *
 
-    * @param $type
 
-    *  The field type.
 
-    * @param $instance
 
-    *  Instance info for the field.
 
-    * @param Migration $migration
 
-    *  The migration context for the parent field. We can look at the mappings
 
-    *  and determine which subfields are relevant.
 
-    * @return array
 
-    */
 
-   public function fields($type, $instance, $migration = NULL) {
 
-     return array(
 
-       'title' => t('Subfield: The link title attribute'),
 
-       'attributes' => t('Subfield: The attributes for this link'),
 
-       'language' => t('Subfield: The language for the field'),
 
-     );
 
-   }
 
-   public function prepare($entity, array $field_info, array $instance, array $values) {
 
-     if (isset($values['arguments'])) {
 
-       $arguments = $values['arguments'];
 
-       unset($values['arguments']);
 
-     }
 
-     else {
 
-       $arguments = array();
 
-     }
 
-     $language = $this->getFieldLanguage($entity, $field_info, $arguments);
 
-     $values = array_filter($values);
 
-     foreach ($values as $delta => $value) {
 
-       $item = array();
 
-       if (isset($arguments['title'])) {
 
-         if (!is_array($arguments['title'])) {
 
-           $item['title'] = $arguments['title'];
 
-         }
 
-         elseif (isset($arguments['title'][$delta])) {
 
-           $item['title'] = $arguments['title'][$delta];
 
-         }
 
-       }
 
-       if (isset($arguments['attributes'])) {
 
-         if (is_array($arguments['attributes']) && isset($arguments['attributes'][$delta])) {
 
-           $item['attributes'] = $arguments['attributes'][$delta];
 
-         }
 
-         else {
 
-           $item['attributes'] = $arguments['attributes'];
 
-         }
 
-       }
 
-       $item['url'] = $value;
 
-       $return[$language][$delta] = $item;
 
-     }
 
-     return isset($return) ? $return : NULL;
 
-   }
 
- }
 
 
  |