Exemplo n.º 1
0
/**
 * 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;
}
Exemplo n.º 2
0
/**
 * 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;
}