annotate sites/all/modules/link/link.migrate.inc @ 9:830c812b520f

added smtp module
author root <root@paio.local>
date Mon, 28 Oct 2013 15:34:27 +0000
parents ce11bbd8f642
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2
danielebarchiesi@4 3 /**
danielebarchiesi@4 4 * @file
danielebarchiesi@4 5 * Support for migrate module.
danielebarchiesi@4 6 *
danielebarchiesi@4 7 * With Migrate 2.4 or later, you can use the subfield syntax to set the title
danielebarchiesi@4 8 * and attributes:
danielebarchiesi@4 9 *
danielebarchiesi@4 10 * @code
danielebarchiesi@4 11 * $this->addFieldMapping('field_my_link', 'source_url');
danielebarchiesi@4 12 * $this->addFieldMapping('field_my_link:title', 'source_title');
danielebarchiesi@4 13 * $this->addFieldMapping('field_my_link:attributes', 'source_attributes');
danielebarchiesi@4 14 * @endcode
danielebarchiesi@4 15 *
danielebarchiesi@4 16 * With earlier versions of Migrate, you must pass an arguments array:
danielebarchiesi@4 17 *
danielebarchiesi@4 18 * @code
danielebarchiesi@4 19 * $link_args = array(
danielebarchiesi@4 20 * 'title' => array('source_field' => 'source_title'),
danielebarchiesi@4 21 * 'attributes' => array('source_field' => 'source_attributes'),
danielebarchiesi@4 22 * );
danielebarchiesi@4 23 * $this->addFieldMapping('field_my_link', 'source_url')
danielebarchiesi@4 24 * ->arguments($link_args);
danielebarchiesi@4 25 * @endcode
danielebarchiesi@4 26 */
danielebarchiesi@4 27
danielebarchiesi@4 28 /**
danielebarchiesi@4 29 * Implements hook_migrate_api().
danielebarchiesi@4 30 */
danielebarchiesi@4 31 function link_migrate_api() {
danielebarchiesi@4 32 return array(
danielebarchiesi@4 33 'api' => 2,
danielebarchiesi@4 34 'field handlers' => array('MigrateLinkFieldHandler'),
danielebarchiesi@4 35 );
danielebarchiesi@4 36 }
danielebarchiesi@4 37
danielebarchiesi@4 38 class MigrateLinkFieldHandler extends MigrateFieldHandler {
danielebarchiesi@4 39 public function __construct() {
danielebarchiesi@4 40 $this->registerTypes(array('link_field'));
danielebarchiesi@4 41 }
danielebarchiesi@4 42
danielebarchiesi@4 43 static function arguments($title = NULL, $attributes = NULL, $language = NULL) {
danielebarchiesi@4 44 $arguments = array();
danielebarchiesi@4 45 if (!is_null($title)) {
danielebarchiesi@4 46 $arguments['title'] = $title;
danielebarchiesi@4 47 }
danielebarchiesi@4 48 if (!is_null($attributes)) {
danielebarchiesi@4 49 $arguments['attributes'] = $attributes;
danielebarchiesi@4 50 }
danielebarchiesi@4 51 if (!is_null($language)) {
danielebarchiesi@4 52 $arguments['language'] = $language;
danielebarchiesi@4 53 }
danielebarchiesi@4 54 return $arguments;
danielebarchiesi@4 55 }
danielebarchiesi@4 56
danielebarchiesi@4 57 /**
danielebarchiesi@4 58 * Implementation of MigrateFieldHandler::fields().
danielebarchiesi@4 59 *
danielebarchiesi@4 60 * @param $type
danielebarchiesi@4 61 * The field type.
danielebarchiesi@4 62 * @param $instance
danielebarchiesi@4 63 * Instance info for the field.
danielebarchiesi@4 64 * @param Migration $migration
danielebarchiesi@4 65 * The migration context for the parent field. We can look at the mappings
danielebarchiesi@4 66 * and determine which subfields are relevant.
danielebarchiesi@4 67 * @return array
danielebarchiesi@4 68 */
danielebarchiesi@4 69 public function fields($type, $instance, $migration = NULL) {
danielebarchiesi@4 70 return array(
danielebarchiesi@4 71 'title' => t('Subfield: The link title attribute'),
danielebarchiesi@4 72 'attributes' => t('Subfield: The attributes for this link'),
danielebarchiesi@4 73 'language' => t('Subfield: The language for the field'),
danielebarchiesi@4 74 );
danielebarchiesi@4 75 }
danielebarchiesi@4 76
danielebarchiesi@4 77 public function prepare($entity, array $field_info, array $instance, array $values) {
danielebarchiesi@4 78 if (isset($values['arguments'])) {
danielebarchiesi@4 79 $arguments = $values['arguments'];
danielebarchiesi@4 80 unset($values['arguments']);
danielebarchiesi@4 81 }
danielebarchiesi@4 82 else {
danielebarchiesi@4 83 $arguments = array();
danielebarchiesi@4 84 }
danielebarchiesi@4 85
danielebarchiesi@4 86 $language = $this->getFieldLanguage($entity, $field_info, $arguments);
danielebarchiesi@4 87 $values = array_filter($values);
danielebarchiesi@4 88
danielebarchiesi@4 89 foreach ($values as $delta => $value) {
danielebarchiesi@4 90 $item = array();
danielebarchiesi@4 91 if (isset($arguments['title'])) {
danielebarchiesi@4 92 if (!is_array($arguments['title'])) {
danielebarchiesi@4 93 $item['title'] = $arguments['title'];
danielebarchiesi@4 94 }
danielebarchiesi@4 95 elseif (isset($arguments['title'][$delta])) {
danielebarchiesi@4 96 $item['title'] = $arguments['title'][$delta];
danielebarchiesi@4 97 }
danielebarchiesi@4 98 }
danielebarchiesi@4 99 if (isset($arguments['attributes'])) {
danielebarchiesi@4 100 $item['attributes'] = $arguments['attributes'];
danielebarchiesi@4 101 }
danielebarchiesi@4 102 $item['url'] = $value;
danielebarchiesi@4 103 $return[$language][$delta] = $item;
danielebarchiesi@4 104 }
danielebarchiesi@4 105
danielebarchiesi@4 106 return isset($return) ? $return : NULL;
danielebarchiesi@4 107 }
danielebarchiesi@4 108 }