$post_ids = explode(',', $_REQUEST['ids']); } elseif (!empty($_REQUEST['post'])) { $post_ids = array_map('intval', $_REQUEST['post']); } if (!isset($post_ids)) { nxt_redirect($sendback); exit; } switch ($doaction) { case 'trash': $trashed = 0; foreach ((array) $post_ids as $post_id) { if (!current_user_can($post_type_object->cap->delete_post, $post_id)) { nxt_die(__('You are not allowed to move this item to the Trash.')); } if (!nxt_trash_post($post_id)) { nxt_die(__('Error in moving to Trash.')); } $trashed++; } $sendback = add_query_arg(array('trashed' => $trashed, 'ids' => join(',', $post_ids)), $sendback); break; case 'untrash': $untrashed = 0; foreach ((array) $post_ids as $post_id) { if (!current_user_can($post_type_object->cap->delete_post, $post_id)) { nxt_die(__('You are not allowed to restore this item from the Trash.')); } if (!nxt_untrash_post($post_id)) { nxt_die(__('Error in restoring from Trash.')); }
die('1'); } else { die('0'); } break; case 'trash-post': case 'untrash-post': check_ajax_referer("{$action}_{$id}"); if (!current_user_can('delete_post', $id)) { die('-1'); } if (!get_post($id)) { die('1'); } if ('trash-post' == $action) { $done = nxt_trash_post($id); } else { $done = nxt_untrash_post($id); } if ($done) { die('1'); } die('0'); break; case 'delete-page': check_ajax_referer("{$action}_{$id}"); if (!current_user_can('delete_page', $id)) { die('-1'); } if (!get_page($id)) { die('1');
/** * 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; }
/** * Trash a single post */ public function ajax_post_trash() { // check for post id if (isset($_POST['post_id']) && is_numeric($_POST['post_id'])) { // got one $post_id = (int) $_POST['post_id']; // attempt to trash the post if (nxt_trash_post($post_id) !== false) { ICE_Ajax::response(true, __('Item moved to trash', infinity_text_domain)); } else { ICE_Ajax::response(false, __('Move item to trash failed', infinity_text_domain)); } } else { ICE_Ajax::response(false, __('Missing item id', infinity_text_domain)); } }