media_upload_form_handler

The timeline below displays how wordpress function media_upload_form_handler has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.3

/**
 * Handles form submissions for the legacy media uploader.
 *
 * @since 2.5.0
 *
 * @return null|array|void Array of error messages keyed by attachment ID, null or void on success.
 */
function media_upload_form_handler()
{
    check_admin_referer('media-form');
    $errors = null;
    if (isset($_POST['send'])) {
        $keys = array_keys($_POST['send']);
        $send_id = (int) reset($keys);
    }
    if (!empty($_POST['attachments'])) {
        foreach ($_POST['attachments'] as $attachment_id => $attachment) {
            $post = get_post($attachment_id, ARRAY_A);
            $_post = $post;
            if (!current_user_can('edit_post', $attachment_id)) {
                continue;
            }
            if (isset($attachment['post_content'])) {
                $post['post_content'] = $attachment['post_content'];
            }
            if (isset($attachment['post_title'])) {
                $post['post_title'] = $attachment['post_title'];
            }
            if (isset($attachment['post_excerpt'])) {
                $post['post_excerpt'] = $attachment['post_excerpt'];
            }
            if (isset($attachment['menu_order'])) {
                $post['menu_order'] = $attachment['menu_order'];
            }
            if (isset($send_id) && $attachment_id == $send_id) {
                if (isset($attachment['post_parent'])) {
                    $post['post_parent'] = $attachment['post_parent'];
                }
            }
            /**
             * Filters the attachment fields to be saved.
             *
             * @since 2.5.0
             *
             * @see wp_get_attachment_metadata()
             *
             * @param array $post       An array of post data.
             * @param array $attachment An array of attachment metadata.
             */
            $post = apply_filters('attachment_fields_to_save', $post, $attachment);
            if (isset($attachment['image_alt'])) {
                $image_alt = wp_unslash($attachment['image_alt']);
                if (get_post_meta($attachment_id, '_wp_attachment_image_alt', true) !== $image_alt) {
                    $image_alt = wp_strip_all_tags($image_alt, true);
                    // update_post_meta() expects slashed.
                    update_post_meta($attachment_id, '_wp_attachment_image_alt', wp_slash($image_alt));
                }
            }
            if (isset($post['errors'])) {
                $errors[$attachment_id] = $post['errors'];
                unset($post['errors']);
            }
            if ($post != $_post) {
                wp_update_post($post);
            }
            foreach (get_attachment_taxonomies($post) as $t) {
                if (isset($attachment[$t])) {
                    wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
                }
            }
        }
    }
    if (isset($_POST['insert-gallery']) || isset($_POST['update-gallery'])) {
        ?>
		<script type="text/javascript">
		var win = window.dialogArguments || opener || parent || top;
		win.tb_remove();
		</script>
		<?php 
        exit;
    }
    if (isset($send_id)) {
        $attachment = wp_unslash($_POST['attachments'][$send_id]);
        $html = isset($attachment['post_title']) ? $attachment['post_title'] : '';
        if (!empty($attachment['url'])) {
            $rel = '';
            if (str_contains($attachment['url'], 'attachment_id') || get_attachment_link($send_id) === $attachment['url']) {
                $rel = " rel='attachment wp-att-" . esc_attr($send_id) . "'";
            }
            $html = "<a href='{$attachment['url']}'{$rel}>{$html}</a>";
        }
        /**
         * Filters the HTML markup for a media item sent to the editor.
         *
         * @since 2.5.0
         *
         * @see wp_get_attachment_metadata()
         *
         * @param string $html       HTML markup for a media item sent to the editor.
         * @param int    $send_id    The first key from the $_POST['send'] data.
         * @param array  $attachment Array of attachment metadata.
         */
        $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment);
        return media_send_to_editor($html);
    }
    return $errors;
}

WordPress Version: 5.9

/**
 * Handles form submissions for the legacy media uploader.
 *
 * @since 2.5.0
 *
 * @return null|array|void Array of error messages keyed by attachment ID, null or void on success.
 */
