admin_header_callback = $admin_header_callback; $this->admin_image_div_callback = $admin_image_div_callback; } /** * Setup the hooks for the Custom Header admin page. * * @since unknown */ function init() { $page = add_theme_page(__('Custom Header'), __('Custom Header'), 'edit_themes', '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, 'take_action'), 50); add_action("admin_head-$page", array(&$this, 'js'), 50); add_action("admin_head-$page", $this->admin_header_callback, 51); } /** * Get the current step. * * @since unknown * * @return int Current step */ function step() { if ( ! isset( $_GET['step'] ) ) return 1; $step = (int) $_GET['step']; if ( $step < 1 || 3 < $step ) $step = 1; return $step; } /** * Setup the enqueue for the JavaScript files. * * @since unknown */ function js_includes() { $step = $this->step(); if ( 1 == $step ) wp_enqueue_script('farbtastic'); elseif ( 2 == $step ) wp_enqueue_script('jcrop'); } /** * Setup the enqueue for the CSS files * * @since 2.7 */ function css_includes() { $step = $this->step(); if ( 1 == $step ) wp_enqueue_style('farbtastic'); elseif ( 2 == $step ) wp_enqueue_style('jcrop'); } /** * Execute custom header modification. * * @since unknown */ function take_action() { if ( isset( $_POST['textcolor'] ) ) { check_admin_referer('custom-header'); if ( 'blank' == $_POST['textcolor'] ) { set_theme_mod('header_textcolor', 'blank'); } else { $color = preg_replace('/[^0-9a-fA-F]/', '', $_POST['textcolor']); if ( strlen($color) == 6 || strlen($color) == 3 ) set_theme_mod('header_textcolor', $color); } } if ( isset($_POST['resetheader']) ) { check_admin_referer('custom-header'); remove_theme_mods(); } } /** * Execute Javascript depending on step. * * @since unknown */ function js() { $step = $this->step(); if ( 1 == $step ) $this->js_1(); elseif ( 2 == $step ) $this->js_2(); } /** * Display Javascript based on Step 1. * * @since unknown */ function js_1() { ?>

Visit your site to see how it looks.'), home_url()); ?>

admin_image_div_callback ) { call_user_func($this->admin_image_div_callback); } else { ?>

%1$d x %2$d pixels will be used as-is.'), HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT); ?>


false); $file = wp_handle_upload($_FILES['import'], $overrides); if ( isset($file['error']) ) die( $file['error'] ); $url = $file['url']; $type = $file['type']; $file = $file['file']; $filename = basename($file); // Construct the object array $object = array( 'post_title' => $filename, 'post_content' => $url, 'post_mime_type' => $type, 'guid' => $url); // Save the data $id = wp_insert_attachment($object, $file); list($width, $height, $type, $attr) = getimagesize( $file ); if ( $width == HEADER_IMAGE_WIDTH && $height == HEADER_IMAGE_HEIGHT ) { // Add the meta-data wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) ); set_theme_mod('header_image', esc_url($url)); do_action('wp_create_file_in_uploads', $file, $id); // For replication return $this->finished(); } elseif ( $width > HEADER_IMAGE_WIDTH ) { $oitar = $width / HEADER_IMAGE_WIDTH; $image = wp_crop_image($file, 0, 0, $width, $height, HEADER_IMAGE_WIDTH, $height / $oitar, false, str_replace(basename($file), 'midsize-'.basename($file), $file)); if ( is_wp_error( $image ) ) wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); $image = apply_filters('wp_create_file_in_uploads', $image, $id); // For replication $url = str_replace(basename($url), basename($image), $url); $width = $width / $oitar; $height = $height / $oitar; } else { $oitar = 1; } ?>

1 ) { $_POST['x1'] = $_POST['x1'] * $_POST['oitar']; $_POST['y1'] = $_POST['y1'] * $_POST['oitar']; $_POST['width'] = $_POST['width'] * $_POST['oitar']; $_POST['height'] = $_POST['height'] * $_POST['oitar']; } $original = get_attached_file( $_POST['attachment_id'] ); $cropped = wp_crop_image($_POST['attachment_id'], $_POST['x1'], $_POST['y1'], $_POST['width'], $_POST['height'], HEADER_IMAGE_WIDTH, HEADER_IMAGE_HEIGHT); if ( is_wp_error( $cropped ) ) wp_die( __( 'Image could not be processed. Please go back and try again.' ), __( 'Image Processing Error' ) ); $cropped = apply_filters('wp_create_file_in_uploads', $cropped, $_POST['attachment_id']); // For replication $parent = get_post($_POST['attachment_id']); $parent_url = $parent->guid; $url = str_replace(basename($parent_url), basename($cropped), $parent_url); // Construct the object array $object = array( 'ID' => $_POST['attachment_id'], 'post_title' => basename($cropped), 'post_content' => $url, 'post_mime_type' => 'image/jpeg', 'guid' => $url ); // Update the attachment wp_insert_attachment($object, $cropped); wp_update_attachment_metadata( $_POST['attachment_id'], wp_generate_attachment_metadata( $_POST['attachment_id'], $cropped ) ); set_theme_mod('header_image', $url); // cleanup $medium = str_replace(basename($original), 'midsize-'.basename($original), $original); @unlink( apply_filters( 'wp_delete_file', $medium ) ); @unlink( apply_filters( 'wp_delete_file', $original ) ); return $this->finished(); } /** * Display last step of custom header image page. * * @since unknown */ function finished() { $_GET['updated'] = 1; $this->step_1(); } /** * Display the page based on the current step. * * @since unknown */ function admin_page() { $step = $this->step(); if ( 1 == $step ) $this->step_1(); elseif ( 2 == $step ) $this->step_2(); elseif ( 3 == $step ) $this->step_3(); } } ?>