HEX
Server: nginx/1.18.0
System: Linux mail.dakarash.co.id 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User: www-data (33)
PHP: 8.1.2-1ubuntu2.23
Disabled: NONE
Upload Files
File: /home/dakarash.co.id/public_html/wp-content/plugins/presto-player/inc/Playlist.php
<?php
namespace PrestoPlayer;

use PrestoPlayer\Services\ReusableVideos;
use PrestoPlayer\Blocks\AudioBlock;
use PrestoPlayer\Blocks\SelfHostedBlock;
use PrestoPlayer\Blocks\VimeoBlock;
use PrestoPlayer\Blocks\YouTubeBlock;
use PrestoPlayer\Pro\Blocks\BunnyCDNBlock;

class Playlist
{
    /**
     * Parses the attributes with respect to the provider.
     * 
     * @param string $block_name Block name.
     * @param array $attributes Attributes of the block.
     * 
     * @return array
     */
    public function parsed_attributes($block_name, $attributes) {
        $attributes = wp_parse_args(
            $attributes,
            [
                'id' => '',
                'src' => '',
                'title' => '',
                'provider' => '',
                'class' => '',
                'custom_field' => '',
                'poster' => '',
                'preload' => 'auto',
                'preset' => 0,
                'autoplay' => false,
                'plays_inline' => false,
                'chapters' => [],
                'overlays' => [],
                'tracks' => [],
                'muted_autoplay_preview' => false,
                'muted_autoplay_caption_preview' => false,
            ],
        );

        switch ($block_name) {
            case 'presto-player/self-hosted':
                return (new SelfHostedBlock())->getAttributes($attributes, '');
        
            case 'presto-player/youtube':
                return (new YouTubeBlock())->getAttributes($attributes, '');
        
            case 'presto-player/vimeo':
                return (new VimeoBlock())->getAttributes($attributes, '');
        
            case 'presto-player/bunny':
                return (new BunnyCDNBlock())->getAttributes($attributes, '');
        
            case 'presto-player/audio':
                return (new AudioBlock())->getAttributes($attributes, '');
        }
    }
    /**
     * Get Video details
     *
     * @param $videos Array of video IDs.
     * @return array
     */
    public function get_playlist_details($video)
    {
        if ( empty( $video ) ) {
            return [];
        }
        $block = parse_blocks(ReusableVideos::get($video));
        // return $block;
        if ( !isset($block[0]['innerBlocks'][0]['attrs']) ) {
            return [];
        }
        $inner_block = $block[0]['innerBlocks'][0];
        $attributes = $inner_block['attrs'];
        $video_details = $this->parsed_attributes($inner_block['blockName'], $attributes);
        return $video_details;
    }
}