includes/tripal_galaxy.admin_workflow_form.inc
<?php
/**
* @file
* Provides the form for adding workflows.
*/
/**
* For for adding workflows.
*/
function tripal_galaxy_admin_workflows_form($form, &$form_state) {
$form['#tree'] = TRUE;
// Get the list of workflows and interate through them.
$workflows = db_select('tripal_galaxy_workflow', 'tgw')->fields('tgw')
->orderBy('workflow_name')
->execute();
$i = 0;
while ($workflow = $workflows->fetchObject()) {
$galaxy = db_select('tripal_galaxy', 'tg')->fields('tg')
->condition('galaxy_id', $workflow->galaxy_id)
->execute()
->fetchObject();
$node = node_load($workflow->nid);
$form['rows'][$i]['enabled-' . $i] = array(
'#type' => 'checkbox',
'#default_value' => $workflow->status,
);
$form['rows'][$i]['galaxy_workflow_id' . $i] = array(
'#type' => 'item',
'#markup' => $workflow->galaxy_workflow_id,
);
$form['rows'][$i]['workflow_name' . $i] = array(
'#type' => 'item',
'#markup' => l($node->title, 'node/' . $workflow->nid),
);
$form['rows'][$i]['workflow_name_galaxy' . $i] = array(
'#type' => 'item',
'#markup' => $workflow->workflow_name,
);
$form['rows'][$i]['servername-' . $i] = array(
'#type' => 'item',
'#markup' => $galaxy->servername,
);
$form['rows'][$i]['workflow_status-' . $i] = array(
'#type' => 'item',
'#markup' => $workflow->status,
);
$form['rows'][$i]['workflow_ids-' . $i] = array(
'#type' => 'item',
'#markup' => 'Workflow ID: ' . $workflow->workflow_id . '</br>' . 'Workflow UUID: ' . $workflow->workflow_uuid . '',
);
if ($workflow->status == 'Active') {
$status_change = l(t("Disable"), '/admin/tripal/extension/galaxy/workflows/disable/' . $workflow->galaxy_workflow_id);
}
elseif ($workflow->status == 'disabled') {
$status_change = l(t("Enable"), '/admin/tripal/extension/galaxy/workflows/enable/' . $workflow->galaxy_workflow_id);
}
$remove_link = l(t('Remove'), '/admin/tripal/extension/galaxy/workflows/remove/' . $workflow->galaxy_workflow_id);
$settings_link = l(t("Settings"), '/admin/tripal/extension/galaxy/workflows/settings/' . $workflow->galaxy_workflow_id);
$form['rows'][$i]['actions-' . $i] = array(
'#type' => 'item',
'#markup' => $settings_link . ' | ' . $status_change . ' | ' . $remove_link ,
);
$i++;
}
// Theme this form.
$form['rows']['#theme'] = 'tripal_galaxy_admin_workflows_form_rows';
return $form;
}
/**
* The themable function for the available workflow form.
*/
function theme_tripal_galaxy_admin_workflows_form_rows($variables) {
$form_rows = $variables['form'];
// The apparopriate headers for this form's table.
$headers = array(
'ID',
'Workflow Name',
'Galaxy Server',
'Status',
// 'Galaxy IDs',.
'Actions',
);
// Theme the rows of this form's table.
$rows = array();
foreach (element_children($form_rows) as $i) {
$row = $form_rows[$i];
$rows[] = array(
drupal_render($row["galaxy_workflow_id" . $i]),
'<i>Webform Title:</i> ' . drupal_render($row["workflow_name" . $i]) . '<i>Workflow Name:</i> ' . drupal_render($row["workflow_name_galaxy" . $i]),
drupal_render($row["servername-" . $i]),
drupal_render($row["workflow_status-" . $i]),
// drupal_render($row["workflow_ids-" . $i]),.
drupal_render($row["actions-" . $i]),
);
}
// Subset sequences.
return theme_table(array(
'header' => $headers,
'rows' => $rows,
'attributes' => array(),
'sticky' => TRUE,
'caption' => '',
'colgroups' => array(),
'empty' => 'There are no workflows',
));
}
/**
* Override's Drupal's Hook_form_submit for the available workflow form.
*/
function tripal_galaxy_admin_workflows_form_submit($form, &$form_state) {
$i = 0;
$form_rows = $form_state['values']['rows'];
// Go through all of the row entries.
foreach ($form_rows as $i => $row) {
// Select the workflow being edited.
$sql = "SELECT * FROM {tripal_galaxy_workflow} WHERE workflow_id = :workflow_id AND galaxy_id = :galaxy_id";
$galaxy = $form_rows[$i]['galaxy-' . $i];
$galaxy_id = $galaxy->galaxy_id;
$args = array(
':workflow_id' => $form_rows[$i]['workflow_id-' . $i],
':galaxy_id' => $galaxy_id,
);
$workflow_instance = db_query($sql, $args);
$workflow_instance = $workflow_instance->fetchObject();
// If the workflow has changed values, update it.
if ($workflow_instance->status != $form_rows[$i]['enabled-' . $i]) {
$data = array(
'status' => $form_rows[$i]['enabled-' . $i],
'galaxy_workflow_id' => $workflow_instance->galaxy_workflow_id,
'workflow_name' => $form_rows[$i]['workflow_name-' . $i],
);
$workflow = drupal_write_record('tripal_galaxy_workflow', $data, 'galaxy_workflow_id');
drupal_set_message(t('Workflow information Updated'));
}
$i++;
}
}