WordPress 4.2
[autoinstalls/wordpress.git] / wp-admin / custom-header.php
index 76f6f746d16afc4992ef0fffdbae2329199dc0b2..a56c7602c685d617975c9af3cd805da993cd30b9 100644 (file)
@@ -20,18 +20,16 @@ class Custom_Image_Header {
         *
         * @var callback
         * @since 2.1.0
         *
         * @var callback
         * @since 2.1.0
-        * @access private
         */
         */
-       private $admin_header_callback;
+       public $admin_header_callback;
 
        /**
         * Callback for header div.
         *
         * @var callback
         * @since 3.0.0
 
        /**
         * Callback for header div.
         *
         * @var callback
         * @since 3.0.0
-        * @access private
         */
         */
-       private $admin_image_div_callback;
+       public $admin_image_div_callback;
 
        /**
         * Holds default headers.
 
        /**
         * Holds default headers.
@@ -40,25 +38,12 @@ class Custom_Image_Header {
         * @since 3.0.0
         * @access private
         */
         * @since 3.0.0
         * @access private
         */
-       private $default_headers = array();
+       public $default_headers = array();
 
        /**
 
        /**
-        * Holds custom headers uploaded by the user.
-        *
-        * @var array
-        * @since 3.2.0
-        * @access private
+        * @var bool
         */
         */
-       private $uploaded_headers = array();
-
-       /**
-        * Holds the page menu hook.
-        *
-        * @var string
-        * @since 3.0.0
-        * @access private
-        */
-       private $page = '';
+       private $updated;
 
        /**
         * Constructor - Register administration header callback.
 
        /**
         * Constructor - Register administration header callback.
@@ -66,7 +51,6 @@ class Custom_Image_Header {
         * @since 2.1.0
         * @param callback $admin_header_callback
         * @param callback $admin_image_div_callback Optional custom image div output callback.
         * @since 2.1.0
         * @param callback $admin_header_callback
         * @param callback $admin_image_div_callback Optional custom image div output callback.
-        * @return Custom_Image_Header
         */
        public function __construct($admin_header_callback, $admin_image_div_callback = '') {
                $this->admin_header_callback = $admin_header_callback;
         */
        public function __construct($admin_header_callback, $admin_image_div_callback = '') {
                $this->admin_header_callback = $admin_header_callback;
@@ -80,77 +64,25 @@ class Custom_Image_Header {
                add_action( 'wp_ajax_custom-header-remove', array( $this, 'ajax_header_remove'      ) );
        }
 
                add_action( 'wp_ajax_custom-header-remove', array( $this, 'ajax_header_remove'      ) );
        }
 
-       /**
-        * Make private properties readable for backwards compatibility.
-        *
-        * @since 4.0.0
-        * @access public
-        *
-        * @param string $name Property to get.
-        * @return mixed Property.
-        */
-       public function __get( $name ) {
-               return $this->$name;
-       }
-
-       /**
-        * Make private properties settable for backwards compatibility.
-        *
-        * @since 4.0.0
-        * @access public
-        *
-        * @param string $name  Property to set.
-        * @param mixed  $value Property value.
-        * @return mixed Newly-set property.
-        */
-       public function __set( $name, $value ) {
-               return $this->$name = $value;
-       }
-
-       /**
-        * Make private properties checkable for backwards compatibility.
-        *
-        * @since 4.0.0
-        * @access public
-        *
-        * @param string $name Property to check if set.
-        * @return bool Whether the property is set.
-        */
-       public function __isset( $name ) {
-               return isset( $this->$name );
-       }
-
-       /**
-        * Make private properties un-settable for backwards compatibility.
-        *
-        * @since 4.0.0
-        * @access public
-        *
-        * @param string $name Property to unset.
-        */
-       public function __unset( $name ) {
-               unset( $this->$name );
-       }
-
        /**
         * Set up the hooks for the Custom Header admin page.
         *
         * @since 2.1.0
         */
        public function init() {
        /**
         * Set up the hooks for the Custom Header admin page.
         *
         * @since 2.1.0
         */
        public function init() {
-               if ( ! current_user_can('edit_theme_options') )
+               $page = add_theme_page( __( 'Header' ), __( 'Header' ), 'edit_theme_options', 'custom-header', array( $this, 'admin_page' ) );
+               if ( ! $page ) {
                        return;
                        return;
+               }
 
 
-               $this->page = $page = add_theme_page(__('Header'), __('Header'), 'edit_theme_options', 'custom-header', array($this, 'admin_page'));
-
-               add_action("admin_print_scripts-$page", array($this, 'js_includes'));
-               add_action("admin_print_styles-$page", array($this, 'css_includes'));
-               add_action("admin_head-$page", array($this, 'help') );
-               add_action("admin_head-$page", array($this, 'take_action'), 50);
-               add_action("admin_head-$page", array($this, 'js'), 50);
-               if ( $this->admin_header_callback )
-                       add_action("admin_head-$page", $this->admin_header_callback, 51);
-
+               add_action( "admin_print_scripts-$page", array( $this, 'js_includes' ) );
+               add_action( "admin_print_styles-$page", array( $this, 'css_includes' ) );
+               add_action( "admin_head-$page", array( $this, 'help' ) );
+               add_action( "admin_head-$page", array( $this, 'take_action' ), 50 );
+               add_action( "admin_head-$page", array( $this, 'js' ), 50 );
+               if ( $this->admin_header_callback ) {
+                       add_action( "admin_head-$page", $this->admin_header_callback, 51 );
+               }
        }
 
        /**
        }
 
        /**
@@ -188,7 +120,7 @@ class Custom_Image_Header {
 
                get_current_screen()->set_help_sidebar(
                        '<p><strong>' . __( 'For more information:' ) . '</strong></p>' .
 
                get_current_screen()->set_help_sidebar(
                        '<p><strong>' . __( 'For more information:' ) . '</strong></p>' .
-                       '<p>' . __( '<a href="http://codex.wordpress.org/Appearance_Header_Screen" target="_blank">Documentation on Custom Header</a>' ) . '</p>' .
+                       '<p>' . __( '<a href="https://codex.wordpress.org/Appearance_Header_Screen" target="_blank">Documentation on Custom Header</a>' ) . '</p>' .
                        '<p>' . __( '<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
                );
        }
                        '<p>' . __( '<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
                );
        }
@@ -300,9 +232,6 @@ class Custom_Image_Header {
        public function process_default_headers() {
                global $_wp_default_headers;
 
        public function process_default_headers() {
                global $_wp_default_headers;
 
-               if ( !empty($this->headers) )
-                       return;
-
                if ( !isset($_wp_default_headers) )
                        return;
 
                if ( !isset($_wp_default_headers) )
                        return;
 
@@ -360,7 +289,7 @@ class Custom_Image_Header {
        }
 
        /**
        }
 
        /**
-        * Execute Javascript depending on step.
+        * Execute JavaScript depending on step.
         *
         * @since 2.1.0
         */
         *
         * @since 2.1.0
         */
@@ -373,7 +302,7 @@ class Custom_Image_Header {
        }
 
        /**
        }
 
        /**
-        * Display Javascript based on Step 1 and 3.
+        * Display JavaScript based on Step 1 and 3.
         *
         * @since 2.6.0
         */
         *
         * @since 2.6.0
         */
@@ -388,7 +317,6 @@ class Custom_Image_Header {
                ?>
 
 <script type="text/javascript">
                ?>
 
 <script type="text/javascript">
-/* <![CDATA[ */
 (function($){
        var default_color = '<?php echo $default_color; ?>',
                header_text_fields;
 (function($){
        var default_color = '<?php echo $default_color; ?>',
                header_text_fields;
@@ -431,19 +359,17 @@ class Custom_Image_Header {
                <?php endif; ?>
        });
 })(jQuery);
                <?php endif; ?>
        });
 })(jQuery);
-/* ]]> */
 </script>
 <?php
        }
 
        /**
 </script>
 <?php
        }
 
        /**
-        * Display Javascript based on Step 2.
+        * Display JavaScript based on Step 2.
         *
         * @since 2.6.0
         */
        public function js_2() { ?>
 <script type="text/javascript">
         *
         * @since 2.6.0
         */
        public function js_2() { ?>
 <script type="text/javascript">
-/* <![CDATA[ */
        function onEndCrop( coords ) {
                jQuery( '#x1' ).val(coords.x);
                jQuery( '#y1' ).val(coords.y);
        function onEndCrop( coords ) {
                jQuery( '#x1' ).val(coords.x);
                jQuery( '#y1' ).val(coords.y);
@@ -505,7 +431,6 @@ class Custom_Image_Header {
                        }
                });
        });
                        }
                });
        });
