X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/11be8dc178e77d0b46189bbd8e33a216a9b90942..refs/tags/wordpress-3.4:/wp-admin/press-this.php diff --git a/wp-admin/press-this.php b/wp-admin/press-this.php index 1823d217..facae8a8 100644 --- a/wp-admin/press-this.php +++ b/wp-admin/press-this.php @@ -6,41 +6,15 @@ * @subpackage Press_This */ -/** WordPress Administration Bootstrap */ -require_once('admin.php'); +define('IFRAME_REQUEST' , true); -if ( ! current_user_can('publish_posts') ) wp_die( __( 'Cheatin’ uh?' ) ); +/** WordPress Administration Bootstrap */ +require_once('./admin.php'); -/** - * Replace forward slash with backslash and slash. - * - * @package WordPress - * @subpackage Press_This - * @since 2.6.0 - * - * @param string $string - * @return string - */ -function preg_quote2($string) { - return str_replace('/', '\/', preg_quote($string)); -} +header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset')); -/** - * Convert characters. - * - * @package WordPress - * @subpackage Press_This - * @since 2.6.0 - * - * @param string $text - * @return string - */ -function aposfix($text) { - $translation_table[chr(34)] = '"'; - $translation_table[chr(38)] = '&'; - $translation_table[chr(39)] = '''; - return preg_replace("/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/","&" , strtr($text, $translation_table)); -} +if ( ! current_user_can('edit_posts') ) + wp_die( __( 'Cheatin’ uh?' ) ); /** * Press It form handler. @@ -52,138 +26,139 @@ function aposfix($text) { * @return int Post ID */ function press_it() { - // define some basic variables - $quick['post_status'] = 'draft'; // set as draft first - $quick['post_category'] = $_REQUEST['post_category']; - $quick['tags_input'] = $_REQUEST['tags_input']; - $quick['post_title'] = $_REQUEST['title']; - $quick['post_content'] = ''; - - // insert the post with nothing in it, to get an ID - $post_ID = wp_insert_post($quick, true); - $content = $_REQUEST['content']; - - if($_REQUEST['photo_src']) - foreach( (array) $_REQUEST['photo_src'] as $key => $image) + + $post = get_default_post_to_edit(); + $post = get_object_vars($post); + $post_ID = $post['ID'] = (int) $_POST['post_id']; + + if ( !current_user_can('edit_post', $post_ID) ) + wp_die(__('You are not allowed to edit this post.')); + + $post['post_category'] = isset($_POST['post_category']) ? $_POST['post_category'] : ''; + $post['tax_input'] = isset($_POST['tax_input']) ? $_POST['tax_input'] : ''; + $post['post_title'] = isset($_POST['title']) ? $_POST['title'] : ''; + $content = isset($_POST['content']) ? $_POST['content'] : ''; + + $upload = false; + if ( !empty($_POST['photo_src']) && current_user_can('upload_files') ) { + foreach( (array) $_POST['photo_src'] as $key => $image) { // see if files exist in content - we don't want to upload non-used selected files. - if( strpos($_REQUEST['content'], $image) !== false ) { - $upload = media_sideload_image($image, $post_ID, $_REQUEST['photo_description'][$key]); + if ( strpos($_POST['content'], htmlspecialchars($image)) !== false ) { + $desc = isset($_POST['photo_description'][$key]) ? $_POST['photo_description'][$key] : ''; + $upload = media_sideload_image($image, $post_ID, $desc); - // Replace the POSTED content with correct uploaded ones. - // escape quote for matching - $quoted = preg_quote2($image); - if( !is_wp_error($upload) ) $content = preg_replace('/]*)src=(\"|\')'.$quoted.'(\2)([^>\/]*)\/*>/is', $upload, $content); + // Replace the POSTED content with correct uploaded ones. Regex contains fix for Magic Quotes + if ( !is_wp_error($upload) ) + $content = preg_replace('/]*)src=\\\?(\"|\')'.preg_quote(htmlspecialchars($image), '/').'\\\?(\2)([^>\/]*)\/*>/is', $upload, $content); } - + } + } // set the post_content and status - $quick['post_status'] = isset($_REQUEST['publish']) ? 'publish' : 'draft'; - $quick['post_content'] = $content; - // error handling for $post - if ( is_wp_error($post_ID)) { - wp_die($id); - wp_delete_post($post_ID); + $post['post_content'] = $content; + if ( isset( $_POST['publish'] ) && current_user_can( 'publish_posts' ) ) + $post['post_status'] = 'publish'; + elseif ( isset( $_POST['review'] ) ) + $post['post_status'] = 'pending'; + else + $post['post_status'] = 'draft'; + // error handling for media_sideload - } elseif ( is_wp_error($upload)) { - wp_die($upload); + if ( is_wp_error($upload) ) { wp_delete_post($post_ID); + wp_die($upload); } else { - $quick['ID'] = $post_ID; - wp_update_post($quick); + // Post formats + if ( isset( $_POST['post_format'] ) ) { + if ( current_theme_supports( 'post-formats', $_POST['post_format'] ) ) + set_post_format( $post_ID, $_POST['post_format'] ); + elseif ( '0' == $_POST['post_format'] ) + set_post_format( $post_ID, false ); + } + + $post_ID = wp_update_post($post); } + return $post_ID; } // For submitted posts. -if ( 'post' == $_REQUEST['action'] ) { +if ( isset($_REQUEST['action']) && 'post' == $_REQUEST['action'] ) { check_admin_referer('press-this'); - $post_ID = press_it(); - $posted = $post_ID; + $posted = $post_ID = press_it(); +} else { + $post = get_default_post_to_edit('post', true); + $post_ID = $post->ID; } // Set Variables -$title = wp_specialchars(aposfix(stripslashes($_GET['t']))); -$selection = trim( aposfix( stripslashes($_GET['s']) ) ); +$title = isset( $_GET['t'] ) ? trim( strip_tags( html_entity_decode( stripslashes( $_GET['t'] ) , ENT_QUOTES) ) ) : ''; + +$selection = ''; +if ( !empty($_GET['s']) ) { + $selection = str_replace(''', "'", stripslashes($_GET['s'])); + $selection = trim( htmlspecialchars( html_entity_decode($selection, ENT_QUOTES) ) ); +} + if ( ! empty($selection) ) { $selection = preg_replace('/(\r?\n|\r)/', '

