????JFIF??x?x????'
| Server IP : 104.21.30.238 / Your IP : 216.73.216.145 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /././proc/self/root/home/tempvsty/pontiacques.org/wp-content/themes/layerswp/core/helpers/ |
Upload File : |
<?php /**
* Post helper funtions
*
* This file is used to display post elements, from meta to media, to galleries, to in-post pagination, all post-related functions sit in this file.
*
* @package Layers
* @since Layers 1.0.0
*/
/**
* Print post meta HTML
*
* @param string $post_id ID of the post to use
* @param array $display Configuration arguments. (date, author, categories, tags)
* @param string $wrapper Type of html wrapper
* @param string $wrapper_class Class of HTML wrapper
* @echo string Post Meta HTML
*/
if( !function_exists( 'layers_post_meta' ) ) {
function layers_post_meta( $post_id = NULL , $display = NULL, $wrapper = 'footer', $wrapper_class = 'meta-info' ) {
// If there is no post ID specified, use the current post, does not affect post author, yet.
if( NULL == $post_id ) {
global $post;
$post_id = $post->ID;
}
// If there are no items to display, return nothing
if ( NULL === $display ) {
$display = array( 'date', 'author', 'categories', 'tags' );
}
// Allow for filtering of the display elements.
$display = apply_filters( 'layers_post_meta_display', $display );
foreach ( $display as $meta ) {
switch ( $meta ) {
case 'date' :
$meta_to_display[] = '<span class="meta-item meta-date"><i class="l-clock-o"></i> ' . get_the_time( get_option( 'date_format' ) , $post_id ) . '</span>';
break;
case 'author' :
$meta_to_display[] = '<span class="meta-item meta-author"><i class="l-user"></i> ' . layers_get_the_author( $post_id ) . '</span>';
break;
case 'categories' :
$categories = array();
// Use different terms for different post types
if( 'post' == get_post_type( $post_id ) ){
$the_categories = get_the_category( $post_id );
} elseif( 'portfolio' == get_post_type( $post_id ) ) {
$the_categories = get_the_terms( $post_id , 'portfolio-category' );
} else {
$the_categories = FALSE;
}
// If there are no categories, skip to the next case
if( !$the_categories ) continue;
foreach ( $the_categories as $category ){
$categories[] = ' <a href="'.get_category_link( $category->term_id ).'" title="' . esc_attr( sprintf( __( "View all posts in %s", LAYERS_THEME_SLUG ), $category->name ) ) . '">'.$category->name.'</a>';
}
$meta_to_display[] = '<span class="meta-item meta-category"><i class="l-folder-open-o"></i> ' . implode( __( ', ' , 'layerswp' ), $categories ) . '</span>';
break;
case 'tags' :
$tags = array();
if( 'post' == get_post_type( $post_id ) ){
$the_tags = get_the_tags( $post_id );
} elseif( 'layers-project' == get_post_type( $post_id ) ) {
$the_tags = get_the_terms( $post_id , 'project-tag' );
} else {
$the_tags = FALSE;
}
// If there are no tags, skip to the next case
if( !$the_tags ) continue;
foreach ( $the_tags as $tag ){
$tags[] = ' <a href="'.get_term_link( $tag ).'" title="' . esc_attr( sprintf( __( "View all posts tagged %s", LAYERS_THEME_SLUG ), $tag->name ) ) . '">'.$tag->name.'</a>';
}
$meta_to_display[] = '<span class="meta-item meta-tags"><i class="l-tags"></i> ' . implode( __( ', ' , 'layerswp' ), $tags ) . '</span>';
break;
break;
} // switch meta
} // foreach $display
if( !empty( $meta_to_display ) ) {
echo '<' , $wrapper , ( ( '' != $wrapper_class ) ? ' class="' . $wrapper_class . '"' : NULL ) , '>';
echo '<p>';
echo implode( ' ' , $meta_to_display );
echo '</p>';
echo '</' , $wrapper , '>';
}
}
} // layers_post_meta
/**
* Prints HTML with meta information for the current post-date/time and author.
*/
if ( ! function_exists( 'layers_get_the_author' ) ) {
function layers_get_the_author() {
return sprintf( __( '<a href="%1$s" title="%2$s" rel="author" class="layers-author">%3$s</a>' , 'layerswp' ),
esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
esc_attr( sprintf( __( 'View all posts by %s', 'layerswp' ), get_the_author() ) ),
esc_attr( get_the_author() )
);
}
} // layers_get_the_author
/**
* Prints Comment HTML
*
* @param object $comment Comment objext
* @param array $args Configuration arguments.
* @param int $depth Current depth of comment, for example 2 for a reply
* @echo string Comment HTML
*/
if( !function_exists( 'layers_comment' ) ) {
function layers_comment($comment, $args, $depth) {
$GLOBALS['comment'] = $comment;?>
<?php if( 2 < $depth && isset( $GLOBALS['lastdepth'] ) && $depth != $GLOBALS['lastdepth'] ) { ?>
<div class="grid comments-nested push-top">
<?php } ?>
<div <?php comment_class( 'content well' ); ?> id="comment-<?php comment_ID(); ?>">
<div class="avatar push-bottom clearfix">
<?php edit_comment_link(__('(Edit)' , 'layerswp' ),'<small class="pull-right">','</small>') ?>
<a class="avatar-image" href="">
<?php echo get_avatar($comment, $size = '70'); ?>
</a>
<div class="avatar-body">
<h5 class="avatar-name"><?php echo get_comment_author_link(); ?></h5>
<small><?php printf(__('%1$s at %2$s' , 'layerswp' ), get_comment_date(), get_comment_time()) ?></small>
</div>
</div>
<div class="copy small">
<?php if ($comment->comment_approved == '0') : ?>
<em><?php _e('Your comment is awaiting moderation.' , 'layerswp' ) ?></em>
<br />
<?php endif; ?>
<?php comment_text() ?>
<?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
</div>
<?php if( 2 < $depth && isset( $GLOBALS['lastdepth'] ) && $depth == $GLOBALS['lastdepth'] ) { ?>
</div>
<?php } ?>
<?php $GLOBALS['lastdepth'] = $depth; ?>
<?php }
} // layers_comment
/**
* Backs up builder pages as HTML
*/
if( !function_exists( 'layers_backup_builder_pages' ) ) {
function layers_backup_builder_pages(){
if( !check_ajax_referer( 'layers-backup-pages', 'layers_backup_pages_nonce', false ) ) die( 'You threw a Nonce exception' ); // Nonce
if( !isset( $_POST[ 'pageid' ] ) ) wp_die( __( 'You shall not pass' , 'layerswp' ) );
// Get the post data
$page_id = $_POST[ 'pageid' ];
$page = get_post( $page_id );
// Start the output buffer
ob_start();
dynamic_sidebar( 'obox-layers-builder-' . $page->ID );
$page_content = trim( ob_get_clean() );
$page_content = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $page_content);
$page_content = strip_tags( $page_content , '<p><b><i><strong><em><quote><a><h1><h2><h3><h4><h5><img><script>' );
$page_content = $page_content;
$page_meta_key = 'layers_page_content_' . date( 'YmdHi' );
update_post_meta( $page_id , $page_meta_key, $page_content );
// Flush the output buffer
ob_flush();
}
} // layers_builder_page_backup
add_action( 'wp_ajax_layers_backup_builder_pages', 'layers_backup_builder_pages' );
/**
* Adjust the site title for static front pages
*/
if( !function_exists( 'layers_post_class' ) ) {
function layers_post_class( $classes ) {
global $woocommerce;
if( is_single() )
$classes[] = 'container';
if( ( isset( $woocommerce ) && is_cart() && 'product' == get_post_type() ) || is_post_type_archive( 'product' ) || is_tax( 'product_cat' ) || is_tax( 'product_tag' ) ) {
$classes[] = 'column';
// Honor WC loop columns filter
$wc_span = 12 / apply_filters( 'loop_shop_columns', 3 );
$spans = array(12, 6, 3, 2, 1);
$span = in_array($wc_span, $spans) ? $wc_span : 4;
$classes[] = 'span-'.$span;
}
return $classes;
}
}
add_filter( 'post_class' , 'layers_post_class' );
add_filter( 'product_cat_class' , 'layers_post_class' );
/**
* The following function creates a builder page
*
* @param string Page Title (optional)
* @return array Page ID
*/
if( !function_exists( 'layers_create_builder_page' ) ) {
function layers_create_builder_page( $page_title = 'Builder Page', $page_id = NULL ) {
$page['post_type'] = 'page';
$page['post_status'] = 'publish';
$page['post_title'] = $page_title;
if( NULL != $page_id ) {
$page['ID'] = $page_id;
$pageid = wp_update_post ($page);
} else {
$pageid = wp_insert_post ($page);
}
if ( 0 != $pageid ) {
update_post_meta( $pageid , '_wp_page_template', LAYERS_BUILDER_TEMPLATE );
}
return $pageid;
}
}
/**
* Get all builder pages and store in global variable
*
* @return object $layers_builder_pages wp_query list of builder pages.
*/
if( ! function_exists( 'layers_get_builder_pages' ) ) {
function layers_get_builder_pages ( $limit = -1 ) {
global $layers_builder_pages;
// Fetch Builder Pages
return get_posts( array(
'post_status' => get_post_stati(),
'post_type' => 'page',
'meta_key' => '_wp_page_template',
'meta_value' => LAYERS_BUILDER_TEMPLATE,
'posts_per_page' => $limit
) );
}
}
/**
* Get builder page content as HTML
*
* @param int $post_id ID of post to check.
*
* @return string $page_content is plain HTML version of the page content
*/
if( ! function_exists( 'layers_get_builder_page_content' ) ) {
function layers_get_builder_page_content( $page_id = NULL ){
if( NULL == $page_id ) return '';
global $layers_widgets;
ob_start();
dynamic_sidebar( 'obox-layers-builder-' . $page_id );
$page_content = "";
$page_content = trim( ob_get_clean() );
$page_content = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $page_content);
$page_content = preg_replace('#<style(.*?)>(.*?)</style>#is', '', $page_content);
$page_content = wp_kses( $page_content, array(
'a' => array(
'href' => array(),
'target' => array(),
),
'img' => array(
'src' => array(),
'width' => array(),
'height' => array(),
),
'p',
'b',
'i',
'strong',
'em',
'quote',
'h1',
'h2',
'h3',
'h4',
'h5',
) );
$page_content = preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $page_content);
$page_content = preg_replace("/(<a[^href]*href=[\"']{2}[^>]*>)([^<>]*|.*)(<\\/a>)/m", "$2", $page_content);
$page_content = str_replace( ' ', '', $page_content );
return $page_content;
}
}
/**
* Conditional check if is Layers page
*
* @param int $post_id (Optional) ID of post to check. Uses global $post ID if none provided.
*/
if( ! function_exists( 'layers_is_builder_page' ) ) {
function layers_is_builder_page( $post_id = false ){
global $post;
// Be sure to set a post id for use
if ( !$post_id && isset( $post ) && isset( $post->ID ) ) {
$post_id = $post->ID;
}
// If there is a post_id, check for the builder page
if ( isset( $post_id ) ) {
if( LAYERS_BUILDER_TEMPLATE == get_post_meta( $post_id, '_wp_page_template', true ) ) {
return true;
}
}
// Fallback
return false;
}
}
/**
* Filter Layers Pages in wp-admin Pages
*
* @TODO: think about moving this function to it own helpers/admin.php,
* especially if more work is to be done on admin list.
*/
if ( ! function_exists( 'layers_filter_admin_pages' ) ) {
function layers_filter_admin_pages() {
global $typenow;
if ( 'page' == $typenow && isset( $_GET['filter'] ) && 'layers' == $_GET['filter'] ) {
set_query_var(
'meta_query',
array(
'relation' => 'AND',
array(
'key' => '_wp_page_template',
'value' => LAYERS_BUILDER_TEMPLATE,
)
)
);
}
}
}
add_filter( 'pre_get_posts', 'layers_filter_admin_pages' );
/**
* Change views links on wp-list-table - all, published, draft, etc - to maintain layers page filtering
* TODO: some kind of feeback so user knows he is in the Layers filter - maybe h2 to "Layers Pages"
*/
if ( ! function_exists( 'layers_filter_admin_pages_views' ) ) {
function layers_filter_admin_pages_views( $views ) {
global $typenow;
if ( 'page' == $typenow && isset( $_GET['filter'] ) && 'layers' == $_GET['filter'] ) {
foreach ($views as $view_key => $view_value ) {
$query_arg = '&filter=layers';
$view_value = preg_replace('/href=\'(http:\/\/[^\/"]+\/?)?([^"]*)\'/', "href='\\2$query_arg'", $view_value);
$views[$view_key] = $view_value;
}
}
return $views;
}
}
//add_filter( "views_edit-page", 'layers_filter_admin_pages_views' );
/**
* Add builder edit button to the admin bar
*
* @return null Nothing is returned, the Edit button is added the admin toolbar
*/
if( ! function_exists( 'layers_edit_layout_admin_menu' ) ) {
function layers_edit_layout_admin_menu(){
global $wp_admin_bar, $post, $wp_version;
if( !is_admin() && version_compare( $wp_version, '4.2', '<=' ) ){
$current_url = ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$args = array(
'id' => 'layers-edit-layout',
'title' => '<span class="ab-icon"></span><span class="ab-label">' . __( 'Edit Layout' , 'layerswp' ) . '</span>',
'href' => esc_url( add_query_arg( 'url', urlencode( $current_url ), wp_customize_url() ) ),
'meta' => array( 'class' => 'my-toolbar-page' )
);
$wp_admin_bar->add_node( $args );
}
}
}
add_action( 'admin_bar_menu', 'layers_edit_layout_admin_menu', 90 );
/**
* Add "Add New Layers Page" to the admin bar
*
* @return null Nothing is returned, the new button is added the admin toolbar
*/
if( ! function_exists( 'layers_add_new_page_admin_menu' ) ) {
function layers_add_new_page_admin_menu(){
global $wp_admin_bar, $post;
$args = array(
'parent' => 'new-content',
'id' => 'layers-add-page',
'title' =>__( 'Layers Page' , 'layerswp' ),
'href' => admin_url( 'admin.php?page=layers-add-new-page' )
);
$wp_admin_bar->add_node( $args );
}
}
add_action( 'admin_bar_menu', 'layers_add_new_page_admin_menu', 90 );
// Output custom css to add Icon to admin bar edit button.
if( ! function_exists( 'layers_add_builder_edit_button_css' ) ) {
function layers_add_builder_edit_button_css() {
global $pagenow;
if ( 'post.php' === $pagenow || ! is_admin() ) : ?>
<style>
#wp-admin-bar-layers-edit-layout .ab-icon:before{
font-family: "layers-interface" !important;
content: "\e62f" !important;
font-size: 16px !important;
}
</style>
<?php endif;
}
}
add_action('wp_print_styles', 'layers_add_builder_edit_button_css');
add_action('admin_print_styles-post.php', 'layers_add_builder_edit_button_css');
/**
* Post Featured Media
*
* @param int $attachmentid ID for attachment
* @param int $size Media size to use
* @param int $video oEmbed code
*
* @return string $media_output Feature Image or Video
*/
if( !function_exists( 'layers_post_featured_media' ) ) {
function layers_post_featured_media( $args = array() ){
global $post;
$defaults = array (
'postid' => $post->ID,
'wrap' => 'div',
'wrap_class' => 'thumbnail',
'size' => 'medium',
'hide_href' => false
);
$args = wp_parse_args( $args, $defaults );
extract( $args, EXTR_SKIP );
$post_meta = get_post_meta( $postid, 'layers', true );
$featured_media = layers_get_feature_media( get_post_thumbnail_id( $postid ), $size, ( isset( $post_meta[ 'video-url' ] ) ? $post_meta[ 'video-url' ] : NULL ), $postid );
if( NULL == $featured_media ) return;
$output = '';
if( NULL != $featured_media ){
$output .= $featured_media;
}
if( TRUE != $hide_href ){
if( has_post_thumbnail() ) {
if( !is_single() ){
$output = '<a href="' .get_permalink( $postid ) . '">' . $output . '</a>';
}
}
}
if( '' != $wrap ) {
$output = '<'.$wrap. ( '' != $wrap_class ? ' class="' . $wrap_class . '"' : '' ) . '>' . $output . '</' . $wrap . '>';
}
return apply_filters('layers_post_featured_media', $output);
}
} // layers_post_featured_media
/**
* Post Featured Media
*
* @param int $postid ID for post
*
* @return book TRUE or FALSE depending on whether or not a video has been added to the post
*/
if( !function_exists( 'layers_post_has_video' ) ) {
function layers_post_has_video( $postid = FALSE ){
if( FALSE == $postid ) {
global $post;
$postid = $post->ID;
}
$post_meta = get_post_meta( $postid, 'layers', true );
return ( isset( $post_meta[ 'video-url' ] ) && '' != $post_meta[ 'video-url' ] ? TRUE : FALSE );
}
}