/** * delete staging files * * @param string the directory to start with * @see scripts/update.php */ function delete_staging($path) { global $context; $path_translated = str_replace('//', '/', $context['path_to_root'] . '/scripts/staging' . $path); if ($handle = Safe::opendir($path_translated)) { while (($node = Safe::readdir($handle)) !== FALSE) { if ($node == '.' || $node == '..') { continue; } // make a real name $target = str_replace('//', '/', $path . '/' . $node); $target_translated = str_replace('//', '/', $path_translated . '/' . $node); // delete sub directory content if (is_dir($target_translated)) { delete_staging($target); Safe::rmdir($target_translated); // delete all files } else { $context['text'] .= sprintf(i18n::s('Deleting %s'), '/scripts/staging' . $target) . BR . "\n"; Safe::unlink($target_translated); global $deleted_nodes; $deleted_nodes++; } // ensure we have enough time Safe::set_time_limit(30); } Safe::closedir($handle); } }
/** * delete a directory and all of its content * * @param string the directory to delete */ function delete_all($path) { global $context; $path_translated = str_replace('//', '/', $context['path_to_root'] . '/' . $path); if ($handle = Safe::opendir($path_translated)) { while (($node = Safe::readdir($handle)) !== FALSE) { if ($node[0] == '.') { continue; } // make a real name $target = str_replace('//', '/', $path . '/' . $node); $target_translated = str_replace('//', '/', $path_translated . '/' . $node); // delete a sub directory if (is_dir($target_translated)) { delete_all($path . '/' . $node); Safe::rmdir($target_translated); // delete the node } else { Safe::unlink($target_translated); } // statistics global $deleted_nodes; $deleted_nodes++; } Safe::closedir($handle); } }
/** * delete one file in the database and in the file system * * @param int the id of the file to delete * @return boolean TRUE on success, FALSE otherwise */ public static function delete($id) { global $context; // load the row $item = Files::get($id); if (!$item['id']) { Logger::error(i18n::s('No item has the provided id.')); return FALSE; } // actual deletion of the file $file_path = $context['path_to_root'] . Files::get_path($item['anchor']); Safe::unlink($file_path . '/' . $item['file_name']); Safe::unlink($file_path . '/thumbs/' . $item['file_name']); Safe::rmdir($file_path . '/thumbs'); Safe::rmdir($file_path); Safe::rmdir(dirname($file_path)); // delete related items Anchors::delete_related_to('file:' . $id); // delete the record in the database $query = "DELETE FROM " . SQL::table_name('files') . " WHERE id = " . SQL::escape($item['id']); if (SQL::query($query) === FALSE) { return FALSE; } // job done return TRUE; }