/** * Delete link specified from database * * @since 2.0.0 * * @param int $link_id ID of the link to delete * @return bool True */ function nxt_delete_link($link_id) { global $nxtdb; do_action('delete_link', $link_id); nxt_delete_object_term_relationships($link_id, 'link_category'); $nxtdb->query($nxtdb->prepare("DELETE FROM {$nxtdb->links} WHERE link_id = %d", $link_id)); do_action('deleted_link', $link_id); clean_bookmark_cache($link_id); return true; }
/** * Trashes or deletes an attachment. * * When an attachment is permanently deleted, the file will also be removed. * Deletion removes all post meta fields, taxonomy, comments, etc. associated * with the attachment (except the main post). * * The attachment is moved to the trash instead of permanently deleted unless trash * for media is disabled, item is already in the trash, or $force_delete is true. * * @since 2.0.0 * @uses $nxtdb * @uses do_action() Calls 'delete_attachment' hook on Attachment ID. * * @param int $post_id Attachment ID. * @param bool $force_delete Whether to bypass trash and force deletion. Defaults to false. * @return mixed False on failure. Post data on success. */ function nxt_delete_attachment($post_id, $force_delete = false) { global $nxtdb; if (!($post = $nxtdb->get_row($nxtdb->prepare("SELECT * FROM {$nxtdb->posts} WHERE ID = %d", $post_id)))) { return $post; } if ('attachment' != $post->post_type) { return false; } if (!$force_delete && EMPTY_TRASH_DAYS && MEDIA_TRASH && 'trash' != $post->post_status) { return nxt_trash_post($post_id); } delete_post_meta($post_id, '_nxt_trash_meta_status'); delete_post_meta($post_id, '_nxt_trash_meta_time'); $meta = nxt_get_attachment_metadata($post_id); $backup_sizes = get_post_meta($post->ID, '_nxt_attachment_backup_sizes', true); $file = get_attached_file($post_id); if (is_multisite()) { delete_transient('dirsize_cache'); } do_action('delete_attachment', $post_id); nxt_delete_object_term_relationships($post_id, array('category', 'post_tag')); nxt_delete_object_term_relationships($post_id, get_object_taxonomies($post->post_type)); $nxtdb->query($nxtdb->prepare("DELETE FROM {$nxtdb->postmeta} WHERE meta_key = '_thumbnail_id' AND meta_value = %d", $post_id)); $comment_ids = $nxtdb->get_col($nxtdb->prepare("SELECT comment_ID FROM {$nxtdb->comments} WHERE comment_post_ID = %d", $post_id)); if (!empty($comment_ids)) { do_action('delete_comment', $comment_ids); foreach ($comment_ids as $comment_id) { nxt_delete_comment($comment_id, true); } do_action('deleted_comment', $comment_ids); } $post_meta_ids = $nxtdb->get_col($nxtdb->prepare("SELECT meta_id FROM {$nxtdb->postmeta} WHERE post_id = %d ", $post_id)); if (!empty($post_meta_ids)) { do_action('delete_postmeta', $post_meta_ids); $in_post_meta_ids = "'" . implode("', '", $post_meta_ids) . "'"; $nxtdb->query("DELETE FROM {$nxtdb->postmeta} WHERE meta_id IN({$in_post_meta_ids})"); do_action('deleted_postmeta', $post_meta_ids); } do_action('delete_post', $post_id); $nxtdb->query($nxtdb->prepare("DELETE FROM {$nxtdb->posts} WHERE ID = %d", $post_id)); do_action('deleted_post', $post_id); $uploadpath = nxt_upload_dir(); if (!empty($meta['thumb'])) { // Don't delete the thumb if another attachment uses it if (!$nxtdb->get_row($nxtdb->prepare("SELECT meta_id FROM {$nxtdb->postmeta} WHERE meta_key = '_nxt_attachment_metadata' AND meta_value LIKE %s AND post_id <> %d", '%' . $meta['thumb'] . '%', $post_id))) { $thumbfile = str_replace(basename($file), $meta['thumb'], $file); $thumbfile = apply_filters('nxt_delete_file', $thumbfile); @unlink(path_join($uploadpath['basedir'], $thumbfile)); } } // remove intermediate and backup images if there are any foreach (get_intermediate_image_sizes() as $size) { if ($intermediate = image_get_intermediate_size($post_id, $size)) { $intermediate_file = apply_filters('nxt_delete_file', $intermediate['path']); @unlink(path_join($uploadpath['basedir'], $intermediate_file)); } } if (is_array($backup_sizes)) { foreach ($backup_sizes as $size) { $del_file = path_join(dirname($meta['file']), $size['file']); $del_file = apply_filters('nxt_delete_file', $del_file); @unlink(path_join($uploadpath['basedir'], $del_file)); } } $file = apply_filters('nxt_delete_file', $file); if (!empty($file)) { @unlink($file); } clean_post_cache($post_id); return $post; }