|  | @@ -131,10 +131,53 @@ function tripal_bulk_loader_set_constants_form($form, &$form_state, $node) {
 | 
											
												
													
														|  |      '#value' => $node->nid
 |  |      '#value' => $node->nid
 | 
											
												
													
														|  |    );
 |  |    );
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +  $form['#attached']['css'] = array(
 | 
											
												
													
														|  | 
 |  | +    drupal_get_path('module', 'tripal_bulk_loader') . '/theme/tripal_bulk_loader.css',
 | 
											
												
													
														|  | 
 |  | +  );
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +  $form_state['node'] = $node;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |    if (!tripal_bulk_loader_has_exposed_fields($node)) {
 |  |    if (!tripal_bulk_loader_has_exposed_fields($node)) {
 | 
											
												
													
														|  |      return $form;
 |  |      return $form;
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +  // Check to see if the template has changed since this node was last updated.
 | 
											
												
													
														|  | 
 |  | +  // If so we need to remove the constant set since it's no longer valid.
 | 
											
												
													
														|  | 
 |  | +  if ($node->template->changed >= $node->changed AND !empty($node->constants)) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    // Save all constants for display to the user.
 | 
											
												
													
														|  | 
 |  | +    $form['old_constants'] = array(
 | 
											
												
													
														|  | 
 |  | +      '#type' => 'fieldset',
 | 
											
												
													
														|  | 
 |  | +      '#title' => 'Previous Constant Set',
 | 
											
												
													
														|  | 
 |  | +      '#description' => 'This constant set is no longer valid due to changes in
 | 
											
												
													
														|  | 
 |  | +        the bulk loading template. As such you will need to re-enter it below.
 | 
											
												
													
														|  | 
 |  | +        <strong>Please copy this information somewhere before leaving this page
 | 
											
												
													
														|  | 
 |  | +        (including entering a constant set) because it will NOT BE SAVED.</strong>',
 | 
											
												
													
														|  | 
 |  | +      '#prefix' => '<div id="expired-constants">',
 | 
											
												
													
														|  | 
 |  | +      '#suffix' => '</div>'
 | 
											
												
													
														|  | 
 |  | +    );
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    $form['old_constants']['table'] = array(
 | 
											
												
													
														|  | 
 |  | +      '#type' => 'markup',
 | 
											
												
													
														|  | 
 |  | +      '#theme' => 'tripal_bulk_loader_constant_set',
 | 
											
												
													
														|  | 
 |  | +      '#nid' => $node->nid,
 | 
											
												
													
														|  | 
 |  | +      '#constants' => $node->constants,
 | 
											
												
													
														|  | 
 |  | +      '#template' => $node->template,
 | 
											
												
													
														|  | 
 |  | +      '#options' => array('display_operations' => FALSE),
 | 
											
												
													
														|  | 
 |  | +    );
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    drupal_set_message('Template has been changed since the constant set was added; therefore,
 | 
											
												
													
														|  | 
 |  | +      your constants are no longer valid. Please re-enter them before loading.',
 | 
											
												
													
														|  | 
 |  | +      'warning'
 | 
											
												
													
														|  | 
 |  | +    );
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    // Remove all constants for this node.
 | 
											
												
													
														|  | 
 |  | +    db_delete('tripal_bulk_loader_constants')
 | 
											
												
													
														|  | 
 |  | +        ->condition('nid', $node->nid)
 | 
											
												
													
														|  | 
 |  | +        ->execute();
 | 
											
												
													
														|  | 
 |  | +    $node->constants = array();
 | 
											
												
													
														|  | 
 |  | +  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |    $form['exposed_array'] = array(
 |  |    $form['exposed_array'] = array(
 | 
											
												
													
														|  |      '#type' => 'hidden',
 |  |      '#type' => 'hidden',
 | 
											
												
													
														|  |      '#value' => serialize($node->exposed_fields),
 |  |      '#value' => serialize($node->exposed_fields),
 | 
											
										
											
												
													
														|  | @@ -161,59 +204,12 @@ function tripal_bulk_loader_set_constants_form($form, &$form_state, $node) {
 | 
											
												
													
														|  |          .'constants (rows in the following table).')
 |  |          .'constants (rows in the following table).')
 | 
											
												
													
														|  |      );
 |  |      );
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    $rows = array();
 |  | 
 | 
											
												
													
														|  | -    foreach ($node->constants as $group_id => $set) {
 |  | 
 | 
											
												
													
														|  | -      $row = array();
 |  | 
 | 
											
												
													
														|  | -      $row['group_id'] = $group_id;
 |  | 
 | 
											
												
													
														|  | -      $header['group_id'] = t('Group');
 |  | 
 | 
											
												
													
														|  | -      foreach ($set as $record) {
 |  | 
 | 
											
												
													
														|  | -        foreach ($record as $field) {
 |  | 
 | 
											
												
													
														|  | -          $index = $field['record_id'] . '-' . $field['field_id'];
 |  | 
 | 
											
												
													
														|  | -          $header[$index] = $field['value'];
 |  | 
 | 
											
												
													
														|  | -          $row[$index] = $field['value'];
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -      }
 |  | 
 | 
											
												
													
														|  | -      $header['operations'] = t('Operations');
 |  | 
 | 
											
												
													
														|  | -      $row['operations'] = filter_xss(l(t('Edit'), 'node/' . $node->nid . '/constants/' . $group_id . '/edit') . '  |  '  .
 |  | 
 | 
											
												
													
														|  | -            l(t('Delete'), 'node/' . $node->nid . '/constants/' . $group_id . '/delete'));
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -      $rows[] = $row;
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    //get the header using the last constant set
 |  | 
 | 
											
												
													
														|  | -    $header = array();
 |  | 
 | 
											
												
													
														|  | -    $header['group_id'] = '';
 |  | 
 | 
											
												
													
														|  | -    $header_row = array();
 |  | 
 | 
											
												
													
														|  | -    $header_row[0]['group_id'] = array('data' => t('Group'),'header'=>TRUE);
 |  | 
 | 
											
												
													
														|  | -    foreach ($set as $record) {
 |  | 
 | 
											
												
													
														|  | -      foreach ($record as $field) {
 |  | 
 | 
											
												
													
														|  | -        $header[$field['record_id']]['data'] = $node->template->template_array[$field['record_id']]['record_id'];
 |  | 
 | 
											
												
													
														|  | -        $header[$field['record_id']]['colspan'] = sizeof($record);
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -        $index = $field['record_id'] . '-' . $field['field_id'];
 |  | 
 | 
											
												
													
														|  | -        $header_row[0][$index] = array(
 |  | 
 | 
											
												
													
														|  | -          'data' => $node->template->template_array[$field['record_id']]['fields'][$field['field_id']]['title'],
 |  | 
 | 
											
												
													
														|  | -          'header' => TRUE
 |  | 
 | 
											
												
													
														|  | -        );
 |  | 
 | 
											
												
													
														|  | -      }
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  | -    $header['operations'] = '';
 |  | 
 | 
											
												
													
														|  | -    $header_row[0]['operations'] = array('data' => t('Operations'),'header'=>TRUE);
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    $full_header = array(
 |  | 
 | 
											
												
													
														|  | -      0 => $header,
 |  | 
 | 
											
												
													
														|  | -      1 => $header_row[0]
 |  | 
 | 
											
												
													
														|  | -    );
 |  | 
 | 
											
												
													
														|  | -    $all_rows = array_merge($header_row, $rows);
 |  | 
 | 
											
												
													
														|  |      $form['exposed_fields']['existing'] = array(
 |  |      $form['exposed_fields']['existing'] = array(
 | 
											
												
													
														|  |        '#type' => 'markup',
 |  |        '#type' => 'markup',
 | 
											
												
													
														|  | -      '#markup' => theme('table', array(
 |  | 
 | 
											
												
													
														|  | -        'header' => $header,
 |  | 
 | 
											
												
													
														|  | -        'rows' => $all_rows
 |  | 
 | 
											
												
													
														|  | -      )),
 |  | 
 | 
											
												
													
														|  | -      // Added to make accessible to subthemeing
 |  | 
 | 
											
												
													
														|  | -      '#rows' => serialize($rows),
 |  | 
 | 
											
												
													
														|  | -      '#header' => serialize($full_header)
 |  | 
 | 
											
												
													
														|  | 
 |  | +      '#theme' => 'tripal_bulk_loader_constant_set',
 | 
											
												
													
														|  | 
 |  | +      '#nid' => $node->nid,
 | 
											
												
													
														|  | 
 |  | +      '#constants' => $node->constants,
 | 
											
												
													
														|  | 
 |  | +      '#template' => $node->template,
 | 
											
												
													
														|  |      );
 |  |      );
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -231,7 +227,7 @@ function tripal_bulk_loader_set_constants_form($form, &$form_state, $node) {
 | 
											
												
													
														|  |    $exposed_fields = FALSE;
 |  |    $exposed_fields = FALSE;
 | 
											
												
													
														|  |    $indexes = array();
 |  |    $indexes = array();
 | 
											
												
													
														|  |    if (tripal_bulk_loader_has_exposed_fields($node)) {
 |  |    if (tripal_bulk_loader_has_exposed_fields($node)) {
 | 
											
												
													
														|  | -    foreach ($node->exposed_fields as $exposed_index) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +    foreach ($node->exposed_fields as $exposed_id => $exposed_index) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |        $record_id = $exposed_index['record_id'];
 |  |        $record_id = $exposed_index['record_id'];
 | 
											
												
													
														|  |        $field_id = $exposed_index['field_id'];
 |  |        $field_id = $exposed_index['field_id'];
 | 
											
										
											
												
													
														|  | @@ -244,7 +240,7 @@ function tripal_bulk_loader_set_constants_form($form, &$form_state, $node) {
 | 
											
												
													
														|  |          $default_value = '';
 |  |          $default_value = '';
 | 
											
												
													
														|  |          if (isset($node->constants[$record_id])) {
 |  |          if (isset($node->constants[$record_id])) {
 | 
											
												
													
														|  |            if (isset($node->constants[$record_id][$field_id])) {
 |  |            if (isset($node->constants[$record_id][$field_id])) {
 | 
											
												
													
														|  | -            $default_value = $node->constants[$record_id][$field_id]['value'];
 |  | 
 | 
											
												
													
														|  | 
 |  | +            $default_value = $node->constants[$exposed_id][$record_id][$field_id]['value'];
 | 
											
												
													
														|  |            }
 |  |            }
 | 
											
												
													
														|  |          } elseif (isset($field['constant value'])) {
 |  |          } elseif (isset($field['constant value'])) {
 | 
											
												
													
														|  |            $default_value = $field['constant value'];
 |  |            $default_value = $field['constant value'];
 | 
											
										
											
												
													
														|  | @@ -330,14 +326,12 @@ function tripal_bulk_loader_set_constants_form_validate($form, $form_state) {
 | 
											
												
													
														|  |          foreach ($array as $field_id) {
 |  |          foreach ($array as $field_id) {
 | 
											
												
													
														|  |            if (isset($template[$record_id]['fields'][$field_id]['exposed_validate'])) {
 |  |            if (isset($template[$record_id]['fields'][$field_id]['exposed_validate'])) {
 | 
											
												
													
														|  |              if ($template[$record_id]['fields'][$field_id]['exposed_validate']) {
 |  |              if ($template[$record_id]['fields'][$field_id]['exposed_validate']) {
 | 
											
												
													
														|  | -              $result = db_fetch_object(chado_query(
 |  | 
 | 
											
												
													
														|  | -                "SELECT 1 as valid FROM {%s} WHERE %s='%s'",
 |  | 
 | 
											
												
													
														|  | -                $template[$record_id]['table'],
 |  | 
 | 
											
												
													
														|  | -                $template[$record_id]['fields'][$field_id]['field'],
 |  | 
 | 
											
												
													
														|  | -                $form_state['values'][$record_id . '-' . $field_id]
 |  | 
 | 
											
												
													
														|  | -              ));
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -              if (!$result->valid) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +              $result = chado_query(
 | 
											
												
													
														|  | 
 |  | +                'SELECT 1 as valid FROM {'.$template[$record_id]['table'].'} WHERE '.$template[$record_id]['fields'][$field_id]['field'].'=:value',
 | 
											
												
													
														|  | 
 |  | +                array(':value' => $form_state['values'][$record_id . '-' . $field_id])
 | 
											
												
													
														|  | 
 |  | +              )->fetchField();
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +              if (!$result) {
 | 
											
												
													
														|  |                  $msg = 'A ' . $form['exposed_fields']['new'][$record_id . '-' . $field_id]['#title'] . ' of "' . $form['exposed_fields']['new'][$record_id . '-' . $field_id]['#value'] . '" must already exist!';
 |  |                  $msg = 'A ' . $form['exposed_fields']['new'][$record_id . '-' . $field_id]['#title'] . ' of "' . $form['exposed_fields']['new'][$record_id . '-' . $field_id]['#value'] . '" must already exist!';
 | 
											
												
													
														|  |                  form_set_error($record_id . '-' . $field_id, $msg);
 |  |                  form_set_error($record_id . '-' . $field_id, $msg);
 | 
											
												
													
														|  |                }
 |  |                }
 | 
											
										
											
												
													
														|  | @@ -387,6 +381,13 @@ function tripal_bulk_loader_set_constants_form_submit($form, $form_state) {
 | 
											
												
													
														|  |            );
 |  |            );
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |        }
 |  |        }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      // Update the node so that the constant set isn't immediatly erased...
 | 
											
												
													
														|  | 
 |  | +      $node = $form_state['node'];
 | 
											
												
													
														|  | 
 |  | +      $node->has_header = $node->file_has_header;
 | 
											
												
													
														|  | 
 |  | +      if($node = node_submit($node)) {
 | 
											
												
													
														|  | 
 |  | +        node_save($node);
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
										
											
												
													
														|  | @@ -598,3 +599,90 @@ function tripal_bulk_loader_delete_constant_set_form_submit($form, &$form_state)
 | 
											
												
													
														|  |    }
 |  |    }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  }
 |  |  }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +/**
 | 
											
												
													
														|  | 
 |  | + * Display a constant set.
 | 
											
												
													
														|  | 
 |  | + *
 | 
											
												
													
														|  | 
 |  | + * @param $varaibles
 | 
											
												
													
														|  | 
 |  | + *   An array of variables that are available:
 | 
											
												
													
														|  | 
 |  | + *    -nid: the NID of the bulk loading job node the constants are for.
 | 
											
												
													
														|  | 
 |  | + *    -constants: An array of constants as loaded by tripal_bulk_loader_load().
 | 
											
												
													
														|  | 
 |  | + *    -template: An object containing the template record with unserialized
 | 
											
												
													
														|  | 
 |  | + *     template_array.
 | 
											
												
													
														|  | 
 |  | + *    -options: An optional array of options.
 | 
											
												
													
														|  | 
 |  | + *
 | 
											
												
													
														|  | 
 |  | + * @return
 | 
											
												
													
														|  | 
 |  | + *   Rendered HTML.
 | 
											
												
													
														|  | 
 |  | + */
 | 
											
												
													
														|  | 
 |  | +function theme_tripal_bulk_loader_constant_set($variables) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    // Check that there are constants to render.
 | 
											
												
													
														|  | 
 |  | +    if (empty($variables['constants'])) {
 | 
											
												
													
														|  | 
 |  | +      return '';
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    // Set Defaults.
 | 
											
												
													
														|  | 
 |  | +    $variables['options'] = (isset($variables['options'])) ? $variables['options'] : array();
 | 
											
												
													
														|  | 
 |  | +    $variables['options']['display_operations'] = (isset($variables['options']['display_operations'])) ?
 | 
											
												
													
														|  | 
 |  | +      $variables['options']['display_operations'] : TRUE;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    // Get all the rows.
 | 
											
												
													
														|  | 
 |  | +    $rows = array();
 | 
											
												
													
														|  | 
 |  | +    foreach ($variables['constants'] as $group_id => $set) {
 | 
											
												
													
														|  | 
 |  | +      $row = array();
 | 
											
												
													
														|  | 
 |  | +      $row['group_id'] = $group_id;
 | 
											
												
													
														|  | 
 |  | +      foreach ($set as $record) {
 | 
											
												
													
														|  | 
 |  | +        foreach ($record as $field) {
 | 
											
												
													
														|  | 
 |  | +          $index = $field['record_id'] . '-' . $field['field_id'];
 | 
											
												
													
														|  | 
 |  | +          $row[$index] = $field['value'];
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +      if ($variables['options']['display_operations']) {
 | 
											
												
													
														|  | 
 |  | +        $row['operations'] = filter_xss(l(t('Edit'), 'node/' . $variables['nid'] . '/constants/' . $group_id . '/edit') . '  |  '  .
 | 
											
												
													
														|  | 
 |  | +            l(t('Delete'), 'node/' . $variables['nid'] . '/constants/' . $group_id . '/delete'));
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +      $rows[] = $row;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    // Get the header using the last constant set.
 | 
											
												
													
														|  | 
 |  | +    $header = array();
 | 
											
												
													
														|  | 
 |  | +    $header[0]['group_id'] = array(
 | 
											
												
													
														|  | 
 |  | +      'data' => t('Group'),
 | 
											
												
													
														|  | 
 |  | +      'header'=>TRUE,
 | 
											
												
													
														|  | 
 |  | +      'rowspan' => 2
 | 
											
												
													
														|  | 
 |  | +    );
 | 
											
												
													
														|  | 
 |  | +    foreach ($set as $record) {
 | 
											
												
													
														|  | 
 |  | +      foreach ($record as $field) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        $index = $field['record_id'] . '-' . $field['field_id'];
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        $header[0][$field['record_id']] = array(
 | 
											
												
													
														|  | 
 |  | +          'data' => $variables['template']->template_array[$field['record_id']]['record_id'],
 | 
											
												
													
														|  | 
 |  | +          'header' => TRUE,
 | 
											
												
													
														|  | 
 |  | +          'colspan' => sizeof($record)
 | 
											
												
													
														|  | 
 |  | +        );
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        $header[1][$index] = array(
 | 
											
												
													
														|  | 
 |  | +          'data' => $variables['template']->template_array[$field['record_id']]['fields'][$field['field_id']]['title'],
 | 
											
												
													
														|  | 
 |  | +          'header' => TRUE
 | 
											
												
													
														|  | 
 |  | +        );
 | 
											
												
													
														|  | 
 |  | +      }
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    if ($variables['options']['display_operations']) {
 | 
											
												
													
														|  | 
 |  | +      $header[0]['operations'] = array(
 | 
											
												
													
														|  | 
 |  | +        'data' => t('Operations'),
 | 
											
												
													
														|  | 
 |  | +        'header'=> TRUE,
 | 
											
												
													
														|  | 
 |  | +        'rowspan' => 2
 | 
											
												
													
														|  | 
 |  | +      );
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    return theme(
 | 
											
												
													
														|  | 
 |  | +      'table',
 | 
											
												
													
														|  | 
 |  | +      array(
 | 
											
												
													
														|  | 
 |  | +        'header' => array(),
 | 
											
												
													
														|  | 
 |  | +        'rows' => array_merge($header, $rows)
 | 
											
												
													
														|  | 
 |  | +      )
 | 
											
												
													
														|  | 
 |  | +    );
 | 
											
												
													
														|  | 
 |  | +}
 |