original_string: public function delete() {
          global $DB;
  
          if ($this->is_directory()) {
              // Directories can not be referenced, just delete the record.
              $DB->delete_records('files', array('id'=>$this->file_record->id));
  
          } else {
              $transaction = $DB->start_delegated_transaction();
  
              // If there are other files referring to this file, convert them to copies.
              if ($files = $this->fs->get_references_by_storedfile($this)) {
                  foreach ($files as $file) {
                      $this->fs->import_external_file($file);
                  }
              }
  
              // If this file is a reference (alias) to another file, unlink it first.
              if ($this->is_external_file()) {
                  $this->delete_reference();
              }
  
              // Now delete the file record.
              $DB->delete_records('files', array('id'=>$this->file_record->id));
  
              $transaction->allow_commit();
  
              if (!$this->is_directory()) {
                  // Callback for file deletion.
                  if ($pluginsfunction = get_plugins_with_function('after_file_deleted')) {
                      foreach ($pluginsfunction as $plugintype => $plugins) {
                          foreach ($plugins as $pluginfunction) {
                              $pluginfunction($this->file_record);
                          }
                      }
                  }
              }
          }
  
          // Move pool file to trash if content not needed any more.
          $this->filesystem->remove_file($this->file_record->contenthash);
          return true; // BC only
      }
code: public function delete() {
          global $DB;
  
          if ($this->is_directory()) {
              // Directories can not be referenced, just delete the record.
              $DB->delete_records('files', array('id'=>$this->file_record->id));
  
          } else {
              $transaction = $DB->start_delegated_transaction();
  
              // If there are other files referring to this file, convert them to copies.
              if ($files = $this->fs->get_references_by_storedfile($this)) {
                  foreach ($files as $file) {
                      $this->fs->import_external_file($file);
                  }
              }
  
              // If this file is a reference (alias) to another file, unlink it first.
              if ($this->is_external_file()) {
                  $this->delete_reference();
              }
  
              // Now delete the file record.
              $DB->delete_records('files', array('id'=>$this->file_record->id));
  
              $transaction->allow_commit();
  
              if (!$this->is_directory()) {
                  // Callback for file deletion.
                  if ($pluginsfunction = get_plugins_with_function('after_file_deleted')) {
                      foreach ($pluginsfunction as $plugintype => $plugins) {
                          foreach ($plugins as $pluginfunction) {
                              $pluginfunction($this->file_record);
                          }
                      }
                  }
              }
          }
  
          // Move pool file to trash if content not needed any more.
          $this->filesystem->remove_file($this->file_record->contenthash);
          return true; // BC only
      }
code_tokens: public function delete ( ) { global $ DB ; if ( $ this -> is_directory ( ) ) { // Directories can not be referenced, just delete the record. $ DB -> delete_records ( 'files' , array ( 'id' => $ this -> file_record -> id ) ) ; } else { $ transaction = $ DB -> start_delegated_transaction ( ) ; // If there are other files referring to this file, convert them to copies. if ( $ files = $ this -> fs -> get_references_by_storedfile ( $ this ) ) { foreach ( $ files as $ file ) { $ this -> fs -> import_external_file ( $ file ) ; } } // If this file is a reference (alias) to another file, unlink it first. if ( $ this -> is_external_file ( ) ) { $ this -> delete_reference ( ) ; } // Now delete the file record. $ DB -> delete_records ( 'files' , array ( 'id' => $ this -> file_record -> id ) ) ; $ transaction -> allow_commit ( ) ; if ( ! $ this -> is_directory ( ) ) { // Callback for file deletion. if ( $ pluginsfunction = get_plugins_with_function ( 'after_file_deleted' ) ) { foreach ( $ pluginsfunction as $ plugintype => $ plugins ) { foreach ( $ plugins as $ pluginfunction ) { $ pluginfunction ( $ this -> file_record ) ; } } } } } // Move pool file to trash if content not needed any more. $ this -> filesystem -> remove_file ( $ this -> file_record -> contenthash ) ; return true ; // BC only }
docstring: Delete file from files table.
  
  The content of files stored in sha1 pool is reclaimed
  later - the occupied disk space is reclaimed much later.
  
  @return bool always true or exception if error occurred
docstring_tokens: Delete file from files table .