Thank you to anyone who has already donated - your generous donations helped make three months of treatment possible.

My brother Nate continues to fight stage IV Hodgkin's lymphoma. He's just 31, with a wife and baby girl. They have no active income (since he's been unable to return to work), no insurance, and cannot afford the treatment he needs. Nate and his family need your help. Please consider a donation, every dollar helps. Thanks.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/**
 * Default image
 * 
 * Builds an default <img> for use in themes or plugins before any other images are added.
 * Resizes & crops the image using the built-in (retireved via `get_intermediate_image_sizes();`) 
 * or custom image (added via `add_image_size();`) sizes.
 * 
 * Retrieves calculated resize dimension @uses image_resize_dimensions();
 * Builds the width and height string @uses image_hwstring();
 * 
 * @param $args (array)
 * 		string $url URl to the given default image.
 * 		string $size Optional. Default is 'medium'.
 * 		string (optional) $alt Image Description for the alt attribute.
 * 		string (optional) $title Image Description for the title attribute.
 * 		string (optional) $align Part of the class name for aligning the image.
 * 		string (optional) $echo Wheter to return or echo the $image
 * @return string HTML IMG element for given image attachment
 */
function oxo_default_img( $attr )
{
	// Sizes registered via add_image_size();
	global $_wp_additional_image_sizes;

	$defaults = array(
		 'size'		=> 'medium'
		,'classes'	=> false
		,'alt'		=> false
		,'title'	=> false
		,'align'	=> 'none'
		,'echo'		=> true 
	);

	$attr = wp_parse_args( $attr, $defaults );

	if ( 'thumb' === $attr['size'] )
		$attr['size'] = 'thumbnail';

	// Size in built in sizes - call size setting from DB
	# behavoir in here dependent on @link http://core.trac.wordpress.org/ticket/18947
	if ( ! in_array( $attr['size'], array_keys( $_wp_additional_image_sizes ) ) )
	{
		$sizes				= get_intermediate_image_sizes();
		// Get option - gladly autoloaded/can use wp_cache_get();
		$size_data['width']	= intval( get_option( "{$attr['size']}_size_w") );
		$size_data['height']= intval( get_option( "{$attr['size']}_size_h") );
		// Not sure how this will behave if cropped is false (autoloaded option not added)
		$size_data['crop']	= get_option( "{$attr['size']}_crop" ) ? get_option( "{$attr['size']}_crop" ) : false;
	}
	// Size array from global registered additional/custom sizes array
	else 
	{
		$size_data = $_wp_additional_image_sizes[ $attr['size'] ];
	}

	// Retrieve image width & height
	$img_info	= @getimagesize( $attr['url'] );

	// Calculate final dimensions - if "crop" was set to true during add_image_size(), the img will get ... cropped
	$end_sizes	= image_resize_dimensions( $img_info[0], $img_info[1], $size_data['width'], $size_data['height'], $size_data['crop'] );

	// defaults to px units - can't get changed, as applying units is not possible
	$hwstring	= ' '.trim( image_hwstring( $end_sizes[4], $end_sizes[5] ) );

	// Attributes:
	// Not made required as users tend to do funky things (...and lock screen readers out)
	$attr['alt'] = $attr['alt'] ? ' alt="'.esc_attr( $attr['alt'] )."'" : '';

	if ( ! $attr['title'] )
	{
		$mime = explode( "/", $img_info['mime'] );
		$attr['title'] = sprintf( __('default image of type: %1$s'), $mime[1] );
	}
	$attr['title'] = $attr['title'] ? ' title="'.esc_attr( $attr['title'] ).'"' : '';

	$attr['classes'] = "wp-img-default ".esc_attr( $attr['classes'] ? $attr['classes'] : '' );
	$attr['align'] = $attr['align'] ? "align".esc_attr( $attr['align'] ) : '';
	$attr['size'] = "size-".esc_attr( $attr['size'] );

	// Allow filtering of the default attributes
	$attributes	= apply_filters( 'wp_default_img_attr', $attr );

	// Build class attribute, considering that maybe some attribute was unset via the filter
	$classes  = ' class="';
	$classes .= 'wp-img-default'.esc_attr( $attr['classes'] ? ' '.$attr['classes'] : '' );
	$classes .= $attr['align'] ? ' '.esc_attr( $attr['align'] ) : '';
	$classes .= $attr['size'] ? ' '.esc_attr( $attr['size'] ).'" ' : '" ';

	$url		= trim( $attr['url'] );
	$image		= "<img src='{$url}'{$hwstring}{$classes}".$attr['alt'].$attr['title']."' />";
	$image 		= apply_filters( 'wp_default_img', $image );

	if ( ! $attr['echo'] )
		return $image;

	return print $image;
}