function pte_confirm_images($immediate = false) { global $pte_sizes; $logger = PteLogger::singleton(); // Require JSON output pte_require_json(); $id = (int) $_GET['id']; if (pte_check_id($id) === false) { return pte_json_error("ID invalid: {$id}"); } // Check nonce if (!check_ajax_referer("pte-{$id}", 'pte-nonce', false)) { return pte_json_error("CSRF Check failed"); } // Get the available sizes if (is_array($_GET['pte-confirm'])) { $pte_sizes = array_keys($_GET['pte-confirm']); $sizes = pte_get_all_alternate_size_information($id); $logger->debug("pte_get_all_alternate_size_information returned: " . print_r($sizes, true)); } else { return pte_json_error("Invalid Parameters: can't find sizes"); } // === END INITIALIZATION ================================ // Foreach size: // Move good image // Update metadata // Delete old image // Remove PTE/$id directory // SETS PTE_TMP_DIR and PTE_TMP_URL extract(pte_tmp_dir()); foreach ($sizes as $size => $data) { // Make sure we're only moving our files $good_file = $PTE_TMP_DIR . $id . DIRECTORY_SEPARATOR . basename($_GET['pte-confirm'][$size]); if (!(isset($good_file) && file_exists($good_file))) { return pte_json_error("FILE is invalid: {$good_file}"); } $dir = dirname(get_attached_file($id)); $new_file = $dir . DIRECTORY_SEPARATOR . basename($good_file); if (isset($data['current']['file'])) { $old_file = $dir . DIRECTORY_SEPARATOR . $data['current']['file']; } // Delete/unlink old file if (isset($old_file)) { $logger->debug("Deleting old thumbnail: {$old_file}"); @unlink(apply_filters('wp_delete_file', $old_file)); } // Move good image $logger->debug("Moving '{$good_file}' to '{$new_file}'"); wp_mkdir_p(dirname($new_file)); rename($good_file, $new_file); // Update metadata $image_dimensions = @getimagesize($new_file); list($w, $h, $type) = $image_dimensions; //print("IMAGE DIMENSIONS..."); //print_r( $image_dimensions ); $metadata = wp_get_attachment_metadata($id, true); $metadata['sizes'][$size] = array('file' => basename($new_file), 'width' => $w, 'height' => $h); $logger->debug("Updating '{$size}' metadata: " . print_r($metadata['sizes'][$size], true)); wp_update_attachment_metadata($id, $metadata); } // Delete tmpdir //pte_rmdir( $PTE_TMP_DIR ); return pte_json_encode(array('thumbnails' => pte_get_all_alternate_size_information($id), 'immediate' => $immediate)); }
function pte_ajax() { // Move all adjuntant functions to a separate file and include that here require_once PTE_PLUGINPATH . 'php/functions.php'; PteLogger::debug("PARAMETERS: " . print_r($_REQUEST, true)); switch ($_GET['pte-action']) { case "iframe": pte_init_iframe(); break; case "resize-images": pte_resize_images(); break; case "confirm-images": pte_confirm_images(); break; case "delete-images": pte_delete_images(); break; case "get-thumbnail-info": $id = (int) $_GET['id']; if (pte_check_id($id)) { print json_encode(pte_get_all_alternate_size_information($id)); } break; case "change-options": pte_update_user_options(); break; } die; }