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-portfolio-functions.php
<?php

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


/**
 * Prints portfolio feature image
 */
if ( !function_exists('movedo_grve_print_portfolio_feature_image') ) {
	function movedo_grve_print_portfolio_feature_image( $image_size = 'large', $second_image_id = "" ) {

		if( empty( $second_image_id ) ) {
			if ( has_post_thumbnail() ) {
	?>
			<div class="grve-media clearfix">
				<?php the_post_thumbnail( $image_size ); ?>
			</div>
	<?php

			}
		} else {
	?>
			<div class="grve-media clearfix">
				<?php echo wp_get_attachment_image( $second_image_id, $image_size ); ?>
			</div>
	<?php

		}

	}

}

/**
 * Prints Portfolio socials if used
 */
if ( !function_exists('movedo_grve_print_portfolio_media') ) {
	function movedo_grve_print_portfolio_media() {
		global $post;
		$post_id = $post->ID;

		$portfolio_media = movedo_grve_post_meta( '_movedo_grve_portfolio_media_selection' );
		$portfolio_image_mode = movedo_grve_post_meta( '_movedo_grve_portfolio_media_image_mode' );
		$portfolio_media_fullwidth = movedo_grve_post_meta( '_movedo_grve_portfolio_media_fullwidth' );
		$image_size_slider = 'movedo-grve-large-rect-horizontal';
		if ( 'resize' == $portfolio_image_mode || 'yes' == $portfolio_media_fullwidth ) {
			if( movedo_grve_option( 'has_sidebar' ) ) {
				$image_size_slider = "medium_large";
				if ( 'yes' == $portfolio_media_fullwidth ) {
					$image_size_slider = "large";
				}
			} else {
				$image_size_slider = "movedo-grve-fullscreen";
			}
		}

		switch( $portfolio_media ) {

			case 'slider':
				$slider_items = movedo_grve_post_meta( '_movedo_grve_portfolio_slider_items' );
				movedo_grve_print_gallery_slider( 'slider', $slider_items, $image_size_slider );
				break;
			case 'gallery':
				$slider_items = movedo_grve_post_meta( '_movedo_grve_portfolio_slider_items' );
				movedo_grve_print_gallery_slider( 'gallery', $slider_items, '', 'grve-classic-style' );
				break;
			case 'gallery-vertical':
				$slider_items = movedo_grve_post_meta( '_movedo_grve_portfolio_slider_items' );
				movedo_grve_print_gallery_slider( 'gallery-vertical', $slider_items, $image_size_slider, 'grve-vertical-style' );
				break;
			case 'video':
				movedo_grve_print_portfolio_video();
				break;
			case 'video-html5':
				movedo_grve_print_portfolio_video( 'html5' );
				break;
			case 'video-code':
				movedo_grve_print_portfolio_video( 'code' );
				break;
			case 'none':
				break;
			default:
				if( movedo_grve_option( 'has_sidebar' ) ) {
					$image_size = "medium_large";
					if ( 'yes' == $portfolio_media_fullwidth ) {
						$image_size = "large";
					}
				} else {
					$image_size = "movedo-grve-fullscreen";
				}

				$second_image = movedo_grve_post_meta( '_movedo_grve_second_featured_image' );
				if ( 'second-image' == $portfolio_media ) {
					if( !empty( $second_image ) ) {
						movedo_grve_print_portfolio_feature_image( $image_size, $second_image );
					}
				} else {
					movedo_grve_print_portfolio_feature_image( $image_size );
				}

				break;

		}
	}
}


/**
 * Prints video of the portfolio media
 */
if ( !function_exists('movedo_grve_print_portfolio_video') ) {
	function movedo_grve_print_portfolio_video( $video_mode = '' ) {

		$video_webm = movedo_grve_post_meta( '_movedo_grve_portfolio_video_webm' );
		$video_mp4 = movedo_grve_post_meta( '_movedo_grve_portfolio_video_mp4' );
		$video_ogv = movedo_grve_post_meta( '_movedo_grve_portfolio_video_ogv' );
		$video_poster = movedo_grve_post_meta( '_movedo_grve_portfolio_video_poster' );
		$video_embed = movedo_grve_post_meta( '_movedo_grve_portfolio_video_embed' );

		if( 'code' == $video_mode ) {
			$video_embed = movedo_grve_post_meta( '_movedo_grve_portfolio_video_code' );
		}

		movedo_grve_print_media_video( $video_mode, $video_webm, $video_mp4, $video_ogv, $video_embed, $video_poster );
	}
}

 /**
 * Prints portfolio like counter
 */
