HEX
Server: Apache
System: Linux webd001.cluster127.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: mciraet (192513)
PHP: 8.2.31
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/mciraet/www/wp-content/themes/movedo/includes/grve-media-functions.php
<?php

/*
 *	Media functions
 *
 * 	@version	1.0
 * 	@author		Greatives Team
 * 	@URI		http://greatives.eu
 */


 /**
 * Generic function that prints a slider/carousel navigation
 */
if ( !function_exists('movedo_grve_element_navigation') ) {
	function movedo_grve_element_navigation( $navigation_type = 0, $navigation_color = 'dark' ) {

		$output = '';

		if ( 0 != $navigation_type ) {

			switch( $navigation_type ) {

				case '2':
					$icon_nav_prev = 'grve-icon-nav-left';
					$icon_nav_next = 'grve-icon-nav-right';
					break;
				case '3':
					$icon_nav_prev = 'grve-icon-nav-left-small';
					$icon_nav_next = 'grve-icon-nav-right-small';
					break;
				case '4':
					$icon_nav_prev = 'grve-icon-nav-left';
					$icon_nav_next = 'grve-icon-nav-right';
					break;
				default:
					$navigation_type = '1';
					$icon_nav_prev = 'grve-icon-nav-left-small';
					$icon_nav_next = 'grve-icon-nav-right-small';
					break;
			}

			$output .= '<div class="grve-carousel-navigation grve-' . esc_attr( $navigation_color ) . ' grve-navigation-' . esc_attr( $navigation_type ) . '">';
			$output .= '<div class="grve-carousel-buttons">';
			$output .= '<div class="grve-carousel-prev">';
			$output .= '<i class="' . esc_attr( $icon_nav_prev ) . '"></i>';
			$output .= '<span class="screen-reader-text">' . esc_html( 'Previous', 'movedo' ) . '</span>';
			$output .= '</div>';
			$output .= '<div class="grve-carousel-next">';
			$output .= '<i class="' . esc_attr( $icon_nav_next ) . '"></i>';
			$output .= '<span class="screen-reader-text">' . esc_html( 'Next', 'movedo' ) . '</span>';
			$output .= '</div>';
			$output .= '</div>';
			$output .= '</div>';
		}

		return 	$output;
	}
}

/**
 * Generic function that prints a slider or gallery
 */
