migrate_materio.breves.inc 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <?php
  2. /**
  3. * MaterioMateriauNodeMigration
  4. *
  5. */
  6. class MaterioBrevesNodeMigration extends MaterioBasicMigration {
  7. public function __construct() {
  8. parent::__construct();
  9. $this->description = t('Migrate Materio Materiau nodes');
  10. // provide better description for source fields
  11. // and add new field source not from sql
  12. $source_fields = array(
  13. // 'nid' => t('Materiau id from source'),
  14. // 'status'=>t('status'),
  15. // 'promote'=>t('promote'),
  16. // 'sticky'=>t('sticky'),
  17. // 'summary'=>t('summary'),
  18. // 'created'=>t('created'),
  19. // 'changed'=>t('changed'),
  20. 'languages'=> t('languages'),
  21. // 'tnid'=> t('tnid'),
  22. // 'title'=> t('title'),
  23. // 'body'=> t('body'),
  24. // 'teaser' => t('teaser'),
  25. // 'format' => t('format'),
  26. 'memo' => t('memo'),
  27. );
  28. // $query = db_select(MIG_MAT_SRC_DB_D6 .'.fr_node', 'n');
  29. // $query
  30. // ->condition('n.type',"actu")
  31. // ->condition('n.tnid',"0", "<>")
  32. // ->condition('n.language',"en");
  33. /* translated */
  34. $query_translated = db_select(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'i');
  35. $query_translated->join(MIG_MAT_SRC_DB_D6 .'.fr_node', 'n', 'n.nid = i.nid');
  36. $query_translated->join(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'nr', 'nr.nid = n.nid');
  37. // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'ti', 'ti.trid = i.trid');
  38. // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node', 'tn', 'tn.nid = ti.nid');
  39. // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'tnr', 'tnr.nid = ti.nid');
  40. $query_translated
  41. ->condition('i.status', "0", "=")
  42. // ->condition('i.trid', "0", "<>")
  43. ->condition('n.type',"actu")
  44. // ->condition('tn.type',"actu")
  45. // ->condition('ti.trid', "0", "<>")
  46. ->fields('i', array('trid'))
  47. ->fields('n', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language', 'tnid'))
  48. ->fields('nr', array('title', 'body', 'teaser', 'format'));
  49. // ->fields('ti', array('nid'))
  50. // ->fields('tn', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language'))
  51. // ->fields('tnr', array('title', 'body', 'teaser', 'format'));
  52. // ->orderBy('n.created', 'ASC');
  53. /* untranslated translated */
  54. // $query_untranslated = db_select(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'un_i');
  55. // $query_untranslated->join(MIG_MAT_SRC_DB_D6 .'.fr_node', 'un_n', 'un_n.nid = un_i.nid');
  56. // $query_untranslated->join(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'un_nr', 'un_nr.nid = un_n.nid');
  57. // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'un_ti', 'un_ti.nid = un_i.nid');
  58. // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node', 'un_tn', 'un_tn.nid = un_ti.nid');
  59. // $query_translated->leftjoin(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'un_tnr', 'un_tnr.nid = un_ti.nid');
  60. // $query_untranslated
  61. // ->condition('un_i.trid', "0", "=")
  62. // ->condition('un_n.type',"actu")
  63. // // ->fields('un_i', array('nid', 'trid'))
  64. // ->fields('un_n', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language', 'tnid'))
  65. // ->fields('un_nr', array('title', 'body', 'teaser', 'format'));
  66. // // ->fields('un_tn', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language'))
  67. // // ->fields('un_tnr', array('title', 'body', 'teaser', 'format'));
  68. // $query_translated->union($query_untranslated, 'ALL');
  69. // $query = db_select($query_translated, 'x');
  70. // print "\n\n- - - - - - \n\n";
  71. // print_r($query->__toString());
  72. // print "\n\n- - - - - - \n\n";
  73. $this->source = new MigrateSourceSQL($query_translated, $source_fields);
  74. $this->destination = new MigrateDestinationNode('breve');
  75. $this->map = new MigrateSQLMap($this->machineName,
  76. array(
  77. 'nid' => array(
  78. 'type' => 'int',
  79. 'unsigned' => TRUE,
  80. 'not null' => TRUE,
  81. 'description' => 'OLD Unique Materiau NID',
  82. 'alias' => 'i',
  83. )
  84. ),
  85. MigrateDestinationNode::getKeySchema()
  86. );
  87. $this->addFieldMapping('is_new')->defaultValue(TRUE);
  88. $this->addSimpleMappings(array('created', 'changed', 'status', 'promote', 'sticky', 'language'));
  89. $this->addFieldMapping('title', 'title');
  90. $this->addFieldMapping('field_memo', 'memo');
  91. $this->addFieldMapping('title_field', 'title');
  92. $this->addFieldMapping('title_field:language', 'languages');
  93. $this->addFieldMapping('body', 'body');
  94. // $this->addFieldMapping('body:summary', 'teaser');
  95. $this->addFieldMapping('body:language', 'languages');
  96. $this->addFieldMapping('body:format')->defaultValue('filtred_html');
  97. $this->addUnmigratedDestinations(array('revision', 'revision_uid', 'log', 'tnid', 'comment', 'uid', 'path', 'pathauto',
  98. 'title_field:format',
  99. 'field_memo:format', 'field_memo:language',
  100. 'field_onthologie', 'field_onthologie:source_type', 'field_onthologie:create_term',
  101. ));
  102. }
  103. public function prepareRow($cr){
  104. // dsm($cr);
  105. print "\n- - - - - - - - \n";
  106. if($cr->trid){
  107. $query = db_select(MIG_MAT_SRC_DB_D6 .'.fr_i18n_node', 'i');
  108. $query->join(MIG_MAT_SRC_DB_D6 .'.fr_node', 'n', 'n.nid = i.nid');
  109. $query->join(MIG_MAT_SRC_DB_D6 .'.fr_node_revisions', 'nr', 'nr.nid = n.nid');
  110. $query
  111. ->condition('i.status', "0", "<>")
  112. ->condition('i.trid', $cr->trid, "=")
  113. ->fields('i', array('trid'))
  114. ->fields('n', array('nid', 'status', 'promote', 'sticky', 'created', 'changed', 'language', 'tnid'))
  115. ->fields('nr', array('title', 'body', 'teaser', 'format'));
  116. $result = $query->execute();
  117. foreach ($result as $record) {
  118. $tr = $record;
  119. }
  120. print "\n" . $cr->title . "\n";
  121. print "\n" . $tr->title . "\n";
  122. $cr->title = array($cr->title, $tr->title);
  123. $cr->body = array($cr->body, $tr->body);
  124. // $cr->teaser = array($cr->teaser, $cr->tnr_teaser);
  125. $cr->languages = array($cr->language, $tr->language);
  126. }else{
  127. $cr->languages = $cr->language;
  128. }
  129. return TRUE;
  130. }
  131. public function prepare($node, stdClass $row) {
  132. // dsm('-- prepare --');
  133. // dsm($node, '$node');
  134. // dsm($row, '$row');
  135. $node->workflow = 4;
  136. }
  137. // public function complete($node, $row) {
  138. // // dsm('-- complete --');
  139. // // // Do what you need to do to
  140. // // dsm($row, '$row');
  141. // // dsm($node, '$node');
  142. //
  143. // }
  144. }