function media_upload_form_handler()
{
    check_admin_referer('media-form');
    $errors = null;
    if (isset($_POST['send'])) {
        $keys = array_keys($_POST['send']);
        $send_id = (int) reset($keys);
    }
    if (!empty($_POST['attachments'])) {
        foreach ($_POST['attachments'] as $attachment_id => $attachment) {
            $post = get_post($attachment_id, ARRAY_A);
            $_post = $post;
            if (!current_user_can('edit_post', $attachment_id)) {
                continue;
            }
            if (isset($attachment['post_content'])) {
                $post['post_content'] = $attachment['post_content'];
            }
            if (isset($attachment['post_title'])) {
                $post['post_title'] = $attachment['post_title'];
            }
            if (isset($attachment['post_excerpt'])) {
                $post['post_excerpt'] = $attachment['post_excerpt'];
            }
            if (isset($attachment['menu_order'])) {
                $post['menu_order'] = $attachment['menu_order'];
            }
            if (isset($send_id) && $attachment_id == $send_id) {
                if (isset($attachment['post_parent'])) {
                    $post['post_parent'] = $attachment['post_parent'];
                }
            }
            /**
             * Filters the attachment fields to be saved.
             *
             * @since 2.5.0
             *
             * @see wp_get_attachment_metadata()
             *
             * @param array $post       An array of post data.
             * @param array $attachment An array of attachment metadata.
             */
            $post = apply_filters('attachment_fields_to_save', $post, $attachment);
            if (isset($attachment['image_alt'])) {
                $image_alt = wp_unslash($attachment['image_alt']);
                if (get_post_meta($attachment_id, '_wp_attachment_image_alt', true) !== $image_alt) {
                    $image_alt = wp_strip_all_tags($image_alt, true);
                    // update_post_meta() expects slashed.
                    update_post_meta($attachment_id, '_wp_attachment_image_alt', wp_slash($image_alt));
                }
            }
            if (isset($post['errors'])) {
                $errors[$attachment_id] = $post['errors'];
                unset($post['errors']);
            }
            if ($post != $_post) {
                wp_update_post($post);
            }
            foreach (get_attachment_taxonomies($post) as $t) {
                if (isset($attachment[$t])) {
                    wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
                }
            }
        }
    }
    if (isset($_POST['insert-gallery']) || isset($_POST['update-gallery'])) {
        ?>
		<script type="text/javascript">
		var win = window.dialogArguments || opener || parent || top;
		win.tb_remove();
		</script>
		<?php 
        exit;
    }
    if (isset($send_id)) {
        $attachment = wp_unslash($_POST['attachments'][$send_id]);
        $html = isset($attachment['post_title']) ? $attachment['post_title'] : '';
        if (!empty($attachment['url'])) {
            $rel = '';
            if (strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url']) {
                $rel = " rel='attachment wp-att-" . esc_attr($send_id) . "'";
            }
            $html = "<a href='{$attachment['url']}'{$rel}>{$html}</a>";
        }
        /**
         * Filters the HTML markup for a media item sent to the editor.
         *
         * @since 2.5.0
         *
         * @see wp_get_attachment_metadata()
         *
         * @param string $html       HTML markup for a media item sent to the editor.
         * @param int    $send_id    The first key from the $_POST['send'] data.
         * @param array  $attachment Array of attachment metadata.
         */
        $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment);
        return media_send_to_editor($html);
    }
    return $errors;
}

WordPress Version: 5.4

/**
 * Handles form submissions for the legacy media uploader.
 *
 * @since 2.5.0
 *
 * @return mixed void|object WP_Error on failure
 */
