<?php

//////////////////////////////////////////////////////////////
//===========================================================
// freemium_functions.php
//===========================================================
// PAGELAYER
// Inspired by the DESIRE to be the BEST OF ALL
// ----------------------------------------------------------
// Started by: Pulkit Gupta
// Date:	   23rd Jan 2017
// Time:	   23:00 hrs
// Site:	   http://pagelayer.com/wordpress (PAGELAYER)
// ----------------------------------------------------------
// Please Read the Terms of use at http://pagelayer.com/tos
// ----------------------------------------------------------
//===========================================================
// (c)Pagelayer Team
//===========================================================
//////////////////////////////////////////////////////////////

// Are we being accessed directly ?
if(!defined('PAGELAYER_PRO_VERSION')) {
	exit('Hacking Attempt !');
}

// Get page title - 2C
function pagelayer_get_the_title( $including_context = false ) {
	$title = '';
	
	if(pagelayer_is_live() || wp_doing_ajax() || pagelayer_is_gutenberg_editor()){
		return 'Title';
	}

	if ( is_singular() ) {
		$title = get_the_title();

		if ( $including_context ) {
			$post_type_obj = get_post_type_object( get_post_type() );
			$title = sprintf( '%s: %s', $post_type_obj->labels->singular_name, $title );
		}
	} elseif ( is_search() ) {
		$title = sprintf( __( 'Search Results for: %s'), get_search_query() );

		if ( get_query_var( 'paged' ) ) {
			$title .= sprintf( __( '&nbsp;&ndash; Page %s' ), get_query_var( 'paged' ) );
		}
	} elseif ( is_category() ) {
		$title = single_cat_title( '', false );

		if ( $including_context ) {
			$title = sprintf( __( 'Category Archives: %s' ), $title );
		}
	} elseif ( is_tag() ) {
		$title = single_tag_title( '', false );
		if ( $including_context ) {
			$title = sprintf( __( 'Tag Archives: %s' ), $title );
		}
	} elseif ( is_author() ) {
		$title = get_the_author() ;

		if ( $including_context ) {
			$title = sprintf( __( 'Author Archives: %s' ), $title );
		}
	} elseif ( is_year() ) {
		$title = get_the_date( _x( 'Y', 'yearly archives date format' ) );

		if ( $including_context ) {
			$title = sprintf( __( 'Yearly Archives: %s' ), $title );
		}
	} elseif ( is_month() ) {
		$title = get_the_date( _x( 'F Y', 'monthly archives date format' ) );

		if ( $including_context ) {
			$title = sprintf( __( 'Monthly Archives: %s' ), $title );
		}
	} elseif ( is_day() ) {
		$title = get_the_date( _x( 'F j, Y', 'daily archives date format' ) );

		if ( $including_context ) {
			$title = sprintf( __( 'Daily Archives: %s' ), $title );
		}
	} elseif ( is_tax( 'post_format' ) ) {
		if ( is_tax( 'post_format', 'post-format-aside' ) ) {
			$title = _x( 'Asides', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-gallery' ) ) {
			$title = _x( 'Galleries', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-image' ) ) {
			$title = _x( 'Images', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-video' ) ) {
			$title = _x( 'Videos', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-quote' ) ) {
			$title = _x( 'Quotes', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-link' ) ) {
			$title = _x( 'Links', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-status' ) ) {
			$title = _x( 'Statuses', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-audio' ) ) {
			$title = _x( 'Audio', 'post format archive title' );
		} elseif ( is_tax( 'post_format', 'post-format-chat' ) ) {
			$title = _x( 'Chats', 'post format archive title' );
		}
	} elseif ( is_post_type_archive() ) {
		$title = post_type_archive_title( '', false );

		if ( $including_context ) {
			$title = sprintf( __( 'Archives: %s' ), $title );
		}
	} elseif ( is_tax() ) {
		$title = single_term_title( '', false );

		if ( $including_context ) {
			$tax = get_taxonomy( get_queried_object()->taxonomy );
			$title = sprintf( __( '%1$s: %2$s' ), $tax->labels->singular_name, $title );
		}
	} elseif ( is_404() ) {
		$title = __( 'Page Not Found' );
	} elseif ( is_archive() ) {
		$title = get_the_archive_title();
	} elseif ( is_home() ) {
		$title = single_post_title('', false);
	}
	
	return $title;
}

// Get Taxonomies
function pagelayer_tax_list($item = '', $page = false){
	
	// Get types
	$types = pagelayer_post_types($page);
	
	// Loop thru
	foreach($types as $slug => $label){
		
		// Get the items
		$items = get_object_taxonomies($slug, 'objects');
		
		foreach($items as $name => $v) {
			if(!isset($taxonomies[$name])){
				$taxonomies[$name] = array('label' => $v->labels->singular_name, 'posttypes' => array($label));
			}else{
				$taxonomies[$name]['posttypes'][] = $label;
			}
		}	
	}
	
	// Make it simple
	foreach($taxonomies as $k => $v){
		$taxonomies[$k] = $v['label'].' ('.implode(', ', $v['posttypes']).')';
	}
	
	$pos = array_search($item, array_keys($taxonomies));
	if(!empty($pos)) {
		$cut = array_splice($taxonomies, $pos, 1);
		$taxonomies = $cut + $taxonomies;
	}

	return $taxonomies;
}

/////////////////////////////////////
// Miscellaneous Shortcode Functions
/////////////////////////////////////

// The types of Posts
function pagelayer_post_types($page = false){
	
	// Get the types
	$args = array('public' => TRUE);	
	$types = get_post_types($args, 'objects');
	
	// Unset Page if not required
	if($page == false){
		unset($types['page']);
	}
	
	// Remove Attachment types !
	unset($types['attachment']);
	
	foreach($types as $name => $type){
		$return[$name] = $type->labels->singular_name;
	}
	
	return $return;
}

// Get all posts and pages list
function pagelayer_get_posts($args = array()){
	
	if(empty($args)){
		$args = array_keys(pagelayer_post_types(true));
	}
	
	$posts_list = array();
	
	// Get type
	foreach($args as $p){
		
		// Create post list
		foreach(get_posts(['post_type' => $p]) as $post){
			$posts_list[$post->ID] = $post->post_title;
		}
	}
	
	return $posts_list;
}

// Get Menu List()
function pagelayer_get_menu_list($return_def = false){

	$menus = wp_get_nav_menus();
	$nav_menu = array(
		'0' => __('-- Select Menu --')
	);
	
	if(empty($menus)){
		return $nav_menu;
	}
	
	$default = $menus[0]->term_id;

	foreach ( $menus as $menu ) {
	$nav_menu[$menu->term_id] = $menu->name;

		if($default > $menu->term_id){
			$default = $menu->term_id;
		}
	}
	
	if($return_def){
		return $default;
	}
	
	return $nav_menu;
	
}

// Animated Heading
function pagelayer_sc_anim_heading(&$el){
	
	$el['atts']['rotate_html'] = '';
	
	//Creates html for rotating text
	if(!empty($el['atts']['rotate_text'])){
		
		$rotate_text = '';
		$rotate_text = explode(',', $el['atts']['rotate_text']);
		
		$el['atts']['rotate_html'] .= '<div class="pagelayer-animated-heading pagelayer-rotating-text pagelayer-words-wrapper">';
		//print_r($rotate_text);
		foreach($rotate_text as $key => $val){
			//print_r($key);
			$el['atts']['rotate_html'] .= '<span';
			if( $key == 0){
				$el['atts']['rotate_html'] .= ' class="pagelayer-is-visible"';
			}
			$el['atts']['rotate_html'] .= '>' . $rotate_text[$key] . '</span>';
		}
		
		$el['atts']['rotate_html'] .= '</div>';
	   
	}
	
	//Required classes for particular rotate
	$el['atts']['rotate_req'] = '';
	$letters = ['pagelayer-aheading-rotate2', 'pagelayer-aheading-rotate3', 'pagelayer-aheading-scale'];
	
	if(!empty($el['atts']['animations'])){
		if(in_array($el['atts']['animations'], $letters)){
			$el['atts']['rotate_req'] = 'letters ';
		}
		
		if($el['atts']['animations'] == 'clip'){
			$el['atts']['rotate_req'] = 'is-full-width ';
		}
	}
	
}

// Contact Form
function pagelayer_sc_contact(&$el){
	$recaptcha_version = get_option('pagelayer_recaptcha_version', '');
	$el['atts']['grecaptcha'] = get_option('pagelayer_google_captcha');
	
	if(!empty($el['atts']['captcha'])){
	
		if($recaptcha_version == 'v3'){
			$el['atts']['grecaptcha_v3'] = true;
		}else{
			$el['atts']['grecaptcha_v2'] = true;
		}
		
		if(!wp_script_is('pagelayer_cap_script', 'registered')){
			$pagelayer_cap_lang = get_option('pagelayer_google_captcha_lang');
			$lang = empty($pagelayer_cap_lang) ? '' : '&hl='.$pagelayer_cap_lang;						
		
			$cap_api = ($recaptcha_version == 'v3') ? $el['atts']['grecaptcha'].$lang : "explicit$lang";
			wp_register_script('pagelayer_cap_script', "https://www.google.com/recaptcha/api.js?render=$cap_api", array(), PAGELAYER_PRO_VERSION, true);
		}
		
		wp_enqueue_script('pagelayer_cap_script');
	}
}

// Contact Form Item
function pagelayer_sc_contact_item(&$el){
	$html = ''; 
	$options = array();
	$placeholder = '';
	$required = '';

	if(!empty($el['atts']['required'])){
		$required = 'required';
	}

	if(!empty($el['atts']['label_name']) && empty($el['atts']['label_as_holder'])){
		$html = '<label for="'.pagelayer_isset($el['atts'], 'field_name').'"><span class="pagelayer-form-label">'.$el['atts']['label_name'].'</span>';
				
		if(!empty($required)){
			$html .= ' *';
		}
		
		$html .= '</label>';
	}
		
	if(!empty($el['atts']['label_as_holder'])){
		$placeholder = $el['atts']['label_name'];
	}else{
		if(!empty($el['atts']['placeholder'])) $placeholder = $el['atts']['placeholder'];
	}
	
	// File accept
	$file_accept = '.jpg,.jpeg,.png,.gif,.pdf,.doc,.docx,.ppt,.pptx,.odt,.avi,.ogg,.m4a,.mov,.mp3,.mp4,.mpg,.wav,.wmv';
	
	if(!empty($el['atts']['accept_file'])){
		$file_accept = $el['atts']['accept_file'];
	}
	
	if($el['atts']['field_type'] == 'select'){
		
		$html .= '<select name="'.$el['atts']['field_name'].'" '.$required.'>';
		
		if(!empty($el['atts']['label_name']) && !empty($el['atts']['label_as_holder'])){
			$html .= '<option value="" disabled selected>'.$el['atts']['label_name'].'</option>';
		}else{
			$html .= '<option value="" disabled selected>---</option>';
		}
		
		if(!empty($el['atts']['values'])){
			$options = explode("\n", $el['atts']['values']);
			for($x = 0; $x < sizeof($options); $x++){
				$html .= '<option value="'.trim($options[$x]).'" >'.trim($options[$x]).'</option>';
			}
		}
		$html .= '</select>';
	}elseif($el['atts']['field_type'] == 'checkbox'){
		$html .= '<div class="pagelayer-radcheck-holder pagelayer-contact-checkbox" '.$required.'>';
		if(!empty($el['atts']['values'])){
			$options = explode("\n", $el['atts']['values']);
			for($x = 0; $x < sizeof($options); $x++){
				$html .= '<div><input type="checkbox" id="'.$el["id"].trim($options[$x]).'" name="'.$el['atts']['field_name'].'[]" value="'.trim($options[$x]).'"/><label for="'.$el["id"].trim($options[$x]).'" class="pagelayer-form-label">'.trim($options[$x]).'</label></div>';
			}
		}
		$html .= '</div>';
	}elseif($el['atts']['field_type'] == 'radio'){
		$html .= '<div class="pagelayer-radcheck-holder">';
		if(!empty($el['atts']['values'])){
			$options = explode("\n", $el['atts']['values']);
			for($x = 0; $x < sizeof($options); $x++){
				$html .= '<div><input type="radio" name="'.$el['atts']['field_name'].'"'.$required.' value="'.trim($options[$x]).'"/><span>
				'.trim($options[$x]).'</span></div>';
			}
		}
		$html .= '</div>';
	}elseif($el['atts']['field_type'] == 'textarea'){
		$html .= '<textarea name="'.$el['atts']['field_name'].'" rows="'.$el['atts']['textarea_rows'].'" '.$required.' placeholder="'.$placeholder.'"></textarea>';
	}elseif($el['atts']['field_type'] == 'file'){
		$html .= '<input type="'.$el['atts']['field_type'].'" '.$required.' name="'.$el['atts']['field_name'].'" accept="'.$file_accept.'" />';
	}elseif($el['atts']['field_type'] == 'label'){
		$html .= '';
	}else{
		$html .= '<input type="'.$el['atts']['field_type'].'" '.$required.' placeholder="'.$placeholder.'" name="'.$el['atts']['field_name'].'" />';
	}
	
	$el['atts']['fieldhtml'] = $html;
}

// Featured Image Handler
function pagelayer_sc_featured_img(&$el){
	
	// Image size
	if(!empty($el['atts']['size'])){
		$size = $el['atts']['size'];
	}
	
	$thumbnail_id = get_post_thumbnail_id();
	$title = $alt = '';
	if(!empty($thumbnail_id)){
		$title = get_the_title($thumbnail_id);
		$alt = get_post_meta($thumbnail_id, '_wp_attachment_image_alt', true);
	}
	
	if($size){
		$src = get_the_post_thumbnail_url(null, $size);
	}else{
		$src = get_the_post_thumbnail_url();
	}
	
	// Fallback image
	if(empty($src) && !empty($el['atts']['img'])){
		$src = !empty($el['tmp']['img-'.$size.'-url']) ? $el['tmp']['img-'.$size.'-url'] : pagelayer_isset($el['tmp'], 'img-url');
		$alt = $el['tmp']['img-alt'];
		$title = $el['tmp']['img-title'];
	}
	
	$el['atts']['img_html'] = '';
	
	if(!empty($src)){
		$el['atts']['img_html'] = '<img class="pagelayer-img" src="'.$src.'" title="'.$title.'" alt="'.$alt.'" />';
	}elseif(pagelayer_is_live_template()){
		$el['atts']['img_html'] = '<img class="pagelayer-img" src="'.PAGELAYER_URL.'/images/default-image.png" />';
	}
	
	// What is the link ?
	if(!empty($el['atts']['link_type'])){
		
		// Custom url
		if($el['atts']['link_type'] == 'custom_url'){
			// Backward compatibility for new link props
			pagelayer_add_link_backward($el, array( 'rel' => '', 'selector' => '.pagelayer-ele-link'));
			$el['atts']['func_link'] = empty($el['tmp']['link']) ? '' : $el['tmp']['link'];
		}
		
		// Link to the media file itself
		if($el['atts']['link_type'] == 'media_file' || $el['atts']['link_type'] == 'lightbox'){
			$el['atts']['func_link'] = $src;
		}
		
	}
	
}

// Site Title Handler
function pagelayer_sc_wp_title(&$el){
	
	// Decide the image URL
	$el['atts']['func_image'] = pagelayer_isset($el['tmp'], 'id-' . pagelayer_isset($el['atts'], 'id-size') . '-url');
	$el['atts']['func_image'] = empty($el['atts']['func_image']) ? pagelayer_isset($el['tmp'], 'id-url') : $el['atts']['func_id'];

	// Default Logo
	if(empty($el['atts']['logo_img_type'])){
		
		// Load it
		$logo = pagelayer_site_logo();
		
		// Only if we get it
		if(!empty($logo)){
			$logo_img_size = pagelayer_isset($el['atts'], 'logo_img_size');
			$el['atts']['func_image'] = pagelayer_isset($logo, $logo_img_size.'-url');
			$el['atts']['func_image'] = empty($el['atts']['func_image']) ? pagelayer_isset($logo, 'url') : $el['atts']['func_image'];
			$el['tmp']['logo_img-title'] = pagelayer_isset($logo, 'title');
			$el['tmp']['logo_img-alt'] = pagelayer_isset($logo, 'alt');
		}		
	
	// Custom logo
	}else{
		$logo_img_size = pagelayer_isset($el['atts'], 'logo_img_size');
		$el['atts']['func_image'] = pagelayer_isset($el['tmp'], 'logo_img-' . $logo_img_size . '-url');
		$el['atts']['func_image'] = empty($el['atts']['func_image']) ? pagelayer_isset($el['tmp'], 'logo_img-url') : $el['atts']['func_image'];
		
		$el['tmp']['logo_img-title'] = pagelayer_isset($el['tmp'],'logo_img-title');
		$el['tmp']['logo_img-alt'] = pagelayer_isset($el['tmp'], 'logo_img-alt');
		
	}
}

// Primary menu Handler 
function pagelayer_sc_wp_menu(&$el){
	
	if(!empty($el['atts']['inside_mega'])){
		$el['atts']['nav_menu'] = '';
		
		if(pagelayer_is_live()){
			$el['atts']['nav_menu'] = 'Primary Menu Holder. Please select the correct menu.';
		}
		
		return true;
	}
	
	// Setting default toggle icon. If the icon is empty.
	if(empty($el['atts']['menu_toggle_icon'])){
		$el['atts']['menu_toggle_icon'] = 'fas fa-bars';
	}
	
	// Load Pagelayer nav menu walker
	include_once(PAGELAYER_DIR.'/main/nav_walker.php');
		
	$el['atts']['nav_menu'] = wp_nav_menu( array(
		'menu'   => wp_get_nav_menu_object(pagelayer_isset($el['atts'], 'nav_list')),
		'menu_id' => pagelayer_isset($el['atts'], 'nav_list'),
		'menu_class' => 'pagelayer-wp_menu-ul',
		'walker' => new Pagelayer_Walker_Nav_Menu(),
		//'theme_location' => 'primary',
		'echo'	 => false,
	) );
}

// Post Navigation Handler
function pagelayer_sc_post_nav(&$el){
	
	$in_same_term = false;
	$taxonomies = 'category';
	$title = '';
	$arrows_list = $el['atts']['arrows_list'];
	
	if(!empty($el['atts']['in_same_term'])){
		$in_same_term = true;
		$taxonomies = $el['atts']['taxonomies'];
	}
	
	if(!empty($el['atts']['post_title'])){
		$title = '<span class="pagelayer-post-nav-title">%title</span>';
	}
	
	$next_label = '<span class="pagelayer-next-holder">
		<span class="pagelayer-post-nav-link"> '.$el["atts"]["next_label"].'</span>'.$title.'
	</span>
	<span class="pagelayer-post-nav-icon fa fa-'.$arrows_list.'-right"></span>';
		
	$prev_label = '<span class="pagelayer-post-nav-icon fa fa-'.$arrows_list.'-left"></span>
	<span class="pagelayer-next-holder">
		<span class="pagelayer-post-nav-link"> '.$el["atts"]["prev_label"].'</span>'.$title.'
	</span>';

	$el['atts']['next_link'] = get_next_post_link('%link', $next_label, $in_same_term, '', $taxonomies); 

	$el['atts']['prev_link'] = get_previous_post_link('%link', $prev_label, $in_same_term, '', $taxonomies ); 
}

// Comments Handler
function pagelayer_sc_post_comment(&$el){
	global $post;
	
	// Is it custom ?
	if($el['atts']['post_type'] == 'custom' && !empty($el['atts']['post_id'])){
		$orig_post = $post;
		$post = get_post($el['atts']['post_id']);
	}
	
	$post_id = $post->ID;
	//echo $post_id.' - '.$el['atts']['post_id'];
	
	if ( comments_open($post_id) || get_comments_number($post_id) ) {
		
		// Handel comments template echo  
		ob_start();
		comments_template();
		
		$el['atts']['post_comment'] =  '<div class="pagelayer-comments-template">'.ob_get_clean().'</div>';	
		
		// Comments are now closed
		if(!comments_open($post_id)){
			$el['atts']['post_comment'] = '<div class="pagelayer-comments-close">
			<h2>Comments are closed!</h2>
		</div>';
		}
		
	}else{
		$el['atts']['post_comment'] = '';
	}
	
	if(pagelayer_is_live_template() || $post->post_type == 'pagelayer-template'){
		$el['atts']['post_comment'] = '<div class="pagelayer-comments-close">
			<center><h4>Comments section !</h4></center>
		</div>';
	}
	
	if(!empty($orig_post)){
		$post = $orig_post;
	}
	
}

// post navigation Handler
function pagelayer_sc_post_info_list(&$el){
	
	global $post;
	
	$el['atts']['post_info_content'] ='';

	switch($el['atts']['type']){
		case 'author':
			
			$author_id = get_the_author_meta( 'ID' ) ? get_the_author_meta( 'ID' ) : $GLOBALS['post']->post_author;
			
			$el['atts']['link'] = get_author_posts_url( $author_id );
			$el['atts']['avatar_url'] = get_avatar_url( $author_id, 96 );
			$el['atts']['post_info_content'] = get_the_author_meta( 'display_name', $author_id );
			break;

		case 'date':
		
			$format = [
				'default' => 'F j, Y',
				'0' => 'F j, Y',
				'1' => 'Y-m-d',
				'2' => 'm/d/Y',
				'3' => 'd/m/Y',
				'custom' => empty( $el['atts']['date_format_custom'] ) ? 'F j, Y' : $el['atts']['date_format_custom'],
			];

			$el['atts']['post_info_content'] = get_the_time( $format[ $el['atts']['date_format'] ] );
			$el['atts']['link'] = get_day_link( get_post_time( 'Y' ), get_post_time( 'm' ), get_post_time( 'j' ) );
				
			break;

		case 'time':
		
			$format = [
				'default' => 'g:i a',
				'0' => 'g:i a',
				'1' => 'g:i A',
				'2' => 'H:i',
				'custom' =>  empty( $el['atts']['time_format_custom'] ) ? 'F j, Y' : $el['atts']['time_format_custom'],
			];
			$el['atts']['post_info_content'] = get_the_time( $format[ $el['atts']['time_format'] ] );
			
			if(!pagelayer_is_live_template()){
				$el['atts']['link'] = 'javascript:void(0)';
				$el['atts']['info_link'] = 1;
			}
			
			break;

		case 'comments':
		
			$el['atts']['post_info_content'] = (int) get_comments_number();
			$el['atts']['link'] = get_comments_link();
			
			// Comments are closed then dont show !
			if(pagelayer_is_live_template() || $GLOBALS['post']->post_type == 'pagelayer-template'){
				$el['atts']['post_info_content'] = 1;
			}elseif(!comments_open($post->ID)){
				$el['atts']['post_info_content'] = '';
			}
			
			break;

		case 'terms':
		
			$taxonomy = $el['atts']['taxonomy'];
			$terms = wp_get_post_terms( get_the_ID(), $taxonomy );
			foreach ( $terms as $term ) {
					$el['atts']['post_info_content'] .= ' <a href="'. get_term_link( $term ) .'"> '. $term->name .' </a>';
			}
			
			if(pagelayer_is_live_template() || $GLOBALS['post']->post_type == 'pagelayer-template'){
				$el['atts']['post_info_content'] .= '<a>Dummy '.ucfirst(str_replace('_', ' ', $el['atts']['taxonomy'])).'</a>';
			}
			
			$el['atts']['info_link'] = '';
			break;

		case 'custom':
		
			$el['atts']['post_info_content'] = $el['atts']['type_custom'];
			$el['atts']['link'] = $el['atts']['info_custom_link'];

			break;
	}
	

}

// Post Content Handler - 2C
function pagelayer_sc_post_content(&$el){	
	static $did_posts = [];
	
	global $pagelayer;
	
	$post_obj = get_post();
	
	if(empty( $post_obj )){
		return false;
	}
	
	if ( post_password_required( $post_obj->ID ) && !pagelayer_is_live() ) {
		$el['atts']['post_content'] = get_the_password_form( $post_obj->ID );
		return;
	}
		
	// Avoid recursion
	if ( isset( $did_posts[$post_obj->ID] ) || pagelayer_is_live_template($post_obj) ) {
		$el['atts']['post_content'] = '<div style="min-height:20px;background-color:#e3e3e3;text-align:center">Post Content Holder</div>';
		return;
	}
	
	// Is it an attachment
	if(is_attachment()){
		$el['atts']['post_content'] = '<center>'.wp_get_attachment_image( get_the_ID(), 'full' ).'</center>';
		return;
	}
	
	// To prevent recursion, set it to True
	$did_posts[$post_obj->ID] = true;
	
	$content = $post_obj->post_content;
	
	// If we are rendering a template and this post content is being edited live, then dont_make_editable is set true in pagelayer_get_post_content. Hence we need to set it as false and revert it after rendering the posts content !
	if(!empty($pagelayer->dont_make_editable)){
		$reset = $pagelayer->dont_make_editable;
		$pagelayer->dont_make_editable = false;
		
		// While rendering post content inside the template 
		$rendering_template_id = $pagelayer->rendering_template_id;
		$pagelayer->rendering_template_id = $post_obj->ID;
	}
	
	// Split to pages.
	setup_postdata( $post_obj );
	
	$content = apply_filters( 'the_content', get_the_content() );
	
	if(!empty($reset)){
		$pagelayer->rendering_template_id = $rendering_template_id;
		$pagelayer->dont_make_editable = $reset;
	}
	
	$content .= wp_link_pages( array(
			'before' => '<p class="post-nav-links pagelayer-page-links"><span class="page-links-title pagelayer-page-links-title">' . __( 'Pages:') . '</span>',
			'after' => '</p>',
			'echo' => 0,
		)
	);
	
	$el['atts']['post_content'] = $content;
}

// Archive Posts shows the posts as per the QUERY of the current page
function pagelayer_sc_archive_posts(&$el){
	global $wp_query, $pagelayer;
	
	$query_args = $wp_query->query_vars;
	
	if(pagelayer_is_live() || (wp_doing_ajax() && isset($_REQUEST['action']) && $_REQUEST['action'] == 'pagelayer_archive_posts_data')){
		$query_args = ['post_type' => 'post'];
		$dummy_pagination = 10;
	}
	
	$allow_param = array('show_thumb', 'thumb_size', 'show_content', 'show_title', 'more', 'btn_type', 'size', 'icon_position', 'icon', 'show_more', 'meta_sep', 'exc_length', 'thumb_img_type', 'infinite_types' );
	
	$param = array();
	
	foreach($allow_param as $val){
		$param[$val] = !empty($el['atts'][$val]) ?  $el['atts'][$val] : '';
	}
	
	if(!empty($el['atts']['meta'])){
		
		$meta_arr = explode(',',$el['atts']['meta']);
		//pagelayer_print($el['atts']['meta']);
		foreach($meta_arr as $arr){
			$param[$arr] = $arr;
		}
		
	}
	
	if(!empty($el['atts']['thumb_img_type'])){
		$thumb_size = pagelayer_isset($el['atts'], 'thumb_size');
		$img_size = pagelayer_isset($el['tmp'], 'def_thumb_img-'.$thumb_size.'-url');
		$param['def_thumb_img'] = empty($img_size) ? pagelayer_isset($el['tmp'], 'def_thumb_img-url') : $img_size;	
	}
	
	$el['atts']['pagelayer_pagination_top'] = '';
	$el['atts']['pagelayer_pagination_bottom'] = '';
		
	if(!empty($el['atts']['pagination']) && empty($el['atts']['infinite_types'])){	
		// Create array for pagination
		$pagination = array(
			'prev_next'				=> $el['atts']['pagination'] == 'number' ? false : true,
			'prev_text'				=> __( pagelayer_isset($el['atts'], 'pagi_prev_text') ),
			'next_text'				=> __( pagelayer_isset($el['atts'], 'pagi_next_text') ),
			'end_size'				=> $el['atts']['pagi_end_size'],
			'mid_size'				=> $el['atts']['pagi_mid_size'],
			'before_page_number'			=> pagelayer_isset($el['atts'], 'before_page_number'),
			'after_page_number'			=> pagelayer_isset($el['atts'], 'after_page_number'),
		);
		
		if(!empty($dummy_pagination)){
			$pagination['total'] = 10;
		}

		if( isset($el['atts']['pagination_on']) && $el['atts']['pagination_on'] == 'top'){
			$el['atts']['pagelayer_pagination_top'] = '<div class="pagelayer-pagination">'.paginate_links($pagination).'</div>';
		}else{
			$el['atts']['pagelayer_pagination_bottom'] = '<div class="pagelayer-pagination">'.paginate_links($pagination).'</div>';
		}
	}

	if(wp_doing_ajax() && isset($_REQUEST['action']) && $_REQUEST['action'] == 'pagelayer_infinite_posts'){
		$query_args['paged'] = $el['atts']['paged'];
	}else{
		$data = array('tag' => $el['tag'], 'atts' => $el['oAtts']);
		$pagelayer->localScript['pagelayer_post_'.$el['id']] = $data;
	}

	$el['atts']['pagelayer_archive_posts'] = pagelayer_posts($param, $query_args);
}

// Flipbox handler
function pagelayer_sc_flipbox(&$el){
	
	// Flipbox front heading image 
	if(!empty($el['atts']['heading_image'])){
		$heading_image_size = pagelayer_isset($el['atts'], 'heading_image_size');
		$el['atts']['func_image'] = pagelayer_isset($el['tmp'], 'heading_image-'.$heading_image_size.'-url');
		$el['atts']['func_image'] = empty($el['atts']['func_image']) ? pagelayer_isset($el['tmp'], 'heading_image-url') : $el['atts']['func_image'];
	}
	
	$back = pagelayer_isset($el['atts'], 'back_section');
	if(pagelayer_is_live() && !empty($back)){
		$el['attr'][] = 'back_section="'.$back.'"';
	}
}

// Countdown handler
function pagelayer_sc_countdown(&$el){
	$exp = pagelayer_isset($el['atts'], 'display_expired_text');
	if(pagelayer_is_live() && !empty($exp)){
		$el['attr'][] = 'display_expired_text="'.$exp.'"';
	}
	
	if(!isset($el['atts']['custom_label_text'])){
		$el['atts']['days_label_text'] = 'Days';
		$el['atts']['hours_label_text'] = 'Hours';
		$el['atts']['minutes_label_text'] = 'Minutes';
		$el['atts']['seconds_label_text'] = 'Seconds';
	}
}

// Social Share Handler
function pagelayer_sc_share(&$el){
	
	if(empty($el['atts']['icon'])){
		return;
	}
	
	$profileName = '';
	
	if(isset($el['atts']['custom_profile'])){
		$profileName = $el['atts']['custom_profile'].'/';
	}
	
	$icon_splited = explode(' fa-', $el['atts']['icon']);
	$el['classes'][] = ['.pagelayer-share-content' => 'pagelayer-'.$icon_splited[1]];
	
	$icon = $icon_splited[1];
	
	$labelList = array(
		'Facebook' => array(
			'icons' => array('facebook', 'facebook-f', 'facebook-messenger', 'facebook-square', 'facebook-official'),
			'url' => 'https://www.facebook.com/sharer/sharer.php?u='
		),
		'Twitter' => array(
			'icons' => array('twitter', 'twitter-square'),
			'url' => 'https://twitter.com/intent/tweet?url='
		),
		'X' => array(
			'icons' => array('x-twitter', 'x-twitter-square'),
			'url' => 'https://x.com/intent/post?url='
		),
		'Google+' => array(
			'icons' => array('google-plus', 'google-plus-square', 'google-plus-g'),
			'url' => 'https://plus.google.com/share?url='
		),
		'Instagram' => array(
			'icons' => array('instagram'),
			'url' => 'https://www.instagram.com/'.$profileName,
			'no' => 1
		),
		'Linkedin' => array(
			'icons' => array('linkedin', 'linkedin-in', 'linkedin-square'),
			'url' => 'https://www.linkedin.com/shareArticle?url='
		),
		'pinterest' => array(
			'icons' => array('pinterest', 'pinterest-p', 'pinterest-square'),
			'url' => '//www.pinterest.com/pin/create/button/?url='
		),
		'Reddit' => array(
			'icons' => array('reddit-alien', 'reddit-square', 'reddit'),
			'url' => 'https://reddit.com/submit?url='
		),
		'Skype' => array(
			'icons' => array('skype'),
			'url' => 'https://web.skype.com/share?',
			'no' => 1
		),
		'Stumbleupon' => array(
			'icons' => array('stumbleupon', 'stumbleupon-circle'),
			'url' => 'https://www.stumbleupon.com/submit?url='
		),
		'Telegram' => array(
			'icons' => array('telegram', 'telegram-plane'),
			'url' => 'https://t.me/share/url?url='
		),
		'Tumblr' => array(
			'icons' => array('tumblr', 'tumblr-square'),
			'url' => 'https://www.tumblr.com/share/link?url='
		),
		'VK' => array(
			'icons' => array('vk'),
			'url' => 'http://vk.com/share.php?url='
		),
		'Weibo' => array(
			'icons' => array('weibo'),
			'url' => 'http://service.weibo.com/share/share.php?url='
		),
		'WhatsApp' => array(
			'icons' => array('whatsapp', 'whatsapp-square'),
			'url' => 'whatsapp://send?text='
		),
		'WordPress' => array(
			'icons' => array('wordpress', 'wordpress-simple'),
			'url' => 'https://wordpress.com/press-this.php?u='
		),
		'Xing' => array(
			'icons' => array('xing', 'xing-square'),
			'url' => 'https://www.xing.com/spi/shares/new?url='
		),
		'Delicious' => array(
			'icons' => array('delicious'),
			'url' => 'https://delicious.com/save?v=5&noui&jump=close&url='
		),
		'Dribbble' => array(
			'icons' => array('dribbble', 'dribbble-square'),
			'url' => 'https://dribbble.com/shots/'.$profileName,
			'no' => 1
		),
		'Pocket' => array(
			'icons' => array('get-pocket'),
			'url' => 'https://getpocket.com/edit?url='
		),
		'Email' => array(
			'icons' => array('envelope', 'envelope-open', 'envelope-o'),
			'url' => 'mailto:?body='
		)
	);
		
	if(!empty($el['atts']['text'])){
		$el['atts']['icon_label'] = $el['atts']['text'];
	}else{
		foreach($labelList as $key => $val){
			if(in_array($icon, $val['icons'])){
				$el['atts']['icon_label'] = $key;
				break;
			}
		}
	}
	
	foreach($labelList as $key => $val){
		if(in_array($icon, $val['icons'])){
			if(empty($val['no'])){
				$el['atts']['social_url'] = $val['url'].$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
			}else{
				$el['atts']['social_url'] = $val['url'];
			}
			break;
		}
	}
}

// If the excerpt for current post is there only then give
function pagelayer_get_the_excerpt(){
	
	global $post;
	
	if(!empty($post->post_excerpt)){
		return $post->post_excerpt;
	}
	
	return '';
}

function pagelayer_sc_post_excerpt(&$el){
	
	$el['tmp']['post_excerpt'] = '';
	
	$tmp_excerpt = pagelayer_get_the_excerpt();
	
	if(!empty($tmp_excerpt) && strlen($tmp_excerpt) > 0){
		$el['tmp']['post_excerpt'] = '<div class="pagelayer-post-excerpt">'.$tmp_excerpt.'</div>';
	}
	
	if(pagelayer_is_live_template()){
		$el['tmp']['post_excerpt'] = '<div class="pagelayer-post-excerpt pagelayer-empty-widget"></div>';
	}
}

function pagelayer_sc_copyright(&$el){
	$el['atts']['copyright_text'] = pagelayer_get_option('pagelayer-copyright');	
	$el['oAtts']['copyright_text'] = $el['atts']['copyright_text'];	
}

// Pricing Handler
function pagelayer_sc_pricing(&$el){
	//Backward compatibility for new link props	
	pagelayer_add_link_backward($el, array( 
		'link' => 'button_url',
		'rel' => '',
		'target' => 'button_url_target',
		'selector' => '.pagelayer-pricing-btn'
	));
}

// Post Title
function pagelayer_sc_post_title(&$el){
	$el['atts']['open_html_tag'] = !empty($el['atts']['html_tag']) ? '<'.$el['atts']['html_tag'].'>' :'';
	$el['atts']['close_html_tag'] = !empty($el['atts']['html_tag']) ? '</'.$el['atts']['html_tag'].'>' :'';
}