Tripal v1.0 (6.x-1.0)
tripal_bulk_loader.constants.inc File Reference

Go to the source code of this file.

Functions

 tripal_bulk_loader_update_constant ($nid, $group_id, $table, $field, $record_id, $field_id, $value)
 tripal_bulk_loader_has_exposed_fields ($node)
 tripal_bulk_loader_set_constants_form ($form_state, $node)
 tripal_bulk_loader_set_constants_form_validate ($form, $form_state)
 tripal_bulk_loader_set_constants_form_submit ($form, $form_state)
 theme_tripal_bulk_loader_set_constants_form ($form)
 tripal_bulk_loader_edit_constant_set_form ($form_state, $node, $group_id)
 tripal_bulk_loader_edit_constant_set_form_submit ($form, $form_state)
 tripal_bulk_loader_delete_constant_set_form ($form_state, $node, $group_id)
 tripal_bulk_loader_delete_constant_set_form_submit ($form, $form_state)

Detailed Description

Definition in file tripal_bulk_loader.constants.inc.


Function Documentation

theme_tripal_bulk_loader_set_constants_form ( form)

Definition at line 335 of file tripal_bulk_loader.constants.inc.

                                                            {
  $output = '';

  $exposed_fields = unserialize($form['exposed_array']['#value']);
  // need to put in the context of a node so we can use the has_exposed_fields function
  if ($exposed_fields) {
    $node->exposed_fields = $exposed_fields;
  }
  else {
    $node->exposed_fields = array();
  }

  // Add draggable table for constant sets
  if (tripal_bulk_loader_has_exposed_fields($node)) {
    $i=1;
    foreach (element_children($form['exposed_fields']['existing']) as $key) {
      $element = &$form['exposed_fields']['existing'][$key];
      $element['group']['#attributes']['class'] = 'weight-group';

      $row = array();
      foreach ($exposed_fields as $exposed) {
        if ($i==1) {
          $header[] = $exposed['title'];
        }
        $k = $exposed['record_id'] . '-' . $exposed['field_id'];
        $row[] = drupal_render($element[$k]);
      }
      $row[] = drupal_render($element['delete']);
      $row[] = drupal_render($element['group']) . drupal_render($element['id']);
      if (!empty($row[0])) {
        $rows[] = array('data' => $row, 'class' => 'draggable');
      }
      $i++;
    }
    //drupal_add_tabledrag('mytable', 'order', 'sibling', 'weight-group');
    // @coder-ignore: no user input thus don't need to filter
    $form['exposed_fields']['existing'] = array(
      '#type' => 'markup',
      '#value' => theme('table', $header, $rows, array('id' => 'mytable')) . '<br />',
    );
  }

  $output .= drupal_render($form);
  return $output;
}
tripal_bulk_loader_delete_constant_set_form ( form_state,
node,
group_id 
)

Delete a constant set (exposed fields in template)

Parameters:
$form_stateThe current state of the form
$nodeThe node to set constants for
$group_idThe constant set to delete
Returns:
A form array to be rendered by drupal_get_form()

Definition at line 536 of file tripal_bulk_loader.constants.inc.

                                                                                    {
  $form = array();

  $form['#redirect'] = 'node/' . $node->nid;

  $form['nid'] = array(
    '#type' => 'value',
    '#value' => $node->nid,
  );

  $form['group_id'] = array(
    '#type' => 'hidden',
    '#value' => $group_id,
  );

  return confirm_form($form,
      t('Are you sure you want to delete this constant set?'),
      'node/' . $node->nid,
      t('This action cannot be undone.'),
      t('Delete'),
      t('Cancel')
  );

}
tripal_bulk_loader_delete_constant_set_form_submit ( form,
form_state 
)

Delete the current constant set

Definition at line 564 of file tripal_bulk_loader.constants.inc.

                                                                                {

  $group_id = $form_state['values']['group_id'];
  $nid = $form_state['values']['nid'];
  if ($nid && $form_state['values']['confirm']) {
    db_query("DELETE FROM {tripal_bulk_loader_constants} WHERE nid=%d AND group_id=%d", $nid, $group_id);
    drupal_set_message(t('Constant set successfully deleted.'));
  }

}
tripal_bulk_loader_edit_constant_set_form ( form_state,
node,
group_id 
)

Edit a constant set (exposed fields in template)

Parameters:
$form_stateThe current state of the form
$nodeThe node to set constants for
$group_idThe constant set to edit
Returns:
A form array to be rendered by drupal_get_form()

