HEX
Server: LiteSpeed
System: Linux s1.hostssdserver.com 4.18.0 #1 SMP Mon Sep 30 15:36:27 MSK 2024 x86_64
User: dreamlan (1220)
PHP: 8.3.32
Disabled: exec,system,passthru,shell_exec,proc_open,popen,apache_child_terminate
Upload Files
File: /home/dreamlan/public_html/wp-content/plugins/html5-video-player/blocks.php
<?php

namespace H5VP\Block;

if (!defined('ABSPATH')) {
    return;
}

if (!class_exists('H5VP_Block')) {
    class H5VP_Block
    {
        function __construct()
        {
            add_action('init', [$this, 'register_block']);
            add_action('enqueue_block_assets', [$this, 'enqueue_script']);
            add_action('wp_ajax_watermark_data', [$this, 'watermark_data_ajax']);
            add_action('wp_ajax_nopriv_watermark_data', [$this, 'watermark_data_ajax']);
        }

        function register_block()
        {
            register_block_type(H5VP_PRO_PLUGIN_PATH . 'build/blocks/parent');
            register_block_type(H5VP_PRO_PLUGIN_PATH . 'build/blocks/video');
            register_block_type(H5VP_PRO_PLUGIN_PATH . 'build/blocks/youtube');
            register_block_type(H5VP_PRO_PLUGIN_PATH . 'build/blocks/vimeo');
            register_block_type(H5VP_PRO_PLUGIN_PATH . 'build/blocks/popup-trigger');
        }

        function enqueue_script()
        {
            wp_register_script('html5-player-blocks', plugin_dir_url(__FILE__) . 'build/editor.js', array('wp-blocks', 'wp-i18n', 'wp-element', 'wp-editor', 'jquery', 'bplugins-plyrio'), H5VP_PRO_VER, true);

            wp_register_script('bplugins-plyrio', plugin_dir_url(__FILE__) . 'public/js/plyr-v3.8.3.polyfilled.js', array(), '3.8.3', false);

            wp_register_script('h5vp-hls', H5VP_PRO_PLUGIN_DIR . 'public/js/hls.min.js', array('bplugins-plyrio'), H5VP_PRO_VER, true);
            wp_register_script('h5vp-dash', H5VP_PRO_PLUGIN_DIR . 'public/js/dash.all.min.js', array('bplugins-plyrio'), H5VP_PRO_VER, true);

            wp_register_style('bplugins-plyrio', plugin_dir_url(__FILE__) . 'public/css/h5vp.css', array(), H5VP_PRO_VER, 'all');
            wp_register_style('h5vp-editor', plugin_dir_url(__FILE__) . 'build/editor.css', array(), H5VP_PRO_VER, 'all');

            wp_register_style('html5-player-video-style', plugin_dir_url(__FILE__) . 'build/frontend.css', array('bplugins-plyrio'), H5VP_PRO_VER);

            $get_option = h5vp_get_option();


            $localize_data = [
                'siteUrl' => site_url(),
                'userId' => get_current_user_id(),
                'isPipe' => (bool)h5vp_fs()->can_use_premium_code(),
                'hls' => H5VP_PRO_PLUGIN_DIR . 'public/js/hls.min.js',
                'dash' => H5VP_PRO_PLUGIN_DIR . 'public/js/dash.all.min.js',
                'pauseOther' => (bool)\H5VP\Helper\Functions::getOptionDeep("h5vp_option", "h5vp_pause_other_player", false),
                'nonce' => wp_create_nonce('wp_ajax'),
                'plugin_url' => H5VP_PRO_PLUGIN_DIR,
                'brandColor' => $get_option('h5vp_player_primary_color', '#00b2ff')
            ];

            wp_localize_script('bplugins-plyrio', 'h5vpBlock', $localize_data);

            wp_localize_script('html5-player-video-view-script', 'h5vpBlock', $localize_data);

            $user_id = get_current_user_id();
            $post_id = is_singular() ? get_the_ID() : 0;

            // short-lived token (e.g., 6 hours)
            $issued_at = time();
            $ttl = 6 * 60 * 60;

            $token = $this->h5vp_make_analytics_token([
                'uid' => (int)$user_id,
                'pid' => (int)$post_id,
                'iat' => (int)$issued_at,
                'ttl' => (int)$ttl,
            ]);

            wp_localize_script('bplugins-plyrio', 'H5VP_ANALYTICS', [
                'endpoint' => rest_url('h5vp/v1/analytics'),
                'nonce' => wp_create_nonce('wp_rest'), // still used for normal fetch
                'token' => $token, // used for beacon
                'postId' => $post_id ?: null,
                'userId' => $user_id ?: null,
                'iat' => $issued_at,
                'ttl' => $ttl,
                'enableBuilInAnalytics' => (bool)h5vp_fs()->can_use_premium_code() && $get_option('enable_analytics', true),
                '_enabledGA4' => (bool)h5vp_fs()->can_use_premium_code() && $get_option('enable_ga4'),
                'ga4_tracking_id' => $get_option('ga4_tracking_id', '')
            ]);

        }

        public function watermark_data_ajax()
        {

            if (!wp_verify_nonce(sanitize_text_field(wp_unslash($_POST['nonce'] ?? '')), 'wp_ajax')) {
                wp_send_json_error('invalid request');
            }

            $user = wp_get_current_user();

            wp_send_json_success([
                'user' => [
                    'email' => $user->data->user_email ?? '',
                    'name' => $user->data->display_name ?? '',
                ]
            ]);
        }

        function getWatermarkPosition($position)
        {
        }

        function h5vp_make_analytics_token(array $data)
        {
            // token payload + signature
            $payload = wp_json_encode($data);
            $sig = hash_hmac('sha256', $payload, wp_salt('auth'));
            // base64url encode
            $b64 = rtrim(strtr(base64_encode($payload), '+/', '-_'), '=');
            return $b64 . '.' . $sig;
        }
    }





    new H5VP_Block();
}