File "Preview.php"
Full Path: /home/attunedd/public_html/byp/wp-content/plugins/carousel-slider/includes/Frontend/Preview.php
File size: 3.35 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace CarouselSlider\Frontend;
use CarouselSlider\Helper;
use CarouselSlider\Interfaces\SliderViewInterface;
defined( 'ABSPATH' ) || exit;
/**
* Preview class
*/
class Preview {
/**
* The instance of the class
*
* @var self
*/
protected static $instance;
/**
* Ensures only one instance of this class is loaded or can be loaded.
*
* @return self
*/
public static function init() {
if ( is_null( self::$instance ) ) {
self::$instance = new self();
add_action( 'template_redirect', [ self::$instance, 'show_preview' ] );
}
return self::$instance;
}
/**
* Include custom template
*
* @return void
*/
public function show_preview() {
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
if ( ! isset( $_GET['carousel_slider_preview'], $_GET['carousel_slider_iframe'], $_GET['slider_id'] ) ) {
return;
}
if ( ! current_user_can( 'edit_pages' ) ) {
return;
}
add_filter( 'carousel_slider_load_scripts', '__return_true' );
echo $this->preview_html(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
exit();
}
/**
* Preview html
*
* @return string
*/
public function preview_html(): string {
ob_start();
wp_head();
$wp_head = ob_get_clean();
ob_start();
wp_footer();
$wp_footer = ob_get_clean();
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
$slider_id = isset( $_GET['slider_id'] ) ? intval( $_GET['slider_id'] ) : 0;
$slide_type = get_post_meta( $slider_id, '_slide_type', true );
$slide_type = array_key_exists( $slide_type, Helper::get_slide_types() ) ? $slide_type : 'image-carousel';
$view = Helper::get_slider_view( $slide_type );
if ( $view instanceof SliderViewInterface ) {
$view->set_slider_id( $slider_id );
$view->set_slider_type( $slide_type );
$slider_html = $view->render();
} else {
$slider_html = '';
}
$html = '<!DOCTYPE html>' . PHP_EOL;
$html .= '<html ' . get_language_attributes() . '>' . PHP_EOL;
$html .= '<head>' . PHP_EOL;
$html .= '<meta charset="' . get_bloginfo( 'charset' ) . '">' . PHP_EOL;
$html .= '<meta name="viewport" content="width=device-width, initial-scale=1">' . PHP_EOL;
$html .= $wp_head . PHP_EOL;
$html .= '<style type="text/css" media="screen">
html {margin-top: 0 !important;}
* html body {margin-top: 0 !important;}
#wpadminbar {display: none !important;}
.carousel-slider-preview-container {max-width: 1024px;margin-left: auto;margin-right: auto;}
@media screen and ( max-width: 782px ) {
html {margin-top: 0 !important;}
* html body {margin-top: 0 !important;}
}
</style>' . PHP_EOL;
$html .= '</head>' . PHP_EOL;
$html .= '</body>' . PHP_EOL;
$html .= '<div class="carousel-slider-preview-container">' . PHP_EOL;
$html .= $slider_html . PHP_EOL;
$html .= '</div>' . PHP_EOL;
$html .= $wp_footer . PHP_EOL;
$html .= '<script type="text/javascript">
(function () {
if (window.frameElement) {
window.frameElement.height = document.querySelector(".carousel-slider-preview-container").offsetHeight;
}
window.addEventListener("load", () => {
if (window.frameElement) {
window.frameElement.height = document.querySelector(".carousel-slider-preview-container").offsetHeight;
}
});
})();
</script>' . PHP_EOL;
$html .= '</body>' . PHP_EOL;
$html .= '</html>';
return $html;
}
}