|
@@ -109,17 +109,146 @@ class D7NodeProjet extends FieldableEntity {
|
|
$vid = $row->getSourceProperty('vid');
|
|
$vid = $row->getSourceProperty('vid');
|
|
$type = $row->getSourceProperty('type');
|
|
$type = $row->getSourceProperty('type');
|
|
$title = $row->getSourceProperty('title');
|
|
$title = $row->getSourceProperty('title');
|
|
- Drush::output()->writeln('- - - - ' . $title . '- - - - ');
|
|
|
|
|
|
+ Drush::output()->writeln('- - - - ' . $title . ' ('.$nid.')' . '- - - - ');
|
|
|
|
+
|
|
|
|
+ $memo = '';
|
|
|
|
+ $memo .= "#migration : old nid = ".$nid."\n";
|
|
|
|
|
|
// Get Field API field values.
|
|
// Get Field API field values.
|
|
foreach ($this->getFields('node', $type) as $field_name => $field) {
|
|
foreach ($this->getFields('node', $type) as $field_name => $field) {
|
|
$field_values = $this->getFieldValues('node', $field_name, $nid, $vid, NULL);
|
|
$field_values = $this->getFieldValues('node', $field_name, $nid, $vid, NULL);
|
|
$row->setSourceProperty($field_name, $field_values);
|
|
$row->setSourceProperty($field_name, $field_values);
|
|
- // switch ($field_name) {
|
|
|
|
- // case 'field_popsu_themloc_popsu':
|
|
|
|
- // $field_programme = $field_values;
|
|
|
|
- // break;
|
|
|
|
- // }
|
|
|
|
|
|
+ switch ($field_name) {
|
|
|
|
+ // ville
|
|
|
|
+ case 'field_popsu_ville_ville':
|
|
|
|
+ $ville = $field_values;
|
|
|
|
+ break;
|
|
|
|
+ case 'field_popsu_villeur_ville':
|
|
|
|
+ $ville = $field_values;
|
|
|
|
+ break;
|
|
|
|
+ case 'field_popsu_projet_ville':
|
|
|
|
+ $ville = $field_values;
|
|
|
|
+ break;
|
|
|
|
+ // programme
|
|
|
|
+ case 'field_popsu_ville_popsu':
|
|
|
|
+ $field_programme = $field_values;
|
|
|
|
+ break;
|
|
|
|
+ case 'field_popsu_villeur_popsu':
|
|
|
|
+ $field_programme = $field_values;
|
|
|
|
+ break;
|
|
|
|
+ case 'field_popsu_projet_popsu':
|
|
|
|
+ $field_programme = $field_values;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if ($field_programme) {
|
|
|
|
+ // Drush::output()->writeln(dump($field_programme));
|
|
|
|
+ $tid = $field_programme[0]['tid'];
|
|
|
|
+ // get the node (popsu_special) from the tid for migration_lookup
|
|
|
|
+ $query = $this->select('node_revision', 'nr')
|
|
|
|
+ ->fields('n', ['nid','type'])
|
|
|
|
+ ->fields('nr', ['vid'])
|
|
|
|
+ ->orderBy('changed');
|
|
|
|
+ $query->innerJoin('node', 'n', static::JOIN);
|
|
|
|
+ $query->condition('n.type', 'popsu_special');
|
|
|
|
+ // field_popsu_special_typetaxo
|
|
|
|
+ // filter to get the right special type (colloques, publication, etc)
|
|
|
|
+ $query->leftJoin('field_revision_field_popsu_special_typetaxo', 'ff', 'ff.revision_id = n.vid');
|
|
|
|
+ $query->fields('ff', ['field_popsu_special_typetaxo_tid']);
|
|
|
|
+ $query->condition('ff.field_popsu_special_typetaxo_tid', 31);
|
|
|
|
+ // field_popsu_special_popsu
|
|
|
|
+ // filter to get right popsu (popsu 1, popsu europe, etc)
|
|
|
|
+ $query->leftJoin('field_revision_field_popsu_special_popsu', 'sp', 'sp.revision_id = n.vid');
|
|
|
|
+ $query->fields('sp', ['field_popsu_special_popsu_tid']);
|
|
|
|
+ $query->condition('sp.field_popsu_special_popsu_tid', $tid);
|
|
|
|
+
|
|
|
|
+ $prog = $query->execute()->fetchAll();
|
|
|
|
+
|
|
|
|
+ $row->setSourceProperty('field_programme', array(array('nid'=>$prog[0]['nid'])));
|
|
|
|
+ } else {
|
|
|
|
+ Drush::output()->writeln('NO PROGRAMME');
|
|
|
|
+ $memo .= "#migration : NO PROGRAMME\n";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ($field_popsu_projet_comparatif = $row->getSourceProperty('field_popsu_projet_comparatif')) {
|
|
|
|
+ // Drush::output()->writeln(dump($field_comparatifs_associes));
|
|
|
|
+ $row->setSourceProperty('field_comparatifs_associes', $field_popsu_projet_comparatif);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ $field_themes_lies = array();
|
|
|
|
+ $field_projets_lies = array();
|
|
|
|
+ if ($field_popsu_projet_lies = $row->getSourceProperty('field_popsu_projet_lies')) {
|
|
|
|
+ // Drush::output()->writeln(dump($field_popsu_projet_lies));
|
|
|
|
+ foreach ($field_popsu_projet_lies as $key => $value) {
|
|
|
|
+ // check if theme
|
|
|
|
+ $q = $this->select('node', 'n')
|
|
|
|
+ ->fields('n', ['nid','type'])
|
|
|
|
+ ->condition('n.nid', $value['nid'])
|
|
|
|
+ ->condition('n.type', ['popsu_theme_local', 'popsu_projet'], 'IN');
|
|
|
|
+ $res = $q->execute()->fetchAll();
|
|
|
|
+ if (!empty($res)) {
|
|
|
|
+ // Drush::output()->writeln(dump($res));
|
|
|
|
+ switch ($res[0]['type']) {
|
|
|
|
+ case 'popsu_theme_local':
|
|
|
|
+ $field_themes_lies[] = $value;
|
|
|
|
+ break;
|
|
|
|
+ case 'popsu_projet':
|
|
|
|
+ $field_projets_lies[] = $value;
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!empty($field_projets_lies)) {
|
|
|
|
+ // Drush::output()->writeln(dump($field_themes_lies));
|
|
|
|
+ $row->setSourceProperty('field_projets_lies', $field_projets_lies);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // get the popsu_projet_europe nodes for popsu_ville_europe
|
|
|
|
+ // we need themes and imags
|
|
|
|
+ if ($type === 'popsu_ville_europe') {
|
|
|
|
+ $query = $this->select('node_revision', 'nr')
|
|
|
|
+ ->fields('n', ['nid','type'])
|
|
|
|
+ ->fields('nr', ['vid'])
|
|
|
|
+ ->orderBy('changed');
|
|
|
|
+ $query->innerJoin('node', 'n', static::JOIN);
|
|
|
|
+ $query->condition('n.type', 'popsu_projet_europe');
|
|
|
|
+ // field_popsu_projeteur_ville
|
|
|
|
+ // filter to get the right node
|
|
|
|
+ $query->leftJoin('field_data_field_popsu_projeteur_ville', 'v', 'v.revision_id = n.vid');
|
|
|
|
+ $query->fields('v', ['field_popsu_projeteur_ville_tid']);
|
|
|
|
+ $query->condition('v.field_popsu_projeteur_ville_tid', $ville[0]['tid']);
|
|
|
|
+ $popsu_projet_europe = $query->execute()->fetchAll();
|
|
|
|
+
|
|
|
|
+ foreach ($popsu_projet_europe as $key => $value) {
|
|
|
|
+ // Get Field API field values.
|
|
|
|
+ foreach ($this->getFields('node', 'popsu_projet_europe') as $field_name => $field) {
|
|
|
|
+ $popsu_projet_europe[$key][$field_name] = $this->getFieldValues('node', $field_name, $value['nid'], $value['vid'], NULL);
|
|
|
|
+ }
|
|
|
|
+ // get the themes
|
|
|
|
+ if (!empty($popsu_projet_europe[$key]['field_popsu_projeteur_theme'])) {
|
|
|
|
+ foreach ($popsu_projet_europe[$key]['field_popsu_projeteur_theme'] as $theme) {
|
|
|
|
+ $field_themes_lies[] = $theme;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // TODO: get the images
|
|
|
|
+ }
|
|
|
|
+ // Drush::output()->writeln(dump($popsu_projet_europe));
|
|
|
|
+ }
|
|
|
|
+ if (!empty($field_themes_lies)) {
|
|
|
|
+ // Drush::output()->writeln(dump($field_themes_lies));
|
|
|
|
+ $row->setSourceProperty('field_themes_lies', $field_themes_lies);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // record migration errors in field_memo
|
|
|
|
+ if(isset($memo)){
|
|
|
|
+ $field_memo = array(
|
|
|
|
+ array(
|
|
|
|
+ 'value' => $memo
|
|
|
|
+ )
|
|
|
|
+ );
|
|
|
|
+ $row->setSourceProperty('field_memo', $field_memo);
|
|
}
|
|
}
|
|
|
|
|
|
return parent::prepareRow($row);
|
|
return parent::prepareRow($row);
|