|
@@ -0,0 +1,149 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace Drupal\materio_migrate\Plugin\migrate\source;
|
|
|
+
|
|
|
+use Drupal\migrate\Row;
|
|
|
+use Drupal\migrate_drupal\Plugin\migrate\source\d7\FieldableEntity;
|
|
|
+
|
|
|
+
|
|
|
+ * Taxonomy term source from database.
|
|
|
+ *
|
|
|
+ * @MigrateSource(
|
|
|
+ * id = "d7_taxonomy_term_thesaurus",
|
|
|
+ * source_module = "taxonomy"
|
|
|
+ * )
|
|
|
+ */
|
|
|
+class D7TaxonomyTermThesaurus extends FieldableEntity {
|
|
|
+
|
|
|
+
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function query() {
|
|
|
+ $query = $this->select('taxonomy_term_data', 'td')
|
|
|
+ ->fields('td')
|
|
|
+ ->distinct()
|
|
|
+ ->orderBy('tid');
|
|
|
+ $query->leftJoin('taxonomy_vocabulary', 'tv', 'td.vid = tv.vid');
|
|
|
+ $query->addField('tv', 'machine_name');
|
|
|
+
|
|
|
+ if (isset($this->configuration['bundle'])) {
|
|
|
+ $query->condition('tv.machine_name', (array) $this->configuration['bundle'], 'IN');
|
|
|
+ }
|
|
|
+
|
|
|
+ return $query;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function fields() {
|
|
|
+ $fields = [
|
|
|
+ 'tid' => $this->t('The term ID.'),
|
|
|
+ 'vid' => $this->t('Existing term VID'),
|
|
|
+ 'machine_name' => $this->t('Vocabulary machine name'),
|
|
|
+ 'name' => $this->t('The name of the term.'),
|
|
|
+ 'description' => $this->t('The term description.'),
|
|
|
+ 'weight' => $this->t('Weight'),
|
|
|
+ 'parent' => $this->t("The Drupal term IDs of the term's parents."),
|
|
|
+ '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"),
|
|
|
+ ];
|
|
|
+ return $fields;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function prepareRow(Row $row) {
|
|
|
+ print("\n\n".'-- prepareRow -- '.$row->getSourceProperty('tid')." -- ".$row->getSourceProperty('name')." -- ".$row->getSourceProperty('weight')."\n");
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $parents = $this->select('taxonomy_term_hierarchy', 'th')
|
|
|
+ ->fields('th', ['parent', 'tid'])
|
|
|
+ ->condition('tid', $row->getSourceProperty('tid'))
|
|
|
+ ->execute()
|
|
|
+ ->fetchCol();
|
|
|
+ $row->setSourceProperty('parent', $parents);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $query = $this->select('entity_translation', 'et')
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ ->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 ($this->moduleExists('title')) {
|
|
|
+ $synonyms = $row->getSourceProperty('synonyms_synonym');
|
|
|
+
|
|
|
+ if(!empty($synonyms)){
|
|
|
+ $row->setSourceProperty('synonyms', $synonyms);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $advanced_search = $row->getSourceProperty('field_used_on_advanced_search');
|
|
|
+
|
|
|
+ if(!empty($advanced_search)){
|
|
|
+ $row->setSourceProperty('advanced_search', $advanced_search);
|
|
|
+ }
|
|
|
+
|
|
|
+ return parent::prepareRow($row);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function getIds() {
|
|
|
+ $ids['tid']['type'] = 'integer';
|
|
|
+ return $ids;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|