if ( !function_exists('movedo_grve_print_portfolio_like_counter') ) {
	function movedo_grve_print_portfolio_like_counter( $counter_color = 'content' ) {

		$post_likes = movedo_grve_option( 'portfolio_social', '', 'grve-likes' );
		if ( !empty( $post_likes  ) ) {
			global $post;
			$post_id = $post->ID;
			$active = movedo_grve_likes( $post_id, 'status' );
			$icon = 'fa fa-heart-o';
			if( 'active' == $active ) {
				$icon = 'fa fa-heart';
			}
	?>
			<div class="grve-like-counter grve-link-text grve-text-<?php echo esc_attr( $counter_color ); ?>"><i class="<?php echo esc_attr( $icon ); ?>"></i><span><?php echo movedo_grve_likes( $post_id ); ?></span></div>
	<?php
		}

	}
}


/**
 * Check Portfolio details if used
 */

if ( !function_exists('movedo_grve_check_portfolio_details') ) {
	function movedo_grve_check_portfolio_details() {
		global $post;
		$post_id = $post->ID;

		$grve_portfolio_details = movedo_grve_post_meta( '_movedo_grve_details', '' );
		$portfolio_fields = get_the_terms( $post_id, 'portfolio_field' );
		if ( !empty( $grve_portfolio_details ) || ! empty( $portfolio_fields ) ) {
			return true;
		}
		return false;

	}
}

/**
 * Prints Portfolio details
 */
if ( !function_exists('movedo_grve_print_portfolio_details') ) {
	function movedo_grve_print_portfolio_details() {
		global $post;
		$post_id = $post->ID;

		$heading_tag = movedo_grve_option( 'portfolio_details_heading_tag', 'div' );
		$grve_portfolio_details_title = movedo_grve_post_meta( '_movedo_grve_details_title', movedo_grve_option( 'portfolio_details_text' ) );
		$grve_portfolio_details = movedo_grve_post_meta( '_movedo_grve_details', '' );
		$portfolio_fields = get_the_terms( $post_id, 'portfolio_field' );

		$link_text = movedo_grve_post_meta( '_movedo_grve_details_link_text', movedo_grve_option( 'portfolio_details_link_text' ) );
		$link_url = movedo_grve_post_meta( '_movedo_grve_details_link_url' );
		$link_new_window = movedo_grve_post_meta( '_movedo_grve_details_link_new_window' );
		$link_extra_class = movedo_grve_post_meta( '_movedo_grve_details_link_extra_class' );

		$grve_portfolio_details_classes = array( 'grve-portfolio-description', 'grve-border' );
		if( empty( $link_url ) && !empty( $portfolio_fields ) ){
			array_push( $grve_portfolio_details_classes,  'grve-margin-bottom-1x' );
		}
		$grve_portfolio_details_class_string = implode( ' ', $grve_portfolio_details_classes );

		$link_classes = array( 'grve-portfolio-details-btn', 'grve-btn' );
		if( !empty( $link_extra_class ) ){
			array_push( $link_classes,  $link_extra_class );
		}
		if ( ! empty( $portfolio_fields ) ) {
			array_push( $link_classes,  'grve-margin-bottom-2x' );
		}
		$link_class_string = implode( ' ', $link_classes );

	?>

		<!-- Portfolio Info -->
		<div class="grve-portfolio-info grve-border">
			<?php
			if ( !empty( $grve_portfolio_details ) ) {
			?>
			<!-- Portfolio Description -->
			<div class="<?php echo esc_attr( $grve_portfolio_details_class_string ); ?>">
				<<?php echo tag_escape( $heading_tag ); ?> class="grve-h5"><?php echo wp_kses_post( $grve_portfolio_details_title ); ?></<?php echo tag_escape( $heading_tag ); ?>>
				<p><?php echo do_shortcode( wp_kses_post( $grve_portfolio_details ) ) ?></p>
				<?php
					// Portfolio Link
					if( !empty( $link_url )  ) {
						$link_target = "_self";
						if( !empty( $link_new_window )  ) {
							$link_target = "_blank";
						}
					?>
					<a href="<?php echo esc_url( $link_url ); ?>" class="<?php echo esc_attr( $link_class_string ); ?>" target="<?php echo esc_attr( $link_target ); ?>"><?php echo esc_html( $link_text ); ?></a>
					<?php
					}
					?>
			</div>
			<!-- End Portfolio Description -->
			<?php
			}
			?>
			<?php
			if ( ! empty( $portfolio_fields ) ) {
			?>
			<!-- Fields -->
			<ul class="grve-portfolio-fields grve-border">
				<?php
					foreach( $portfolio_fields as $field ) {
						echo '<li class="grve-fields-title grve-heading-color">';
						if ( !empty( $field->description ) ) {
							echo '<span class="grve-fields-description grve-small-text">' . wp_kses_post( $field->description ) . '</span>';
						}
						echo '<span class="grve-link-text">' . esc_html( $field->name ) . '</span>';
						echo '</li>';
					}
				?>
			</ul>
			<!-- End Fields -->
			<?php
			}
			?>
		</div>
		<!-- End Portfolio Info -->
	<?php

	}
}

