File "ReusableVideos.php"
Full Path: /home/tekvhqgl/public_html/dev2024_old_skip/wp-content/plugins/presto-player/inc/Services/ReusableVideos.php
File size: 4.35 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace PrestoPlayer\Services;
use PrestoPlayer\Services\Scripts;
class ReusableVideos
{
/**
* Register shortcode
*
* @return void
*/
public function register()
{
add_action('admin_notices', [$this, 'notice']);
add_action('admin_init', [$this, 'dismissNotice']);
}
public function notice()
{
global $typenow, $current_screen;
if (!($typenow === 'pp_video_block' && $current_screen->base === 'edit')) {
return;
}
$notice_name = 'presto_player_reusable_notice';
if (AdminNotices::isDismissed($notice_name)) {
return;
}
?>
<div class="notice" style="border-left-color: #7c3aed;">
<p><strong><?php _e('What is the media hub?', 'presto-player'); ?></strong></p>
<p><?php _e('The media hub is a more flexible way to add media to your site. It allows you to save audio and videos which you can later use in any post or page on your site - either through the Block Editor, a page builder, or by using a shortcode or php function.', 'presto-player'); ?></p>
<p><a href="<?php echo esc_url(add_query_arg(array('presto_action' => 'dismiss_notices', 'presto_notice' => $notice_name))); ?>"><?php _e('Dismiss Notice', 'presto-player'); ?></a></p>
</div>
<?php
}
public function dismissNotice()
{
// permissions check
if (!current_user_can('update_options')) {
return;
}
// not our notices, bail
if (!isset($_GET['presto_action']) || 'dismiss_notice' !== $_GET['presto_action']) {
return;
}
$notice = !empty($_GET['presto_notice']) ? sanitize_text_field($_GET['presto_notice']) : '';
if (!$notice) {
return;
}
// notice is dismissed
update_option("presto_player_dismissed_notice_" . sanitize_text_field($notice), 1);
}
/**
* Get reusable video block function.
*
* @param mixed $id The ID of the reusable block.
* @return $content The content of the block.
*/
public static function get($id)
{
$content_post = get_post($id);
$content = $content_post->post_content;
return $content;
}
public static function getBlock($id)
{
$blocks = parse_blocks(self::get($id));
$out = '';
if(is_feed()) {
foreach ($blocks as $block) {
foreach ($block['innerBlocks'] as $innerblock) {
$out .= self::getFeedHtml( $innerblock );
}
}
return $out;
}
foreach ($blocks as $block) {
$out .= render_block($block);
}
return $out;
}
/**
* Display block function.
*
* @param mixed $id The ID of the reusable block.
*/
public static function display($id)
{
echo self::getBlock($id);
}
/**
* Return fallback html for feeds.
*
* @param array $block array of block attributes.
*/
public static function getFeedHtml( $block ) {
$html = '';
if( $block['blockName'] === 'presto-player/vimeo') {
ob_start();
?>
<div class="presto-iframe-fallback-container" >
<iframe style="width: 100%" class="presto-fallback-iframe" id="presto-iframe-fallback-<?php echo (int) $block['attrs']['id']; ?>" src="<?php echo esc_attr($block['attrs']['src']); ?>" ></iframe>
</div>
<?php
$html = ob_get_clean();
}
elseif( $block['blockName'] === 'presto-player/youtube') {
ob_start();
?>
<div class="presto-iframe-fallback-container" >
<iframe style="width: 100%" class="presto-fallback-iframe" id="presto-iframe-fallback-<?php echo (int) $block['attrs']['id']; ?>" src="<?php echo esc_attr($block['attrs']['src']); ?>"></iframe>
</div>
<?php
$html = ob_get_clean();
}
else {
ob_start();
?>
<video controls preload="none" >
<source src="<?php echo esc_attr( $block['attrs']['src'] ); ?>" />
</video>
<?php
$html = ob_get_clean();
}
return $html;
}
}