File "init.php"
Full Path: /home/magiggjm/magistvandroids.com/wp-content/plugins/kadence-blocks-pro/includes/init.php
File size: 15.68 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Enqueue admin CSS/JS and edit width functions
*
* @since 1.0.0
* @package Kadence Blocks Pro
*/
//phpcs:disable Universal.NamingConventions.NoReservedKeywordParameterNames.varFound, WordPress.PHP.NoSilencedErrors.Discouraged
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Get all the registered image sizes along with their dimensions
*
* @global array $_wp_additional_image_sizes
*
* @link http://core.trac.wordpress.org/ticket/18947 Reference ticket
*
* @return array $image_sizes The image sizes
*/
function kadence_blocks_pro_get_all_image_sizes() {
global $_wp_additional_image_sizes;
$default_image_sizes = get_intermediate_image_sizes();//phpcs:ignore
$image_sizes = array();
foreach ( $default_image_sizes as $size ) {
$image_sizes[ $size ]['width'] = intval( get_option( "{$size}_size_w" ) );
$image_sizes[ $size ]['height'] = intval( get_option( "{$size}_size_h" ) );
$image_sizes[ $size ]['crop'] = get_option( "{$size}_crop" ) ? get_option( "{$size}_crop" ) : false;
}
if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) ) {
$image_sizes = array_merge( $image_sizes, $_wp_additional_image_sizes );
}
return $image_sizes;
}
/**
* Get all the registered image sizes along with their dimensions
*
* @global array $_wp_additional_image_sizes
*
* @link http://core.trac.wordpress.org/ticket/18947 Reference ticket
*
* @return array $image_sizes The image sizes
*/
function kadence_blocks_pro_get_all_image_sizes_array() {
$image_sizes = kadence_blocks_pro_get_all_image_sizes();
$image_sizes_array = array();
foreach ( $image_sizes as $size_key => $size_item ) {
$image_sizes_array[] = array(
'value' => $size_key,
'label' => $size_key . ' (' . $size_item['width'] . 'x' . $size_item['height'] . ')',
);
}
return $image_sizes_array;
}
/**
* Enqueue Gutenberg block assets for backend editor.
*
* @since 1.0.0
*/
function kadence_blocks_pro_editor_assets() {
// Scripts.
$asset_meta = kadence_blocks_pro_get_asset_file( 'dist/blocks' );
// wp_register_script( 'kadence-blocks-pro-vendor', KBP_URL . 'includes/assets/js/vendors/blocks.js', array_merge( $asset_meta['dependencies'], array( 'wp-api', 'kadence-blocks-js' ) ), $asset_meta['version'], true );
wp_register_script( 'kadence-blocks-pro-js', KBP_URL . 'dist/blocks.js', array_merge( $asset_meta['dependencies'], array( 'wp-api', 'kadence-blocks-js' ) ), $asset_meta['version'], true );
// Styles.
wp_register_style( 'kadence-blocks-pro-editor-css', KBP_URL . 'dist/blocks.css', array( 'wp-edit-blocks' ), $asset_meta['version'] );
wp_set_script_translations( 'kadence-blocks-pro-js', 'kadence-blocks-pro', KBP_PATH . 'languages' );
$blocks = array(
'dynamichtml',
'dynamiclist',
'imageoverlay',
'modal',
'portfoliogrid',
'postgrid',
'productcarousel',
'repeater',
'repeatertemplate',
'query',
'slide',
'slider',
'splitcontent',
'userinfo',
);
// for blocks moved from pro to free
if ( defined( 'KADENCE_BLOCKS_VERSION' ) && version_compare( KADENCE_BLOCKS_VERSION, '3.4.4', '<' ) ) {
$blocks[] = 'videopopup';
}
foreach ( $blocks as $block ) {
$meta = kadence_blocks_pro_get_asset_file( sprintf( 'dist/blocks-%s', $block ) );
$handle = sprintf( 'kadence-blocks-pro-%s', $block );
$item = wp_register_script( $handle, sprintf( '%sdist/blocks-%s.js', KBP_URL, $block ), array_merge( $meta['dependencies'], array( 'wp-api', 'kadence-blocks-pro-js' ) ), $meta['version'], true );
wp_register_style( $handle, sprintf( '%sdist/blocks-%s.css', KBP_URL, $block ), array( 'wp-edit-blocks', 'kadence-blocks-pro-editor-css' ), $meta['version'] );
wp_set_script_translations( $handle, 'kadence-blocks-pro' );
}
}
add_action( 'admin_init', 'kadence_blocks_pro_editor_assets', 30 );
/**
* Enqueue Gutenberg block assets for backend editor.
*/
function kadence_blocks_pro_gutenberg_editor_assets_variables() {
$recent_posts = wp_get_recent_posts( array( 'numberposts' => '1' ) );
$the_post_id = ( ! empty( $recent_posts[0]['ID'] ) ? $recent_posts[0]['ID'] : null );
wp_localize_script(
'kadence-blocks-pro-js',
'kbpData',
array(
'restBase' => esc_url_raw( get_rest_url() ),
'postSelectEndpoint' => '/kbpp/v1/post-select',
'postQueryEndpoint' => '/kbpp/v1/post-query',
'postTypes' => kadence_blocks_pro_get_post_types(),
'isKadenceT' => class_exists( 'Kadence\Theme' ),
'isKadenceE' => ( 'kadence_element' === get_post_type() ? true : false ),
'previewPost' => apply_filters( 'kadence_blocks_pro_dynamic_content_preview_post', $the_post_id ),
'wcIsActive' => class_exists( 'Woocommerce' ),
'imageSizes' => kadence_blocks_pro_get_all_image_sizes_array(),
'wcProductCarouselPlaceholder' => ( function_exists( 'wc_placeholder_img_src' ) ? wc_placeholder_img_src() : '' ),
'pVersion' => KBP_VERSION,
)
);
}
add_action( 'enqueue_block_editor_assets', 'kadence_blocks_pro_gutenberg_editor_assets_variables' );
/**
* Get the asset file produced by wp scripts.
*
* @param string $filepath the file path.
* @return array
*/
function kadence_blocks_pro_get_asset_file( $filepath ) {
$asset_path = KBP_PATH . $filepath . '.asset.php';
return file_exists( $asset_path )
? include $asset_path
: array(
'dependencies' => array( 'lodash', 'react', 'react-dom', 'wp-block-editor', 'wp-blocks', 'wp-data', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives', 'wp-api' ),
'version' => KBP_VERSION,
);
}
/**
* Enqueue Gutenberg block assets for backend editor.
*/
function kadence_blocks_pro_early_editor_assets() {
if ( ! is_admin() ) {
return;
}
$asset_meta = kadence_blocks_pro_get_asset_file( 'dist/early-filters' );
// wp_register_script( 'kadence-blocks-pro-early-filters-vendor-js', KBP_URL . 'includes/assets/js/vendors/blocks_early-filters.js', array_merge( $asset_meta['dependencies'], array( 'wp-blocks', 'wp-i18n', 'wp-element' ) ), $asset_meta['version'], true );
wp_enqueue_script( 'kadence-blocks-pro-early-filters-js', KBP_URL . 'dist/early-filters.js', array_merge( $asset_meta['dependencies'], array( 'wp-blocks', 'wp-i18n', 'wp-element' ) ), $asset_meta['version'], true );
}
add_action( 'enqueue_block_editor_assets', 'kadence_blocks_pro_early_editor_assets', 1 );
add_action( 'rest_api_init', 'kadence_blocks_pro_register_api_endpoints' );
/**
* Setup the post select API endpoint.
*
* @return void
*/
function kadence_blocks_pro_register_api_endpoints() {
$controller = new Kadence_Blocks_Pro_Post_Select_Controller();
$controller->register_routes();
$mailchimp_controller = new Kadence_MailChimp_REST_Controller();
$mailchimp_controller->register_routes();
$activecampaign_controller = new KBP_ActiveCampaign_REST_Controller();
$activecampaign_controller->register_routes();
$sendinblue_controller = new Kadence_SendInBlue_REST_Controller();
$sendinblue_controller->register_routes();
$dynamic_controller = new Kadence_Blocks_Dynamic_Content_Controller();
$dynamic_controller->register_routes();
$convertkit_controller = new Kadence_Convert_Kit_REST_Controller();
$convertkit_controller->register_routes();
$custom_svg_controller = new Kadence_Blocks_Pro_Custom_Svg_Controller();
$custom_svg_controller->register_routes();
}
/**
* Setup the post type options for post blocks.
*
* @param mixed $custom_args THe custom args.
*
* @return array
*/
function kadence_blocks_pro_get_post_types( $custom_args = array() ) {
$args = array(
'public' => true,
'show_in_rest' => true,
);
$args = array_merge( $args, $custom_args );
$post_types = get_post_types( $args, 'objects' );
$output = array();
foreach ( $post_types as $post_type ) {
// if ( 'product' == $post_type->name || 'attachment' == $post_type->name ) {
// continue;
// }
if ( 'attachment' == $post_type->name || 'leaderboard' == $post_type->name ) {
continue;
}
$output[] = array(
'value' => $post_type->name,
'label' => $post_type->label,
);
}
return apply_filters( 'kadence_blocks_post_types', $output );
}
/**
* Setup the post type taxonomies for post blocks.
*
* @return array
*/
function kadence_blocks_pro_get_taxonomies() {
$post_types = kadence_blocks_pro_get_post_types();
$output = array();
foreach ( $post_types as $key => $post_type ) {
$taxonomies = get_object_taxonomies( $post_type['value'], 'objects' );
$taxs = array();
foreach ( $taxonomies as $term_slug => $term ) {
if ( ! $term->public || ! $term->show_ui ) {
continue;
}
$taxs[ $term_slug ] = $term;
$terms = get_terms( $term_slug );
$term_items = array();
if ( ! empty( $terms ) ) {
foreach ( $terms as $term_key => $term_item ) {
$term_items[] = array(
'value' => $term_item->term_id,
'label' => $term_item->name,
);
}
$output[ $post_type['value'] ]['terms'][ $term_slug ] = $term_items;
}
}
$output[ $post_type['value'] ]['taxonomy'] = $taxs;
}
return apply_filters( 'kadence_blocks_taxonomies', $output );
}
/**
* Get other templates (e.g. product attributes) passing attributes and including the file.
*
* @param string $template_name Template name.
* @param array $args Arguments. (default: array).
* @param string $template_path Template path. (default: '').
* @param string $default_path Default path. (default: '').
*/
function kadence_blocks_pro_get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
$cache_key = sanitize_key( implode( '-', array( 'template', $template_name, $template_path, $default_path, KBP_VERSION ) ) );
$template = (string) wp_cache_get( $cache_key, 'kadence-blocks' );
if ( ! $template ) {
$template = kadence_blocks_pro_locate_template( $template_name, $template_path, $default_path );
wp_cache_set( $cache_key, $template, 'kadence-blocks' );
}
// Allow 3rd party plugin filter template file from their plugin.
$filter_template = apply_filters( 'kadence_blocks_get_template', $template, $template_name, $args, $template_path, $default_path );
if ( $filter_template !== $template ) {
if ( ! file_exists( $filter_template ) ) {
return;
}
$template = $filter_template;
}
$action_args = array(
'template_name' => $template_name,
'template_path' => $template_path,
'located' => $template,
'args' => $args,
);
if ( ! empty( $args ) && is_array( $args ) ) {
if ( isset( $args['action_args'] ) ) {
unset( $args['action_args'] );
}
extract( $args ); // @codingStandardsIgnoreLine
}
do_action( 'kadence_blocks_before_template_part', $action_args['template_name'], $action_args['template_path'], $action_args['located'], $action_args['args'] );
include $action_args['located'];
do_action( 'kadence_blocks_before_template_part', $action_args['template_name'], $action_args['template_path'], $action_args['located'], $action_args['args'] );
}
/**
* Like kadence_blocks_pro_get_template, but returns the HTML instead of outputting.
*
* @see kadence_blocks_pro_get_template
* @param string $template_name Template name.
* @param array $args Arguments. (default: array).
* @param string $template_path Template path. (default: '').
* @param string $default_path Default path. (default: '').
*
* @return string
*/
function kadence_blocks_pro_get_template_html( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
ob_start();
kadence_blocks_pro_get_template( $template_name, $args, $template_path, $default_path );
return ob_get_clean();
}
/**
* Locate a template and return the path for inclusion.
*
* This is the load order:
*
* yourtheme/$template_path/$template_name
* yourtheme/$template_name
* $default_path/$template_name
*
* @param string $template_name Template name.
* @param string $template_path Template path. (default: '').
* @param string $default_path Default path. (default: '').
* @return string
*/
function kadence_blocks_pro_locate_template( $template_name, $template_path = '', $default_path = '' ) {
if ( ! $template_path ) {
$template_path = apply_filters( 'kadence_blocks_template_path', 'kadence-blocks/' );
}
if ( ! $default_path ) {
$default_path = KBP_PATH . 'includes/templates/';
}
// Look within passed path within the theme - this is priority.
$template = locate_template(
array(
trailingslashit( $template_path ) . $template_name,
$template_name,
)
);
// Check depreciated path template.
if ( ! $template ) {
$template_path = 'kadenceblocks/';
$template = locate_template(
array(
trailingslashit( $template_path ) . $template_name,
$template_name,
)
);
}
// Get default template/.
if ( ! $template ) {
$template = $default_path . $template_name;
}
// Return what we found.
return apply_filters( 'kadence_blocks_locate_template', $template, $template_name, $template_path );
}
/**
* Wrapper for set_time_limit to see if it is enabled.
*
* @param int $limit Time limit.
*/
function kadence_blocks_pro_set_time_limit( $limit = 0 ) {
if ( function_exists( 'set_time_limit' ) && false === strpos( ini_get( 'disable_functions' ), 'set_time_limit' ) && ! ini_get( 'safe_mode' ) ) { // phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.safe_modeDeprecatedRemoved
@set_time_limit( $limit ); // @codingStandardsIgnoreLine
}
}
/**
* Clean variables using sanitize_text_field. Arrays are cleaned recursively.
* Non-scalar values are ignored.
*
* @param string|array $var Data to sanitize.
* @return string|array
*/
function kadence_blocks_pro_clean( $var ) {
if ( is_array( $var ) ) {
return array_map( 'kadence_blocks_pro_clean', $var );
} else {
return is_scalar( $var ) ? sanitize_text_field( $var ) : $var;
}
}
/**
* Register Meta for blocks code.
*/
function kadence_blocks_pro_code_post_meta() {
register_post_meta(
'',
'_kad_blocks_custom_css',
array(
'show_in_rest' => true,
'single' => true,
'type' => 'string',
'auth_callback' => '__return_true',
)
);
register_post_meta(
'',
'_kad_blocks_head_custom_js',
array(
'show_in_rest' => true,
'single' => true,
'type' => 'string',
'auth_callback' => '__return_true',
)
);
register_post_meta(
'',
'_kad_blocks_body_custom_js',
array(
'show_in_rest' => true,
'single' => true,
'type' => 'string',
'auth_callback' => '__return_true',
)
);
register_post_meta(
'',
'_kad_blocks_footer_custom_js',
array(
'show_in_rest' => true,
'single' => true,
'type' => 'string',
'auth_callback' => '__return_true',
)
);
}
add_action( 'init', 'kadence_blocks_pro_code_post_meta' );
/**
* Output the custom head scripts.
*/
function kadence_blocks_pro_output_head_scripts() {
if ( ! is_singular() ) {
return;
}
$css_output = get_post_meta( get_the_ID(), '_kad_blocks_custom_css', true );
if ( ! empty( $css_output ) ) {
echo '<style id="kadence-blocks-post-custom-css">';
echo $css_output;//phpcs:ignore
echo '</style>';
}
$js_output = get_post_meta( get_the_ID(), '_kad_blocks_head_custom_js', true );
if ( ! empty( $js_output ) ) {
echo $js_output;//phpcs:ignore
}
}
add_action( 'wp_head', 'kadence_blocks_pro_output_head_scripts', 30 );
/**
* Output the custom body scripts.
*/
function kadence_blocks_pro_output_body_scripts() {
if ( ! is_singular() ) {
return;
}
$js_output = get_post_meta( get_the_ID(), '_kad_blocks_body_custom_js', true );
if ( ! empty( $js_output ) ) {
echo $js_output;//phpcs:ignore
}
}
add_action( 'wp_body_open', 'kadence_blocks_pro_output_body_scripts', 10 );
/**
* Output the custom footer scripts.
*/
function kadence_blocks_pro_output_footer_scripts() {
if ( ! is_singular() ) {
return;
}
$js_output = get_post_meta( get_the_ID(), '_kad_blocks_footer_custom_js', true );
if ( ! empty( $js_output ) ) {
echo $js_output;//phpcs:ignore
}
}
add_action( 'wp_footer', 'kadence_blocks_pro_output_footer_scripts', 20 );