HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux sa-dev.otherchirps.net 5.15.0-139-generic #149-Ubuntu SMP Fri Apr 11 22:06:13 UTC 2025 x86_64
User: www-data (33)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/wp-content/themes/kalium/vc_templates/lab_portfolio_items.php
<?php
/**
 *	Portfolio Items
 *	
 *	Laborator.co
 *	www.laborator.co 
 */
if ( ! defined( 'ABSPATH' ) ) {
	exit; // Direct access not allowed.
}

global $portfolio_args;

// Atts
if( function_exists( 'vc_map_get_attributes' ) ) {
	$atts = vc_map_get_attributes( $this->getShortcode(), $atts );
}

// Masonry Attributes
if ( isset( $masonry_atts ) ) {
	$atts = array_merge( $atts, $masonry_atts );
}

// Set default Query Params
kalium_vc_loop_param_set_default_value( $atts['portfolio_query'], 'post_type', 'portfolio' );
kalium_vc_loop_param_set_default_value( $atts['portfolio_query'], 'size', '12' );

// Extract Shortcode Variables
extract( $atts );

// Portfolio Query
$portfolio_query_args = array( 
	'vc_attributes' => $atts 
);

// Masonry Items
if ( isset( $masonry_items ) && is_array( $masonry_items ) ) {
	$portfolio_query_args['vc_attributes'] = array_merge( $portfolio_query_args['vc_attributes'], array(
		'portfolio_type'	  => 'type-2',
		'masonry_items'       => $masonry_items,
		'masonry_items_ids'   => $masonry_items_ids
	) );
}

$portfolio_args = kalium_get_portfolio_query( $portfolio_query_args );
$portfolio_query = $portfolio_args['portfolio_query'];

// More Link
$more_link = isset( $more_link ) ? vc_build_link( $more_link ) : '';


// Portfolio Container Class
$portfolio_container_classes = array();
$portfolio_container_classes[] = 'portfolio-holder';
$portfolio_container_classes[] = 'portfolio-' . $portfolio_args['layout_type'];

// Sort items by clicking on the category (under title)
if ( apply_filters( 'portfolio_container_isotope_category_sort_by_js', true ) ) {
	$portfolio_container_classes[] = 'sort-by-js';
}

// Masonry Layout
if ( $portfolio_args['layout_type'] == 'type-1' && $portfolio_args['layouts']['type_1']['dynamic_image_height'] || $portfolio_args['layout_type'] == 'type-2' ) {
	$portfolio_container_classes[] = 'is-masonry-layout';
}

// Merged Layout
if ( $portfolio_args['layout_type'] == 'type-2' && $portfolio_args['layouts']['type_2']['grid_spacing'] == 'merged' ) {
	$portfolio_container_classes[] = 'merged-item-spacing';
}

// Item Spacing
if ( $portfolio_args['layout_type'] == 'type-2' && $portfolio_args['layouts']['type_2']['grid_spacing'] == 'normal' && is_numeric( $portfolio_args['layouts']['type_2']['default_spacing'] ) ) {
	$spacing_in_px = $portfolio_args['layouts']['type_2']['default_spacing'] / 2 . 'px';
	$portfolio_container_classes[] = 'portfolio-loop-custom-item-spacing';
	
	kalium_append_custom_css( '.page-container > .row', "margin: 0 -" . $spacing_in_px );
	kalium_append_custom_css( '.portfolio-holder.portfolio-loop-custom-item-spacing .type-portfolio[data-portfolio-item-id]', "padding: {$spacing_in_px};" );
	kalium_append_custom_css( '.portfolio-holder .portfolio-item.masonry-portfolio-item.has-post-thumbnail .masonry-box .masonry-thumb', "margin: {$spacing_in_px};" );
}

// Element Class (Visual Composer)
$class = $this->getExtraClass( $el_class ?? '' );

$css_class = "lab-portfolio-items portfolio-container-and-title portfolio-loop-layout-{$portfolio_args['layout_type']} {$class}";

if ( ! $portfolio_args['fullwidth'] ) {
	$css_class .= ' container';
}

$css_class = apply_filters( VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $css_class, $this->settings['base'], $atts );
?>
<div id="<?php echo $portfolio_args['id']; ?>-container" class="<?php echo trim( esc_attr( $css_class ) . vc_shortcode_custom_css_class( $css ?? '', ' ' ) ); ?>">
	
	<?php include locate_template( 'tpls/portfolio-listing-title.php' ); ?>
	
	<div class="row">
		
		<?php do_action( 'kalium_portfolio_items_before', $portfolio_query ); ?>
		
		<div id="<?php echo $portfolio_args['id']; ?>" class="<?php echo implode( ' ', apply_filters( 'kalium_portfolio_container_classes', $portfolio_container_classes ) ); ?>">
			<?php kalium_portfolio_loop_items_show( $portfolio_args ); ?>
		</div>
		
		<?php 
		
		do_action( 'kalium_portfolio_items_after' ); 
				
		// Generate Portfolio Instance Object
		kalium_portfolio_generate_portfolio_instance_object( $portfolio_args );
		
		// Pagination
		if ( ! isset( $atts['pagination_type'] ) ) {
			$pagination_type = 'static';
		}
		
		// Endless Pagination
		if ( $pagination_type == 'endless' ) :
			
			kalium_portfolio_endless_pagination( $portfolio_args );
			
		endif;
		
		// Static Pagination type
		if ( $pagination_type == 'static' ) :
		?>
			<?php if ( $more_link['url'] && $more_link['title'] ) : ?>
			<div class="more-link <?php echo isset( $show_effect ) && $show_effect ? $show_effect : ''; ?>">
				<div class="show-more">
					<div class="reveal-button">
						<a href="<?php echo esc_url( $more_link['url'] ); ?>" target="<?php echo esc_attr( $more_link['target'] ); ?>" class="btn btn-white">
							<?php echo esc_html( $more_link['title'] ); ?>
						</a>
					</div>
				</div>
			</div>
			<?php endif; ?>
		<?php 
		endif; 
		?>
		
	</div>
	
</div>