Current File : /home/kelaby89/sergio-cuchi.tattoo/wp-content/plugins/so-widgets-bundle/base/inc/attachments.php |
<?php
/**
* Get the attachment src, but also have the option of getting the fallback URL.
*
* @param bool|false $fallback
*
* @return array|bool|false
*/
function siteorigin_widgets_get_attachment_image_src( $attachment, $size, $fallback = false, $fallback_size = array() ) {
if ( empty( $attachment ) && ! empty( $fallback ) ) {
if ( ! empty( $fallback_size ) ) {
extract( $fallback_size );
} else {
$url = parse_url( $fallback );
if (
! empty( $url['fragment'] ) &&
preg_match(
'/^([0-9]+)x([0-9]+)$/',
$url['fragment'],
$matches
) ) {
$width = (int) $matches[1];
$height = (int) $matches[2];
} else {
$width = 0;
$height = 0;
}
}
// TODO, try get better values than 0 for width and height
return array( $fallback, $width, $height, false );
}
if ( ! empty( $attachment ) ) {
return wp_get_attachment_image_src( $attachment, $size );
}
return false;
}
function siteorigin_widgets_get_attachment_image( $attachment, $size, $fallback, $atts = array() ) {
if ( ! empty( $attachment ) ) {
return wp_get_attachment_image( $attachment, $size, false, $atts );
} else {
$src = siteorigin_widgets_get_attachment_image_src( $attachment, $size, $fallback );
if ( empty( $src[0] ) ) {
return '';
}
if ( function_exists( 'wp_get_attachment_image_srcset' ) ) {
$atts['srcset'] = wp_get_attachment_image_srcset( $attachment, $size );
}
if ( function_exists( 'wp_get_attachment_image_sizes' ) ) {
$atts['sizes'] = wp_get_attachment_image_sizes( $attachment, $size );
}
$atts['src'] = $src[0];
if ( ! empty( $src[1] ) ) {
$atts['width'] = $src[1];
}
if ( ! empty( $src[2] ) ) {
$atts['height'] = $src[2];
}
$return = '<img ';
foreach ( $atts as $id => $val ) {
$return .= siteorigin_sanitize_attribute_key( $id ) . '="' . esc_attr( $val ) . '" ';
}
$return .= '>';
return $return;
}
}
$siteorigin_image_sizes = array();
/**
* Get size information for all currently-registered image sizes.
*
* This function retrieves the configuration for all currently-registered image sizes.
* It includes both the hardcoded sizes (thumbnail, medium, medium_large, large) and
* any additional image sizes registered by themes or plugins. The resulting sizes
* array is stored in the $siteorigin_image_sizes global variable for caching
* purposes.
*
* From codex example here: https://codex.wordpress.org/Function_Reference/get_intermediate_image_sizes
*
* @global array $_wp_additional_image_sizes
* @global array $siteorigin_image_sizes
* @uses get_intermediate_image_sizes()
*
* @return array $sizes Data for all currently-registered image sizes.
*/
function siteorigin_widgets_get_image_sizes() {
global $_wp_additional_image_sizes, $siteorigin_image_sizes;
if ( ! empty( $siteorigin_image_sizes ) ) {
return $siteorigin_image_sizes;
}
$sizes = array();
$intermediate_sizes = get_intermediate_image_sizes();
$hardcoded_sizes = array(
'thumbnail',
'medium',
'medium_large',
'large',
);
foreach ( $intermediate_sizes as $_size ) {
if ( in_array( $_size, $hardcoded_sizes ) ) {
$sizes[ $_size ] = array(
'width' => (int) get_option( $_size . '_size_w' ),
'height' => (int) get_option( $_size . '_size_h' ),
'crop' => (bool) get_option( $_size . '_crop' ),
);
continue;
}
if ( isset( $_wp_additional_image_sizes[ $_size ] ) ) {
$sizes[ $_size] = $_wp_additional_image_sizes[ $_size ];
}
}
$siteorigin_image_sizes = $sizes;
return $sizes;
}
/**
* Get the image size configuration.
*
* This function retrieves the configuration for the specified image size.
* It returns null if the size is not defined, or if the sizes array is empty.
* If the size identifier is 'thumb', we override it to 'thumbnail' to match the
* current WordPress core image size.
*
* @param string $size - The image size identifier.
*
* @return array|null - The configuration array for the image size, or null if not found.
*/
function siteorigin_widgets_get_image_size( $size ) {
$sizes = siteorigin_widgets_get_image_sizes();
// Previously, we stored the thumbnail size as 'thumb'. It's now 'thumbnail'.
if ( $size === 'thumb' ) {
$size = 'thumbnail';
}
if (
empty( $sizes ) ||
! is_string( $size ) ||
! isset( $sizes[ $size ] )
) {
return null;
}
return $sizes[ $size ];
}