/**
  * @see VirtualFolderInterface::create()
  * @param integer $folder_id
  * @param string $name
  * @return integer
  * @throws VirtualFolderCreateFailedException
  * @throws VirtualFolderCreateFolderNotFoundException
  * @throws VirtualFolderCreateIDMissingException
  */
 public final function create($folder_id, $name)
 {
     global $transaction;
     if (is_numeric($folder_id) and $name) {
         $transaction_id = $transaction->begin();
         try {
             $folder = Folder::get_instance($folder_id);
             if ($folder->exist_folder() == false) {
                 throw new VirtualFolderCreateFolderNotFoundException();
             }
             $data_entity_id = parent::create(1, null);
             parent::set_as_child_of($folder->get_data_entity_id());
             if (($vfolder_id = $this->virtual_folder->create($data_entity_id, $name)) == null) {
                 throw new VirtualFolderCreateFailedException();
             }
         } catch (BaseException $e) {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             throw $e;
         }
         if ($transaction_id != null) {
             $transaction->commit($transaction_id);
         }
         self::__construct($vfolder_id);
         return $vfolder_id;
     } else {
         throw new VirtualFolderCreateIDMissingException();
     }
 }
Exemple #2
0
 /**
  * @see ParameterInterface::create()
  * @param integer $folder_id
  * @param integer $limit_id
  * @param array $parameter_array
  * @param integer $owner_id
  * @return integer
  * @throws ParameterCreateFailedException
  * @throws ParameterCreateVersionCreateFailedException
  * @throws ParameterCreateValueCreateFailedException
  * @throws ParameterCreateIDMissingException
  */
 protected function create($folder_id, $limit_id, $parameter_array, $owner_id = null)
 {
     global $user, $regional, $transaction;
     if (is_numeric($folder_id) and is_array($parameter_array)) {
         $transaction_id = $transaction->begin();
         try {
             if ($owner_id == null) {
                 $owner_id = $user->get_user_id();
             }
             $folder = Folder::get_instance($folder_id);
             $data_entity_id = parent::create($owner_id, null);
             parent::set_as_child_of($folder->get_data_entity_id());
             $parameter_access = new Parameter_Access(null);
             if (($parameter_id = $parameter_access->create($data_entity_id)) == null) {
                 throw new ParameterCreateFailedException();
             }
             $parameter_version_access = new ParameterVersion_Access(null);
             if (($parameter_version_id = $parameter_version_access->create($parameter_id, 1, 1, null, true, $owner_id, null, $limit_id)) == null) {
                 throw new ParameterCreateVersionCreateFailedException();
             }
             foreach ($parameter_array as $key => $value) {
                 $value['value'] = str_replace($regional->get_decimal_separator(), ".", $value['value']);
                 if (is_numeric($value['value'])) {
                     $parameter_field_value = new ParameterFieldValue_Access(null);
                     if ($parameter_field_value->create($parameter_version_id, $key, $value['method'], $value['value']) == null) {
                         throw new ParameterCreateValueCreateFailedException();
                     }
                 }
             }
         } catch (BaseException $e) {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             throw $e;
         }
         if ($transaction_id != null) {
             $transaction->commit($transaction_id);
         }
         self::__construct($parameter_id);
         return $parameter_id;
     } else {
         throw new ParameterCreateIDMissingException();
     }
 }
