/var/www/html_us/wp-admin/async-upload.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<?php
/**
 * Server-side file upload handler from wp-plupload or other asynchronous upload methods.
 *
 * @package WordPress
 * @subpackage Administration
 */

if ( isset( $_REQUEST['action'] ) && 'upload-attachment' === $_REQUEST['action'] ) {
    
define'DOING_AJAX'true );
}

if ( ! 
defined'WP_ADMIN' ) ) {
    
define'WP_ADMIN'true );
}

/** Load WordPress Bootstrap */
require_once dirname__DIR__ ) . '/wp-load.php';

require_once 
ABSPATH 'wp-admin/admin.php';

header'Content-Type: text/plain; charset=' get_option'blog_charset' ) );

if ( isset( 
$_REQUEST['action'] ) && 'upload-attachment' === $_REQUEST['action'] ) {
    require 
ABSPATH 'wp-admin/includes/ajax-actions.php';

    
send_nosniff_header();
    
nocache_headers();

    
wp_ajax_upload_attachment();
    die( 
'0' );
}

if ( ! 
current_user_can'upload_files' ) ) {
    
wp_die__'Sorry, you are not allowed to upload files.' ) );
}

// Just fetch the detail form for that attachment.
if ( isset( $_REQUEST['attachment_id'] ) && (int) $_REQUEST['attachment_id'] && $_REQUEST['fetch'] ) {
    
$id   = (int) $_REQUEST['attachment_id'];
    
$post get_post$id );
    if ( 
'attachment' !== $post->post_type ) {
        
wp_die__'Invalid post type.' ) );
    }

    switch ( 
$_REQUEST['fetch'] ) {
        case 
3:
            
?>
            <div class="media-item-wrapper">
                <div class="attachment-details">
                    <?php
                    $thumb_url 
wp_get_attachment_image_src$id'thumbnail'true );
                    if ( 
$thumb_url ) {
                        echo 
'<img class="pinkynail" src="' esc_url$thumb_url[0] ) . '" alt="" />';
                    }

                    
// Title shouldn't ever be empty, but use filename just in case.
                    
$file     get_attached_file$post->ID );
                    
$file_url wp_get_attachment_url$post->ID );
                    
$title    $post->post_title $post->post_title wp_basename$file );
                    
?>
                    <div class="filename new">
                        <span class="media-list-title"><strong><?php echo esc_htmlwp_html_excerpt$title60'&hellip;' ) ); ?></strong></span>
                        <span class="media-list-subtitle"><?php echo esc_htmlwp_basename$file ) ); ?></span>
                        <div class="attachment-tools">
                            <?php
                            
if ( current_user_can'edit_post'$id ) ) {
                                echo 
'<a class="edit-attachment" href="' esc_urlget_edit_post_link$id ) ) . '">' _x'Edit''media item' ) . '</a>';
                            } else {
                                echo 
'<span class="edit-attachment">' _x'Success''media item' ) . '</span>';
                            }
                            
?>
                            <span class="media-item-copy-container copy-to-clipboard-container edit-attachment">
                                <button type="button" class="button button-small copy-attachment-url"
                                    data-clipboard-text="<?php echo esc_url$file_url ); ?>"
                                ><?php _e'Copy URL to clipboard' ); ?></button>
                                <span class="success hidden" aria-hidden="true"><?php _e'Copied!' ); ?></span>
                            </span>
                        </div>
                    </div>
                </div>
            </div>
            <?php
            
break;
        case 
2:
            
add_filter'attachment_fields_to_edit''media_single_attachment_fields_to_edit'10);
            echo 
get_media_item(
                
$id,
                array(
                    
'send'   => false,
                    
'delete' => true,
                )
            );
            break;
        default:
            
add_filter'attachment_fields_to_edit''media_post_single_attachment_fields_to_edit'10);
            echo 
get_media_item$id );
            break;
    }
    exit;
}

check_admin_referer'media-form' );

$post_id 0;
if ( isset( 
$_REQUEST['post_id'] ) ) {
    
$post_id absint$_REQUEST['post_id'] );
    if ( ! 
get_post$post_id ) || ! current_user_can'edit_post'$post_id ) ) {
        
$post_id 0;
    }
}

$id media_handle_upload'async-upload'$post_id );
if ( 
is_wp_error$id ) ) {
    
$button_unique_id uniqid'dismiss-' );
    
$message          sprintf(
        
'%s <strong>%s</strong><br />%s',
        
sprintf(
            
'<button type="button" id="%s" class="dismiss button-link">%s</button>',
            
esc_attr$button_unique_id ),
            
__'Dismiss' )
        ),
        
sprintf(
            
/* translators: %s: Name of the file that failed to upload. */
            
__'&#8220;%s&#8221; has failed to upload.' ),
            
esc_html$_FILES['async-upload']['name'] )
        ),
        
esc_html$id->get_error_message() )
    );
    
wp_admin_notice(
        
$message,
        array(
            
'additional_classes' => array( 'error-div''error' ),
            
'paragraph_wrap'     => false,
        )
    );
    echo 
"<script>jQuery( 'button#{$button_unique_id}' ).on( 'click', function() {jQuery(this).parents('div.media-item').slideUp(200, function(){jQuery(this).remove();})});</script>\n";
    exit;
}

if ( 
$_REQUEST['short'] ) {
    
// Short form response - attachment ID only.
    
echo $id;
} else {
    
// Long form response - big chunk of HTML.
    
$type $_REQUEST['type'];

    
/**
     * Filters the returned ID of an uploaded attachment.
     *
     * The dynamic portion of the hook name, `$type`, refers to the attachment type.
     *
     * Possible hook names include:
     *
     *  - `async_upload_audio`
     *  - `async_upload_file`
     *  - `async_upload_image`
     *  - `async_upload_video`
     *
     * @since 2.5.0
     *
     * @param int $id Uploaded attachment ID.
     */
    
echo apply_filters"async_upload_{$type}"$id );
}