Eliminate use of `extract()` in `gallery_shortcode()`.

See #22400.


git-svn-id: https://develop.svn.wordpress.org/trunk@28414 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Scott Taylor 2014-05-15 03:40:46 +00:00
parent e9f929443f
commit e135cc2076
1 changed files with 42 additions and 33 deletions

View File

@ -911,8 +911,9 @@ function gallery_shortcode( $attr ) {
if ( ! empty( $attr['ids'] ) ) { if ( ! empty( $attr['ids'] ) ) {
// 'ids' is explicitly ordered, unless you specify otherwise. // 'ids' is explicitly ordered, unless you specify otherwise.
if ( empty( $attr['orderby'] ) ) if ( empty( $attr['orderby'] ) ) {
$attr['orderby'] = 'post__in'; $attr['orderby'] = 'post__in';
}
$attr['include'] = $attr['ids']; $attr['include'] = $attr['ids'];
} }
@ -930,18 +931,20 @@ function gallery_shortcode( $attr ) {
* @param array $attr Attributes of the gallery shortcode. * @param array $attr Attributes of the gallery shortcode.
*/ */
$output = apply_filters( 'post_gallery', '', $attr ); $output = apply_filters( 'post_gallery', '', $attr );
if ( $output != '' ) if ( $output != '' ) {
return $output; return $output;
}
// We're trusting author input, so let's at least make sure it looks like a valid orderby statement // We're trusting author input, so let's at least make sure it looks like a valid orderby statement
if ( isset( $attr['orderby'] ) ) { if ( isset( $attr['orderby'] ) ) {
$attr['orderby'] = sanitize_sql_orderby( $attr['orderby'] ); $attr['orderby'] = sanitize_sql_orderby( $attr['orderby'] );
if ( !$attr['orderby'] ) if ( ! $attr['orderby'] ) {
unset( $attr['orderby'] ); unset( $attr['orderby'] );
}
} }
$html5 = current_theme_supports( 'html5', 'gallery' ); $html5 = current_theme_supports( 'html5', 'gallery' );
extract(shortcode_atts(array( $atts = shortcode_atts( array(
'order' => 'ASC', 'order' => 'ASC',
'orderby' => 'menu_order ID', 'orderby' => 'menu_order ID',
'id' => $post ? $post->ID : 0, 'id' => $post ? $post->ID : 0,
@ -953,47 +956,53 @@ function gallery_shortcode( $attr ) {
'include' => '', 'include' => '',
'exclude' => '', 'exclude' => '',
'link' => '' 'link' => ''
), $attr, 'gallery')); ), $attr, 'gallery' );
$id = intval($id); $id = intval( $atts['id'] );
if ( 'RAND' == $order ) if ( 'RAND' == $atts['order'] ) {
$orderby = 'none'; $atts['orderby'] = 'none';
}
if ( !empty($include) ) { if ( ! empty( $atts['include'] ) ) {
$_attachments = get_posts( array('include' => $include, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) ); $_attachments = get_posts( array( 'include' => $atts['include'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) );
$attachments = array(); $attachments = array();
foreach ( $_attachments as $key => $val ) { foreach ( $_attachments as $key => $val ) {
$attachments[$val->ID] = $_attachments[$key]; $attachments[$val->ID] = $_attachments[$key];
} }
} elseif ( !empty($exclude) ) { } elseif ( ! empty( $atts['exclude'] ) ) {
$attachments = get_children( array('post_parent' => $id, 'exclude' => $exclude, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) ); $attachments = get_children( array( 'post_parent' => $id, 'exclude' => $atts['exclude'], 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) );
} else { } else {
$attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $order, 'orderby' => $orderby) ); $attachments = get_children( array( 'post_parent' => $id, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => $atts['order'], 'orderby' => $atts['orderby'] ) );
} }
if ( empty($attachments) ) if ( empty( $attachments ) ) {
return ''; return '';
}
if ( is_feed() ) { if ( is_feed() ) {
$output = "\n"; $output = "\n";
foreach ( $attachments as $att_id => $attachment ) foreach ( $attachments as $att_id => $attachment ) {
$output .= wp_get_attachment_link($att_id, $size, true) . "\n"; $output .= wp_get_attachment_link( $att_id, $atts['size'], true ) . "\n";
}
return $output; return $output;
} }
$itemtag = tag_escape($itemtag); $itemtag = tag_escape( $atts['itemtag'] );
$captiontag = tag_escape($captiontag); $captiontag = tag_escape( $atts['captiontag'] );
$icontag = tag_escape($icontag); $icontag = tag_escape( $atts['icontag'] );
$valid_tags = wp_kses_allowed_html( 'post' ); $valid_tags = wp_kses_allowed_html( 'post' );
if ( ! isset( $valid_tags[ $itemtag ] ) ) if ( ! isset( $valid_tags[ $itemtag ] ) ) {
$itemtag = 'dl'; $itemtag = 'dl';
if ( ! isset( $valid_tags[ $captiontag ] ) ) }
if ( ! isset( $valid_tags[ $captiontag ] ) ) {
$captiontag = 'dd'; $captiontag = 'dd';
if ( ! isset( $valid_tags[ $icontag ] ) ) }
if ( ! isset( $valid_tags[ $icontag ] ) ) {
$icontag = 'dt'; $icontag = 'dt';
}
$columns = intval($columns); $columns = intval( $atts['columns'] );
$itemwidth = $columns > 0 ? floor(100/$columns) : 100; $itemwidth = $columns > 0 ? floor(100/$columns) : 100;
$float = is_rtl() ? 'right' : 'left'; $float = is_rtl() ? 'right' : 'left';
@ -1032,7 +1041,7 @@ function gallery_shortcode( $attr ) {
</style>\n\t\t"; </style>\n\t\t";
} }
$size_class = sanitize_html_class( $size ); $size_class = sanitize_html_class( $atts['size'] );
$gallery_div = "<div id='$selector' class='gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'>"; $gallery_div = "<div id='$selector' class='gallery galleryid-{$id} gallery-columns-{$columns} gallery-size-{$size_class}'>";
/** /**
@ -1047,19 +1056,19 @@ function gallery_shortcode( $attr ) {
$i = 0; $i = 0;
foreach ( $attachments as $id => $attachment ) { foreach ( $attachments as $id => $attachment ) {
if ( ! empty( $link ) && 'file' === $link ) if ( ! empty( $atts['link'] ) && 'file' === $atts['link'] ) {
$image_output = wp_get_attachment_link( $id, $size, false, false ); $image_output = wp_get_attachment_link( $id, $atts['size'], false, false );
elseif ( ! empty( $link ) && 'none' === $link ) } elseif ( ! empty( $atts['link'] ) && 'none' === $atts['link'] ) {
$image_output = wp_get_attachment_image( $id, $size, false ); $image_output = wp_get_attachment_image( $id, $atts['size'], false );
else } else {
$image_output = wp_get_attachment_link( $id, $size, true, false ); $image_output = wp_get_attachment_link( $id, $atts['size'], true, false );
}
$image_meta = wp_get_attachment_metadata( $id ); $image_meta = wp_get_attachment_metadata( $id );
$orientation = ''; $orientation = '';
if ( isset( $image_meta['height'], $image_meta['width'] ) ) if ( isset( $image_meta['height'], $image_meta['width'] ) ) {
$orientation = ( $image_meta['height'] > $image_meta['width'] ) ? 'portrait' : 'landscape'; $orientation = ( $image_meta['height'] > $image_meta['width'] ) ? 'portrait' : 'landscape';
}
$output .= "<{$itemtag} class='gallery-item'>"; $output .= "<{$itemtag} class='gallery-item'>";
$output .= " $output .= "
<{$icontag} class='gallery-icon {$orientation}'> <{$icontag} class='gallery-icon {$orientation}'>