Exemple #3
0
 /**
  * @see ValueInterface::create()
  * @param integer $folder_id
  * @param integer $owner_id
  * @param integer $type_id
  * @param array $value
  * @param bool $premature
  * @return integer
  */
 public function create($folder_id, $owner_id, $type_id, $value)
 {
     global $user, $transaction;
     if ($folder_id and $type_id) {
         $transaction_id = $transaction->begin();
         try {
             if ($owner_id == null) {
                 $owner_id = $user->get_user_id();
             }
             $checksum = md5(serialize($value));
             $folder = Folder::get_instance($folder_id);
             $data_entity_id = parent::create($owner_id, null);
             parent::set_as_child_of($folder->get_data_entity_id());
             $value_access = new Value_Access(null);
             if (($value_id = $value_access->create($data_entity_id, $type_id)) == null) {
                 throw new ValueCreateFailedException();
             }
             if ($type_id != 2 and is_array($value)) {
                 $full_text_index = false;
                 $full_text_key_array = array();
                 $full_text_content_string = "";
                 foreach ($value as $fe_key => $fe_value) {
                     if (strpos($fe_key, "-vartype") !== false) {
                         if ($fe_value == "string") {
                             $full_text_index = true;
                             $tmp_key = str_replace("-vartype", "", $fe_key);
                             array_push($full_text_key_array, $tmp_key);
                         }
                     }
                 }
                 if (is_array($full_text_key_array) and count($full_text_key_array) >= 1) {
                     foreach ($full_text_key_array as $fe_key => $fe_value) {
                         if ($full_text_content_string) {
                             $full_text_content_string = $full_text_content_string . " " . $value[$fe_value];
                         } else {
                             $full_text_content_string = $value[$fe_value];
                         }
                     }
                 }
             } else {
                 $full_text_index = true;
                 $full_text_content_string = $value;
             }
             $value_version_access = new ValueVersion_access(null);
             if ($value_version_access->create($value_id, 1, serialize($value), $checksum, null, 1, true, $owner_id) == null) {
                 throw new ValueCreateVersionCreateFailedException();
             }
             if ($full_text_index == true and $full_text_content_string) {
                 $value_version_access->set_text_search_vector($full_text_content_string, "english");
             }
         } catch (BaseException $e) {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             throw $e;
         }
         if ($transaction_id != null) {
             $transaction->commit($transaction_id);
         }
         self::__construct($value_id);
         return $value_id;
     } else {
         throw new ValueCreateIDMissingException();
     }
 }
