Ejemplo n.º 1
0
 public static function edit_parameter_item($item_id)
 {
     if (is_numeric($item_id)) {
         $data_entity_id = DataEntity::get_entry_by_item_id($item_id);
         $parameter_id = Parameter::get_parameter_id_by_data_entity_id($data_entity_id);
         $parameter = Parameter::get_instance($parameter_id);
         if ($parameter->is_read_access()) {
             self::detail($parameter, http_build_query(Retrace::resolve_retrace_string($_GET['retrace'])), false);
         }
     } else {
         throw new ItemIDMissingException();
     }
 }
Ejemplo n.º 2
0
 /**
  * Generates an item menu entry with sub-items
  * @param array $element_array
  * @param integer $key
  * @param integer $counter
  * @param array $link_base
  * @param string $holder_class
  * @param string $holder_id
  * @return array
  */
 public static function get_menu_element($element_array, $key, $counter, $link_base, $holder_class, $holder_id)
 {
     $result = array();
     $amount = count($element_array['fulfilled']);
     if ($element_array['display'] == true) {
         if ($element_array['occurrence'] == "multiple" and $amount > 0) {
             $result[$counter]['name'] = $element_array['name'] . " (" . $amount . ")";
         } else {
             $result[$counter]['name'] = $element_array['name'];
         }
         $result[$counter]['depends'] = false;
         $item_handling_cass = $element_array['handling_class'];
         $paramquery = $link_base;
         $paramquery['run'] = "item_add";
         $paramquery['dialog'] = $element_array['type'];
         $paramquery['key'] = $key;
         $paramquery['retrace'] = Retrace::create_retrace_string();
         $item_add_occurrence_array = $item_handling_cass::get_item_add_occurrence($element_array['type']);
         if (!is_array($item_add_occurrence_array) or count($item_add_occurrence_array) != 3) {
             $item_add_occurrence_array = array(true, true, "deny");
         }
         if ($element_array['occurrence'] == "once" and $item_add_occurrence_array[0] == true and $item_add_occurrence_array[2] == "edit" and is_array($element_array['fulfilled']) and $amount >= 1) {
             $paramquery['run'] = "item_edit";
         }
         $item_add_dialog_array = $item_handling_cass::get_item_add_dialog($element_array['type']);
         if (is_array($item_add_dialog_array)) {
             if (in_array($element_array['dialog'], $item_add_dialog_array[0])) {
                 $item_array_type = $element_array['dialog'];
             } else {
                 $item_array_type = $item_add_dialog_array[1];
             }
             if (trim($item_array_type) == "window") {
                 $result[$counter]['type'] = "ajax";
                 $ajax_handling_array = $item_handling_cass::get_item_add_script_handling_class($element_array['type']);
                 require_once "core/modules/" . $ajax_handling_array[0];
                 $ajax_init_array = $ajax_handling_array[1]::$ajax_handling_array[2]($element_array['pos_id'], $paramquery, $element_array['type_id'], $element_array['category_id'], $holder_class, $holder_id);
                 $result[$counter]['script'] = $ajax_init_array['script'];
                 $result[$counter]['window_title'] = $ajax_init_array['window_title'];
                 $result[$counter]['window_id'] = $ajax_init_array['window_id'];
                 $result[$counter]['click_id'] = $ajax_init_array['click_id'];
             } else {
                 $result[$counter]['type'] = "link";
             }
         } else {
             $result[$counter]['type'] = "link";
         }
         if (is_array($element_array['fulfilled']) and $amount >= 1) {
             if ($element_array['occurrence'] == "multiple" and $item_add_occurrence_array[1] == true or $element_array['occurrence'] == "once" and $item_add_occurrence_array[0] == false or $element_array['occurrence'] == "once" and $item_add_occurrence_array[0] == true and $item_add_occurrence_array[2] == "edit") {
                 $result[$counter]['image'] = "add_done";
             } else {
                 $result[$counter]['type'] = false;
                 $result[$counter]['image'] = "add_done_na";
             }
         } else {
             $result[$counter]['image'] = "add";
         }
         if ($element_array['requirement'] == "optional") {
             $result[$counter]['name'] = $result[$counter]['name'] . " (optional)";
         }
         $params = http_build_query($paramquery, '', '&');
         $result[$counter]['params'] = $params;
         $counter++;
     }
     if (is_array($element_array['sub_items']) and count($element_array['sub_items']) >= 1) {
         $result[$counter]['type'] = "line";
         $counter++;
         $sub_item_irgnore_array = array();
         foreach ($element_array['sub_items'] as $sub_item_key => $sub_item_value) {
             foreach ($sub_item_value as $sub_sub_item_key => $sub_sub_item_value) {
                 if (!in_array($sub_sub_item_key, $sub_item_irgnore_array)) {
                     if ($sub_sub_item_value['element_type'] == "item") {
                         $paramquery = $link_base;
                         $paramquery['run'] = "sub_item_add";
                         $paramquery['dialog'] = $sub_sub_item_value['type'];
                         $paramquery['key'] = $sub_sub_item_value['pos_id'];
                         $paramquery['parent'] = $element_array['type'];
                         $paramquery['parent_key'] = $element_array['pos_id'];
                         if ($sub_sub_item_value['takeover'] == false) {
                             $paramquery['parent_id'] = $element_array['fulfilled'][$sub_item_key]['id'];
                         }
                         $paramquery['retrace'] = Retrace::create_retrace_string();
                         $item_handling_cass = $sub_sub_item_value['handling_class'];
                         $item_add_occurrence_array = $item_handling_cass::get_item_add_occurrence($sub_sub_item_value['type']);
                         if (!is_array($item_add_occurrence_array) or count($item_add_occurrence_array) != 3) {
                             $item_add_occurrence_array = array(true, true, "deny");
                         }
                         if ($sub_sub_item_value['occurrence'] == "once" and $item_add_occurrence_array[0] == true and $item_add_occurrence_array[2] == "edit" and is_array($sub_sub_item_value['fulfilled']) and count($sub_sub_item_value['fulfilled']) >= 1) {
                             $paramquery['run'] = "sub_item_edit";
                         }
                         $item_add_dialog_array = $item_handling_cass::get_item_add_dialog($sub_sub_item_value['type']);
                         if (is_array($item_add_dialog_array)) {
                             if (in_array($sub_sub_item_value['dialog'], $item_add_dialog_array[0])) {
                                 $item_array_type = $sub_sub_item_value['dialog'];
                             } else {
                                 $item_array_type = $item_add_dialog_array[1];
                             }
                             if (trim($item_array_type) == "window") {
                                 $result[$counter]['type'] = "ajax";
                                 $ajax_handling_array = $item_handling_cass::get_item_add_script_handling_class($sub_sub_item_value['type']);
                                 require_once "core/modules/" . $ajax_handling_array[0];
                                 $item_holder = Item::get_holder_handling_class_by_name($element_array['type']);
                                 // Type of the ItemHolder
                                 $ajax_init_array = $ajax_handling_array[1]::$ajax_handling_array[2]($sub_sub_item_value['pos_id'], $paramquery, $sub_sub_item_value['type_id'], $sub_sub_item_value['category_id'], $item_holder, $element_array['fulfilled'][$sub_item_key]['id']);
                                 $result[$counter]['script'] = $ajax_init_array['script'];
                                 $result[$counter]['window_title'] = $ajax_init_array['window_title'];
                                 $result[$counter]['window_id'] = $ajax_init_array['window_id'];
                                 $result[$counter]['click_id'] = $ajax_init_array['click_id'];
                             } else {
                                 $result[$counter]['type'] = "link";
                             }
                         } else {
                             $result[$counter]['type'] = "link";
                         }
                         if ($sub_sub_item_value['takeover'] == true) {
                             $result[$counter]['name'] = $sub_sub_item_value['name'] . " (all)";
                             array_push($sub_item_irgnore_array, $sub_sub_item_key);
                         } else {
                             if ($element_array['fulfilled'][$sub_item_key]['name']) {
                                 $result[$counter]['name'] = $sub_sub_item_value['name'] . " (" . $element_array['fulfilled'][$sub_item_key]['name'] . ")";
                             } else {
                                 $result[$counter]['name'] = $sub_sub_item_value['name'];
                             }
                         }
                         if (is_array($sub_sub_item_value['fulfilled'])) {
                             if ($sub_sub_item_value['occurrence'] == "multiple" and $item_add_occurrence_array[1] == true or $sub_sub_item_value['occurrence'] == "once" and $item_add_occurrence_array[0] == false or $sub_sub_item_value['occurrence'] == "once" and $item_add_occurrence_array[0] == true and $item_add_occurrence_array[2] == "edit") {
                                 $result[$counter]['image'] = "add_done";
                             } else {
                                 $result[$counter]['type'] = false;
                                 $result[$counter]['image'] = "add_done_na";
                             }
                         } else {
                             $result[$counter]['image'] = "add";
                         }
                         $params = http_build_query($paramquery, '', '&');
                         $result[$counter]['depends'] = true;
                         $result[$counter]['params'] = $params;
                         $counter++;
                     }
                 }
             }
             if ($result[$counter - 1]['type'] != "line") {
                 $result[$counter]['type'] = "line";
                 $counter++;
             }
         }
     }
     return array(0 => $result, 1 => $counter);
 }
