Esempio n. 1
0
 /**
  * @see VirtualFolderInterface::delete()
  * @return bool
  */
 public final function delete()
 {
     global $transaction;
     if ($this->virtual_folder_id and $this->virtual_folder) {
         $transaction_id = $transaction->begin();
         if ($this->unset_children() == false) {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             return false;
         }
         $virtual_folder_delete_event = new VirtualFolderDeleteEvent($this->virtual_folder_id);
         $event_handler = new EventHandler($virtual_folder_delete_event);
         if ($event_handler->get_success() == false) {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             return false;
         }
         if (parent::delete() == false) {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             return false;
         }
         if ($this->virtual_folder->delete() == true) {
             if ($transaction_id != null) {
                 $transaction->commit($transaction_id);
             }
             return true;
         } else {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             return false;
         }
     } else {
         return false;
     }
 }
Esempio n. 2
0
 /**
  * @return bool
  * @throws ParameterDeleteVersionValueFailedException
  * @throws ParameterDeleteVersionFailedException
  * @throws ParameterDeleteFailedException
  * @throws ParameterDeleteIDMissingException
  */
 protected function delete()
 {
     global $transaction;
     if ($this->parameter_id and $this->parameter) {
         $transaction_id = $transaction->begin();
         try {
             $parameter_version_array = ParameterVersion_Access::list_entries_by_parameter_id($this->parameter_id);
             if (is_array($parameter_version_array) and count($parameter_version_array) >= 1) {
                 foreach ($parameter_version_array as $key => $value) {
                     if (ParameterFieldValue_Access::delete_by_parameter_version_id($value) == false) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         throw new ParameterDeleteVersionValueFailedException();
                     }
                     $parameter_version = new ParameterVersion_Access($value);
                     if ($parameter_version->delete() == false) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         throw new ParameterDeleteVersionFailedException();
                     }
                 }
             }
             if ($this->parameter->delete() == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 throw new ParameterDeleteFailedException();
             }
             parent::delete();
         } catch (BaseException $e) {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             throw $e;
         }
         if ($transaction_id != null) {
             $transaction->commit($transaction_id);
         }
         return true;
     } else {
         throw new ParameterDeleteIDMissingException();
     }
 }
Esempio n. 3
0
 /**
  * @see FolderInterface::delete()
  * @param bool $recursive
  * @param bool $content
  * @return bool
  */
 public function delete($recursive, $content)
 {
     global $transaction;
     if ($this->folder_id and $this->folder) {
         $transaction_id = $transaction->begin();
         $subfolder_array = $this->get_subfolder_array();
         if (is_array($subfolder_array) and $recursive == false or $content == false and $recursive == true) {
             return false;
         } else {
             if ($recursive == true and $content == true) {
                 if (is_array($subfolder_array)) {
                     foreach ($subfolder_array as $key => $value) {
                         $folder = Folder::get_instance($value);
                         if ($folder->delete(true, true) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         } else {
                             if ($transaction_id != null) {
                                 // Avoids Ghost-Folders
                                 $transaction->commit($transaction_id);
                                 $transaction_id = $transaction->begin();
                             }
                         }
                     }
                 }
             }
             // Folder-Content
             $data_entity_array = $this->get_children("without_linked");
             if (is_array($data_entity_array) and count($data_entity_array) >= 1) {
                 foreach ($data_entity_array as $key => $value) {
                     // Files
                     if (($file_id = File::get_file_id_by_data_entity_id($value)) != null) {
                         $file = File::get_instance($file_id);
                         $file_delete = $file->delete();
                         if ($file_delete == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         } else {
                             if ($transaction_id != null) {
                                 // Avoids Ghost-Files
                                 $transaction->commit($transaction_id);
                                 $transaction_id = $transaction->begin();
                             }
                         }
                     }
                     // Values
                     if (($value_id = Value::get_value_id_by_data_entity_id($value)) != null) {
                         $value_obj = Value::get_instance($value_id);
                         if ($value_obj->delete() == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                     }
                     // Virtual Folders
                     if (($virtual_folder_id = VirtualFolder::get_virtual_folder_id_by_data_entity_id($value)) != null) {
                         $virtual_folder = new VirtualFolder($virtual_folder_id);
                         if ($virtual_folder->delete() == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                     }
                 }
             }
             // Linked Folder-Content (e.g. from sub-items)
             $data_entity_array = $this->get_children("linked_only");
             if (is_array($data_entity_array) and count($data_entity_array) >= 1) {
                 foreach ($data_entity_array as $key => $value) {
                     if ($this->unset_child($value) == false) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         return false;
                     }
                 }
             }
             $path = constant("BASE_DIR") . "/" . $this->folder->get_path();
             if (file_exists($path)) {
                 $garbage_file_array = scandir($path);
                 if (is_array($garbage_file_array) and count($garbage_file_array) >= 3) {
                     foreach ($garbage_file_array as $key => $value) {
                         if ($key != 0 and $key != 1) {
                             unlink($path . "/" . $value);
                         }
                     }
                 }
             }
             $linked_virtual_folder_array = $this->get_parent_virtual_folders();
             if (is_array($linked_virtual_folder_array) and count($linked_virtual_folder_array)) {
                 foreach ($linked_virtual_folder_array as $key => $value) {
                     if ($this->unset_child_of($value) == false) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         return false;
                     }
                 }
             }
             if (parent::delete() == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             }
             $folder_delete_event = new FolderDeleteEvent($folder_id);
             $event_handler = new EventHandler($folder_delete_event);
             if ($event_handler->get_success() == false) {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             }
             if (file_exists($path)) {
                 if (rmdir($path)) {
                     if ($this->folder->delete() == true) {
                         if ($transaction_id != null) {
                             $transaction->commit($transaction_id);
                         }
                         return true;
                     } else {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         return false;
                     }
                 } else {
                     if ($transaction_id != null) {
                         $transaction->rollback($transaction_id);
                     }
                     return false;
                 }
             } else {
                 if ($this->folder->delete() == true) {
                     if ($transaction_id != null) {
                         $transaction->commit($transaction_id);
                     }
                     return true;
                 } else {
                     if ($transaction_id != null) {
                         $transaction->rollback($transaction_id);
                     }
                     return false;
                 }
             }
         }
     } else {
         return false;
     }
 }