Definition at line 398 of file tripal_bulk_loader.constants.inc.

                                                                                  {
  $form = array();

  $form['#redirect'] = 'node/' . $node->nid;

  $form['nid'] = array(
    '#type' => 'hidden',
    '#value' => $node->nid,
  );

  $form['group_id'] = array(
    '#type' => 'hidden',
    '#value' => $group_id,
  );


  $form['explanation'] = array(
    '#type' => 'item',
    '#value' => t('The following fields are constants in the selected template that you need to set values for.')
  );

  // Add textifelds for exposed fields of the current template
  $exposed_fields = FALSE;
  $indexes = array();
  if (tripal_bulk_loader_has_exposed_fields($node)) {
    foreach ($node->exposed_fields as $exposed_index) {

      $record_id = $exposed_index['record_id'];
      $record = $node->template->template_array[$record_id];
      $field_id = $exposed_index['field_id'];
      $field = $node->template->template_array[$record_id]['fields'][$field_id];

      if ($field['exposed']) {
        $exposed_fields = TRUE;
        $indexes[$record_id][] = $field_id;

        switch ($field['type']) {
          case 'table field':
            $form[$record_id . '-' . $field_id] = array(
              '#type' => 'textfield',
              '#title' => t('%title', array('%title' => $field['title'])),
              '#description' => t('%exposed_description', array('%exposed_description' => $field['exposed_description'])),
              '#default_value' => (isset($node->constants[$group_id][$record_id][$field_id]['value'])) ? $node->constants[$group_id][$record_id][$field_id]['value'] : $field['constant value'],
            );
          break;
          case 'constant':
            $form[$record_id . '-' . $field_id] = array(
              '#type' => 'textfield',
              '#title' => t('%title', array('%title' => $field['title'])),
              '#description' => t('Enter the case-sensitive value of this constant for your data file'),
              '#default_value' => (isset($node->constants[$group_id][$record_id][$field_id]['value'])) ? $node->constants[$group_id][$record_id][$field_id]['value'] : $field['constant value'],
            );
          break;
        }

        $form[$record_id . '-' . $field_id . '-table'] = array(
          '#type' => 'hidden',
          '#value' => $record['table'],
        );
        $form[$record_id . '-' . $field_id . '-field'] = array(
          '#type' => 'hidden',
          '#value' => $field['field'],
        );
        $form[$record_id . '-' . $field_id . '-type'] = array(
          '#type' => 'hidden',
          '#value' => $field['type'],
        );
      }

    }
  }
  $form['template'] = array(
    '#type' => 'hidden',
    '#value' => serialize($node->template->template_array)
  );

  $form['indexes'] = array(
    '#type' => 'hidden',
    '#value' => serialize($indexes),
  );

  $form['save'] = array(
    '#type' => 'submit',
    '#value' => 'Save',
  );

  $form['cancel'] = array(
    '#type' => 'submit',
    '#value' => 'Cancel',
  );

  return $form;
}
tripal_bulk_loader_edit_constant_set_form_submit ( form,
form_state 
)

Edit constants in the current constant set

Definition at line 495 of file tripal_bulk_loader.constants.inc.

                                                                              {

  // Update constants
  $template = unserialize($form_state['values']['template']);
  $indexes = unserialize($form_state['values']['indexes']);

  $op = $form_state['values'][ $form_state['clicked_button']['#name'] ];
  if (strcmp('Save', $op) == 0) {

    foreach ($indexes as $record_id => $array) {
      foreach ($array as $field_id) {
        tripal_bulk_loader_update_constant(
          $form_state['values']['nid'],
          $form_state['values']['group_id'],
          $form_state['values'][$record_id . '-' . $field_id . '-table'],
          $form_state['values'][$record_id . '-' . $field_id . '-field'],
          $record_id,
          $field_id,
          $form_state['values'][$record_id . '-' . $field_id]
        );
      }
    }
    drupal_set_message(t('The constant set was successfully updated.'));

  }

}
tripal_bulk_loader_has_exposed_fields ( node)

Definition at line 71 of file tripal_bulk_loader.constants.inc.

                                                      {

  // exposed fields isn't set
  if (!isset($node->exposed_fields)) {
    return FALSE;
  }

  // exposed fields has at least one element
  if (sizeof($node->exposed_fields) == 1) {
    // need to check if single element is an empty array
    $element = reset($node->exposed_fields);
    if ($element) {
      return TRUE;
    }
    else {
      return FALSE;
    }
  }
  elseif (sizeof($node->exposed_fields) > 1) {
    return TRUE;
  }
  else {
    return FALSE;
  }

  return FALSE;
}
tripal_bulk_loader_set_constants_form ( form_state,
node 
)

Set constants (exposed fields in template)

