D7FlagListItemsMaterio.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. namespace Drupal\materio_migrate\Plugin\migrate\source;
  3. use Drupal\user\Entity\User;
  4. use Drupal\migrate\Plugin\migrate\source\SqlBase;
  5. use Drupal\migrate\Row;
  6. use Drupal\migrate\Plugin\MigrationInterface;
  7. use Drupal\migrate\Plugin\migrate\process\MigrationLookup;
  8. /**
  9. * Minimalistic example for a SqlBase source plugin.
  10. *
  11. * @MigrateSource(
  12. * id = "d7_flaglistitems_materio",
  13. * source_module = "flag_lists"
  14. * )
  15. */
  16. class D7FlagListItemsMaterio extends SqlBase {
  17. /**
  18. * {@inheritdoc}
  19. */
  20. public function query() {
  21. // Source data is queried from 'curling_games' table.
  22. $query = $this->select('flag_lists_content', 'c');
  23. $query->join('flag_lists_flags', 'f', 'c.fid = f.fid');
  24. // only import flaglist items for active users
  25. $query->join('users_roles', 'ur', 'c.uid = ur.uid');
  26. $query->condition('ur.rid', [3,4,6,10,11,13], 'IN');
  27. $query->fields('c', [
  28. 'fcid',
  29. 'fid',
  30. 'entity_type',
  31. 'entity_id',
  32. 'uid',
  33. 'sid',
  34. 'timestamp',
  35. ])
  36. ->fields('f', [
  37. 'name',
  38. 'title',
  39. ]);
  40. return $query;
  41. }
  42. /**
  43. * {@inheritdoc}
  44. */
  45. public function fields() {
  46. $fields = [
  47. 'fcid' => $this->t('Flag content id'),
  48. 'fid' => $this->t('Flag lists id #'),
  49. 'entity_type' => $this->t('Entity type'),
  50. 'entity_id' => $this->t('Entity #'),
  51. 'uid' => $this->t('Owner'),
  52. 'sid' => $this->t('Sid'),
  53. 'timestamp' => $this->t('Timestamp'),
  54. ];
  55. return $fields;
  56. }
  57. /**
  58. * {@inheritdoc}
  59. */
  60. public function getIds() {
  61. return [
  62. 'fcid' => [
  63. 'type' => 'integer',
  64. 'alias' => 'f',
  65. ],
  66. ];
  67. }
  68. /**
  69. * {@inheritdoc}
  70. */
  71. public function prepareRow(Row $row) {
  72. $messenger = \Drupal::messenger();
  73. $logger = \Drupal::logger('flag_lists');
  74. // // Check and get the user name.
  75. // $uid = $row->getSourceProperty('uid');
  76. // $user = User::load($uid);
  77. // if (!empty($user)) {
  78. // $owner = $uid;
  79. // }
  80. // else {
  81. // $owner = 1;
  82. // }
  83. // $row->setSourceProperty('uid', $owner);
  84. // Check if the flagging collection exist.
  85. // $found = FALSE;
  86. $fid = $row->getSourceProperty('fid');
  87. $database = \Drupal::database();
  88. $fidquery = $database->select('migrate_map_d7_flaglists', 'm')
  89. ->condition('m.sourceid1', $fid)
  90. ->fields('m', ['sourceid1', 'destid1']);
  91. $result = $fidquery->execute();
  92. foreach ($result as $record) {
  93. if($record){
  94. $dfid = $record->destid1;
  95. break;
  96. }
  97. }
  98. // if flag_collection already imported
  99. if($dfid){
  100. $flagListsService = \Drupal::service('flaglists');
  101. $flagcoll = $flagListsService->getFlaggingCollectionById($dfid);
  102. $relatedFlag = $flagcoll->getRelatedFlag();
  103. $row->setSourceProperty('baseflag', $relatedFlag->id());
  104. $row->setSourceProperty('flagcolname', $flagcoll->getName());
  105. }
  106. // TODO: dest_entity_id (for name composition)
  107. $entity_id = $row->getSourceProperty('entity_id');
  108. // check destid from materiau
  109. $query_entityid = $database->select('migrate_map_d7_node_materiau', 'm')
  110. ->condition('m.sourceid1', $entity_id)
  111. ->fields('m', ['sourceid1', 'destid1']);
  112. $result = $query_entityid->execute();
  113. foreach ($result as $record) {
  114. if($record){
  115. $dest_entity_id = $record->destid1;
  116. break;
  117. }
  118. }
  119. // check destid from articles (ex breves)
  120. if(!$dest_entity_id){
  121. $query_entityid = $database->select('migrate_map_d7_node_article', 'm')
  122. ->condition('m.sourceid1', $entity_id)
  123. ->fields('m', ['sourceid1', 'destid1']);
  124. $result = $query_entityid->execute();
  125. foreach ($result as $record) {
  126. if($record){
  127. $dest_entity_id = $record->destid1;
  128. break;
  129. }
  130. }
  131. }
  132. if($dest_entity_id){
  133. $row->setSourceProperty('dest_entity_id', $dest_entity_id);
  134. }else{
  135. $row->setSourceProperty('dest_entity_id', $entity_id);
  136. }
  137. return parent::prepareRow($row);
  138. }
  139. }