|  | @@ -15,7 +15,18 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  |    $form['modes']['#group'] = 'overview_vert_tabs';
 | 
	
		
			
				|  |  |    $form['modes']['#weight'] = 1000;
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +  $form['modes']['#default_tab'] = $_SESSION['tripal_migrate_current_tab'];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  $form['instructions'] = array(
 | 
	
		
			
				|  |  | +    '#type' => 'item',
 | 
	
		
			
				|  |  | +    '#markup' => t('Here you may migrate Tripal v2 content types to Tripal v3
 | 
	
		
			
				|  |  | +        content types. The migration process is divided into four steps that
 | 
	
		
			
				|  |  | +        allow you to migrate your site as your own pace. Please click each
 | 
	
		
			
				|  |  | +        step below for details as to the purpose of the step. When all steps
 | 
	
		
			
				|  |  | +        are completed your site will be fully Tripal v3 compatible.'),
 | 
	
		
			
				|  |  | +    '#weight' => -100
 | 
	
		
			
				|  |  | +  );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // Step 1
 | 
	
		
			
				|  |  |    $form['step1'] = array(
 | 
	
		
			
				|  |  |      '#type' => 'fieldset',
 | 
	
	
		
			
				|  | @@ -26,13 +37,14 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |      '#group' => 'overview_vert_tabs'
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  |    global $base_url;
 | 
	
		
			
				|  |  | -  $mod_url = $base_url . '/admin/modules';
 | 
	
		
			
				|  |  | +  $mod_url = '/admin/modules';
 | 
	
		
			
				|  |  |    $form['step1']['step1_content'] = array(
 | 
	
		
			
				|  |  | -    '#markup' => 'Tripal legacy modules are needed to support the display of Tripal v2 
 | 
	
		
			
				|  |  | -                      content types. Review and <a href="'. $mod_url .'">enable modules</a>
 | 
	
		
			
				|  |  | -                      in the \'Tripal v2 Legacy\' category for legacy content support'
 | 
	
		
			
				|  |  | +    '#markup' => 'Tripal legacy modules are needed to support the display of Tripal v2
 | 
	
		
			
				|  |  | +      content types. Review and ' . l('enable modules', $mod_url) . ' in the \'Tripal v2 Legacy\' category
 | 
	
		
			
				|  |  | +      for legacy content support. Only content types for enabled legacy
 | 
	
		
			
				|  |  | +      moodules can be migrated'
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // Step 2
 | 
	
		
			
				|  |  |    $form['step2'] = array(
 | 
	
		
			
				|  |  |      '#type' => 'fieldset',
 | 
	
	
		
			
				|  | @@ -48,7 +60,20 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |      '#prefix' => '<div id="tripal-chado-migrate-form-step2">',
 | 
	
		
			
				|  |  |      '#suffix' => '</div>'
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +  $form['step2']['step2_container']['instructions'] = array(
 | 
	
		
			
				|  |  | +    '#type' => 'item',
 | 
	
		
			
				|  |  | +    '#markup' => t('Here you can migrate Tripal v2 content types to Tripal v3
 | 
	
		
			
				|  |  | +        content types.  This will not destroy or remove existing Tripal v2 pages
 | 
	
		
			
				|  |  | +        but will creatte new Tripal v3 pages.  This allows you to keep existing
 | 
	
		
			
				|  |  | +        pages while reviewing and customizing the Tripal v3 content types. Site
 | 
	
		
			
				|  |  | +        visitors can continue to visit the Tripal v2 pages. Tripal
 | 
	
		
			
				|  |  | +        v3 content types may remain private while customization is underway.
 | 
	
		
			
				|  |  | +        Once customization is completed a subsequent step will allow you to
 | 
	
		
			
				|  |  | +        swap out Tripal v2 pages for the newer Tripal v3 pages.') .
 | 
	
		
			
				|  |  | +      t('If you would like to use Trial v3 web services you must migrate
 | 
	
		
			
				|  |  | +         content types.'),
 | 
	
		
			
				|  |  | +  );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    $tv2_content_type = 'all';
 | 
	
		
			
				|  |  |    if (array_key_exists('values', $form_state)) {
 | 
	
		
			
				|  |  |      $tv2_content_type = $form_state['values']['tv2_content_type'];
 | 
	
	
		
			
				|  | @@ -99,7 +124,7 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |      $no_data = TRUE;
 | 
	
		
			
				|  |  |      if ($form_state['clicked_button']['#name'] == 'get_v3_type_btn') {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      // Migrate all      
 | 
	
		
			
				|  |  | +      // Migrate all
 | 
	
		
			
				|  |  |        $form['step2']['step2_container']['tv3_content_type']['tv3_migrate_all'] = array(
 | 
	
		
			
				|  |  |          '#type' => 'checkbox',
 | 
	
		
			
				|  |  |          '#title' => 'Migrate All'
 | 
	
	
		
			
				|  | @@ -123,9 +148,9 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |            // We need to store namespace/accession/type for each checkbox in the key becuase
 | 
	
		
			
				|  |  |            // the value only allows 1 or 0
 | 
	
		
			
				|  |  |            $key = urlencode(
 | 
	
		
			
				|  |  | -            'tv3_content_type--' . 
 | 
	
		
			
				|  |  | -            $tv3_content_type->namespace . '--' . 
 | 
	
		
			
				|  |  | -            $tv3_content_type->accession . '--' . 
 | 
	
		
			
				|  |  | +            'tv3_content_type--' .
 | 
	
		
			
				|  |  | +            $tv3_content_type->namespace . '--' .
 | 
	
		
			
				|  |  | +            $tv3_content_type->accession . '--' .
 | 
	
		
			
				|  |  |              $tv3_content_type->type);
 | 
	
		
			
				|  |  |            $form['step2']['step2_container']['tv3_content_type'][$key] = array(
 | 
	
		
			
				|  |  |              '#type' => 'checkbox',
 | 
	
	
		
			
				|  | @@ -139,7 +164,7 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |            "SELECT count(*)
 | 
	
		
			
				|  |  |                FROM {organism} O
 | 
	
		
			
				|  |  |                INNER JOIN public.chado_organism CO ON O.organism_id = CO.organism_id
 | 
	
		
			
				|  |  | -              LEFT JOIN public.chado_entity CE ON CE.record_id = O.organism_id 
 | 
	
		
			
				|  |  | +              LEFT JOIN public.chado_entity CE ON CE.record_id = O.organism_id
 | 
	
		
			
				|  |  |                  AND CE.data_table = 'organism'
 | 
	
		
			
				|  |  |                WHERE CE.record_id IS NULL";
 | 
	
		
			
				|  |  |          $org_count = chado_query($sql)->fetchField();
 | 
	
	
		
			
				|  | @@ -157,7 +182,7 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |          "SELECT count(*)
 | 
	
		
			
				|  |  |                FROM {analysis} A
 | 
	
		
			
				|  |  |                INNER JOIN public.chado_analysis CA ON A.analysis_id = CA.analysis_id
 | 
	
		
			
				|  |  | -              LEFT JOIN public.chado_entity CE ON CE.record_id = A.analysis_id 
 | 
	
		
			
				|  |  | +              LEFT JOIN public.chado_entity CE ON CE.record_id = A.analysis_id
 | 
	
		
			
				|  |  |                  AND CE.data_table = 'analysis'
 | 
	
		
			
				|  |  |                WHERE CE.record_id IS NULL";
 | 
	
		
			
				|  |  |          $ana_count = chado_query($sql)->fetchField();
 | 
	
	
		
			
				|  | @@ -184,7 +209,7 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |        '#value' => "Migrate $tv2_options[$tv2_content_type]",
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // Step 3
 | 
	
		
			
				|  |  |    $form['step3'] = array(
 | 
	
		
			
				|  |  |      '#type' => 'fieldset',
 | 
	
	
		
			
				|  | @@ -194,14 +219,30 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |      '#collapsed' => TRUE,
 | 
	
		
			
				|  |  |      '#group' => 'overview_vert_tabs'
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  | +  $form['step3']['instructions'] = array(
 | 
	
		
			
				|  |  | +    '#type' => 'item',
 | 
	
		
			
				|  |  | +    '#markup' => t('Once content types have been migrated you have the option
 | 
	
		
			
				|  |  | +        to use the Tripal v2 display templates.  Tripal v3 allows you to
 | 
	
		
			
				|  |  | +        customize the page layout using a web interface whereas Tripal v2
 | 
	
		
			
				|  |  | +        required programatic changes to template files. If your site has
 | 
	
		
			
				|  |  | +        considerable Tripal v2 customizations that you do not
 | 
	
		
			
				|  |  | +        want to lose you can use the legacy templates by checking the box
 | 
	
		
			
				|  |  | +        for the desired content types below.'),
 | 
	
		
			
				|  |  | +  );
 | 
	
		
			
				|  |  |    // Get a list of enabled legacy modules with tv2 templates
 | 
	
		
			
				|  |  |    $mod_enabled = tripal_chado_migrate_get_enabled_legacy_modules(TRUE);
 | 
	
		
			
				|  |  |    $enabled_templates = variable_get('tripal_chado_enabled_legacy_templates', array());
 | 
	
		
			
				|  |  | -  foreach ($mod_enabled AS $mod_name => $mod_path) {
 | 
	
		
			
				|  |  | -    $form ['step3']['legacy_template--' . $mod_name] = array (
 | 
	
		
			
				|  |  | +  $info = module_invoke_all('node_info');
 | 
	
		
			
				|  |  | +  foreach ($tv2_options AS $type_name => $type_label) {
 | 
	
		
			
				|  |  | +    $title = $type_label;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if ($type_name != 'all' and !key_exists($type_name, $info)) {
 | 
	
		
			
				|  |  | +      $title .= " <strong>(please enable the $type_name legacy module).</strong>";
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    $form ['step3']['legacy_template--' . $type_name] = array (
 | 
	
		
			
				|  |  |        '#type' => 'checkbox',
 | 
	
		
			
				|  |  | -      '#title' => ucwords(str_replace(array('tripal', '_'), array('chado', ' '), $mod_name)),
 | 
	
		
			
				|  |  | -      '#default_value' => key_exists('legacy_template--' . $mod_name, $enabled_templates) ? $enabled_templates['legacy_template--' . $mod_name] : 0,
 | 
	
		
			
				|  |  | +      '#title' => $title,
 | 
	
		
			
				|  |  | +      '#default_value' => key_exists('legacy_template--' . $type_name, $enabled_templates) ? $enabled_templates['legacy_template--' . $type_name] : 0,
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |    $form['step3']['save_btn'] = array(
 | 
	
	
		
			
				|  | @@ -209,7 +250,7 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |      '#name' => 'save_enabled_template_btn',
 | 
	
		
			
				|  |  |      '#value' => "Save",
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    // Step 4
 | 
	
		
			
				|  |  |    $form['step4'] = array(
 | 
	
		
			
				|  |  |      '#type' => 'fieldset',
 | 
	
	
		
			
				|  | @@ -219,6 +260,26 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |      '#collapsed' => TRUE,
 | 
	
		
			
				|  |  |      '#group' => 'overview_vert_tabs'
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  | +  $form['step4']['instructions'] = array(
 | 
	
		
			
				|  |  | +    '#type' => 'item',
 | 
	
		
			
				|  |  | +    '#markup' => t('This step allows you to fully switch to Tripal v3 pages.
 | 
	
		
			
				|  |  | +        You can move URLs and titles from Tripal v2 pages to their
 | 
	
		
			
				|  |  | +        corresponding Tripal v3 pages. This ensures user bookmarks and external
 | 
	
		
			
				|  |  | +        links to your site are not broken.  Here you can also unpublish Tripal
 | 
	
		
			
				|  |  | +        v2 content types or completely remove them if desired.  You can
 | 
	
		
			
				|  |  | +        perform these action in stages such as first moving titles and URLs,
 | 
	
		
			
				|  |  | +        then unpublishing Tripal v2 pages and once the migration has been
 | 
	
		
			
				|  |  | +        verified you can finally delete the Tripal v2 pages to free space.
 | 
	
		
			
				|  |  | +        Deleting the Tripal v2 content will not delete the data in Chado.
 | 
	
		
			
				|  |  | +        The page is simply removed from the site.'),
 | 
	
		
			
				|  |  | +  );
 | 
	
		
			
				|  |  | +  $form['step4']['warning'] = array(
 | 
	
		
			
				|  |  | +    '#type' => 'item',
 | 
	
		
			
				|  |  | +    '#markup' => tripal_set_message('Any of the following options cannot be
 | 
	
		
			
				|  |  | +        undone. Also, please be sure you have migrated all
 | 
	
		
			
				|  |  | +        desired content types in Step 2 prior to deleting the Tripal v2
 | 
	
		
			
				|  |  | +        contents.', TRIPAL_WARNING, array('return_html' => TRUE)),
 | 
	
		
			
				|  |  | +  );
 | 
	
		
			
				|  |  |    $opt_complete_migration = array (
 | 
	
		
			
				|  |  |      'cp_title' => 'Copy Title over to Tripal v3 Content',
 | 
	
		
			
				|  |  |      'mv_url' => 'Migrate URL Alias to Tripal v3 Content',
 | 
	
	
		
			
				|  | @@ -226,7 +287,7 @@ function tripal_chado_migrate_form($form, &$form_state) {
 | 
	
		
			
				|  |  |      'delete' => 'Delete Tripal v2 Content',
 | 
	
		
			
				|  |  |    );
 | 
	
		
			
				|  |  |    if (count($tv2_options) == 1 && key_exists('all', $tv2_options)) {
 | 
	
		
			
				|  |  | -    $form['step4']['compltete'] = array(
 | 
	
		
			
				|  |  | +    $form['step4']['complete'] = array(
 | 
	
		
			
				|  |  |        '#markup' => 'Migration completed. All content have been migrated.'
 | 
	
		
			
				|  |  |      );
 | 
	
		
			
				|  |  |    }
 | 
	
	
		
			
				|  | @@ -285,7 +346,7 @@ function tripal_chado_migrate_form_validate($form, &$form_state) {
 | 
	
		
			
				|  |  |          $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) {
 | 
	
	
		
			
				|  | @@ -308,10 +369,10 @@ function tripal_chado_migrate_form_validate($form, &$form_state) {
 | 
	
		
			
				|  |  |      $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_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) {
 | 
	
	
		
			
				|  | @@ -463,9 +524,9 @@ function tripal_chado_get_tripal_v2_content_type_options($all_option = FALSE) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Migrate all Tripal v2 content types
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | - * Gather all available Tripal v2 content types and store the result in an associated array with 
 | 
	
		
			
				|  |  | - * values of namespace, accession, term_name. The array is then pass to the function 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  | + * Gather all available Tripal v2 content types and store the result in an associated array with
 | 
	
		
			
				|  |  | + * values of namespace, accession, term_name. The array is then pass to the function
 | 
	
		
			
				|  |  |   * tripal_chado_migrate_selected_types() that handles the migration
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function tripal_chado_migrate_all_types() {
 | 
	
	
		
			
				|  | @@ -549,7 +610,7 @@ function tripal_chado_migrate_selected_types($tv3_content_types) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * Get a list of enabled legacy modules
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * return an associated array with value of module directory and keyed by the module name
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function tripal_chado_migrate_get_enabled_legacy_modules ($has_base_template = FALSE) {
 | 
	
	
		
			
				|  | @@ -576,7 +637,7 @@ function tripal_chado_migrate_get_enabled_legacy_modules ($has_base_template = F
 | 
	
		
			
				|  |  |   * Delete selected Tripal v2 content
 | 
	
		
			
				|  |  |   *
 | 
	
		
			
				|  |  |   * Delete all records from chado_* table then call the cleanup orphan nodes function
 | 
	
		
			
				|  |  | - * 
 | 
	
		
			
				|  |  | + *
 | 
	
		
			
				|  |  |   * @param unknown $tv2_content_types
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  function tripal_chado_delete_selected_types($tv2_content_types = array()) {
 | 
	
	
		
			
				|  | @@ -616,11 +677,11 @@ function tripal_chado_copy_title_for_selected_types($tv2_content_types = array()
 | 
	
		
			
				|  |  |      $result = db_query($sql);
 | 
	
		
			
				|  |  |      while ($entity = $result->fetchObject()) {
 | 
	
		
			
				|  |  |        $usql = "
 | 
	
		
			
				|  |  | -          UPDATE tripal_entity 
 | 
	
		
			
				|  |  | +          UPDATE tripal_entity
 | 
	
		
			
				|  |  |            SET title = (SELECT title FROM node WHERE nid = :nid)
 | 
	
		
			
				|  |  |            WHERE id = :entity_id";
 | 
	
		
			
				|  |  |        db_query($usql, array(
 | 
	
		
			
				|  |  | -        ':nid' => $entity->nid, 
 | 
	
		
			
				|  |  | +        ':nid' => $entity->nid,
 | 
	
		
			
				|  |  |          ':entity_id' => $entity->entity_id)
 | 
	
		
			
				|  |  |        );
 | 
	
		
			
				|  |  |      }
 |