Parameters:
$form_stateThe current state of the form
$nodeThe node to set constants for
Returns:
A form array to be rendered by drupal_get_form()

Definition at line 114 of file tripal_bulk_loader.constants.inc.

                                                                   {
  $form = array();

  $form['nid'] = array(
    '#type' => 'hidden',
    '#value' => $node->nid
  );

  if (!tripal_bulk_loader_has_exposed_fields($node)) {
    return $form;
  }

  $form['exposed_array'] = array(
    '#type' => 'hidden',
    '#value' => serialize($node->exposed_fields),
  );

  $form['exposed_fields'] = array(
    '#type' => 'fieldset',
    '#title' => t('Constant Values'),
    '#collapsible' => TRUE,
    '#collapsed' => ($node->template_id) ? FALSE : TRUE,
    '#prefix' => '<div id="set-constants">',
    '#suffix' => '</div>',
  );

  // Display table of already added constant sets with the ability to re-arrange and delete
  $first_constant = reset($node->constants);
  if (sizeof($node->constants) > 0 AND !empty($first_constant)) {
    $form['exposed_fields']['explanation-1'] = array(
      '#type' => 'item',
      '#value' => t('You have already added constants to this bulk loading job. Each '
        .'row in the following table represents a set of constants. Each set will be used '
        .'to load your data file with the specified template resulting in the each record '
        .'in the template to be loaded x number of times where there are x sets of '
        .'constants (rows in the following table).')
    );

    $form['exposed_fields']['existing'] = array(
      '#tree' => TRUE,
    );

    foreach ($node->constants as $set) {

      foreach ($set as $record) {
        foreach ($record as $field) {
          $index = $field['record_id'] . '-' . $field['field_id'];
          $group = $field['group_id'];
          $form['exposed_fields']['existing'][$group][$index] = array(
            '#type' => 'markup',
            '#value' => filter_xss($field['value']),
          );
        }
      }

      $form['exposed_fields']['existing'][$group]['delete'] = array(
        '#type' => 'markup',
        '#value' => filter_xss(l(t('Edit'), 'node/' . $node->nid . '/constants/' . $group . '/edit') . '  |  '  .
          l(t('Delete'), 'node/' . $node->nid . '/constants/' . $group . '/delete')),
      );

    }
  }

  $form['exposed_fields']['new'] = array(
    '#type' => 'fieldset',
    '#title' => t('New set of Constants'),
  );

  $form['exposed_fields']['new']['explanation-2'] = array(
    '#type' => 'item',
    '#value' => t('The following fields are constants in the selected template that you need to set values for.')
  );

  // Add textifelds for exposed fields of the current template
  $exposed_fields = FALSE;
  $indexes = array();
  if (tripal_bulk_loader_has_exposed_fields($node)) {
    foreach ($node->exposed_fields as $exposed_index) {

      $record_id = $exposed_index['record_id'];
      $field_id = $exposed_index['field_id'];
      $field = $node->template->template_array[$record_id]['fields'][$field_id];

      if ($field['exposed']) {
        $exposed_fields = TRUE;
        $indexes[$record_id][] = $field_id;

        switch ($field['type']) {
          case 'table field':
            $form['exposed_fields']['new'][$record_id . '-' . $field_id] = array(
              '#type' => 'textfield',
              '#title' => t('%title', array('%title' => $field['title'])),
              '#description' => t('%exposed_description', array('%exposed_description' => $field['exposed_description'])),
              '#default_value' => (isset($node->constants[$record_id][$field_id]['value'])) ? $node->constants[$record_id][$field_id]['value'] : $field['constant value'],
            );
          break;
          case 'constant':
            $form['exposed_fields']['new'][$record_id . '-' . $field_id] = array(
              '#type' => 'textfield',
              '#title' => t('%title', array('%title' => $field['title']) ),
              '#description' => t('Enter the case-sensitive value of this constant for your data file'),
              '#default_value' => (isset($node->constants[$record_id][$field_id]['value'])) ? $node->constants[$record_id][$field_id]['value'] : $field['constant value'],
            );
          break;
        }

        $form['exposed_fields']['new'][$record_id . '-' . $field_id . '-table'] = array(
          '#type' => 'hidden',
          '#value' => $node->template->template_array[$record_id]['table'],
        );
        $form['exposed_fields']['new'][$record_id . '-' . $field_id . '-field'] = array(
          '#type' => 'hidden',
          '#value' => $field['field'],
        );
        $form['exposed_fields']['new'][$record_id . '-' . $field_id . '-type'] = array(
          '#type' => 'hidden',
          '#value' => $field['type'],
        );

      }
    }
  }
  $form['template'] = array(
    '#type' => 'hidden',
    '#value' => serialize($node->template->template_array)
  );

  $form['exposed_fields']['new']['indexes'] = array(
    '#type' => 'hidden',
    '#value' => serialize($indexes),
  );

  if (!$exposed_fields) {
    $form['exposed_fields']['new']['explanation'] = array(
      '#type' => 'item',
      '#value' => t('There are no exposed fields for this template.')
    );
  }

  $form['exposed_fields']['new']['submit-2'] = array(
    '#type' => 'submit',
    '#name' => 'add_constant',
    '#value' => t('Add Constant Set')
  );

  return $form;
}
tripal_bulk_loader_set_constants_form_submit ( form,
form_state 
)