if ( !function_exists('movedo_grve_print_gallery_slider') ) {
	function movedo_grve_print_gallery_slider( $gallery_mode, $slider_items , $image_size_slider = 'movedo-grve-large-rect-horizontal', $extra_class = "") {

		if ( empty( $slider_items ) ) {
			return;
		}

		$image_link_mode = "";

		$image_size_gallery_thumb = 'movedo-grve-small-rect-horizontal';
		if( 'gallery-vertical' == $gallery_mode ) {
			$image_size_gallery_thumb = $image_size_slider;
		}

		if ( 'gallery' == $gallery_mode || '' == $gallery_mode ) {

			$columns_large_screen = 3;
			$columns = 3;
			$columns_tablet_landscape  = 2;
			$columns_tablet_portrait  = 2;
			$columns_mobile  = 1;
			$gutter_size = 30;
			if ( is_singular( 'portfolio' ) ) {
				$portfolio_media_fullwidth = movedo_grve_post_meta( '_movedo_grve_portfolio_media_fullwidth' );
				if ( 'yes' == $portfolio_media_fullwidth ) {
					$columns_large_screen = 4;
					$columns = 4;
				}
				$image_link_mode = movedo_grve_post_meta( '_movedo_grve_portfolio_media_image_link_mode' );
			}

			$wrapper_attributes = array();

			$gallery_classes = array( 'grve-gallery' , 'grve-isotope', 'grve-with-gap' );
			if( empty( $image_link_mode ) ){
				$gallery_classes[] = 'grve-gallery-popup';
			}
			$gallery_class_string = implode( ' ', $gallery_classes );

			$wrapper_attributes[] = 'class="' . esc_attr( $gallery_class_string ) . '"';
			$wrapper_attributes[] = 'data-gutter-size="' . esc_attr( $gutter_size ) . '"';
			$wrapper_attributes[] = 'data-columns-large-screen="' . esc_attr( $columns_large_screen ) . '"';
			$wrapper_attributes[] = 'data-columns="' . esc_attr( $columns ) . '"';
			$wrapper_attributes[] = 'data-columns-tablet-landscape="' . esc_attr( $columns_tablet_landscape ) . '"';
			$wrapper_attributes[] = 'data-columns-tablet-portrait="' . esc_attr( $columns_tablet_portrait ) . '"';
			$wrapper_attributes[] = 'data-columns-mobile="' . esc_attr( $columns_mobile ) . '"';
			$wrapper_attributes[] = 'data-layout="fitRows"';
	?>
			<div <?php echo implode( ' ', $wrapper_attributes ); ?>>
				<div class="grve-isotope-container">
	<?php

			foreach ( $slider_items as $slider_item ) {

				$media_id = $slider_item['id'];
				$full_src = wp_get_attachment_image_src( $media_id, 'movedo-grve-fullscreen' );
				$image_full_url = $full_src[0];

				$caption = get_post_field( 'post_excerpt', $media_id );
				$figcaption = '';
				if	( !empty( $caption ) ) {
					$figcaption = wptexturize( $caption );
				}
	?>
					<div class="grve-isotope-item grve-hover-item grve-hover-style-none">
						<div class="grve-isotope-item-inner">
						<?php if( empty( $image_link_mode ) ){ ?>
							<figure class="grve-image-hover grve-zoom-none">
								<a class="grve-item-url" data-title="<?php echo esc_attr( $figcaption ); ?>" href="<?php echo esc_url( $image_full_url ); ?>"></a>
								<div class="grve-hover-overlay grve-bg-light grve-opacity-30"></div>
								<div class="grve-media">
									<?php echo wp_get_attachment_image( $media_id, $image_size_gallery_thumb ); ?>
								</div>
							</figure>
						<?php } else { ?>
							<figure class="grve-zoom-none">
								<div class="grve-media">
									<?php echo wp_get_attachment_image( $media_id, $image_size_gallery_thumb ); ?>
								</div>
							</figure>
						<?php } ?>
						</div>
					</div>
	<?php

			}
	?>
				</div>
			</div>
	<?php


		} elseif ( 'gallery-vertical' == $gallery_mode ) {

			if ( is_singular( 'portfolio' ) ) {
				$image_link_mode = movedo_grve_post_meta( '_movedo_grve_portfolio_media_image_link_mode' );
			}
	?>
			<div class="grve-media">
				<ul class="grve-post-gallery grve-post-gallery-popup <?php echo esc_attr( $extra_class ); ?>">
	<?php

			foreach ( $slider_items as $slider_item ) {

				$media_id = $slider_item['id'];
				$full_src = wp_get_attachment_image_src( $media_id, 'movedo-grve-fullscreen' );
				$image_full_url = $full_src[0];

				$caption = get_post_field( 'post_excerpt', $media_id );
				$figcaption = '';
				if	( !empty( $caption ) ) {
					$figcaption = wptexturize( $caption );
				}

				if( empty( $image_link_mode ) ){
					echo '<li class="grve-image-hover">';
					echo '<a data-title="' . esc_attr( $figcaption ) . '" href="' . esc_url( $image_full_url ) . '">';
					echo wp_get_attachment_image( $media_id, $image_size_gallery_thumb );
					echo '</a>';
					echo '</li>';
				} else {
					echo '<li>';
					echo wp_get_attachment_image( $media_id, $image_size_gallery_thumb );
					echo '</li>';
				}

			}
	?>
				</ul>
			</div>
	<?php

		} else {

			$slider_settings = array();
			if ( is_singular( 'post' ) || is_singular( 'portfolio' ) ) {
				if ( is_singular( 'post' ) ) {
					$slider_settings = movedo_grve_post_meta( '_movedo_grve_post_slider_settings' );
				} else {
					$slider_settings = movedo_grve_post_meta( '_movedo_grve_portfolio_slider_settings' );
				}
			}
			$slider_speed = movedo_grve_array_value( $slider_settings, 'slideshow_speed', '2500' );
			$slider_dir_nav = movedo_grve_array_value( $slider_settings, 'direction_nav', '1' );
			$slider_dir_nav_color = movedo_grve_array_value( $slider_settings, 'direction_nav_color', 'dark' );

			$image_atts = array();
			if( 'blog-slider' == $gallery_mode ) {
				$image_atts = movedo_grve_get_blog_image_atts();
			}

	?>
			<div class="grve-media clearfix">
				<div class="grve-element grve-slider grve-layout-1">
					<div class="grve-carousel-wrapper grve-<?php echo esc_attr( $slider_dir_nav_color ); ?>">
						<?php echo movedo_grve_element_navigation( $slider_dir_nav, $slider_dir_nav_color ); ?>
						<div class="grve-slider-element " data-slider-speed="<?php echo esc_attr( $slider_speed ); ?>" data-slider-pause="yes" data-slider-autoheight="no">
	<?php
							foreach ( $slider_items as $slider_item ) {
								$media_id = $slider_item['id'];
								echo '<div class="grve-slider-item">';
								echo wp_get_attachment_image( $media_id, $image_size_slider, '', $image_atts );
								echo '</div>';

							}
	?>
						</div>
					</div>
				</div>
			</div>
	<?php
		}
	}
}

