WordPress 4.4.1
[autoinstalls/wordpress.git] / wp-admin / export.php
index 8257b5187b78ccc0e3d4ff5d7cdc70beee55e554..7f416c46566d780909b55f8daec409f35db6b794 100644 (file)
@@ -7,19 +7,23 @@
  */
 
 /** Load WordPress Bootstrap */
-require_once ('admin.php');
+require_once( dirname( __FILE__ ) . '/admin.php' );
 
 if ( !current_user_can('export') )
        wp_die(__('You do not have sufficient permissions to export the content of this site.'));
 
 /** Load WordPress export API */
-require_once('./includes/export.php');
+require_once( ABSPATH . 'wp-admin/includes/export.php' );
 $title = __('Export');
 
-function add_js() {
+/**
+ * Display JavaScript on the page.
+ *
+ * @since 3.5.0
+ */
+function export_add_js() {
 ?>
 <script type="text/javascript">
-//<![CDATA[
        jQuery(document).ready(function($){
                var form = $('#export-filters'),
                        filters = form.find('.export-filters');
@@ -27,16 +31,16 @@ function add_js() {
                form.find('input:radio').change(function() {
                        filters.slideUp('fast');
                        switch ( $(this).val() ) {
+                               case 'attachment': $('#attachment-filters').slideDown(); break;
                                case 'posts': $('#post-filters').slideDown(); break;
                                case 'pages': $('#page-filters').slideDown(); break;
                        }
                });
        });
-//]]>
 </script>
 <?php
 }
-add_action( 'admin_head', 'add_js' );
+add_action( 'admin_head', 'export_add_js' );
 
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
@@ -47,16 +51,17 @@ get_current_screen()->add_help_tab( array(
 
 get_current_screen()->set_help_sidebar(
        '<p><strong>' . __('For more information:') . '</strong></p>' .
-       '<p>' . __('<a href="http://codex.wordpress.org/Tools_Export_Screen" target="_blank">Documentation on Export</a>') . '</p>' .
-       '<p>' . __('<a href="http://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
+       '<p>' . __('<a href="https://codex.wordpress.org/Tools_Export_Screen" target="_blank">Documentation on Export</a>') . '</p>' .
+       '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
+// If the 'download' URL parameter is set, a WXR export file is baked and returned.
 if ( isset( $_GET['download'] ) ) {
        $args = array();
 
        if ( ! isset( $_GET['content'] ) || 'all' == $_GET['content'] ) {
                $args['content'] = 'all';
-       } else if ( 'posts' == $_GET['content'] ) {
+       } elseif ( 'posts' == $_GET['content'] ) {
                $args['content'] = 'post';
 
                if ( $_GET['cat'] )
@@ -72,7 +77,7 @@ if ( isset( $_GET['download'] ) ) {
 
                if ( $_GET['post_status'] )
                        $args['status'] = $_GET['post_status'];
-       } else if ( 'pages' == $_GET['content'] ) {
+       } elseif ( 'pages' == $_GET['content'] ) {
                $args['content'] = 'page';
 
                if ( $_GET['page_author'] )
@@ -85,16 +90,43 @@ if ( isset( $_GET['download'] ) ) {
 
                if ( $_GET['page_status'] )
                        $args['status'] = $_GET['page_status'];
-       } else {
+       } elseif ( 'attachment' == $_GET['content'] ) {
+               $args['content'] = 'attachment';
+
+               if ( $_GET['attachment_start_date'] || $_GET['attachment_end_date'] ) {
+                       $args['start_date'] = $_GET['attachment_start_date'];
+                       $args['end_date'] = $_GET['attachment_end_date'];
+               }
+       }
+       else {
                $args['content'] = $_GET['content'];
        }
 
+       /**
+        * Filter the export args.
+        *
+        * @since 3.5.0
+        *
+        * @param array $args The arguments to send to the exporter.
+        */
+       $args = apply_filters( 'export_args', $args );
+
        export_wp( $args );
        die();
 }
 
-require_once ('admin-header.php');
+require_once( ABSPATH . 'wp-admin/admin-header.php' );
 
+/**
+ * Create the date options fields for exporting a given post type.
+ *
+ * @global wpdb      $wpdb      WordPress database abstraction object.
+ * @global WP_Locale $wp_locale Date and Time Locale object.
+ *
+ * @since 3.1.0
+ *
+ * @param string $post_type The post type. Default 'post'.
+ */
 function export_date_options( $post_type = 'post' ) {
        global $wpdb, $wp_locale;
 
@@ -120,46 +152,53 @@ function export_date_options( $post_type = 'post' ) {
 ?>
 
 <div class="wrap">
-<?php screen_icon(); ?>
-<h2><?php echo esc_html( $title ); ?></h2>
+<h1><?php echo esc_html( $title ); ?></h1>
 
 <p><?php _e('When you click the button below WordPress will create an XML file for you to save to your computer.'); ?></p>
 <p><?php _e('This format, which we call WordPress eXtended RSS or WXR, will contain your posts, pages, comments, custom fields, categories, and tags.'); ?></p>
 <p><?php _e('Once you&#8217;ve saved the download file, you can use the Import function in another WordPress installation to import the content from this site.'); ?></p>
 
-<h3><?php _e( 'Choose what to export' ); ?></h3>
-<form action="" method="get" id="export-filters">
+<h2><?php _e( 'Choose what to export' ); ?></h2>
+<form method="get" id="export-filters">
+<fieldset>
+<legend class="screen-reader-text"><?php _e( 'Content to export' ); ?></legend>
 <input type="hidden" name="download" value="true" />
-<p><label><input type="radio" name="content" value="all" checked="checked" /> <?php _e( 'All content' ); ?></label></p>
-<p class="description"><?php _e( 'This will contain all of your posts, pages, comments, custom fields, terms, navigation menus and custom posts.' ); ?></p>
+<p><label><input type="radio" name="content" value="all" checked="checked" aria-describedby="all-content-desc" /> <?php _e( 'All content' ); ?></label></p>
+<p class="description" id="all-content-desc"><?php _e( 'This will contain all of your posts, pages, comments, custom fields, terms, navigation menus and custom posts.' ); ?></p>
 
 <p><label><input type="radio" name="content" value="posts" /> <?php _e( 'Posts' ); ?></label></p>
 <ul id="post-filters" class="export-filters">
        <li>
-               <label><?php _e( 'Categories:' ); ?></label>
+               <label><span class="label-responsive"><?php _e( 'Categories:' ); ?></span>
                <?php wp_dropdown_categories( array( 'show_option_all' => __('All') ) ); ?>
+               </label>
        </li>
        <li>
-               <label><?php _e( 'Authors:' ); ?></label>
-<?php
+               <label><span class="label-responsive"><?php _e( 'Authors:' ); ?></span>
+               <?php
                $authors = $wpdb->get_col( "SELECT DISTINCT post_author FROM {$wpdb->posts} WHERE post_type = 'post'" );
                wp_dropdown_users( array( 'include' => $authors, 'name' => 'post_author', 'multi' => true, 'show_option_all' => __('All') ) );
-?>
+               ?>
+               </label>
        </li>
        <li>
-               <label><?php _e( 'Date range:' ); ?></label>
-               <select name="post_start_date">
-                       <option value="0"><?php _e( 'Start Date' ); ?></option>
+               <fieldset>
+               <legend class="screen-reader-text"><?php _e( 'Date range:' ); ?></legend>
+               <label for="post-start-date" class="label-responsive"><?php _e( 'Start date:' ); ?></label>
+               <select name="post_start_date" id="post-start-date">
+                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
                        <?php export_date_options(); ?>
                </select>
-               <select name="post_end_date">
-                       <option value="0"><?php _e( 'End Date' ); ?></option>
+               <label for="post-end-date" class="label-responsive"><?php _e( 'End date:' ); ?></label>
+               <select name="post_end_date" id="post-end-date">
+                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
                        <?php export_date_options(); ?>
                </select>
+               </fieldset>
        </li>
        <li>
-               <label><?php _e( 'Status:' ); ?></label>
-               <select name="post_status">
+               <label for="post-status" class="label-responsive"><?php _e( 'Status:' ); ?></label>
+               <select name="post_status" id="post-status">
                        <option value="0"><?php _e( 'All' ); ?></option>
                        <?php $post_stati = get_post_stati( array( 'internal' => false ), 'objects' );
                        foreach ( $post_stati as $status ) : ?>
@@ -172,26 +211,31 @@ function export_date_options( $post_type = 'post' ) {
 <p><label><input type="radio" name="content" value="pages" /> <?php _e( 'Pages' ); ?></label></p>
 <ul id="page-filters" class="export-filters">
        <li>
-               <label><?php _e( 'Authors:' ); ?></label>
-<?php
+               <label><span class="label-responsive"><?php _e( 'Authors:' ); ?></span>
+               <?php
                $authors = $wpdb->get_col( "SELECT DISTINCT post_author FROM {$wpdb->posts} WHERE post_type = 'page'" );
                wp_dropdown_users( array( 'include' => $authors, 'name' => 'page_author', 'multi' => true, 'show_option_all' => __('All') ) );
-?>
+               ?>
+               </label>
        </li>
        <li>
-               <label><?php _e( 'Date range:' ); ?></label>
-               <select name="page_start_date">
-                       <option value="0"><?php _e( 'Start Date' ); ?></option>
+               <fieldset>
+               <legend class="screen-reader-text"><?php _e( 'Date range:' ); ?></legend>
+               <label for="page-start-date" class="label-responsive"><?php _e( 'Start date:' ); ?></label>
+               <select name="page_start_date" id="page-start-date">
+                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
                        <?php export_date_options( 'page' ); ?>
                </select>
-               <select name="page_end_date">
-                       <option value="0"><?php _e( 'End Date' ); ?></option>
+               <label for="page-end-date" class="label-responsive"><?php _e( 'End date:' ); ?></label>
+               <select name="page_end_date" id="page-end-date">
+                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
                        <?php export_date_options( 'page' ); ?>
                </select>
+               </fieldset>
        </li>
        <li>
-               <label><?php _e( 'Status:' ); ?></label>
-               <select name="page_status">
+               <label for="page-status" class="label-responsive"><?php _e( 'Status:' ); ?></label>
+               <select name="page_status" id="page-status">
                        <option value="0"><?php _e( 'All' ); ?></option>
                        <?php foreach ( $post_stati as $status ) : ?>
                        <option value="<?php echo esc_attr( $status->name ); ?>"><?php echo esc_html( $status->label ); ?></option>
@@ -204,8 +248,37 @@ function export_date_options( $post_type = 'post' ) {
 <p><label><input type="radio" name="content" value="<?php echo esc_attr( $post_type->name ); ?>" /> <?php echo esc_html( $post_type->label ); ?></label></p>
 <?php endforeach; ?>
 
-<?php submit_button( __('Download Export File'), 'secondary' ); ?>
+<p><label><input type="radio" name="content" value="attachment" /> <?php _e( 'Media' ); ?></label></p>
+<ul id="attachment-filters" class="export-filters">
+       <li>
+               <fieldset>
+               <legend class="screen-reader-text"><?php _e( 'Date range:' ); ?></legend>
+               <label for="attachment-start-date" class="label-responsive"><?php _e( 'Start date:' ); ?></label>
+               <select name="attachment_start_date" id="attachment-start-date">
+                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
+                       <?php export_date_options( 'attachment' ); ?>
+               </select>
+               <label for="attachment-end-date" class="label-responsive"><?php _e( 'End date:' ); ?></label>
+               <select name="attachment_end_date" id="attachment-end-date">
+                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
+                       <?php export_date_options( 'attachment' ); ?>
+               </select>
+               </fieldset>
+       </li>
+</ul>
+
+</fieldset>
+<?php
+/**
+ * Fires at the end of the export filters form.
+ *
+ * @since 3.5.0
+ */
+do_action( 'export_filters' );
+?>
+
+<?php submit_button( __('Download Export File') ); ?>
 </form>
 </div>
 
-<?php include('admin-footer.php'); ?>
+<?php include( ABSPATH . 'wp-admin/admin-footer.php' ); ?>