', $selection); - $selection = '

'.str_replace('

', '', $selection).'

'; + $selection = '

' . str_replace('

', '', $selection) . '

'; } -$url = clean_url($_GET['u']); -$image = $_GET['i']; - -if($_REQUEST['ajax']) { -switch ($_REQUEST['ajax']) { - case 'video': ?> - -
-

-
- -

-
-
- - -

-
-
- -
-
- -

- <?php echo attribute_escape(__('Click to insert.')); ?>

- -

- - - -

-
-
- +$url = isset($_GET['u']) ? esc_url($_GET['u']) : ''; +$image = isset($_GET['i']) ? $_GET['i'] : ''; + +if ( !empty($_REQUEST['ajax']) ) { + switch ($_REQUEST['ajax']) { + case 'video': ?> + +
+

+
+ +

+
-
+ -
-
- + case 'photo_thickbox': ?> + +

+
+
+ +
-
-

|

- + + + <?php echo esc_attr(__('Click to insert.')); ?> + +

+ +

+ ]*)src=(\"|\')([^<>]+?\.(png|jpeg|jpg|jpe|gif))[^<>\'\"]*(\2)([^>\/]*)\/*>/is'; + $pattern = '/]*)src=(\"|\')([^<>\'\"]+)(\2)([^>]*)\/*>/i'; + $content = str_replace(array("\n","\t","\r"), '', $content); preg_match_all($pattern, $content, $matches); if ( empty($matches[0]) ) return ''; $sources = array(); foreach ($matches[3] as $src) { // if no http in url - if(strpos($src, 'http') === false) + if (strpos($src, 'http') === false) // if it doesn't have a relative uri - if( strpos($src, '../') === false && strpos($src, './') === false && strpos($src, '/') === 0) + if ( strpos($src, '../') === false && strpos($src, './') === false && strpos($src, '/') === 0) $src = 'http://'.str_replace('//','/', $host['host'].'/'.$src); else $src = 'http://'.str_replace('//','/', $host['host'].'/'.dirname($host['path']).'/'.$src); - $sources[] = clean_url($src); + $sources[] = esc_url($src); } return "'" . implode("','", $sources) . "'"; } - $url = urldecode($url); - $url = str_replace(' ', '%20', $url); + $url = wp_kses(urldecode($url), null); echo 'new Array('.get_images_from_uri($url).')'; - break; case 'photo_js': ?> // gather images and load some default JS var last = null var img, img_tag, aspect, w, h, skip, i, strtoappend = ""; + if(photostorage == false) { + var my_src = eval( + jQuery.ajax({ + type: "GET", + url: "", + cache : false, + async : false, + data: "ajax=photo_images&u=", + dataType : "script" + }).responseText + ); + if(my_src.length == 0) { var my_src = eval( jQuery.ajax({ - type: "GET", - url: "", + type: "GET", + url: "", cache : false, async : false, - data: "ajax=photo_images&u=", + data: "ajax=photo_images&u=", dataType : "script" }).responseText ); if(my_src.length == 0) { - var my_src = eval( - jQuery.ajax({ - type: "GET", - url: "", - cache : false, - async : false, - data: "ajax=photo_images&u=", - dataType : "script" - }).responseText - ); - if(my_src.length == 0) { - strtoappend = ''; - } + strtoappend = ''; } - + } + } for (i = 0; i < my_src.length; i++) { img = new Image(); img.src = my_src[i]; @@ -294,85 +270,63 @@ switch ($_REQUEST['ajax']) { return false; } - function image_selector() { + function image_selector(el) { + var desc, src, parent = jQuery(el).closest('#photo-add-url-div'); + + if ( parent.length ) { + desc = parent.find('input.tb_this_photo_description').val() || ''; + src = parent.find('input.tb_this_photo').val() || '' + } else { + desc = jQuery('#tb_this_photo_description').val() || ''; + src = jQuery('#tb_this_photo').val() || '' + } + tb_remove(); - desc = jQuery('#this_photo_description').val(); - src = jQuery('#this_photo').val(); pick(src, desc); - jQuery('#extra_fields').hide(); - jQuery('#extra_fields').html(''); + jQuery('#extra-fields').hide(); + jQuery('#extra-fields').html(''); return false; } - jQuery(document).ready(function() { - jQuery('#extra_fields').html('

Photo ()

'); - jQuery('.close').click(function() { - jQuery('#extra_fields').hide(); - jQuery('#extra_fields').html(''); - }); - jQuery('.refresh').click(function() { - show('photo'); - }); - jQuery('#img_container').html(strtoappend); - jQuery('#photo_add_url').attr('href', '?ajax=photo_thickbox_url&height=200&width=500'); - tb_init('#extra_fields .thickbox'); - - - }); + jQuery('#extra-fields').html('

()

'); + jQuery('#img_container').html(strtoappend); - - > - - - <?php _e('Press This') ?> - - +<?php _e('Press This') ?> + + - - + +
-
+
-

- +
-
-

+
+

+

+

+ 'save' ) ); + if ( current_user_can('publish_posts') ) { + submit_button( __( 'Publish' ), 'primary', 'publish', false ); + } else { + echo '

'; + submit_button( __( 'Submit for Review' ), 'primary', 'review', false ); + } ?> + +

+ +

+ +

+ +
+
-
-
    - ID, false, false, $popular_ids) ?> + +
    +

    +

    +
    +
    + + + + -
    - -

    - - 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?> - - - -

    +
    +
      + 'category', 'popular_cats' => $popular_ids ) ) ?> +
    + + cap->assign_terms) ) : ?> +

    + + cap->edit_terms) ) : ?> +
    +

    + + labels->add_new_item ); ?> + +

    +

    + + + + 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '— ' . $tax->labels->parent_item . ' —', 'tab_index' => 3 ) ); ?> + + + +

    +
    + +
    -
    -

    +
    +

    +

    - -
    - - +
    +
    + + +
    + + +
    +
    +
    -
    -
    -
    -
    -

    -
    -

    - - - -

    +
    -
    - -

    | |

    + + + + +
    +

    + + | + |

    +
    - +
    - + + +
    -
      -
    • - Add: -<?php _e('Insert an Image'); ?> -
    • -
    • - <?php _e('Embed a Video'); ?> -
    • - -
    • - - - - -
      -
    • - -
    -
    -
    - -
    + true, + 'textarea_rows' => '15' + ); + + $content = ''; + if ( $selection ) + $content .= $selection; + + if ( $url ) { + $content .= '

    '; + + if ( $selection ) + $content .= __('via '); + + $content .= sprintf( "%s.

    ", esc_url( $url ), esc_html( $title ) ); + } + + remove_action( 'media_buttons', 'media_buttons' ); + add_action( 'media_buttons', 'press_this_media_buttons' ); + function press_this_media_buttons() { + _e( 'Add:' ); + + if ( current_user_can('upload_files') ) { + ?> + + <?php esc_attr_e('Insert an Image'); ?> + + <?php esc_attr_e('Embed a Video'); ?> +
    + + +