浏览代码

Finished content migration

ccheng 9 年之前
父节点
当前提交
408ba18516
共有 1 个文件被更改,包括 81 次插入21 次删除
  1. 81 21
      tripal_chado/includes/tripal_chado.migrate.inc

+ 81 - 21
tripal_chado/includes/tripal_chado.migrate.inc

@@ -220,25 +220,32 @@ function tripal_chado_migrate_form($form, &$form_state) {
     '#group' => 'overview_vert_tabs'
   );
   $opt_complete_migration = array (
-    'delete' => 'Delete Tripal v2 Content',
-    'unpublish' => 'Unpublish Tripal v2 Content',
     'cp_title' => 'Copy Title over to Tripal v3 Content',
-    'mv_url' => 'Migrate URL Alias to Tripal v3 Content'
+    'mv_url' => 'Migrate URL Alias to Tripal v3 Content',
+    'unpublish' => 'Unpublish Tripal v2 Content',
+    'delete' => 'Delete Tripal v2 Content',
   );
-  foreach ($tv2_options AS $opt_key => $opt) {
-    $form['step4'][$opt_key . '_title'] = array(
-      '#markup' => "<b>$opt</b>"
+  if (count($tv2_options) == 1 && key_exists('all', $tv2_options)) {
+    $form['step4']['compltete'] = array(
+      '#markup' => 'Migration completed. All content have been migrated.'
     );
-    $form['step4']['complete_migration--' . $opt_key] = array(
-      '#type' => 'checkboxes',
-      '#options' => $opt_complete_migration,
+  }
+  else {
+    foreach ($tv2_options AS $opt_key => $opt) {
+      $form['step4'][$opt_key . '_title'] = array(
+        '#markup' => "<b>$opt</b>"
+      );
+      $form['step4']['complete_migration--' . $opt_key] = array(
+        '#type' => 'checkboxes',
+        '#options' => $opt_complete_migration,
+      );
+    }
+    $form['step4']['submit_btn'] = array(
+      '#type' => 'button',
+      '#name' => 'complete_migration_btn',
+      '#value' => "Submit",
     );
   }
-  $form['step4']['submit_btn'] = array(
-    '#type' => 'button',
-    '#name' => 'complete_migration_btn',
-    '#value' => "Submit",
-  );
   return $form;
 }
 
@@ -264,15 +271,65 @@ function tripal_chado_migrate_form_validate($form, &$form_state) {
   // Complete migration
   else if ($form_state['clicked_button']['#name'] == 'complete_migration_btn') {
     $values = $form_state['values'];
-    $delete = array();
-    $unpublish = array();
-    $cp_title = array();
-    $mv_url = array();
+    $config = array (
+      'delete' => array(),
+      'unpublish' => array(),
+      'cp_title' => array(),
+      'mv_url' => array()
+    );
+    $all = array();
+    $all_types = array();
+    // Gather checked checkboxes and store in the $config array
     foreach ($values AS $key => $value) {
       if (preg_match('/^complete_migration--/', $key)) {
-        
+        $type = str_replace('complete_migration--', '', $key);
+        if ($type != 'all') {
+          array_push($all_types, $type);
+        }        
+        foreach ($value AS $key_op => $op) {
+          if ($type == 'all') {
+            if ($op) {
+              array_push($all, $key_op);
+            }
+          }
+          else {
+            if ($op) {
+              array_push($config[$key_op], $type);
+            }
+          }
+        }
       }
     }
+    foreach($all AS $a) {
+      $config[$a] = $all_types;
+    }
+    // Submit jobs to complete the migration
+    global $user;
+    $includes = array(
+      module_load_include('inc', 'tripal_chado', 'includes/tripal_chado.migrate'),
+    );
+    
+    if (count($config['cp_title']) > 0) {
+      $args = array($config['cp_title']);
+      tripal_add_job("Copy Title over to Tripal v3 Content", 'tripal_chado', 
+        'tripal_chado_copy_title_for_selected_types', $args, $user->uid, 10, $includes);
+    }
+    if (count($config['mv_url']) > 0) {
+      $args = array($config['mv_url']);
+      tripal_add_job(" Migrate URL Alias to Tripal v3 Content ", 'tripal_chado',
+        'tripal_chado_migrate_url_alias_for_selected_types', $args, $user->uid, 10, $includes);
+    }
+    if (count($config['unpublish']) > 0) {
+      $args = array($config['unpublish']);
+      tripal_add_job(" Unpublish Tripal v2 Content ", 'tripal_chado',
+        'tripal_chado_unpublish_selected_types', $args, $user->uid, 10, $includes);
+    }
+    if (count($config['delete']) > 0) {
+      $args = array($config['delete']);
+      tripal_add_job("Delete Tripal v2 Content ", 'tripal_chado',
+        'tripal_chado_delete_selected_types', $args, $user->uid, 10, $includes);
+    }
+    return;
   }
 }
 
@@ -526,6 +583,7 @@ function tripal_chado_delete_selected_types($tv2_content_types = array()) {
   foreach ($tv2_content_types AS $type) {
     $sql = "DELETE FROM $type";
     db_query($sql);
+    chado_cleanup_orphaned_nodes(str_replace('chado_', '', $type));
   }
 }
 
@@ -540,6 +598,8 @@ function tripal_chado_unpublish_selected_types($tv2_content_types = array()) {
   foreach ($tv2_content_types AS $type) {
     $sql = "UPDATE node SET status = 0 WHERE nid IN (SELECT nid FROM $type)";
     db_query($sql);
+    $sql = "UPDATE node_revision SET status = 0 WHERE nid IN (SELECT nid FROM $type)";
+    db_query($sql);
   }
 }
 
@@ -581,8 +641,8 @@ function tripal_chado_migrate_url_alias_for_selected_types($tv2_content_types =
     while ($entity = $result->fetchObject()) {
       $usql = "
           UPDATE url_alias
-          SET source = 'bio_data/'" . $entity->entity_id .
-          "WHERE source = 'node/" . $entity->nid;
+          SET source = 'bio_data/" . $entity->entity_id .
+          "' WHERE source = 'node/" . $entity->nid . "'";
       db_query($usql);
     }
   }