function media_upload_form_handler()
{
    check_admin_referer('media-form');
    $errors = null;
    if (isset($_POST['send'])) {
        $keys = array_keys($_POST['send']);
        $send_id = (int) reset($keys);
    }
    if (!empty($_POST['attachments'])) {
        foreach ($_POST['attachments'] as $attachment_id => $attachment) {
            $post = get_post($attachment_id, ARRAY_A);
            $_post = $post;
            if (!current_user_can('edit_post', $attachment_id)) {
                continue;
            }
            if (isset($attachment['post_content'])) {
                $post['post_content'] = $attachment['post_content'];
            }
            if (isset($attachment['post_title'])) {
                $post['post_title'] = $attachment['post_title'];
            }
            if (isset($attachment['post_excerpt'])) {
                $post['post_excerpt'] = $attachment['post_excerpt'];
            }
            if (isset($attachment['menu_order'])) {
                $post['menu_order'] = $attachment['menu_order'];
            }
            if (isset($send_id) && $attachment_id == $send_id) {
                if (isset($attachment['post_parent'])) {
                    $post['post_parent'] = $attachment['post_parent'];
                }
            }
            /**
             * Filters the attachment fields to be saved.
             *
             * @since 2.5.0
             *
             * @see wp_get_attachment_metadata()
             *
             * @param array $post       An array of post data.
             * @param array $attachment An array of attachment metadata.
             */
            $post = apply_filters('attachment_fields_to_save', $post, $attachment);
            if (isset($attachment['image_alt'])) {
                $image_alt = wp_unslash($attachment['image_alt']);
                if (get_post_meta($attachment_id, '_wp_attachment_image_alt', true) !== $image_alt) {
                    $image_alt = wp_strip_all_tags($image_alt, true);
                    // update_post_meta() expects slashed.
                    update_post_meta($attachment_id, '_wp_attachment_image_alt', wp_slash($image_alt));
                }
            }
            if (isset($post['errors'])) {
                $errors[$attachment_id] = $post['errors'];
                unset($post['errors']);
            }
            if ($post != $_post) {
                wp_update_post($post);
            }
            foreach (get_attachment_taxonomies($post) as $t) {
                if (isset($attachment[$t])) {
                    wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
                }
            }
        }
    }
    if (isset($_POST['insert-gallery']) || isset($_POST['update-gallery'])) {
        ?>
		<script type="text/javascript">
		var win = window.dialogArguments || opener || parent || top;
		win.tb_remove();
		</script>
		<?php 
        exit;
    }
    if (isset($send_id)) {
        $attachment = wp_unslash($_POST['attachments'][$send_id]);
        $html = isset($attachment['post_title']) ? $attachment['post_title'] : '';
        if (!empty($attachment['url'])) {
            $rel = '';
            if (strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url']) {
                $rel = " rel='attachment wp-att-" . esc_attr($send_id) . "'";
            }
            $html = "<a href='{$attachment['url']}'{$rel}>{$html}</a>";
        }
        /**
         * Filters the HTML markup for a media item sent to the editor.
         *
         * @since 2.5.0
         *
         * @see wp_get_attachment_metadata()
         *
         * @param string $html       HTML markup for a media item sent to the editor.
         * @param int    $send_id    The first key from the $_POST['send'] data.
         * @param array  $attachment Array of attachment metadata.
         */
        $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment);
        return media_send_to_editor($html);
    }
    return $errors;
}

WordPress Version: 5.3

/**
 * Handles form submissions for the legacy media uploader.
 *
 * @since 2.5.0
 *
 * @return mixed void|object WP_Error on failure
 */
function media_upload_form_handler()
{
    check_admin_referer('media-form');
    $errors = null;
    if (isset($_POST['send'])) {
        $keys = array_keys($_POST['send']);
        $send_id = (int) reset($keys);
    }
    if (!empty($_POST['attachments'])) {
        foreach ($_POST['attachments'] as $attachment_id => $attachment) {
            $post = get_post($attachment_id, ARRAY_A);
            $_post = $post;
            if (!current_user_can('edit_post', $attachment_id)) {
                continue;
            }
            if (isset($attachment['post_content'])) {
                $post['post_content'] = $attachment['post_content'];
            }
            if (isset($attachment['post_title'])) {
                $post['post_title'] = $attachment['post_title'];
            }
            if (isset($attachment['post_excerpt'])) {
                $post['post_excerpt'] = $attachment['post_excerpt'];
            }
            if (isset($attachment['menu_order'])) {
                $post['menu_order'] = $attachment['menu_order'];
            }
            if (isset($send_id) && $attachment_id == $send_id) {
                if (isset($attachment['post_parent'])) {
                    $post['post_parent'] = $attachment['post_parent'];
                }
            }
            /**
             * Filters the attachment fields to be saved.
             *
             * @since 2.5.0
             *
             * @see wp_get_attachment_metadata()
             *
             * @param array $post       An array of post data.
             * @param array $attachment An array of attachment metadata.
             */
            $post = apply_filters('attachment_fields_to_save', $post, $attachment);
            if (isset($attachment['image_alt'])) {
                $image_alt = wp_unslash($attachment['image_alt']);
                if ($image_alt != get_post_meta($attachment_id, '_wp_attachment_image_alt', true)) {
                    $image_alt = wp_strip_all_tags($image_alt, true);
                    // Update_meta expects slashed.
                    update_post_meta($attachment_id, '_wp_attachment_image_alt', wp_slash($image_alt));
                }
            }
            if (isset($post['errors'])) {
                $errors[$attachment_id] = $post['errors'];
                unset($post['errors']);
            }
            if ($post != $_post) {
                wp_update_post($post);
            }
            foreach (get_attachment_taxonomies($post) as $t) {
                if (isset($attachment[$t])) {
                    wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
                }
            }
        }
    }
    if (isset($_POST['insert-gallery']) || isset($_POST['update-gallery'])) {
        ?>
		<script type="text/javascript">
		var win = window.dialogArguments || opener || parent || top;
		win.tb_remove();
		</script>
		<?php 
        exit;
    }
    if (isset($send_id)) {
        $attachment = wp_unslash($_POST['attachments'][$send_id]);
        $html = isset($attachment['post_title']) ? $attachment['post_title'] : '';
        if (!empty($attachment['url'])) {
            $rel = '';
            if (strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url']) {
                $rel = " rel='attachment wp-att-" . esc_attr($send_id) . "'";
            }
            $html = "<a href='{$attachment['url']}'{$rel}>{$html}</a>";
        }
        /**
         * Filters the HTML markup for a media item sent to the editor.
         *
         * @since 2.5.0
         *
         * @see wp_get_attachment_metadata()
         *
         * @param string $html       HTML markup for a media item sent to the editor.
         * @param int    $send_id    The first key from the $_POST['send'] data.
         * @param array  $attachment Array of attachment metadata.
         */
        $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment);
        return media_send_to_editor($html);
    }
    return $errors;
}