Insert/update the constants associated with this node

Definition at line 309 of file tripal_bulk_loader.constants.inc.

                                                                          {

  // Insert/Update constants
  $template = unserialize($form_state['values']['template']);
  $indexes = unserialize($form_state['values']['indexes']);

  $op = $form_state['values'][ $form_state['clicked_button']['#name'] ];
  if (strcmp('Add Constant Set', $op) == 0) {
      $max_group = db_fetch_object(db_query("SELECT max(group_id) as value FROM {tripal_bulk_loader_constants} WHERE nid=%d", $form_state['values']['nid']));
      foreach ($indexes as $record_id => $array) {
        foreach ($array as $field_id) {
          tripal_bulk_loader_update_constant(
            $form_state['values']['nid'],
            $max_group->value+1,
            $form_state['values'][$record_id . '-' . $field_id . '-table'],
            $form_state['values'][$record_id . '-' . $field_id . '-field'],
            $record_id,
            $field_id,
            $form_state['values'][$record_id . '-' . $field_id]
          );
        }
      }
  }

}
tripal_bulk_loader_set_constants_form_validate ( form,
form_state 
)

Validate that the values entered exist in the database if indicated in hte template array

Definition at line 267 of file tripal_bulk_loader.constants.inc.

                                                                            {

  $template = unserialize($form_state['values']['template']);
  $indexes = unserialize($form_state['values']['indexes']);

  $op = $form_state['values'][ $form_state['clicked_button']['#name'] ];
  if (strcmp('Add Constant Set', $op) == 0) {
      foreach ($indexes as $record_id => $array) {
        foreach ($array as $field_id) {
          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) {
              $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);
            }
            else {
              drupal_set_message(
                t(
                  'Confirmed a %title of "%value" already exists.',
                  array(
                    '%title' => $form['exposed_fields']['new'][$record_id . '-' . $field_id]['#title'],
                    '%value' => $form['exposed_fields']['new'][$record_id . '-' . $field_id]['#value']
                  )
                )
              );
            }
          }
        }
      }
  }

}
tripal_bulk_loader_update_constant ( nid,
group_id,
table,
field,
record_id,
field_id,
value 
)

Inserts/Updates a tripal bulk loading job constant

Parameters:
$nidThe node ID of the the tripal bulk loading job the constant is associated with
$tableThe chado table the constant is associated with
$fieldThe chado field the constant is associated with
$record_idThe index in the template array for this record
$field_idThe index in the template array for this field

NOTE: $template_array[$record_id]['table'] = $table and $template_array[$record_id]['fields'][$field_id]['field'] = $field both are included as a means of double-checking the constant still is still in thesame place in the template array. For example, that the template was not edited and the records moved around after the job was submitted but before it was run.

Returns:
On success it returns the object (with primary key if inserted); on failure it returns FALSE

Definition at line 29 of file tripal_bulk_loader.constants.inc.

                                                                                                            {

  $record = array(
    'nid' => $nid,
    'group_id' => $group_id,
    'chado_table' => $table,
    'chado_field' => $field,
    'record_id' => $record_id,
    'field_id' => $field_id,
    'value' => $value
  );

  // Check to see if already exists
  $exists = db_fetch_object(db_query(
    "SELECT constant_id FROM {tripal_bulk_loader_constants} WHERE nid=%d AND record_id=%d AND field_id=%d AND group_id=%d",
    $record['nid'],
    $record['record_id'],
    $record['field_id'],
    $record['group_id']
  ));
  if ($exists->constant_id) {
    $record['constant_id'] = $exists->constant_id;
    $status = drupal_write_record('tripal_bulk_loader_constants', $record, 'constant_id');
    if ($status) {
      return $record;
    }
    else {
      return FALSE;
    }
  }
  else {

    $status = drupal_write_record('tripal_bulk_loader_constants', $record);
    if ($status) {
      return $record;
    }
    else {
      return FALSE;
    }
  }
}
 All Classes Files Functions Variables