public function delete($useWhere = false) { // Delete the file, if it exists locally if (!empty($this->filename) && file_exists(self::path($this->filename))) { $deleted = @unlink(self::path($this->filename)); if (!$deleted) { common_log(LOG_ERR, sprintf('Could not unlink existing file: "%s"', self::path($this->filename))); } } // Clear out related things in the database and filesystem, such as thumbnails if (Event::handle('FileDeleteRelated', array($this))) { $thumbs = new File_thumbnail(); $thumbs->file_id = $this->id; if ($thumbs->find()) { while ($thumbs->fetch()) { $thumbs->delete(); } } $f2p = new File_to_post(); $f2p->file_id = $this->id; if ($f2p->find()) { while ($f2p->fetch()) { $f2p->delete(); } } } // And finally remove the entry from the database return parent::delete($useWhere); }
function deleteMissingLocalFileThumbnails() { printfnq("Removing all local File_thumbnail entries without existing files..."); $thumbs = new File_thumbnail(); $thumbs->whereAdd('filename IS NOT NULL'); // only fill in names where they're missing // Checking if there were any File_thumbnail entries without filename if ($thumbs->find()) { while ($thumbs->fetch()) { try { $thumbs->getPath(); } catch (FileNotFoundException $e) { $thumbs->delete(); } } } printfnq("DONE.\n"); }
Will print '.' for deleted local files and 'x' where File entry was missing. If the script seems to stop, it is processing correct File_thumbnail entries. END_OF_HELP; require_once INSTALLDIR . '/scripts/commandline.inc'; if (!have_option('y', 'yes')) { print "About to delete locally generated thumbnails to allow regeneration. Are you sure? [y/N] "; $response = fgets(STDIN); if (strtolower(trim($response)) != 'y') { print "Aborting.\n"; exit(0); } } print "Deleting"; $thumbs = new File_thumbnail(); $thumbs->find(); while ($thumbs->fetch()) { try { $file = $thumbs->getFile(); if ($file->isLocal()) { // only delete properly linked thumbnails if they're local $thumbs->delete(); print '.'; } } catch (NoResultException $e) { // No File object for thumbnail, let's delete the thumbnail entry $thumbs->delete(); print 'x'; } } print "\nDONE.\n";