-/* ]]> */
 </script>
 <?php
        }
 </script>
 <?php
        }
@@ -522,6 +447,19 @@ class Custom_Image_Header {
 <div class="wrap">
 <h2><?php _e( 'Custom Header' ); ?></h2>
 
 <div class="wrap">
 <h2><?php _e( 'Custom Header' ); ?></h2>
 
+<?php if ( current_user_can( 'customize' ) ) { ?>
+<div class="notice notice-info hide-if-no-customize">
+       <p>
+               <?php
+               printf(
+                       __( 'You can now manage and live-preview Custom Header in the <a href="%1$s">Customizer</a>.' ),
+                       admin_url( 'customize.php?autofocus[control]=header_image' )
+               );
+               ?>
+       </p>
+</div>
+<?php } ?>
+
 <?php if ( ! empty( $this->updated ) ) { ?>
 <div id="message" class="updated">
 <p><?php printf( __( 'Header updated. <a href="%s">Visit your site</a> to see how it looks.' ), home_url( '/' ) ); ?></p>
 <?php if ( ! empty( $this->updated ) ) { ?>
 <div id="message" class="updated">
 <p><?php printf( __( 'Header updated. <a href="%s">Visit your site</a> to see how it looks.' ), home_url( '/' ) ); ?></p>
@@ -542,7 +480,14 @@ class Custom_Image_Header {
                call_user_func( $this->admin_image_div_callback );
        } else {
                $custom_header = get_custom_header();
                call_user_func( $this->admin_image_div_callback );
        } else {
                $custom_header = get_custom_header();
-               $header_image_style = 'background-image:url(' . esc_url( get_header_image() ) . ');';
+               $header_image = get_header_image();
+
+               if ( $header_image ) {
+                       $header_image_style = 'background-image:url(' . esc_url( $header_image ) . ');';
+               }  else {
+                       $header_image_style = '';
+               }
+
                if ( $custom_header->width )
                        $header_image_style .= 'max-width:' . $custom_header->width . 'px;';
                if ( $custom_header->height )
                if ( $custom_header->width )
                        $header_image_style .= 'max-width:' . $custom_header->width . 'px;';
                if ( $custom_header->height )
@@ -555,7 +500,7 @@ class Custom_Image_Header {
                else
                        $style = ' style="display:none;"';
                ?>
                else
                        $style = ' style="display:none;"';
                ?>
-               <h1><a id="name" class="displaying-header-text" <?php echo $style; ?> onclick="return false;" href="<?php bloginfo('url'); ?>"><?php bloginfo( 'name' ); ?></a></h1>
+               <h1><a id="name" class="displaying-header-text" <?php echo $style; ?> onclick="return false;" href="<?php bloginfo('url'); ?>" tabindex="-1"><?php bloginfo( 'name' ); ?></a></h1>
                <div id="desc" class="displaying-header-text" <?php echo $style; ?>><?php bloginfo( 'description' ); ?></div>
        </div>
        <?php } ?>
                <div id="desc" class="displaying-header-text" <?php echo $style; ?>><?php bloginfo( 'description' ); ?></div>
        </div>
        <?php } ?>
@@ -602,10 +547,10 @@ class Custom_Image_Header {
        ?>
        <p>
                <label for="choose-from-library-link"><?php _e( 'Or choose an image from your media library:' ); ?></label><br />
        ?>
        <p>
                <label for="choose-from-library-link"><?php _e( 'Or choose an image from your media library:' ); ?></label><br />
-               <a id="choose-from-library-link" class="button"
+               <button id="choose-from-library-link" class="button"
                        data-update-link="<?php echo esc_attr( $modal_update_href ); ?>"
                        data-choose="<?php esc_attr_e( 'Choose a Custom Header' ); ?>"
                        data-update-link="<?php echo esc_attr( $modal_update_href ); ?>"
                        data-choose="<?php esc_attr_e( 'Choose a Custom Header' ); ?>"
-                       data-update="<?php esc_attr_e( 'Set as header' ); ?>"><?php _e( 'Choose Image' ); ?></a>
+                       data-update="<?php esc_attr_e( 'Set as header' ); ?>"><?php _e( 'Choose Image' ); ?></button>
        </p>
        </form>
 </td>
        </p>
        </form>
 </td>
@@ -615,6 +560,7 @@ class Custom_Image_Header {
 </table>
 
 <form method="post" action="<?php echo esc_url( add_query_arg( 'step', 1 ) ) ?>">
 </table>
 
 <form method="post" action="<?php echo esc_url( add_query_arg( 'step', 1 ) ) ?>">
+<?php submit_button( null, 'screen-reader-text', 'save-header-options', false ); ?>
 <table class="form-table">
 <tbody>
        <?php if ( get_uploaded_header_images() ) : ?>
 <table class="form-table">
 <tbody>
        <?php if ( get_uploaded_header_images() ) : ?>
@@ -736,7 +682,7 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
        public function step_2() {
                check_admin_referer('custom-header-upload', '_wpnonce-custom-header-upload');
                if ( ! current_theme_supports( 'custom-header', 'uploads' ) )
        public function step_2() {
                check_admin_referer('custom-header-upload', '_wpnonce-custom-header-upload');
                if ( ! current_theme_supports( 'custom-header', 'uploads' ) )
-                       wp_die( __( 'Cheatin&#8217; uh?' ) );
+                       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
 
                if ( empty( $_POST ) && isset( $_GET['file'] ) ) {
                        $attachment_id = absint( $_GET['file'] );
 
                if ( empty( $_POST ) && isset( $_GET['file'] ) ) {
                        $attachment_id = absint( $_GET['file'] );
@@ -748,7 +694,6 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
                        $attachment_id = $data['attachment_id'];
                        $file = $data['file'];
                        $url = $data['url'];
                        $attachment_id = $data['attachment_id'];
                        $file = $data['file'];
                        $url = $data['url'];
-                       $type = $data['type'];
                }
 
                if ( file_exists( $file ) ) {
                }
 
                if ( file_exists( $file ) ) {
@@ -851,7 +796,7 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
                $overrides = array('test_form' => false);
 
                $uploaded_file = $_FILES['import'];
                $overrides = array('test_form' => false);
 
                $uploaded_file = $_FILES['import'];
-               $wp_filetype = wp_check_filetype_and_ext( $uploaded_file['tmp_name'], $uploaded_file['name'], false );
+               $wp_filetype = wp_check_filetype_and_ext( $uploaded_file['tmp_name'], $uploaded_file['name'] );
                if ( ! wp_match_mime_types( 'image', $wp_filetype['type'] ) )
                        wp_die( __( 'The uploaded file is not a valid image. Please try again.' ) );
 
                if ( ! wp_match_mime_types( 'image', $wp_filetype['type'] ) )
                        wp_die( __( 'The uploaded file is not a valid image. Please try again.' ) );
 
@@ -888,10 +833,10 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
                check_admin_referer( 'custom-header-crop-image' );
 
                if ( ! current_theme_supports( 'custom-header', 'uploads' ) )
                check_admin_referer( 'custom-header-crop-image' );
 
                if ( ! current_theme_supports( 'custom-header', 'uploads' ) )
-                       wp_die( __( 'Cheatin&#8217; uh?' ) );
+                       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
 
                if ( ! empty( $_POST['skip-cropping'] ) && ! ( current_theme_supports( 'custom-header', 'flex-height' ) || current_theme_supports( 'custom-header', 'flex-width' ) ) )
 
                if ( ! empty( $_POST['skip-cropping'] ) && ! ( current_theme_supports( 'custom-header', 'flex-height' ) || current_theme_supports( 'custom-header', 'flex-width' ) ) )
-                       wp_die( __( 'Cheatin&#8217; uh?' ) );
+                       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
 
                if ( $_POST['oitar'] > 1 ) {
                        $_POST['x1'] = $_POST['x1'] * $_POST['oitar'];
 
                if ( $_POST['oitar'] > 1 ) {
                        $_POST['x1'] = $_POST['x1'] * $_POST['oitar'];
@@ -937,19 +882,11 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
                // Cleanup.
                $medium = str_replace( basename( $original ), 'midsize-' . basename( $original ), $original );
                if ( file_exists( $medium ) ) {
                // Cleanup.
                $medium = str_replace( basename( $original ), 'midsize-' . basename( $original ), $original );
                if ( file_exists( $medium ) ) {
-                       /**
-                        * Filter the path of the file to delete.
-                        *
-                        * @since 2.1.0
-                        *
-                        * @param string $medium Path to the file to delete.
-                        */
-                       @unlink( apply_filters( 'wp_delete_file', $medium ) );
+                       wp_delete_file( $medium );
                }
 
                if ( empty( $_POST['create-new-attachment'] ) && empty( $_POST['skip-cropping'] ) ) {
                }
 
                if ( empty( $_POST['create-new-attachment'] ) && empty( $_POST['skip-cropping'] ) ) {
-                       /** This filter is documented in wp-admin/custom-header.php */
-                       @unlink( apply_filters( 'wp_delete_file', $original ) );
+                       wp_delete_file( $original );
                }
 
                return $this->finished();
                }
 
                return $this->finished();
@@ -1107,7 +1044,7 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
                $has_flex_width = current_theme_supports( 'custom-header', 'flex-width' );
                $has_flex_height = current_theme_supports( 'custom-header', 'flex-height' );
                $has_max_width = current_theme_supports( 'custom-header', 'max-width' ) ;
                $has_flex_width = current_theme_supports( 'custom-header', 'flex-width' );
                $has_flex_height = current_theme_supports( 'custom-header', 'flex-height' );
                $has_max_width = current_theme_supports( 'custom-header', 'max-width' ) ;
-               $dst = array( 'dst_height' => null, 'dst_height' => null );
+               $dst = array( 'dst_height' => null, 'dst_width' => null );
 
                // For flex, limit size of image displayed to 1500px unless theme says otherwise
                if ( $has_flex_width ) {
 
                // For flex, limit size of image displayed to 1500px unless theme says otherwise
                if ( $has_flex_width ) {