/** * @param string $transaction_id * @param integer $sample_id * @param integer $template_id * @return mixed * @throws SampleCreateFolderException * @throws SampleCreateSubFolderException */ private function create_sample_folder($sample_id, $template_id) { global $user, $transaction; if ($transaction->is_in_transction() and is_numeric($sample_id) and is_numeric($template_id)) { // Create Sample Folder $base_folder_id = constant("SAMPLE_FOLDER_ID"); $base_folder = Folder::get_instance($base_folder_id); $path = new Path($base_folder->get_path()); $path->add_element($sample_id); $sample_folder = new SampleFolder(null); if (($folder_id = $sample_folder->create($sample_id)) == null) { $sample_folder->delete(true, true); throw new SampleCreateFolderException("Could not create main folder"); } $folder = Folder::get_instance($folder_id); // Create Subfolders $sub_folder_name_array = array(); $sample_template = new SampleTemplate($template_id); $folder_array = array(); $requirement_array = $sample_template->get_requirements(); if (is_array($requirement_array) and count($requirement_array) >= 1) { foreach ($requirement_array as $key => $value) { if ($value['folder']) { if (!in_array($value['folder'], $folder_array)) { array_push($folder_array, $value['folder']); } } } if (is_array($folder_array) and count($folder_array) >= 1) { foreach ($folder_array as $key => $value) { $folder_name = strtolower(trim($value)); $folder_name = str_replace(" ", "-", $folder_name); $folder_path = new Path($folder->get_path()); $folder_path->add_element($folder_name); $sub_folder = Folder::get_instance(null); if (($sub_folder_id = $sub_folder->create($value, $folder_id, $folder_path->get_path_string(), $user->get_user_id(), null)) == null) { $sample_folder->delete(true, true); throw new SampleCreateSubFolderException("Could not create sub folder"); } $sub_folder_name_array[$sub_folder_id] = strtolower(trim($value)); } } } $this->sample_folder_id = $folder_id; $this->sample_folder_object = $sample_folder; return $sub_folder_name_array; } else { throw new SampleCreateFolderException("Could not create main folder"); } }