Esempio n. 4
0
 /**
  * @see ValueInterface::delete()
  * @return bool
  */
 public function delete()
 {
     global $transaction;
     if ($this->value_id != null and $this->value and $this->value_version) {
         $transaction_id = $transaction->begin();
         $value_version_array = ValueVersion_Access::list_entries_by_toid($this->value_id);
         unset($this->value_version);
         if (is_array($value_version_array) and count($value_version_array) >= 1) {
             foreach ($value_version_array as $key => $fe_value) {
                 $value_version = new ValueVersion_Access($fe_value);
                 if ($value_version->delete() == false) {
                     if ($transaction_id != null) {
                         $transaction->rollback($transaction_id);
                     }
                     return false;
                 }
             }
             if ($this->value->delete() == true) {
                 if (parent::delete() == true) {
                     if ($transaction_id != null) {
                         $transaction->commit($transaction_id);
                     }
                     return true;
                 } else {
                     if ($transaction_id != null) {
                         $transaction->rollback($transaction_id);
                     }
                     return false;
                 }
             } else {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             }
         } else {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             return false;
         }
     } else {
         return false;
     }
 }
Esempio n. 5
0
 /**
  * @see FileInterface::delete()
  * @return bool
  */
 public function delete()
 {
     global $transaction;
     if ($this->file_id != null and $this->file and $this->file_version) {
         $transaction_id = $transaction->begin();
         $folder_id = $this->get_parent_folder_id();
         $folder = Folder::get_instance($folder_id);
         $file_delete_event = new FileDeleteEvent($this->file_id, $folder_id, 0);
         $event_handler = new EventHandler($file_delete_event);
         if ($event_handler->get_success() == false) {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             return false;
         }
         $file_version_array = FileVersion_Access::list_entries_by_toid($this->file_id);
         if (is_array($file_version_array) and count($file_version_array) >= 1) {
             $file_size = 0;
             $file_path_array = array();
             $temp_file_id = $this->file_id;
             foreach ($file_version_array as $key => $value) {
                 $file_version_access = new FileVersion_Access($value);
                 $file_size = $file_size + $file_version_access->get_size();
                 $extension_array = explode(".", $file_version_access->get_name());
                 $extension_array_length = substr_count($file_version_access->get_name(), ".");
                 if ($extension_array_length == 0) {
                     $extension = "";
                 } else {
                     $extension = "." . $extension_array[$extension_array_length];
                 }
                 $path = constant("BASE_DIR") . "/" . $folder->get_path() . "/" . $this->data_entity_id . "-" . $file_version_access->get_internal_revision() . "" . $extension . "";
                 if ($file_version_access->delete()) {
                     array_push($file_path_array, $path);
                 } else {
                     if ($transaction_id != null) {
                         $transaction->rollback($transaction_id);
                     }
                     return false;
                 }
             }
             $folder->decrease_filesize($this->get_owner_id(), $file_size);
             $file_delete = $this->file->delete();
             if ($file_delete == true) {
                 // Data Entity Delete
                 if (parent::delete() == true) {
                     if (is_array($file_path_array) and count($file_path_array) >= 1) {
                         foreach ($file_path_array as $key => $value) {
                             if (is_file($value)) {
                                 if (is_writable($value)) {
                                     $delete_success = unlink($value);
                                     if ($delete_success == false) {
                                         if ($transaction_id != null) {
                                             $transaction->rollback($transaction_id);
                                         }
                                         $this->file->__consturct($temp_file_id);
                                         $this->file->set_flag(-1);
                                         // Corrupt
                                         return false;
                                     }
                                 } else {
                                     if ($transaction_id != null) {
                                         $transaction->rollback($transaction_id);
                                     }
                                     $this->file->__consturct($temp_file_id);
                                     $this->file->set_flag(-1);
                                     // Corrupt
                                     return false;
                                 }
                             }
                         }
                     }
                     if ($transaction_id != null) {
                         $transaction->commit($transaction_id);
                     }
                     return true;
                 } else {
                     if ($transaction_id != null) {
                         $transaction->rollback($transaction_id);
                     }
                     return false;
                 }
             } else {
                 if ($transaction_id != null) {
                     $transaction->rollback($transaction_id);
                 }
                 return false;
             }
         } else {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             return false;
         }
     } else {
         return false;
     }
 }