You are here

public function filedepot::deleteVersion in filedepot 6

Same name and namespace in other branches
  1. 7 filedepot.class.php \filedepot::deleteVersion()

File

./filedepot.class.php, line 1046
filedepot.class.php Main class for the Filedepot module

Class

filedepot
@file filedepot.class.php Main class for the Filedepot module

Code

public function deleteVersion($fid, $version) {
  $q1 = db_query("SELECT cid,version FROM {filedepot_files} WHERE fid=%d", $fid);
  list($cid, $curVersion) = array_values(db_fetch_array($q1));
  $q2 = db_query("SELECT fname,cckfid FROM {filedepot_fileversions} WHERE fid=%d AND version=%d", $fid, $version);
  list($fname, $cckfid) = array_values(db_fetch_array($q2));
  if ($cid > 0 and !empty($fname) and $cckfid > 0) {
    db_query("DELETE FROM {filedepot_fileversions} WHERE fid=%d AND version=%d", $fid, $version);

    // Need to check there are no other repository entries in this category for the same filename
    if (db_result(db_query("SELECT count(fid) FROM {filedepot_files} WHERE cid=%d and fname='%s'", $cid, $fname)) > 1) {
      watchdog('filedepot', 'Delete file(@fid), version: @version, File: @fname. Other references found - not deleted.', array(
        '@fid' => $fid,
        '@version' => $version,
        '@fname' => $fname,
      ));
    }
    else {
      if (!empty($fname) and file_exists("{$this->root_storage_path}{$cid}/{$fname}")) {
        @unlink("{$this->root_storage_path}{$cid}/{$fname}");
      }
      watchdog('filedepot', 'Delete file(@fid), version: @version, File: @fname. Single reference - file deleted.', array(
        '@fid' => $fid,
        '@version' => $version,
        '@fname' => $fname,
      ));
    }

    // If there is at least 1 more version record on file then I may need to update current version
    if (db_result(db_query("SELECT count(fid) FROM {filedepot_fileversions} WHERE fid=%d", $fid)) > 0) {
      if ($version == $curVersion) {

        // Retrieve most current version on record
        $q3 = db_query("SELECT fname,version,date FROM {filedepot_fileversions} WHERE fid=%d ORDER BY version DESC", array(
          $fid,
        ), 0, 1);
        list($fname, $version, $date) = array_values(db_fetch_array($q3));
        db_query("UPDATE {$filedepot_files} SET fname='%s',version=%d, date=%d WHERE fid=%d", $fname, $version, time(), $fid);
      }
    }
    else {
      watchdog('filedepot', 'Delete File final version for fid(@fid), Main file records deleted.', array(
        '@fid' => $fid,
        '@version' => $version,
        '@fname' => $fname,
      ));
      db_query("DELETE FROM {filedepot_files} WHERE fid=%d", $fid);
    }
    return TRUE;
  }
  else {
    return FALSE;
  }
}