function chado_node_sync_form_submit
2.x tripal_core.chado_nodes.api.inc | chado_node_sync_form_submit($form, $form_state) |
3.x tripal_core.chado_nodes.api.inc | chado_node_sync_form_submit($form, $form_state) |
Generic Sync Form Submit
Related topics
File
- legacy/
tripal_core/ api/ tripal_core.chado_nodes.api.inc, line 677 - API to handle much of the common functionality implemented when creating a drupal node type.
Code
function chado_node_sync_form_submit($form, $form_state) {
global $user;
if (preg_match('/^Sync/', $form_state['values']['op'])) {
// get arguments
$args = $form_state['chado_node_api'];
$module = $form_state['chado_node_api']['hook_prefix'];
$base_table = $form_state['chado_node_api']['base_table'];
$linking_table = $form_state['values']['linking_table'];
$node_type = $form_state['values']['node_type'];
// Allow each module to hijack the submit if needed
$hook_form_hijack_submit = $args['hook_prefix'] . '_chado_node_sync_form_submit';
if (function_exists($hook_form_hijack_submit)) {
return call_user_func($hook_form_hijack_submit, $form, $form_state);
}
// Get the types separated into a consistent string
$types = array();
if (isset($form_state['values']['type_ids'])) {
// seperate by new line or comma.
$temp_types = preg_split("/[,\n\r]+/", $form_state['values']['type_ids']);
// remove any extra spacing around the types
for ($i = 0; $i < count($temp_types); $i++) {
// skip empty types
if (trim($temp_types[$i]) == '') {
continue;
}
$types[$i] = trim($temp_types[$i]);
}
}
// Get the ids to be synced
$ids = array();
if (array_key_exists('ids', $form_state['values'])) {
foreach ($form_state['values']['ids'] as $id => $selected) {
if ($selected) {
$ids[] = $id;
}
}
}
// get the organism to be synced
$organism_id = FALSE;
if (array_key_exists('organism_id', $form_state['values'])) {
$organism_id = $form_state['values']['organism_id'];
}
// Job Arguments
$job_args = array(
'base_table' => $base_table,
'max_sync' => (!empty($form_state['values']['max_sync'])) ? $form_state['values']['max_sync'] : FALSE,
'organism_id' => $organism_id,
'types' => $types,
'ids' => $ids,
'linking_table' => $linking_table,
'node_type' => $node_type
);
$title = "Sync " . $args['record_type_title']['plural'];
tripal_add_job($title, $module, 'chado_node_sync_records', $job_args, $user->uid);
}
if (preg_match('/^Clean up orphaned/', $form_state['values']['op'])) {
$module = $form_state['chado_node_api']['hook_prefix'];
$base_table = $form_state['chado_node_api']['base_table'];
$linking_table = $form_state['values']['linking_table'];
$node_type = $form_state['values']['node_type'];
$job_args = array($base_table, $form_state['values']['cleanup_batch_size'], $linking_table, $node_type);
variable_set('chado_node_api_cleanup_batch_size', $form_state['values']['cleanup_batch_size']);
tripal_add_job($form_state['values']['op'], $module, 'chado_cleanup_orphaned_nodes', $job_args, $user->uid);
}
}