WordPress Version: 4.6

/**
 * Handles form submissions for the legacy media uploader.
 *
 * @since 2.5.0
 *
 * @return mixed void|object WP_Error on failure
 */
function media_upload_form_handler()
{
    check_admin_referer('media-form');
    $errors = null;
    if (isset($_POST['send'])) {
        $keys = array_keys($_POST['send']);
        $send_id = (int) reset($keys);
    }
    if (!empty($_POST['attachments'])) {
        foreach ($_POST['attachments'] as $attachment_id => $attachment) {
            $post = $_post = get_post($attachment_id, ARRAY_A);
            if (!current_user_can('edit_post', $attachment_id)) {
                continue;
            }
            if (isset($attachment['post_content'])) {
                $post['post_content'] = $attachment['post_content'];
            }
            if (isset($attachment['post_title'])) {
                $post['post_title'] = $attachment['post_title'];
            }
            if (isset($attachment['post_excerpt'])) {
                $post['post_excerpt'] = $attachment['post_excerpt'];
            }
            if (isset($attachment['menu_order'])) {
                $post['menu_order'] = $attachment['menu_order'];
            }
            if (isset($send_id) && $attachment_id == $send_id) {
                if (isset($attachment['post_parent'])) {
                    $post['post_parent'] = $attachment['post_parent'];
                }
            }
            /**
             * Filters the attachment fields to be saved.
             *
             * @since 2.5.0
             *
             * @see wp_get_attachment_metadata()
             *
             * @param array $post       An array of post data.
             * @param array $attachment An array of attachment metadata.
             */
            $post = apply_filters('attachment_fields_to_save', $post, $attachment);
            if (isset($attachment['image_alt'])) {
                $image_alt = wp_unslash($attachment['image_alt']);
                if ($image_alt != get_post_meta($attachment_id, '_wp_attachment_image_alt', true)) {
                    $image_alt = wp_strip_all_tags($image_alt, true);
                    // Update_meta expects slashed.
                    update_post_meta($attachment_id, '_wp_attachment_image_alt', wp_slash($image_alt));
                }
            }
            if (isset($post['errors'])) {
                $errors[$attachment_id] = $post['errors'];
                unset($post['errors']);
            }
            if ($post != $_post) {
                wp_update_post($post);
            }
            foreach (get_attachment_taxonomies($post) as $t) {
                if (isset($attachment[$t])) {
                    wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
                }
            }
        }
    }
    if (isset($_POST['insert-gallery']) || isset($_POST['update-gallery'])) {
        ?>
		<script type="text/javascript">
		var win = window.dialogArguments || opener || parent || top;
		win.tb_remove();
		</script>
		<?php 
        exit;
    }
    if (isset($send_id)) {
        $attachment = wp_unslash($_POST['attachments'][$send_id]);
        $html = isset($attachment['post_title']) ? $attachment['post_title'] : '';
        if (!empty($attachment['url'])) {
            $rel = '';
            if (strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url']) {
                $rel = " rel='attachment wp-att-" . esc_attr($send_id) . "'";
            }
            $html = "<a href='{$attachment['url']}'{$rel}>{$html}</a>";
        }
        /**
         * Filters the HTML markup for a media item sent to the editor.
         *
         * @since 2.5.0
         *
         * @see wp_get_attachment_metadata()
         *
         * @param string $html       HTML markup for a media item sent to the editor.
         * @param int    $send_id    The first key from the $_POST['send'] data.
         * @param array  $attachment Array of attachment metadata.
         */
        $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment);
        return media_send_to_editor($html);
    }
    return $errors;
}

