/** * @param string $username * @param string $session_id * @return string */ public static function run($username, $session_id) { global $session, $user, $transaction; $sample_add_role = $session->read_value("SAMPLE_ADD_ROLE"); $sample_item_retrace = $session->read_value("SAMPLE_ITEM_RETRACE"); $sample_item_get_array = $session->read_value("SAMPLE_ITEM_GET_ARRAY"); $sample_item_keywords = $session->read_value("SAMPLE_ITEM_KEYWORDS"); $sample_item_description = $session->read_value("SAMPLE_ITEM_DESCRIPTION"); $sample_organ_unit = $session->read_value("SAMPLE_ORGANISATION_UNIT"); $sample_template = $session->read_value("SAMPLE_TEMPLATE"); $sample_name = $session->read_value("SAMPLE_NAME"); $sample_manufacturer = $session->read_value("SAMPLE_MANUFACTURER_ID"); $sample_manufacturer_name = $session->read_value("SAMPLE_MANUFACTURER_NAME"); $sample_location = $session->read_value("SAMPLE_LOCATION"); $sample_expiry = $session->read_value("SAMPLE_EXPIRY"); $sample_expiry_warning = $session->read_value("SAMPLE_EXPIRY_WARNING"); $sample_desc = $session->read_value("SAMPLE_DESCRIPTION"); $sample_template_data_type = $session->read_value("SAMPLE_TEMPLATE_DATA_TYPE"); $sample_template_data_type_id = $session->read_value("SAMPLE_TEMPLATE_DATA_TYPE_ID"); $sample_template_data_array = $session->read_value("SAMPLE_TEMPLATE_DATA_ARRAY"); $transaction_id = $transaction->begin(); try { $sample = new Sample(null); $sample->set_template_data($sample_template_data_type, $sample_template_data_type_id, $sample_template_data_array); $sample_id = $sample->create($sample_organ_unit, $sample_template, $sample_name, $sample_manufacturer, $sample_location, $sample_desc, null, $sample_expiry, $sample_expiry_warning); if ($sample_add_role == "item" or $sample_add_role == "item_parent") { // Special Parent Sample Case if ($sample_add_role == "item_parent") { $parent_sample = new Sample($sample_item_get_array['sample_id']); $sample_item_get_array['sample_id'] = $sample_id; $sample_item_get_array['parent_sample'] = "1"; $event_item_id = $parent_sample->get_item_id(); } else { $event_item_id = $sample->get_item_id(); } $post_array = array(); $post_array['keywords'] = $sample_item_keywords; $post_array['description'] = $sample_item_description; $item_add_event = new ItemAddEvent($event_item_id, $sample_item_get_array, $post_array, true, "sample"); $event_handler = new EventHandler($item_add_event); if ($event_handler->get_success() == true) { // Nothing } } } catch (BaseException $e) { if ($transaction_id != null) { $transaction->rollback($transaction_id); } throw $e; } $session->delete_value("SAMPLE_ADD_ROLE"); $session->delete_value("SAMPLE_ADD_ITEM_HOLDER_CLASS"); $session->delete_value("SAMPLE_ADD_ITEM_HOLDER_ID"); $session->delete_value("SAMPLE_ITEM_RETRACE"); $session->delete_value("SAMPLE_ITEM_GET_ARRAY"); $session->delete_value("SAMPLE_ITEM_KEYWORDS"); $session->delete_value("SAMPLE_ITEM_DESCRIPTION"); $session->delete_value("SAMPLE_ITEM_TYPE_ARRAY"); $session->delete_value("SAMPLE_ORGANISATION_UNIT"); $session->delete_value("SAMPLE_TEMPLATE"); $session->delete_value("SAMPLE_NAME"); $session->delete_value("SAMPLE_MANUFACTURER_ID"); $session->delete_value("SAMPLE_MANUFACTURER_NAME"); $session->delete_value("SAMPLE_LOCATION"); $session->delete_value("SAMPLE_EXPIRY"); $session->delete_value("SAMPLE_EXPIRY_WARNING"); $session->delete_value("SAMPLE_DESCRIPTION"); $session->delete_value("SAMPLE_TEMPLATE_DATA_TYPE"); $session->delete_value("SAMPLE_TEMPLATE_DATA_TYPE_ID"); $session->delete_value("SAMPLE_TEMPLATE_DATA_ARRAY"); if ($sample_add_role == "item" or $sample_add_role == "item_parent") { if ($transaction_id != null) { $transaction->commit($transaction_id); } if ($sample_item_retrace) { $params = http_build_query(Retrace::resolve_retrace_string($sample_item_retrace), '', '&'); return "index.php?" . $params; } else { $paramquery['username'] = $username; $paramquery['session_id'] = $session_id; $paramquery['nav'] = "home"; $params = http_build_query($paramquery, '', '&'); return "index.php?" . $params; } } else { if ($transaction_id != null) { $transaction->commit($transaction_id); } $paramquery = array(); $paramquery['username'] = $username; $paramquery['session_id'] = $session_id; $paramquery['nav'] = "sample"; $paramquery['run'] = "detail"; $paramquery['sample_id'] = $sample_id; $params = http_build_query($paramquery, '', '&'); return "index.php?" . $params; } }