File: /home/adventp/www/wp-content/themes/brooklyn/inc/ut-theme-postformat-tools.php
<?php
if( !function_exists('the_post_format_gallery_content') ) {
function the_post_format_gallery_content( $suppress_script = false ) {
echo get_post_format_gallery_content( $suppress_script );
}
}
if( !function_exists('get_post_format_gallery_content') ) {
function get_post_format_gallery_content( $suppress_script = true ) {
ob_start();
/* check if user wants to display the ut gallery */
if( ot_get_option( 'blog_use_ut_gallery', 'on' ) == 'on' ) {
ut_flex_slider( get_the_ID(), false, $suppress_script );
} else {
$content = get_the_content();
$pattern = get_shortcode_regex();
preg_match( "/$pattern/s", $content, $match );
$shortcode = ( isset( $match[0] ) && !empty( $match[0] ) ) ? $match[0] : '';
echo do_shortcode( $shortcode );
}
return ob_get_clean();
}
}
class UT_Flex_Slider {
private $postID;
private $shortcode;
private $addScript;
function __construct( $postID, $shortcode = false, $suppress_script = false ) {
$this->postID = $postID;
$this->shortcode = $shortcode;
$this->addScript = false;
$this->flex_slider();
if( !$suppress_script ) {
add_action('ut_after_java_footer_hook', array($this, 'flex_slider_script'));
}
}
public function flex_slider() {
$flex_slider = NULL;
/* get all necessary image ID's */
$ut_gallery_images = ut_extract_gallery_images_ids();
/* start output */
if ( !empty( $ut_gallery_images ) && is_array( $ut_gallery_images ) ) :
$flex_slider = '<div class="ut-gallery-wrap"><div class="ut-gallery-slider flexslider" id="gallery-slider-' . $this->postID .'"><ul class="slides">';
$max = !is_single() ? 3 : false;
$counter = 0;
foreach ( $ut_gallery_images as $ID => $imagedata ) :
if( $max && $counter == $max ) {
break;
}
if( isset( $imagedata->guid ) && !empty($imagedata->guid) ) {
$image = ut_get_image_id( $imagedata->guid ); // fallback to older wp versions
} else {
if( $this->shortcode ) {
$image = $imagedata;
} else {
$image = $imagedata;
}
}
if( !empty( $image ) ) :
$flex_slider .= '<li>';
if( $this->shortcode ) {
$thumbnail = $image;
} else {
global $is_grid_blog;
if( apply_filters( 'unite_blog_layout', ot_get_option('ut_blog_layout', 'mixed-grid') ) == 'mixed-grid' ) {
$thumbnail = UT_Adaptive_Image::create( $image, array( '720' , '600' ), true );
} elseif( apply_filters( 'unite_blog_layout', ot_get_option('ut_blog_layout', 'mixed-grid') ) == 'grid' || $is_grid_blog ) {
$thumbnail = UT_Adaptive_Image::create( $image, array( '720' , '600' ), true );
} elseif( apply_filters( 'unite_blog_layout', ot_get_option('ut_blog_layout', 'mixed-grid') ) == 'list-grid' ) {
$thumbnail = UT_Adaptive_Image::create( $image, array( '756' , '700' ), true );
} else {
$thumbnail = UT_Adaptive_Image::create( $image, array( '1280' , '720' ), true );
}
}
if( !is_single() ) {
$flex_slider .= '<a title="' . sprintf(esc_html__('Permanent Link to %s', 'unitedthemes'), get_the_title() ) . '" href="' . get_permalink( $this->postID ) . '">';
}
$flex_slider .= '<figure class="ut-post-thumbnail-caption-wrap">';
$flex_slider .= $thumbnail;
if( get_post( $imagedata )->post_excerpt ) {
$flex_slider .= '<figcaption class="ut-post-thumbnail-caption">' . get_post( $imagedata )->post_excerpt . '</figcaption>';
}
$flex_slider .= '</figure>';
if( !is_single() ) {
$flex_slider .= '</a>';
}
$flex_slider .= '</li>';
$counter++;
endif;
endforeach;
$flex_slider .= '</ul></div></div>';
endif;
$allowed_html = wp_kses_allowed_html( 'post' );
echo wp_kses( $flex_slider, $allowed_html );
$this->addScript = true;
}
function flex_slider_script() {
if( !$this->addScript ) {
return;
}
ob_start();
?>
<script type="text/javascript">
/* <![CDATA[ */
(function($){
"use strict";
$(window).on("load", function () {
$("#gallery-slider-<?php echo esc_attr($this->postID); ?>").ut_require_js({
plugin: "flexslider",
source: "flexslider",
callback : function ( element ) {
element.flexslider({
controlNav: false,
animationLoop: true,
slideshow: true,
smoothHeight: true,
start: function(){
$("#gallery-slider-<?php echo esc_attr($this->postID); ?>").addClass("loaded");
}
});
}
});
});
})(jQuery);
/* ]]> */
</script>
<?php
echo UT_JS_Minifier::minify( ob_get_clean() );
}
}
if( !function_exists('ut_flex_slider') ) {
function ut_flex_slider( $postID , $shortcode = false, $suppress_script = false ) {
new UT_Flex_Slider( $postID, $shortcode, $suppress_script );
}
}
/*
|--------------------------------------------------------------------------
| Helper Function : Extract Attachment ID's from gallery shortcode
|--------------------------------------------------------------------------
*/
if ( !function_exists( 'ut_extract_gallery_images_ids' ) ) {
function ut_extract_gallery_images_ids() {
global $post;
// search for gallery shortcode
preg_match_all( "/(.?)\[(ut_image_gallery)\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?(.?)/s", $post->post_content, $matches );
if( isset( $matches[0][0] ) && strpos($matches[0][0], 'ut_image_gallery') !== false ) {
preg_match_all('/gallery="([^"]*)"/i', $matches[0][0], $images);
return isset( $images[1][0] ) ? explode( ',', $images[1][0] ) : false;
}
// search for gallery shortcode
preg_match_all( "/(.?)\[(gallery)\b(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?(.?)/s", $post->post_content, $matches );
if( isset( $matches[0][0] ) && strpos($matches[0][0], 'gallery') !== false ) {
preg_match_all('!\d+!', $matches[0][0], $images);
return isset( $images[0] ) ? $images[0] : false;
}
}
}
/*
|--------------------------------------------------------------------------
| Quote Post
|--------------------------------------------------------------------------
*/
if( !function_exists('post_format_quote_content') ) {
function post_format_quote_content() {
echo get_post_format_quote_content();
}
}
if( !function_exists('get_post_format_quote_content') ) {
function get_post_format_quote_content() {
global $post;
$quote = get_post_meta( $post->ID, '_format_quote', true );
$name = get_post_meta( $post->ID, '_format_quote_source_name', true );
$content = false;
if( $quote || $name ) {
$content .= '<blockquote class="ut-quote-post-block"><p>';
if( $quote ) {
$content .= $quote . '<br>';
}
if( $name ) {
$content .='<cite>' . $name . '</cite>';
}
$content .= '</p></blockquote>';
}
return $content;
}
}
/*
|--------------------------------------------------------------------------
| Link Post
|--------------------------------------------------------------------------
*/
if( !function_exists('post_format_link_content') ) {
function post_format_link_content() {
echo get_post_format_link_content();
}
}
if( !function_exists('get_post_format_link_content') ) {
function get_post_format_link_content() {
global $post;
/* needed variables */
$urlfound = false;
$url = '';
$content = get_the_content();
/* retrieve meta data */
$value = get_post_meta( $post->ID, '_format_link_url', true );
/* check if there is an url inside the meta */
if( !empty( $value ) ) {
$url = $value;
/* set url found */
$urlfound = true;
}
/* there is no url inside the meta , lets check the content*/
if( !$urlfound ) {
/* try to fetch a link */
$url = post_format_url_grabber($content);
}
return ( !empty($url) ) ? ut_add_http($url) : '#' ;
}
}
/*
|--------------------------------------------------------------------------
| Video Post
|--------------------------------------------------------------------------
*/
if( !function_exists('post_format_video_content') ) {
function post_format_video_content( $blog_layout = '', $featured_image = '') {
echo get_post_format_video_content( $blog_layout, $featured_image );
}
}
if( !function_exists('get_post_format_video_content') ) {
function get_post_format_video_content( $blog_layout = '', $featured_image = '' ) {
global $post;
/* needed variables */
$videofound = false;
/* retrieve meta data */
$value = get_post_meta( $post->ID, '_format_video_embed', true );
/* check if there is a video shortcode inside the meta */
if( !empty( $value ) ) {
/* set video found */
$videofound = true;
}
$location = 'lightbox';
if( is_singular('post') ) {
$location = 'inline';
}
/* we have a meta value , lets check its syntax and return it */
if( $videofound ) {
$video = wp_extract_urls( $value );
if( !empty( $video[0] ) ) {
return do_shortcode('[ut_video_player url="' . esc_url( $video[0] ) . '" location="' . $location . '" poster="' . $featured_image .'" blog_layout="' . esc_attr( $blog_layout ) . '"]');
}
}
}
}
/*
|--------------------------------------------------------------------------
| Audio Post
|--------------------------------------------------------------------------
*/
if( !function_exists('post_format_audio_content') ) {
function post_format_audio_content() {
echo get_post_format_audio_content();
}
}
if( !function_exists('get_post_format_audio_content') ) {
function get_post_format_audio_content() {
global $post;
/* needed variables */
$audiofound = false;
$shortcode = false;
/* retrieve meta data */
$value = get_post_meta( $post->ID, '_format_audio_embed', true );
/* check if there is an audio shortcode inside the meta */
if( !empty( $value ) ) {
/* set audio found */
$audiofound = true;
}
/* there is no audio shortcode inside the meta, so lets check the regular content */
if( !$audiofound ) {
$content = get_the_content();
$audio = preg_match_all( '#\[audio\s*.*?\]#s', $content, $matches );
/* check if we have found an audio shortcode */
if( !empty($matches[0][0]) ) {
$value = $matches[0][0];
$shortcode = true;
}
}
if ( is_numeric( $value ) ) {
$audio = wp_get_attachment_url( $value );
return do_shortcode( sprintf( '[audio src="%s"]', $audio ) );
} elseif ( preg_match( '/' . get_shortcode_regex() . '/s', $value ) ) {
return do_shortcode( $value );
} elseif ( ! preg_match( '#<[^>]+>#', $value ) && !$shortcode ) {
return do_shortcode("[audio $value]");
} else {
return $value;
}
}
}
/*
|--------------------------------------------------------------------------
| helper function for image post
|--------------------------------------------------------------------------
*/
if( !function_exists('get_post_format_image_url') ) {
function get_post_format_image_url() {
/* needed variables */
$imagefound = false;
$image = '';
/* retrieve meta data */
$value = ut_return_meta('postformat');
/* check if we have a image inside the default wordpress meta */
if( !empty($value['_format_image']) ) {
return $value['_format_image'];
}
/* there is no image inside the meta, so lets check the post has image childs */
if( !$imagefound ) {
/* get an array of images */
$images = get_children( array( 'post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image', 'numberposts' => -1 ) );
/* run trough images and send back the first image we have found */
foreach( $images as $image ) {
/* we check if we are an image already aotherwise set it*/
if( !$imagefound ) {
return $image->guid;
}
}
}
/* there are still no images, so lets check for linked images inside the content */
if( !$imagefound ) {
$content = get_the_content();
$image = post_format_url_grabber($content);
if( !empty($image) ) {
return $image;
}
}
}
}
/*
|--------------------------------------------------------------------------
| helper function to extract image url
|--------------------------------------------------------------------------
*/
if(!function_exists('post_format_url_grabber')) {
function post_format_url_grabber( $string ) {
$imageurl = !empty( $string ) ? preg_match_all('@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@', $string , $match) : '';
return isset($match[0][0]) ? ut_add_http($match[0][0]) : '';
}
}
if(!function_exists('ut_add_http')) {
function ut_add_http($url) {
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
$url = "http://" . $url;
}
return esc_url_raw($url);
}
}
if(!function_exists('ut_remove_http')) {
function ut_remove_http($url) {
$url = preg_replace("~^(?:f|ht)tps?://~i" , '' , $url);
return $url;
}
}
/*
|--------------------------------------------------------------------------
| helper function : turn embed url into regular url for lightbox
|--------------------------------------------------------------------------
*/
if ( !function_exists( 'ut_generate_lightbox_url' ) ) {
function ut_generate_lightbox_url($url) {
$spliturl = explode("/", $url);
if(substr_count($url,"youtube")) {
$finalurl = 'http://www.youtube.com/watch?v='.$spliturl[4];
} elseif(substr_count($url,"vimeo")) {
$finalurl = 'http://vimeo.com/'.$spliturl[4];
} else {
$finalurl = 'unknown';
}
return $finalurl;
}
}
/*
|--------------------------------------------------------------------------
| grab exif data from wp attachment
|--------------------------------------------------------------------------
*/
if ( !function_exists( 'ut_grab_exif_data' ) ) {
function ut_grab_exif_data($post_ID ) {
global $id, $post;
if ( !isset($post_ID) || '' == $post_ID )
return FALSE;
$meta = wp_get_attachment_metadata($post_ID, FALSE);
$exif = '';
/* timestamp */
if ( $meta['image_meta']['created_timestamp'] ) :
$exif .= '<li class="exif-date">';
$exif .= '<span>' . __( 'Photo Taken: ', 'unitedthemes' ) . '</span>';
$exif .= date( "d-M-Y H:i:s", $meta['image_meta']['created_timestamp'] );
$exif .= '</li>';
endif;
/* copyright */
if ( $meta['image_meta']['copyright'] ) :
$exif .= '<li class="exif-copyright">';
$exif .= '<span>' .__( 'Copyright: ', 'unitedthemes' ) . '</span>';
$exif .= $meta['image_meta']['copyright'];
$exif .= '</li>';
endif;
/* photographer */
if ( $meta['image_meta']['credit'] ) :
$exif .= '<li class="exif-credit">';
$exif .= '<span>' . __( 'Credit: ', 'unitedthemes' ) . '</span>';
$exif .= $meta['image_meta']['credit'] ;
$exif .= '</li>';
endif;
/* Image Title */
if ( $meta['image_meta']['title'] ) :
$exif .= '<li class="exif-title">';
$exif .= '<span>' . __( 'Title: ', 'unitedthemes' ) . '</span>';
$exif .= $meta['image_meta']['title'];
$exif .= '</li>';
endif;
/* Caption */
if ( $meta['image_meta']['caption'] ) :
$exif .= '<li class="exif-caption">';
$exif .= '<span>' . __( 'Caption: ', 'unitedthemes' ) . '</span>';
$exif .= $meta['image_meta']['caption'];
$exif .= '</li>';
endif;
/* Camera */
if ( $meta['image_meta']['camera'] ) :
$exif .= '<li class="exif-camera">';
$exif .= '<span>' . __( 'Camera: ', 'unitedthemes' ) . '</span>';
$exif .= $meta['image_meta']['camera'];
$exif .= '</li>';
endif;
/* Focal Length */
if ( $meta['image_meta']['focal_length'] ) :
$exif .= '<li class="exif-focal-length">';
$exif .= '<span>' . __( 'Focal Length: ', 'unitedthemes' ) . '</span>';
$exif .= $meta['image_meta']['focal_length'];
$exif .= __( 'mm', 'unitedthemes' );
$exif .= '</li>';
endif;
/* Aperture */
if ( $meta['image_meta']['aperture'] ) :
$exif .= '<li class="exif-aperture">';
$exif .= '<span>' . __( 'Aperture: ', 'unitedthemes' ) . '</span>';
$exif .= $meta['image_meta']['aperture'];
$exif .= '</li>';
endif;
/* ISO */
if ( $meta['image_meta']['iso'] ) :
$exif .= '<li class="exif-iso">';
$exif .= '<span>' . __( 'ISO: ', 'unitedthemes' ) . '</span>';
$exif .= $meta['image_meta']['iso'];
$exif .= '</li>';
endif;
/* Shutters Speed*/
if ( $meta['image_meta']['shutter_speed'] ) :
$exif .= '<li class="exif-shutter-speed">';
$exif .= '<span>' . __( 'Shutter Speed: ', 'unitedthemes' ) . '</span>';
$exif .= number_format($meta['image_meta']['shutter_speed'], 3);
$exif .= __( 'seconds', 'unitedthemes' );
$exif .= '</li>';
endif;
return $exif;
}
}
if ( !function_exists( 'ut_simple_exif' ) ) {
function ut_simple_exif($post_ID ) {
echo get_ut_simple_exif($post_ID );
}
}
if ( !function_exists( 'get_ut_simple_exif' ) ) {
function get_ut_simple_exif($post_ID ) {
return ut_grab_exif_data($post_ID );
}
}
if ( !function_exists( 'ut_get_attachment_id_from_url' ) ) {
function ut_get_attachment_id_from_url( $attachment_url = '' ) {
global $wpdb;
$attachment_id = false;
// If there is no url, return.
if ( '' == $attachment_url )
return;
// Get the upload directory paths
$upload_dir_paths = wp_upload_dir();
// Make sure the upload path base directory exists in the attachment URL, to verify that we're working with a media library image
if ( false !== strpos( $attachment_url, $upload_dir_paths['baseurl'] ) ) {
// If this is the URL of an auto-generated thumbnail, get the URL of the original image
$attachment_url = preg_replace( '/-\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i', '', $attachment_url );
// Remove the upload path base directory from the attachment URL
$attachment_url = str_replace( $upload_dir_paths['baseurl'] . '/', '', $attachment_url );
// Finally, run a custom database query to get the attachment ID from the modified attachment URL
$attachment_id = $wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url ) );
}
return $attachment_id;
}
}