WordPress Version: 4.4

/**
 * Handles form submissions for the legacy media uploader.
 *
 * @since 2.5.0
 *
 * @return mixed void|object WP_Error on failure
 */
function media_upload_form_handler()
{
    check_admin_referer('media-form');
    $errors = null;
    if (isset($_POST['send'])) {
        $keys = array_keys($_POST['send']);
        $send_id = (int) reset($keys);
    }
    if (!empty($_POST['attachments'])) {
        foreach ($_POST['attachments'] as $attachment_id => $attachment) {
            $post = $_post = get_post($attachment_id, ARRAY_A);
            if (!current_user_can('edit_post', $attachment_id)) {
                continue;
            }
            if (isset($attachment['post_content'])) {
                $post['post_content'] = $attachment['post_content'];
            }
            if (isset($attachment['post_title'])) {
                $post['post_title'] = $attachment['post_title'];
            }
            if (isset($attachment['post_excerpt'])) {
                $post['post_excerpt'] = $attachment['post_excerpt'];
            }
            if (isset($attachment['menu_order'])) {
                $post['menu_order'] = $attachment['menu_order'];
            }
            if (isset($send_id) && $attachment_id == $send_id) {
                if (isset($attachment['post_parent'])) {
                    $post['post_parent'] = $attachment['post_parent'];
                }
            }
            /**
             * Filter the attachment fields to be saved.
             *
             * @since 2.5.0
             *
             * @see wp_get_attachment_metadata()
             *
             * @param array $post       An array of post data.
             * @param array $attachment An array of attachment metadata.
             */
            $post = apply_filters('attachment_fields_to_save', $post, $attachment);
            if (isset($attachment['image_alt'])) {
                $image_alt = wp_unslash($attachment['image_alt']);
                if ($image_alt != get_post_meta($attachment_id, '_wp_attachment_image_alt', true)) {
                    $image_alt = wp_strip_all_tags($image_alt, true);
                    // Update_meta expects slashed.
                    update_post_meta($attachment_id, '_wp_attachment_image_alt', wp_slash($image_alt));
                }
            }
            if (isset($post['errors'])) {
                $errors[$attachment_id] = $post['errors'];
                unset($post['errors']);
            }
            if ($post != $_post) {
                wp_update_post($post);
            }
            foreach (get_attachment_taxonomies($post) as $t) {
                if (isset($attachment[$t])) {
                    wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
                }
            }
        }
    }
    if (isset($_POST['insert-gallery']) || isset($_POST['update-gallery'])) {
        ?>
		<script type="text/javascript">
		var win = window.dialogArguments || opener || parent || top;
		win.tb_remove();
		</script>
		<?php 
        exit;
    }
    if (isset($send_id)) {
        $attachment = wp_unslash($_POST['attachments'][$send_id]);
        $html = isset($attachment['post_title']) ? $attachment['post_title'] : '';
        if (!empty($attachment['url'])) {
            $rel = '';
            if (strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url']) {
                $rel = " rel='attachment wp-att-" . esc_attr($send_id) . "'";
            }
            $html = "<a href='{$attachment['url']}'{$rel}>{$html}</a>";
        }
        /**
         * Filter the HTML markup for a media item sent to the editor.
         *
         * @since 2.5.0
         *
         * @see wp_get_attachment_metadata()
         *
         * @param string $html       HTML markup for a media item sent to the editor.
         * @param int    $send_id    The first key from the $_POST['send'] data.
         * @param array  $attachment Array of attachment metadata.
         */
        $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment);
        return media_send_to_editor($html);
    }
    return $errors;
}

WordPress Version: 4.2

/**
 * {@internal Missing Short Description}}
 *
 * @since 2.5.0
 *
 * @return mixed void|object WP_Error on failure
 */