/**
 * Prints Portfolio Recents items. ( Classic Layout )
 */
if ( !function_exists('movedo_grve_print_recent_portfolio_items_classic') ) {
	function movedo_grve_print_recent_portfolio_items_classic() {

		$post_id = get_the_ID();
		$exclude_ids = array( $post_id );
		$args = array(
			'post_type' => 'portfolio',
			'post_status'=>'publish',
			'post__not_in' => $exclude_ids ,
			'posts_per_page' => 3,
			'paged' => 1,
		);

		$args = apply_filters( 'movedo_grve_recent_portfolio_items_classic_args', $args, $post_id );

		$query = new WP_Query( $args );

		$grve_portfolio_recent_title = movedo_grve_option( 'portfolio_recent_title' );

		if ( $query->have_posts() ) {
?>

		<!-- Related -->
		<div id="grve-portfolio-related" class="grve-related grve-singular-section grve-fullwidth-background clearfix" style="margin-bottom: 5.000rem;">
			<div class="grve-container">
				<div class="grve-wrapper">
					<?php if( !empty( $grve_portfolio_recent_title ) ) { ?>
					<div class="grve-related-title grve-h4"><?php echo esc_html( $grve_portfolio_recent_title); ?></div>
					<?php } ?>
					<div class="grve-row grve-columns-gap-30">
					<?php
						if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
							get_template_part( 'templates/portfolio', 'recent' );
						endwhile;
						else :
						endif;
					?>
					</div>
				</div>
			</div>
		</div>
		<!-- End Related -->
<?php
			wp_reset_postdata();
		}
	}
}

/**
 * Prints Portfolio Recents items. ( Movedo Layout )
 */
if ( !function_exists('movedo_grve_print_recent_portfolio_items_movedo') ) {
	function movedo_grve_print_recent_portfolio_items_movedo() {

		$post_id = get_the_ID();
		$exclude_ids = array( $post_id );
		$args = array(
			'post_type' => 'portfolio',
			'post_status'=>'publish',
			'post__not_in' => $exclude_ids ,
			'posts_per_page' => 2,
			'paged' => 1,
		);

		$args = apply_filters( 'movedo_grve_recent_portfolio_items_movedo_args', $args, $post_id );

		$query = new WP_Query( $args );

		if ( $query->have_posts() ) {
?>

		<!-- Related -->
		<div class="grve-post-bar-item grve-post-related">
			<?php
				if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post();
					get_template_part( 'templates/portfolio', 'recent' );
				endwhile;
				else :
				endif;
			?>
		</div>
		<!-- End Related -->
<?php
			wp_reset_postdata();
		}
	}
}


