X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fmigrate_drupal%2Fsrc%2FPlugin%2Fmigrate%2Fsource%2Fd7%2FFieldableEntity.php;fp=web%2Fcore%2Fmodules%2Fmigrate_drupal%2Fsrc%2FPlugin%2Fmigrate%2Fsource%2Fd7%2FFieldableEntity.php;h=95275139cc2c93e4e9ca9c841b3d24524d103e3b;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/web/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/FieldableEntity.php b/web/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/FieldableEntity.php new file mode 100644 index 000000000..95275139c --- /dev/null +++ b/web/core/modules/migrate_drupal/src/Plugin/migrate/source/d7/FieldableEntity.php @@ -0,0 +1,74 @@ +select('field_config_instance', 'fci') + ->fields('fci') + ->condition('entity_type', $entity_type) + ->condition('bundle', isset($bundle) ? $bundle : $entity_type) + ->condition('deleted', 0) + ->execute() + ->fetchAllAssoc('field_name'); + } + + /** + * Retrieves field values for a single field of a single entity. + * + * @param string $entity_type + * The entity type. + * @param string $field + * The field name. + * @param int $entity_id + * The entity ID. + * @param int|null $revision_id + * (optional) The entity revision ID. + * + * @return array + * The raw field values, keyed by delta. + * + * @todo Support multilingual field values. + */ + protected function getFieldValues($entity_type, $field, $entity_id, $revision_id = NULL) { + $table = (isset($revision_id) ? 'field_revision_' : 'field_data_') . $field; + $query = $this->select($table, 't') + ->fields('t') + ->condition('entity_type', $entity_type) + ->condition('entity_id', $entity_id) + ->condition('deleted', 0); + if (isset($revision_id)) { + $query->condition('revision_id', $revision_id); + } + $values = []; + foreach ($query->execute() as $row) { + foreach ($row as $key => $value) { + $delta = $row['delta']; + if (strpos($key, $field) === 0) { + $column = substr($key, strlen($field) + 1); + $values[$delta][$column] = $value; + } + } + } + return $values; + } + +}