예제 #1
0
 /**
  * @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");
     }
 }