Exemple #4
0
 /**
  * Creates a new folder
  * @param string $name
  * @param integer $toid
  * @param string $path
  * @param integer $owner_id
  * @param integer $owner_group_id
  * @return integer
  * @throws FolderCreateFailedException
  * @throws FolderCreateFolderAlreadyExistsException
  * @throws FolderCreatePhysicalCreationFailedException
  * @throws FolderCreateIDMissingException
  */
 public function create($name, $toid, $path, $owner_id, $owner_group_id)
 {
     global $transaction;
     if (is_numeric($toid)) {
         $transaction_id = $transaction->begin();
         try {
             $folder = new Folder($toid);
             $parent_data_entity_id = $folder->get_data_entity_id();
             if (!$path) {
                 $folder = new Folder($toid);
                 $folder_name = str_replace(" ", "_", trim($name));
                 $path = $folder->get_path() . "/" . $folder_name;
             }
             $data_entity_id = parent::create($owner_id, $owner_group_id);
             parent::set_as_child_of($parent_data_entity_id);
             if (($folder_id = $this->folder->create($data_entity_id, $name, $path)) == null) {
                 throw new FolderCreateFailedException();
             }
             self::__construct($folder_id);
             $system_path = constant("BASE_DIR") . "/" . $path;
             if (file_exists($system_path)) {
                 throw new FolderCreateFolderAlreadyExistsException();
             }
             if (mkdir($system_path) == false) {
                 throw new FolderCreatePhysicalCreationFailedException();
             }
         } catch (BaseException $e) {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             throw $e;
         }
         if ($transaction_id != null) {
             $transaction->commit($transaction_id);
         }
         return $folder_id;
     } else {
         throw new FolderCreateIDMissingException();
     }
 }
 /**
  * @see EventListenerInterface::listen_events()
  * @param object $event_object
  * @return bool
  */
 public static function listen_events($event_object)
 {
     global $transaction;
     if ($event_object instanceof ItemAddHolderEvent) {
         $type = $event_object->get_type();
         if ($type == "sample") {
             $sample_id = $event_object->get_id();
             $item_id = $event_object->get_item_id();
             $gid = $event_object->get_gid();
             $transaction_id = $transaction->begin();
             if (self::create($sample_id, $item_id, $gid, null, null) == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             } else {
                 if ($transaction_id != null) {
                     $transaction->commit($transaction_id);
                 }
             }
         }
     }
     if ($event_object instanceof ItemAddEvent) {
         $get_array = $event_object->get_get_array();
         $post_array = $event_object->get_post_array();
         $item_holder = $event_object->get_item_holder();
         $item_holder_name = $event_object->get_item_holder_name();
         if ($get_array['nav'] == "sample" and is_numeric($get_array['sample_id']) and !$get_array['parent'] and !$get_array['parent_key']) {
             $transaction_id = $transaction->begin();
             if ($get_array['parent_sample'] == "1") {
                 $parent = true;
             } else {
                 $parent = false;
             }
             if ($item_holder == true and $item_holder_name) {
                 $item_holder_class = Item::get_holder_handling_class_by_name($item_holder_name);
                 $item_holder_instance = $item_holder_class::get_instance_by_item_id($event_object->get_item_id());
                 if (self::$sample_instance_array[$get_array['sample_id']]) {
                     $sample = self::$sample_instance_array[$get_array['sample_id']];
                 } else {
                     $sample = new Sample($get_array['sample_id']);
                     self::$sample_instance_array[$get_array['sample_id']] = $sample;
                 }
                 $required_sub_item_array = $sample->list_required_sub_items($get_array['key']);
                 if (is_array($required_sub_item_array) and count($required_sub_item_array) >= 1) {
                     if ($required_sub_item_array[0] == "all") {
                         $sub_item_array = $item_holder_instance->get_item_holder_items(null);
                         if (is_array($sub_item_array) and count($sub_item_array)) {
                             foreach ($sub_item_array as $sub_item_key => $sub_item_value) {
                                 if (self::create($get_array['sample_id'], $sub_item_value, null, null, null, $event_object->get_item_id()) == false) {
                                     if ($transaction_id != null) {
                                         $transaction->rollback($transaction_id);
                                     }
                                     return false;
                                 }
                                 if (DataEntity::is_kind_of("file", $sub_item_value) or DataEntity::is_kind_of("value", $sub_item_value) or DataEntity::is_kind_of("parameter", $sub_item_value)) {
                                     $data_entity_id = DataEntity::get_entry_by_item_id($sub_item_value);
                                     $folder_id = $sample->get_item_holder_value("folder_id");
                                     $parent_data_entity_id = Folder::get_data_entity_id_by_folder_id($folder_id);
                                     $child_data_entity = new DataEntity($data_entity_id);
                                     if ($child_data_entity->set_as_child_of($parent_data_entity_id, true, $parent_item_id) == false) {
                                         return false;
                                     }
                                 }
                             }
                         }
                     } else {
                         foreach ($required_sub_item_array as $key => $value) {
                             $sub_item_array = $item_holder_instance->get_item_holder_items($value);
                             if (is_array($sub_item_array) and count($sub_item_array)) {
                                 foreach ($sub_item_array as $sub_item_key => $sub_item_value) {
                                     if (self::create($get_array['sample_id'], $sub_item_value, null, null, null, $event_object->get_item_id()) == false) {
                                         if ($transaction_id != null) {
                                             $transaction->rollback($transaction_id);
                                         }
                                         return false;
                                     }
                                     if (DataEntity::is_kind_of("file", $sub_item_value) or DataEntity::is_kind_of("value", $sub_item_value) or DataEntity::is_kind_of("parameter", $sub_item_value)) {
                                         $data_entity_id = DataEntity::get_entry_by_item_id($sub_item_value);
                                         $folder_id = $sample->get_item_holder_value("folder_id");
                                         $parent_data_entity_id = Folder::get_data_entity_id_by_folder_id($folder_id);
                                         $child_data_entity = new DataEntity($data_entity_id);
                                         if ($child_data_entity->set_as_child_of($parent_data_entity_id, true, $parent_item_id) == false) {
                                             return false;
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
             if (self::create($get_array['sample_id'], $event_object->get_item_id(), $get_array['key'], $post_array['keywords'], $post_array['description'], null, $parent) == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             } else {
                 if ($transaction_id != null) {
                     $transaction->commit($transaction_id);
                 }
             }
         }
         if (($get_array['parent'] == "sample" or $get_array['parent'] == "parentsample") and is_numeric($get_array['key']) and is_numeric($get_array['parent_key'])) {
             $transaction_id = $transaction->begin();
             if (is_numeric($get_array['parent_id'])) {
                 if ($get_array['parent'] == "parentsample") {
                     $parent_sample = true;
                 } else {
                     $parent_sample = false;
                 }
                 if (self::create($get_array['parent_id'], $event_object->get_item_id(), $get_array['key'], null, null, null, false, $parent_sample) == false) {
                     if ($transaction_id != null) {
                         $transaction->rollback($transaction_id);
                     }
                     return false;
                 } else {
                     if ($transaction_id != null) {
                         $transaction->commit($transaction_id);
                     }
                 }
             } elseif ($get_array['nav']) {
                 $handling_class = Item::get_holder_handling_class_by_name($get_array['nav']);
                 if (class_exists($handling_class)) {
                     $item_holder = new $handling_class($get_array[$get_array['nav'] . '_id']);
                     $parent_id_array = $item_holder->get_item_add_information($get_array['parent_key']);
                     if (is_array($parent_id_array['fulfilled']) and count($parent_id_array['fulfilled']) >= 1) {
                         foreach ($parent_id_array['fulfilled'] as $key => $value) {
                             if (self::create($value['id'], $event_object->get_item_id(), $get_array['key']) == false) {
                                 if ($transaction_id != null) {
                                     $transaction->rollback($transaction_id);
                                 }
                                 return false;
                             }
                         }
                         if ($transaction_id != null) {
                             $transaction->commit($transaction_id);
                         }
                     }
                 } else {
                     return false;
                 }
             }
         }
     }
     if ($event_object instanceof ItemHolderAddEvent) {
         $id_array = $event_object->get_id_array();
         $item_id = $event_object->get_item_id();
         $parent_item_id = $event_object->get_parent_item_id();
         $pos_id = $event_object->get_pos_id();
         if (is_array($id_array) and count($id_array) >= 1) {
             if (is_array($id_array['sample']) and count($id_array['sample']) >= 1) {
                 foreach ($id_array['sample'] as $key => $value) {
                     $sample = new Sample($value['id']);
                     if ($sample->is_sub_item_required($value['pos_id'], $pos_id) == true) {
                         if (self::create($value['id'], $item_id, null, null, null, $parent_item_id, false) == false) {
                             return false;
                         }
                         if (DataEntity::is_kind_of("file", $item_id) or DataEntity::is_kind_of("value", $item_id) or DataEntity::is_kind_of("parameter", $sub_item_value)) {
                             $data_entity_id = DataEntity::get_entry_by_item_id($item_id);
                             $folder_id = $sample->get_item_holder_value("folder_id");
                             $parent_data_entity_id = Folder::get_data_entity_id_by_folder_id($folder_id);
                             $child_data_entity = new DataEntity($data_entity_id);
                             if ($child_data_entity->set_as_child_of($parent_data_entity_id, true, $parent_item_id) == false) {
                                 return false;
                             }
                         }
                     }
                 }
             }
         }
     }
     return true;
 }
Exemple #6
0
 private function create_shape($folder_id, $owner_id)
 {
     global $user, $transaction;
     if (is_numeric($folder_id)) {
         $transaction_id = $transaction->begin();
         try {
             if ($owner_id == null) {
                 $owner_id = $user->get_user_id();
             }
             $folder = Folder::get_instance($folder_id);
             $data_entity_id = parent::create($owner_id, null);
             parent::set_as_child_of($folder->get_data_entity_id());
             $this->file = new File_Access(null);
             if (($file_id = $this->file->create($data_entity_id)) == null) {
                 throw new FileCreateFailedException();
             }
         } catch (BaseException $e) {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             throw $e;
         }
         if ($transaction_id != null) {
             $transaction->commit($transaction_id);
         }
         return $file_id;
     } else {
         throw new FileCreateIDMissingException();
     }
 }