/**
 * Generic function that prints video settings ( HTML5 )
 */

if ( !function_exists( 'movedo_grve_print_media_video_settings' ) ) {
	function movedo_grve_print_media_video_settings( $video_settings ) {
		$video_attr = '';

		if ( !empty( $video_settings ) ) {

			$video_poster = movedo_grve_array_value( $video_settings, 'poster' );
			$video_preload = movedo_grve_array_value( $video_settings, 'preload', 'metadata' );

			if( 'yes' == movedo_grve_array_value( $video_settings, 'controls' ) ) {
				$video_attr .= ' controls';
			}
			if( 'yes' == movedo_grve_array_value( $video_settings, 'loop' ) ) {
				$video_attr .= ' loop="loop"';
			}
			if( 'yes' ==  movedo_grve_array_value( $video_settings, 'muted' ) ) {
				$video_attr .= ' muted="muted"';
			}
			if( 'yes' == movedo_grve_array_value( $video_settings, 'autoplay' ) ) {
				$video_attr .= ' autoplay="autoplay"';
			}
			if( 'yes' == movedo_grve_array_value( $video_settings, 'playsinline' ) ) {
				$video_attr .= ' playsinline';
			}
			if( !empty( $video_poster ) ) {
				$video_attr .= ' poster="' . esc_url( $video_poster ) . '"';
			}
			$video_attr .= ' preload="' . esc_attr( $video_preload ) . '"';

		}
		return $video_attr;
	}
}

/**
 * Generic function that prints a video ( Embed or HTML5 )
 */
if ( !function_exists('movedo_grve_print_media_video') ) {
	function movedo_grve_print_media_video( $video_mode, $video_webm, $video_mp4, $video_ogv, $video_embed, $video_poster = '' ) {
		global $wp_embed;

		if( empty( $video_mode ) ) {
			if ( !empty( $video_embed ) ) {
				echo '<div class="grve-media">' . $wp_embed->run_shortcode( '[embed]' . $video_embed . '[/embed]' ) . '</div>';
			}

		} elseif( 'code' == $video_mode ) {
			if ( !empty( $video_embed ) ) {
				echo '<div class="grve-media">' . $video_embed . '</div>';
			}
		} else {
			if ( !empty( $video_webm ) || !empty( $video_mp4 ) || !empty( $video_ogv ) ) {

				$video_settings = array(
					'controls' => 'yes',
					'poster' => $video_poster,
				);
				$video_settings = apply_filters( 'movedo_grve_media_video_settings', $video_settings );

				echo '<div class="grve-media">';
				echo '<video ' . movedo_grve_print_media_video_settings( $video_settings ) . ' >';

				if ( !empty( $video_webm ) ) {
					echo '<source src="' . esc_url( $video_webm ) . '" type="video/webm">';
				}
				if ( !empty( $video_mp4 ) ) {
					echo '<source src="' . esc_url( $video_mp4 ) . '" type="video/mp4">';
				}
				if ( !empty( $video_ogv ) ) {
					echo '<source src="' . esc_url( $video_ogv ) . '" type="video/ogg">';
				}
				echo '</video>';
				echo '</div>';

			}
		}
	}
}