/**
 * Prints Portfolio Feature Image
 */
if ( !function_exists('movedo_grve_print_portfolio_image') ) {
	function movedo_grve_print_portfolio_image( $image_size = 'movedo-grve-small-square', $mode = '', $atts = array() ) {

		if ( has_post_thumbnail() ) {
			$post_thumbnail_id = get_post_thumbnail_id( get_the_ID() );
			$attachment_src = wp_get_attachment_image_src( $post_thumbnail_id, $image_size );
			$image_src = $attachment_src[0];
			if ( 'link' == $mode ){
				echo esc_url( $image_src );
			} else {
				echo wp_get_attachment_image( $post_thumbnail_id, $image_size, '', $atts );
			}
		} else {
			$image_src = get_template_directory_uri() . '/images/empty/' . $image_size . '.jpg';
			if ( 'link' == $mode ){
				echo esc_url( $image_src );
			} else {
				if ( 'color' == $mode ){
					$image_src = get_template_directory_uri() . '/images/transparent/' . $image_size . '.png';
				}
	?>
			<img src="<?php echo esc_url( $image_src ); ?>" title="<?php the_title_attribute(); ?>" alt="<?php the_title_attribute(); ?>"/>
	<?php
			}
		}

	}
}


/**
 * Prints Navigation Bar
 */
if ( !function_exists('movedo_grve_print_portfolio_bar') ) {
	function movedo_grve_print_portfolio_bar() {

		$layout = movedo_grve_option( 'portfolio_nav_bar_layout', 'layout-1' );

		$portfolio_nav_section = $portfolio_social_section = $portfolio_recent_section = false;
		$portfolio_sections = 0;
		if ( movedo_grve_nav_bar( 'portfolio', 'check' ) ) {
			$portfolio_nav_section = true;
			$portfolio_sections++;
		}

		if( movedo_grve_social_bar( 'portfolio', 'check' ) ) {
			$portfolio_social_section = true;
			$portfolio_sections++;
		}
		$grve_disable_portfolio_recent = movedo_grve_post_meta( '_movedo_grve_disable_recent_entries' );
		if ( movedo_grve_visibility( 'portfolio_recents_visibility' ) && 'yes' != $grve_disable_portfolio_recent ) {

			if( 'layout-1' == $layout || 'layout-3' == $layout ) {
				movedo_grve_print_recent_portfolio_items_classic();
			} else {
				$portfolio_recent_section = true;
				$portfolio_sections++;
			}
		}

		if ( $portfolio_nav_section || $portfolio_social_section || $portfolio_recent_section ) {
			// Navigation Bar Classes

			$navigation_bar_classes = array( 'grve-navigation-bar', 'grve-singular-section', 'grve-fullwidth' );

			if( 'layout-3' == $layout ) {
				array_push( $navigation_bar_classes, 'grve-layout-3' );
			} else {
				array_push( $navigation_bar_classes, 'grve-' . $layout );
				array_push( $navigation_bar_classes, 'clearfix' );
				array_push( $navigation_bar_classes, 'grve-nav-columns-' . $portfolio_sections );
			}

			$navigation_bar_class_string = implode( ' ', $navigation_bar_classes );

?>
				<!-- Navigation Bar -->
				<div id="grve-portfolio-bar" class="<?php echo esc_attr( $navigation_bar_class_string ); ?>">
					<div class="grve-container">
						<div class="grve-bar-wrapper">
							<?php if ( $portfolio_nav_section ) { ?>
							<?php movedo_grve_nav_bar( 'portfolio', $layout ); ?>
							<?php } ?>
							<?php if ( $portfolio_social_section ) { ?>
								<?php movedo_grve_social_bar( 'portfolio', $layout ); ?>
							<?php } ?>
							<?php if ( $portfolio_recent_section ) { ?>
								<?php movedo_grve_print_recent_portfolio_items_movedo(); ?>
							<?php } ?>
						</div>
					</div>
				</div>
				<!-- End Navigation Bar -->
<?php
		}
	}
}



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