public function filedepot::deleteVersion in filedepot 7
Same name and namespace in other branches
- 6 filedepot.class.php \filedepot::deleteVersion()
File
- ./
filedepot.class.php, line 1314 - 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=:fid", array(
'fid' => $fid,
));
list($cid, $curVersion) = array_values($q1
->fetchAssoc());
$q2 = db_query("SELECT fname, drupal_fid FROM {filedepot_fileversions} WHERE fid=:fid AND version=:version", array(
':fid' => $fid,
':version' => $version,
));
list($fname, $dfid) = array_values($q2
->fetchAssoc());
if ($cid > 0 and !empty($fname) and $dfid > 0) {
db_delete('filedepot_fileversions')
->condition('fid', $fid)
->condition('version', $version)
->execute();
// Need to check there are no other repository entries in this category for the same filename
if (db_query("SELECT count(fid) FROM {filedepot_files} WHERE cid=:cid and fname=:fname", array(
'cid' => $cid,
'fname' => $fname,
))
->fetchField() > 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_query("SELECT count(fid) FROM {filedepot_fileversions} WHERE fid=:fid", array(
':fid' => $fid,
))
->fetchField() > 0) {
if ($version == $curVersion) {
// Retrieve most current version on record
$q3 = db_query("SELECT fname,version,date FROM {filedepot_fileversions} WHERE fid=:fid ORDER BY version DESC", array(
':fid' => $fid,
), 0, 1);
list($fname, $version, $date) = array_values($q3
->fetchAssoc());
db_query("UPDATE {filedepot_files} SET fname=:fname,version=:version, date=:time WHERE fid=:fid", array(
':fname' => $fname,
':version' => $version,
':time' => time(),
':fid' => $fid,
));
}
}
else {
watchdog('filedepot', 'Delete File final version for fid(@fid), Main file records deleted.', array(
'@fid' => $fid,
'@version' => $version,
'@fname' => $fname,
));
db_delete('filedepot_files')
->condition('fid', $fid)
->execute();
}
return TRUE;
}
else {
return FALSE;
}
}