if ( !function_exists('movedo_grve_get_image_size') ) {
	function movedo_grve_get_image_size( $image_mode = 'large' ) {

		switch( $image_mode ) {
			case 'thumbnail':
				$image_size = 'thumbnail';
			break;
			case 'medium':
				$image_size = 'medium';
			break;
			case 'medium_large':
				$image_size = 'medium_large';
			break;
			case 'large':
				$image_size = 'large';
			break;
			case 'square':
				$image_size = 'movedo-grve-small-square';
			break;
			case 'landscape':
				$image_size = 'movedo-grve-small-rect-horizontal';
			break;
			case 'landscape-medium':
				$image_size = 'movedo-grve-medium-rect-horizontal';
			break;
			case 'portrait':
				$image_size = 'movedo-grve-small-rect-vertical';
			break;
			case 'portrait-medium':
				$image_size = 'movedo-grve-medium-rect-vertical';
			break;
			case 'landscape-large-wide':
				$image_size = 'movedo-grve-large-rect-horizontal';
			break;
			case 'fullscreen':
			case 'extra-extra-large':
				$image_size = 'movedo-grve-fullscreen';
			break;
			case 'full':
				$image_size = 'full';
			break;
			default:
				$image_size = 'large';
			break;
		}

		return $image_size;

	}
}

if ( !function_exists('movedo_grve_get_fallback_image_attr') ) {
	function movedo_grve_get_fallback_image_attr( $size = 'movedo-grve-small-rect-horizontal' ) {

		$image_atts = array();

		switch( $size ) {
			case 'thumbnail':
				$image_atts['width'] = "150";
				$image_atts['height'] = "150";
			break;
			case 'medium':
				$image_atts['width'] = "300";
				$image_atts['height'] = "300";
			break;
			case 'large':
				$image_atts['width'] = "1024";
				$image_atts['height'] = "768";
			break;
			case 'movedo-grve-small-square':
				$image_atts['width'] = "560";
				$image_atts['height'] = "560";
			break;
			case 'movedo-grve-medium-square':
				$image_atts['width'] = "900";
				$image_atts['height'] = "900";
			break;
			case 'movedo-grve-small-rect-horizontal':
				$image_atts['width'] = "560";
				$image_atts['height'] = "420";
			break;
			case 'movedo-grve-medium-rect-horizontal':
				$image_atts['width'] = "900";
				$image_atts['height'] = "675";
			break;
			case 'movedo-grve-small-rect-vertical':
				$image_atts['width'] = "560";
				$image_atts['height'] = "745";
			break;
			case 'movedo-grve-medium-rect-vertical':
				$image_atts['width'] = "840";
				$image_atts['height'] = "1120";
			break;
			case 'movedo-grve-fullscreen':
			default:
				$size = 'full';
				$image_atts['width'] = "1920";
				$image_atts['height'] = "1080";
			break;
		}
		$placeholder_mode = movedo_grve_option( 'placeholder_mode', 'dummy' );
		$placeholder_mode =  apply_filters( 'movedo_grve_placeholder_mode', $placeholder_mode );
		switch( $placeholder_mode ) {
			case 'placehold':
				$image_atts['url'] = 'https://placehold.it/' . $image_atts['width'] . 'x' . $image_atts['height'];
			break;
			case 'unsplash':
				$image_atts['url'] = 'https://source.unsplash.com/category/people/' . $image_atts['width'] . 'x' . $image_atts['height'] . '?sig=' . uniqid();
			break;
			case 'dummy':
			default:
				$image_atts['url'] =  get_template_directory_uri() . '/images/empty/' . $size . '.jpg';
			break;
		}
		$image_atts['class'] = 'attachment-' . $size . ' size-' . $size ;
		$image_atts['alt'] = "Dummy Image";

		return $image_atts;

	}
}

if ( !function_exists('movedo_grve_get_fallback_image') ) {
	function movedo_grve_get_fallback_image( $size = 'movedo-grve-small-rect-horizontal', $mode = '' ) {
		$html = '';
		$image_atts = movedo_grve_get_fallback_image_attr( $size );
		if( 'url' == $mode ) {
			$html = $image_atts['url'];
		} else {
			$html = '<img class="' . esc_attr( $image_atts['class'] ) . '" alt="' . esc_attr( $image_atts['alt'] ) . '" src="' . esc_url( $image_atts['url'] ) . '" width="' . esc_attr( $image_atts['width'] ) . '" height="' . esc_attr( $image_atts['height'] ) . '">';
		}
		return $html;
	}
}

//Omit closing PHP tag to avoid accidental whitespace output errors.