function media_upload_form_handler()
{
    check_admin_referer('media-form');
    $errors = null;
    if (isset($_POST['send'])) {
        $keys = array_keys($_POST['send']);
        $send_id = (int) reset($keys);
    }
    if (!empty($_POST['attachments'])) {
        foreach ($_POST['attachments'] as $attachment_id => $attachment) {
            $post = $_post = get_post($attachment_id, ARRAY_A);
            if (!current_user_can('edit_post', $attachment_id)) {
                continue;
            }
            if (isset($attachment['post_content'])) {
                $post['post_content'] = $attachment['post_content'];
            }
            if (isset($attachment['post_title'])) {
                $post['post_title'] = $attachment['post_title'];
            }
            if (isset($attachment['post_excerpt'])) {
                $post['post_excerpt'] = $attachment['post_excerpt'];
            }
            if (isset($attachment['menu_order'])) {
                $post['menu_order'] = $attachment['menu_order'];
            }
            if (isset($send_id) && $attachment_id == $send_id) {
                if (isset($attachment['post_parent'])) {
                    $post['post_parent'] = $attachment['post_parent'];
                }
            }
            /**
             * Filter the attachment fields to be saved.
             *
             * @since 2.5.0
             *
             * @see wp_get_attachment_metadata()
             *
             * @param WP_Post $post       The WP_Post object.
             * @param array   $attachment An array of attachment metadata.
             */
            $post = apply_filters('attachment_fields_to_save', $post, $attachment);
            if (isset($attachment['image_alt'])) {
                $image_alt = wp_unslash($attachment['image_alt']);
                if ($image_alt != get_post_meta($attachment_id, '_wp_attachment_image_alt', true)) {
                    $image_alt = wp_strip_all_tags($image_alt, true);
                    // Update_meta expects slashed.
                    update_post_meta($attachment_id, '_wp_attachment_image_alt', wp_slash($image_alt));
                }
            }
            if (isset($post['errors'])) {
                $errors[$attachment_id] = $post['errors'];
                unset($post['errors']);
            }
            if ($post != $_post) {
                wp_update_post($post);
            }
            foreach (get_attachment_taxonomies($post) as $t) {
                if (isset($attachment[$t])) {
                    wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
                }
            }
        }
    }
    if (isset($_POST['insert-gallery']) || isset($_POST['update-gallery'])) {
        ?>
		<script type="text/javascript">
		var win = window.dialogArguments || opener || parent || top;
		win.tb_remove();
		</script>
		<?php 
        exit;
    }
    if (isset($send_id)) {
        $attachment = wp_unslash($_POST['attachments'][$send_id]);
        $html = isset($attachment['post_title']) ? $attachment['post_title'] : '';
        if (!empty($attachment['url'])) {
            $rel = '';
            if (strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url']) {
                $rel = " rel='attachment wp-att-" . esc_attr($send_id) . "'";
            }
            $html = "<a href='{$attachment['url']}'{$rel}>{$html}</a>";
        }
        /**
         * Filter the HTML markup for a media item sent to the editor.
         *
         * @since 2.5.0
         *
         * @see wp_get_attachment_metadata()
         *
         * @param string $html       HTML markup for a media item sent to the editor.
         * @param int    $send_id    The first key from the $_POST['send'] data.
         * @param array  $attachment Array of attachment metadata.
         */
        $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment);
        return media_send_to_editor($html);
    }
    return $errors;
}

WordPress Version: 4.0

/**
 * {@internal Missing Short Description}}
 *
 * @since 2.5.0
 *
 * @return mixed void|object WP_Error on failure
 */
