|
@@ -21,8 +21,13 @@ class D7TaxonomyTermThesaurus extends FieldableEntity {
|
|
|
public function query() {
|
|
|
$query = $this->select('taxonomy_term_data', 'td')
|
|
|
->fields('td')
|
|
|
- ->distinct()
|
|
|
+ ->condition('et.entity_type', 'taxonomy_term')
|
|
|
+ ->condition('et.source', '')
|
|
|
->orderBy('tid');
|
|
|
+
|
|
|
+ $query->innerJoin('entity_translation', 'et', 'et.entity_id = td.tid');
|
|
|
+ $query->fields('et');
|
|
|
+
|
|
|
$query->leftJoin('taxonomy_vocabulary', 'tv', 'td.vid = tv.vid');
|
|
|
$query->addField('tv', 'machine_name');
|
|
|
|
|
@@ -48,6 +53,9 @@ class D7TaxonomyTermThesaurus extends FieldableEntity {
|
|
|
'format' => $this->t("Format of the term description."),
|
|
|
'synonyms' => $this->t("Term's Synonyms (field : synonyms_synonym)"),
|
|
|
'displayed_on_advanced_search' => $this->t("field_used_on_advanced_search"),
|
|
|
+ 'revision_id' => $this->t('Revision ID'),
|
|
|
+ 'language' => $this->t('Term translation language'),
|
|
|
+ 'source' => $this->t('Term translation source language'),
|
|
|
];
|
|
|
return $fields;
|
|
|
}
|
|
@@ -57,16 +65,20 @@ class D7TaxonomyTermThesaurus extends FieldableEntity {
|
|
|
* {@inheritdoc}
|
|
|
*/
|
|
|
public function prepareRow(Row $row) {
|
|
|
- print("\n\n".'-- prepareRow -- '.$row->getSourceProperty('tid')." -- ".$row->getSourceProperty('name')." -- ".$row->getSourceProperty('weight')."\n");
|
|
|
+ $language = $row->getSourceProperty('language');
|
|
|
+ drush_print('-- '.$language.' -- '.$row->getSourceProperty('tid')." -- ".$row->getSourceProperty('name')." -- ".$row->getSourceProperty('weight'));
|
|
|
+
|
|
|
+ $tid = $row->getSourceProperty('tid');
|
|
|
+ // vocabulary machine name
|
|
|
+ $machine_name = $row->getSourceProperty('machine_name');
|
|
|
+ $revid = $row->getSourceProperty('revision_id');
|
|
|
|
|
|
// Get Field API field values.
|
|
|
- // foreach (array_keys($this->getFields('taxonomy_term', $row->getSourceProperty('machine_name'))) as $field) {
|
|
|
- // $tid = $row->getSourceProperty('tid');
|
|
|
- // $row->setSourceProperty($field, $this->getFieldValues('taxonomy_term', $field, $tid));
|
|
|
- // print("field: ".$field."\n");
|
|
|
- // print_r($this->getFieldValues('taxonomy_term', $field, $tid));
|
|
|
- // print("-\n");
|
|
|
- // }
|
|
|
+ foreach ($this->getFields('taxonomy_term', $machine_name) as $field_name => $field) {
|
|
|
+ // Ensure we're using the right language if the entity is translatable.
|
|
|
+ $field_language = $field['translatable'] ? $language : NULL;
|
|
|
+ $row->setSourceProperty($field_name, $this->getFieldValues('taxonomy_term', $field_name, $tid, $revid, $field_language));
|
|
|
+ }
|
|
|
|
|
|
// Find parents for this row.
|
|
|
$parents = $this->select('taxonomy_term_hierarchy', 'th')
|
|
@@ -75,66 +87,16 @@ class D7TaxonomyTermThesaurus extends FieldableEntity {
|
|
|
->execute()
|
|
|
->fetchCol();
|
|
|
$row->setSourceProperty('parent', $parents);
|
|
|
- // print_r($parents);
|
|
|
-
|
|
|
- // get the english term name as defaut
|
|
|
- $query = $this->select('entity_translation', 'et')
|
|
|
- // ->fields('et', [
|
|
|
- // 'entity_id',
|
|
|
- // 'revision_id',
|
|
|
- // 'language',
|
|
|
- // 'source',
|
|
|
- // 'uid',
|
|
|
- // 'status',
|
|
|
- // 'created',
|
|
|
- // 'changed',
|
|
|
- // ])
|
|
|
- // ->distinct()
|
|
|
- ->condition('et.entity_type', 'taxonomy_term')
|
|
|
- ->condition('et.language', 'en')
|
|
|
- ->condition('rnf.language', 'en')
|
|
|
- ->condition('et.entity_id', $row->getSourceProperty('tid'));
|
|
|
- $query->innerjoin('field_revision_name_field', 'rnf', 'rnf.revision_id = et.revision_id');
|
|
|
- $query->fields('rnf', ['name_field_value']);
|
|
|
- $name_field_en = $query->execute()->fetchField();
|
|
|
|
|
|
- print($name_field_en);
|
|
|
-
|
|
|
- if($name_field_en != NULL && $name_field_en != ""){
|
|
|
- $row->setSourceProperty('name', $name_field_en);
|
|
|
- }
|
|
|
-
|
|
|
- // If the term name or term description were replaced by real fields using
|
|
|
- // the Drupal 7 Title module, use the fields value instead of the term name
|
|
|
- // or term description.
|
|
|
- // if ($this->moduleExists('title')) {
|
|
|
- // $name_field = $row->getSourceProperty('name_field');
|
|
|
- // // print_r($name_field);
|
|
|
- // if (isset($name_field[0]['value'])) {
|
|
|
- // $row->setSourceProperty('name', $name_field[0]['value']);
|
|
|
- // }
|
|
|
- // $description_field = $row->getSourceProperty('description_field');
|
|
|
- // if (isset($description_field[0]['value'])) {
|
|
|
- // $row->setSourceProperty('description', $description_field[0]['value']);
|
|
|
- // }
|
|
|
- // }
|
|
|
-
|
|
|
- // Synonyms
|
|
|
+ // If the node title was replaced by a real field using the Drupal 7 Title
|
|
|
+ // module, use the field value instead of the node title.
|
|
|
if ($this->moduleExists('title')) {
|
|
|
- $synonyms = $row->getSourceProperty('synonyms_synonym');
|
|
|
- // print_r($synonyms);
|
|
|
- if(!empty($synonyms)){
|
|
|
- $row->setSourceProperty('synonyms', $synonyms);
|
|
|
+ $name_field = $row->getSourceProperty('name_field');
|
|
|
+ if (isset($name_field[0]['value'])) {
|
|
|
+ $row->setSourceProperty('name', $name_field[0]['value']);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // displayed_on_advanced_search
|
|
|
- $advanced_search = $row->getSourceProperty('field_used_on_advanced_search');
|
|
|
- // print_r($advanced_search);
|
|
|
- if(!empty($advanced_search)){
|
|
|
- $row->setSourceProperty('advanced_search', $advanced_search);
|
|
|
- }
|
|
|
-
|
|
|
return parent::prepareRow($row);
|
|
|
}
|
|
|
|