Ejemplo n.º 3
0
 /**
  * @param string $get_array
  * @param integer $sample_id
  * @return string
  * @throws SampleIDMissingException
  */
 public static function associate($get_array, $sample_id)
 {
     global $session;
     if ($get_array and is_numeric($sample_id)) {
         $_GET = unserialize($get_array);
         $post_array = array();
         $post_array['keywords'] = $session->read_value("ADD_ITEM_TEMP_KEYWORDS_" . $_GET['idk_unique_id']);
         $post_array['description'] = $session->read_value("ADD_ITEM_TEMP_DESCRIPTION_" . $_GET['idk_unique_id']);
         $sample = new Sample($sample_id);
         $item_add_event = new ItemAddEvent($sample->get_item_id(), $_GET, $post_array, true, "sample");
         $event_handler = new EventHandler($item_add_event);
         if ($event_handler->get_success() == true) {
             if ($_GET['retrace']) {
                 $params = http_build_query(Retrace::resolve_retrace_string($_GET['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 {
             return "0";
         }
     } else {
         throw new SampleIDMissingException();
     }
 }
Ejemplo n.º 4
0
 /**
  * @throws FileIDMissingException
  * @throws DataSecurityAccessDeniedException
  */
 public static function detail()
 {
     global $regional;
     if ($_GET['file_id']) {
         $file = File::get_instance($_GET['file_id']);
         if ($file->is_read_access()) {
             $template = new HTMLTemplate("data/file_detail.html");
             $folder = Folder::get_instance($file->get_parent_folder_id());
             if ($_GET['version'] and is_numeric($_GET['version'])) {
                 $file->open_internal_revision($_GET['version']);
                 $internal_revision = $_GET['version'];
             } else {
                 $internal_revision = $file->get_internal_revision();
             }
             $template = new HTMLTemplate("data/file_detail.html");
             $folder = Folder::get_instance($file->get_parent_folder_id());
             $user = new User($file->get_owner_id());
             $file_version_array = $file->get_file_internal_revisions();
             if (is_array($file_version_array) and count($file_version_array) > 0) {
                 $result = array();
                 $counter = 1;
                 $result[0]['version'] = 0;
                 $result[0]['text'] = "----------------------------------------------";
                 $file_version = File::get_instance($_GET['file_id'], true);
                 foreach ($file_version_array as $key => $value) {
                     $file_version->open_internal_revision($value);
                     $version_datetime_handler = new DatetimeHandler($file_version->get_datetime());
                     $result[$counter]['version'] = $file_version->get_internal_revision();
                     $result[$counter]['text'] = "Version " . $file_version->get_version() . " - " . $version_datetime_handler->get_datetime();
                     $counter++;
                 }
                 $template->set_var("version_option", $result);
             }
             $result = array();
             $counter = 0;
             foreach ($_GET as $key => $value) {
                 if ($key != "version") {
                     $result[$counter]['value'] = $value;
                     $result[$counter]['key'] = $key;
                     $counter++;
                 }
             }
             $template->set_var("get", $result);
             $template->set_var("version", $file->get_version());
             $paramquery = $_GET;
             $paramquery['action'] = "file_history";
             $params = http_build_query($paramquery, '', '&');
             $template->set_var("version_list_link", $params);
             $template->set_var("title", $file->get_name());
             $template->set_var("name", $file->get_name());
             $template->set_var("path", $folder->get_object_path());
             $template->set_var("size", Convert::convert_byte_1024($file->get_size()));
             $template->set_var("size_in_byte", $regional->format_number($file->get_size()));
             $create_datetime_handler = new DatetimeHandler($file->get_datetime());
             $version_datetime_handler = new DatetimeHandler($file->get_version_datetime());
             $template->set_var("creation_datetime", $create_datetime_handler->get_datetime());
             $template->set_var("version_datetime", $version_datetime_handler->get_datetime());
             $template->set_var("mime_type", $file->get_mime_type());
             $template->set_var("owner", $user->get_full_name(false));
             $template->set_var("checksum", $file->get_checksum());
             $template->set_var("permission", $file->get_permission_string());
             $template->set_var("comment", "");
             if ($file->is_image() == true) {
                 $template->set_var("thumbnail_image", "<img src='image.php?session_id=" . $_GET['session_id'] . "&file_id=" . $_GET['file_id'] . "&max_width=340&max_height=350' alt='' />");
             } else {
                 $template->set_var("thumbnail_image", "");
             }
             $paramquery = array();
             $paramquery['username'] = $_GET['username'];
             $paramquery['session_id'] = $_GET['session_id'];
             $paramquery['file_id'] = $_GET['file_id'];
             if ($_GET['version']) {
                 $paramquery['version'] = $_GET['version'];
             }
             $params = http_build_query($paramquery, '', '&#38;');
             $template->set_var("download_params", $params);
             $paramquery = $_GET;
             $paramquery['action'] = "file_update";
             $paramquery['version'] = $internal_revision;
             $paramquery['retrace'] = Retrace::create_retrace_string();
             $params = http_build_query($paramquery, '', '&#38;');
             $template->set_var("update_params", $params);
             $paramquery = $_GET;
             $paramquery['action'] = "file_update_minor";
             $paramquery['version'] = $file->get_internal_revision();
             $paramquery['retrace'] = Retrace::create_retrace_string();
             $params = http_build_query($paramquery, '', '&#38;');
             $template->set_var("update_minor_params", $params);
             $paramquery = $_GET;
             $paramquery['action'] = "permission";
             $params = http_build_query($paramquery, '', '&#38;');
             $template->set_var("set_permission_params", $params);
             $template->set_var("write_access", $file->is_write_access());
             if ($file->is_control_access() == true or $file->get_owner_id() == $user->get_user_id()) {
                 $template->set_var("change_permission", true);
             } else {
                 $template->set_var("change_permission", false);
             }
             $template->set_var("delete_access", $file->is_delete_access());
             $paramquery = $_GET;
             $paramquery['action'] = "file_delete";
             unset($paramquery['sure']);
             $params = http_build_query($paramquery, '', '&#38;');
             $template->set_var("delete_file_params", $params);
             $paramquery = $_GET;
             $paramquery['action'] = "file_delete_version";
             $paramquery['version'] = $internal_revision;
             unset($paramquery['sure']);
             $params = http_build_query($paramquery, '', '&#38;');
             $template->set_var("delete_file_version_params", $params);
             $paramquery = $_GET;
             unset($paramquery['file_id']);
             unset($paramquery['version']);
             unset($paramquery['action']);
             $params = http_build_query($paramquery, '', '&#38;');
             $template->set_var("back_link", $params);
             $template->output();
         } else {
             throw new DataSecurityAccessDeniedException();
         }
     } else {
         throw new FileIDMissingException();
     }
 }
Ejemplo n.º 5
0
 /**
  * @param string $get_array
  * @return string
  * @throws ProjectIDMissingException
  */
 public static function get_project_menu($get_array)
 {
     global $project_security;
     if ($get_array) {
         $_GET = unserialize($get_array);
     }
     if ($_GET['project_id']) {
         $project = new Project($_GET['project_id']);
         $folder_id = ProjectStatusFolder::get_folder_by_project_id_and_project_status_id($_GET['project_id'], $project->get_current_status_id());
         $template = new HTMLTemplate("project/ajax/detail_menu.html");
         switch ($project->is_next_status_available()) {
             case 0:
                 if ($project->get_current_status_id() == 0) {
                     $template->set_var("proceed", 3);
                 } else {
                     $template->set_var("proceed", 4);
                 }
                 break;
             case 1:
                 if ($project_security->is_access(3, false) == true) {
                     if ($project->is_current_status_fulfilled()) {
                         $template->set_var("proceed", 1);
                     } else {
                         $template->set_var("proceed", 2);
                     }
                 }
                 break;
             case 2:
                 if ($project_security->is_access(3, false) == true) {
                     if ($project->is_current_status_fulfilled()) {
                         $template->set_var("proceed", 5);
                     } else {
                         $template->set_var("proceed", 6);
                     }
                 }
                 break;
             default:
                 $template->set_var("proceed", 7);
                 break;
         }
         $template->set_var("next_status_name", $project->get_next_status_name());
         if ($project_security->is_access(3, false) == true) {
             $project_template = new ProjectTemplate($project->get_template_id());
             $current_status_requirements = $project->get_current_status_requirements($project->get_current_status_id());
             $result = array();
             $counter = 0;
             if (is_array($current_status_requirements) and count($current_status_requirements) >= 1) {
                 foreach ($current_status_requirements as $key => $value) {
                     switch ($value['element_type']) {
                         case "item":
                             $paramquery = array();
                             $paramquery['username'] = $_GET['username'];
                             $paramquery['session_id'] = $_GET['session_id'];
                             $paramquery['nav'] = "project";
                             $paramquery['project_id'] = $_GET['project_id'];
                             require_once "core/modules/item/common/item_common.io.php";
                             $menu_element_array = ItemCommonIO::get_menu_element($value, $key, $counter, $paramquery, "Project", $_GET['project_id']);
                             $result = array_merge($result, $menu_element_array[0]);
                             $counter = $menu_element_array[1];
                             break;
                         case "extension":
                             $paramquery = array();
                             $paramquery['username'] = $_GET['username'];
                             $paramquery['session_id'] = $_GET['session_id'];
                             $paramquery['nav'] = "project";
                             $paramquery['run'] = "extension";
                             $paramquery['project_id'] = $_GET['project_id'];
                             $paramquery['extension'] = $value['extension'];
                             $paramquery['retrace'] = Retrace::create_retrace_string();
                             $params = http_build_query($paramquery, '', '&#38;');
                             $result[$counter]['name'] = "Run " . $value['name'];
                             $result[$counter]['depends'] = false;
                             $result[$counter]['params'] = $params;
                             if ($value['fulfilled'] == 1) {
                                 if ($value['occurrence'] == "multiple") {
                                     $result[$counter]['type'] = "link";
                                     $result[$counter]['image'] = "add_extension_done";
                                 } else {
                                     $result[$counter]['type'] = false;
                                     $result[$counter]['image'] = "add_extension_done_na";
                                 }
                             } elseif ($value['fulfilled'] == 0) {
                                 if ($value['occurrence'] == "multiple") {
                                     $result[$counter]['type'] = "link";
                                     $result[$counter]['image'] = "add_extension_wait";
                                 } else {
                                     $result[$counter]['type'] = false;
                                     $result[$counter]['image'] = "add_extension_wait_na";
                                 }
                             } else {
                                 $result[$counter]['type'] = "link";
                                 $result[$counter]['image'] = "add_extension";
                             }
                             if ($value['requirement'] == "optional" and $value['fulfilled'] != 0) {
                                 $result[$counter]['name'] = $result[$counter]['name'] . " (optional)";
                             }
                             $counter++;
                             break;
                     }
                 }
             }
             if ($counter > 0) {
                 $template->set_var("status_action", $result);
             }
             $template->set_var("write", true);
         } else {
             $template->set_var("write", false);
         }
         $paramquery = array();
         $paramquery['username'] = $_GET['username'];
         $paramquery['session_id'] = $_GET['session_id'];
         $paramquery['nav'] = "project";
         $paramquery['run'] = "common_dialog";
         $paramquery['folder_id'] = ProjectFolder::get_supplementary_folder($_GET['project_id']);
         $paramquery['dialog'] = "file_add";
         $paramquery['retrace'] = Retrace::create_retrace_string();
         unset($paramquery['nextpage']);
         $supplementary_params = http_build_query($paramquery, '', '&#38;');
         $template->set_var("supplementary_params", $supplementary_params);
         $log_paramquery = $_GET;
         $log_paramquery['run'] = "log_add";
         unset($log_paramquery['nextpage']);
         $log_params = http_build_query($log_paramquery, '', '&#38;');
         $template->set_var("log_params", $log_params);
         $add_task_paramquery = $_GET;
         $add_task_paramquery['run'] = "add_task";
         unset($add_task_paramquery['nextpage']);
         $add_task_params = http_build_query($add_task_paramquery, '', '&#38;');
         $template->set_var("add_task_params", $add_task_params);
         $show_tasks_paramquery = $_GET;
         $show_tasks_paramquery['run'] = "show_tasks";
         unset($show_tasks_paramquery['nextpage']);
         $show_tasks_params = http_build_query($show_tasks_paramquery, '', '&#38;');
         $template->set_var("show_tasks_params", $show_tasks_params);
         $subproject_paramquery = $_GET;
         $subproject_paramquery['run'] = "new_subproject";
         unset($subproject_paramquery['nextpage']);
         $subproject_params = http_build_query($subproject_paramquery, '', '&#38;');
         $template->set_var("add_subproject_params", $subproject_params);
         $template->output();
     } else {
         throw new ProjectIDMissingException();
     }
 }
Ejemplo n.º 6
0
 /**
  * @param integer $user_id
  * @return array
  */
 public static function get_user_module_detail_setting($user_id)
 {
     if ($user_id) {
         $data_user_data = new DataUserData($user_id);
         $paramquery = $_GET;
         $paramquery['run'] = "module_value_change";
         $paramquery['dialog'] = "user_quota";
         $paramquery['retrace'] = Retrace::create_retrace_string();
         $params = http_build_query($paramquery, '', '&#38;');
         $return_array = array();
         $return_array['value'] = Convert::convert_byte_1024($data_user_data->get_quota());
         $return_array['params'] = $params;
         return $return_array;
     } else {
         return null;
     }
 }
Ejemplo n.º 7
0
 /**
  * @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;
     }
 }