function media_upload_form_handler()
{
    check_admin_referer('media-form');
    $errors = null;
    if (isset($_POST['send'])) {
        $keys = array_keys($_POST['send']);
        $send_id = (int) array_shift($keys);
    }
    if (!empty($_POST['attachments'])) {
        foreach ($_POST['attachments'] as $attachment_id => $attachment) {
            $post = $_post = get_post($attachment_id, ARRAY_A);
            if (!current_user_can('edit_post', $attachment_id)) {
                continue;
            }
            if (isset($attachment['post_content'])) {
                $post['post_content'] = $attachment['post_content'];
            }
            if (isset($attachment['post_title'])) {
                $post['post_title'] = $attachment['post_title'];
            }
            if (isset($attachment['post_excerpt'])) {
                $post['post_excerpt'] = $attachment['post_excerpt'];
            }
            if (isset($attachment['menu_order'])) {
                $post['menu_order'] = $attachment['menu_order'];
            }
            if (isset($send_id) && $attachment_id == $send_id) {
                if (isset($attachment['post_parent'])) {
                    $post['post_parent'] = $attachment['post_parent'];
                }
            }
            /**
             * Filter the attachment fields to be saved.
             *
             * @since 2.5.0
             *
             * @see wp_get_attachment_metadata()
             *
             * @param WP_Post $post       The WP_Post object.
             * @param array   $attachment An array of attachment metadata.
             */
            $post = apply_filters('attachment_fields_to_save', $post, $attachment);
            if (isset($attachment['image_alt'])) {
                $image_alt = wp_unslash($attachment['image_alt']);
                if ($image_alt != get_post_meta($attachment_id, '_wp_attachment_image_alt', true)) {
                    $image_alt = wp_strip_all_tags($image_alt, true);
                    // Update_meta expects slashed.
                    update_post_meta($attachment_id, '_wp_attachment_image_alt', wp_slash($image_alt));
                }
            }
            if (isset($post['errors'])) {
                $errors[$attachment_id] = $post['errors'];
                unset($post['errors']);
            }
            if ($post != $_post) {
                wp_update_post($post);
            }
            foreach (get_attachment_taxonomies($post) as $t) {
                if (isset($attachment[$t])) {
                    wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
                }
            }
        }
    }
    if (isset($_POST['insert-gallery']) || isset($_POST['update-gallery'])) {
        ?>
		<script type="text/javascript">
		/* <![CDATA[ */
		var win = window.dialogArguments || opener || parent || top;
		win.tb_remove();
		/* ]]> */
		</script>
		<?php 
        exit;
    }
    if (isset($send_id)) {
        $attachment = wp_unslash($_POST['attachments'][$send_id]);
        $html = isset($attachment['post_title']) ? $attachment['post_title'] : '';
        if (!empty($attachment['url'])) {
            $rel = '';
            if (strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url']) {
                $rel = " rel='attachment wp-att-" . esc_attr($send_id) . "'";
            }
            $html = "<a href='{$attachment['url']}'{$rel}>{$html}</a>";
        }
        /**
         * Filter the HTML markup for a media item sent to the editor.
         *
         * @since 2.5.0
         *
         * @see wp_get_attachment_metadata()
         *
         * @param string $html       HTML markup for a media item sent to the editor.
         * @param int    $send_id    The first key from the $_POST['send'] data.
         * @param array  $attachment Array of attachment metadata.
         */
        $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment);
        return media_send_to_editor($html);
    }
    return $errors;
}

WordPress Version: 3.9

/**
 * {@internal Missing Short Description}}
 *
 * @since 2.5.0
 *
 * @return mixed void|object WP_Error on failure
 */
function media_upload_form_handler()
{
    check_admin_referer('media-form');
    $errors = null;
    if (isset($_POST['send'])) {
        $keys = array_keys($_POST['send']);
        $send_id = (int) array_shift($keys);
    }
    if (!empty($_POST['attachments'])) {
        foreach ($_POST['attachments'] as $attachment_id => $attachment) {
            $post = $_post = get_post($attachment_id, ARRAY_A);
            if (!current_user_can('edit_post', $attachment_id)) {
                continue;
            }
            if (isset($attachment['post_content'])) {
                $post['post_content'] = $attachment['post_content'];
            }
            if (isset($attachment['post_title'])) {
                $post['post_title'] = $attachment['post_title'];
            }
            if (isset($attachment['post_excerpt'])) {
                $post['post_excerpt'] = $attachment['post_excerpt'];
            }
            if (isset($attachment['menu_order'])) {
                $post['menu_order'] = $attachment['menu_order'];
            }
            if (isset($send_id) && $attachment_id == $send_id) {
                if (isset($attachment['post_parent'])) {
                    $post['post_parent'] = $attachment['post_parent'];
                }
            }
            /**
             * Filter the attachment fields to be saved.
             *
             * @since 2.5.0
             *
             * @see wp_get_attachment_metadata()
             *
             * @param WP_Post $post       The WP_Post object.
             * @param array   $attachment An array of attachment metadata.
             */
            $post = apply_filters('attachment_fields_to_save', $post, $attachment);
            if (isset($attachment['image_alt'])) {
                $image_alt = wp_unslash($attachment['image_alt']);
                if ($image_alt != get_post_meta($attachment_id, '_wp_attachment_image_alt', true)) {
                    $image_alt = wp_strip_all_tags($image_alt, true);
                    // update_meta expects slashed
                    update_post_meta($attachment_id, '_wp_attachment_image_alt', wp_slash($image_alt));
                }
            }
            if (isset($post['errors'])) {
                $errors[$attachment_id] = $post['errors'];
                unset($post['errors']);
            }
            if ($post != $_post) {
                wp_update_post($post);
            }
            foreach (get_attachment_taxonomies($post) as $t) {
                if (isset($attachment[$t])) {
                    wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
                }
            }
        }
    }
    if (isset($_POST['insert-gallery']) || isset($_POST['update-gallery'])) {
        ?>
		<script type="text/javascript">
		/* <![CDATA[ */
		var win = window.dialogArguments || opener || parent || top;
		win.tb_remove();
		/* ]]> */
		</script>
		<?php 
        exit;
    }
    if (isset($send_id)) {
        $attachment = wp_unslash($_POST['attachments'][$send_id]);
        $html = isset($attachment['post_title']) ? $attachment['post_title'] : '';
        if (!empty($attachment['url'])) {
            $rel = '';
            if (strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url']) {
                $rel = " rel='attachment wp-att-" . esc_attr($send_id) . "'";
            }
            $html = "<a href='{$attachment['url']}'{$rel}>{$html}</a>";
        }
        /**
         * Filter the HTML markup for a media item sent to the editor.
         *
         * @since 2.5.0
         *
         * @see wp_get_attachment_metadata()
         *
         * @param string $html       HTML markup for a media item sent to the editor.
         * @param int    $send_id    The first key from the $_POST['send'] data.
         * @param array  $attachment Array of attachment metadata.
         */
        $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment);
        return media_send_to_editor($html);
    }
    return $errors;
}

