Ejemplo n.º 1
0
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));
}
Ejemplo n.º 2
0
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;
}