WordPress Version: 3.7

/**
 * {@internal Missing Short Description}}
 *
 * @since 2.5.0
 *
 * @return mixed void|object WP_Error on failure
 */
function media_upload_form_handler()
{
    check_admin_referer('media-form');
    $errors = null;
    if (isset($_POST['send'])) {
        $keys = array_keys($_POST['send']);
        $send_id = (int) array_shift($keys);
    }
    if (!empty($_POST['attachments'])) {
        foreach ($_POST['attachments'] as $attachment_id => $attachment) {
            $post = $_post = get_post($attachment_id, ARRAY_A);
            if (!current_user_can('edit_post', $attachment_id)) {
                continue;
            }
            if (isset($attachment['post_content'])) {
                $post['post_content'] = $attachment['post_content'];
            }
            if (isset($attachment['post_title'])) {
                $post['post_title'] = $attachment['post_title'];
            }
            if (isset($attachment['post_excerpt'])) {
                $post['post_excerpt'] = $attachment['post_excerpt'];
            }
            if (isset($attachment['menu_order'])) {
                $post['menu_order'] = $attachment['menu_order'];
            }
            if (isset($send_id) && $attachment_id == $send_id) {
                if (isset($attachment['post_parent'])) {
                    $post['post_parent'] = $attachment['post_parent'];
                }
            }
            $post = apply_filters('attachment_fields_to_save', $post, $attachment);
            if (isset($attachment['image_alt'])) {
                $image_alt = wp_unslash($attachment['image_alt']);
                if ($image_alt != get_post_meta($attachment_id, '_wp_attachment_image_alt', true)) {
                    $image_alt = wp_strip_all_tags($image_alt, true);
                    // update_meta expects slashed
                    update_post_meta($attachment_id, '_wp_attachment_image_alt', wp_slash($image_alt));
                }
            }
            if (isset($post['errors'])) {
                $errors[$attachment_id] = $post['errors'];
                unset($post['errors']);
            }
            if ($post != $_post) {
                wp_update_post($post);
            }
            foreach (get_attachment_taxonomies($post) as $t) {
                if (isset($attachment[$t])) {
                    wp_set_object_terms($attachment_id, array_map('trim', preg_split('/,+/', $attachment[$t])), $t, false);
                }
            }
        }
    }
    if (isset($_POST['insert-gallery']) || isset($_POST['update-gallery'])) {
        ?>
		<script type="text/javascript">
		/* <![CDATA[ */
		var win = window.dialogArguments || opener || parent || top;
		win.tb_remove();
		/* ]]> */
		</script>
		<?php 
        exit;
    }
    if (isset($send_id)) {
        $attachment = wp_unslash($_POST['attachments'][$send_id]);
        $html = isset($attachment['post_title']) ? $attachment['post_title'] : '';
        if (!empty($attachment['url'])) {
            $rel = '';
            if (strpos($attachment['url'], 'attachment_id') || get_attachment_link($send_id) == $attachment['url']) {
                $rel = " rel='attachment wp-att-" . esc_attr($send_id) . "'";
            }
            $html = "<a href='{$attachment['url']}'{$rel}>{$html}</a>";
        }
        $html = apply_filters('media_send_to_editor', $html, $send_id, $attachment);
        return media_send_to_editor($html);
    }
    return $errors;
}